![]() |
VR-Forces Developer's Guide
|
A class responsible for processing DtGeom3dLinesComponent objects.
This class does not own any components, it only processes components that are registered with it. The concept is that components are processed in one place so that opens up opportunities to burst multi-thread operations, and do things as a "system" such as turning on/off the entire system for specific operations.
To use a component with this system, call createComponent(). The caller is responsible for freeing the component. The caller does not have to register/unresister the component with this system as it is done automatically be the component itself.
You can access this system from DtRenderer.
Classes | |
| struct | Buffer |
| struct | CullJobData |
| struct | PerCameraStaging |
| struct | PerModelSetComponents |
Public Member Functions | |
| virtual | ~DtGeom3dLinesSystem () |
| DtGeom3dLinesSystem ()=delete | |
| DtGeom3dLinesSystem (const DtGeom3dLinesSystem &other)=delete | |
| DtGeom3dLinesSystem & | operator= (const DtGeom3dLinesSystem &other)=delete |
| virtual DtGeom3dLinesComponent * | createComponent (DtModelSetId modelSet) |
| virtual void | registerComponent (DtGeom3dLinesComponent *component) |
| virtual void | unregisterComponent (DtGeom3dLinesComponent *component) |
| virtual size_t | registeredComponentCount (const DtModelSetId modelSetId) const |
| virtual double | computeAltitude (const DtVector &point, bool &geoCentric) const |
| virtual bool | cull (void *cameraContext, const DtModelSetId modelSetId, const DtVector &cameraPos, const Frustum_64 &frustum) |
| virtual void | submit3dLinesForDraw (void *cameraContext, std::vector< Dt3dLinesStagingBuffer * > &buffers) |
Protected Member Functions | |
| DtGeom3dLinesSystem (DtDe &de) | |
| virtual void | slot_coordinateSystemChanged () |
| virtual void | slot_preTick () |
Static Protected Member Functions | |
| static bool | isSphereVisible (const std::array< DtVector4< double >, 6 > &cullingPlanes, const DtVector3< double > ¢er, double radiusSquared) |
| static void | theCullJob (void *data) |
Protected Attributes | |
| DtDe & | myDe |
| DtSignalConnectionManager | myConnections |
| DtCoordinateSystem * | myCoordinateSystem |
| unsigned int | myComponentCategoryFlags |
| std::unordered_map < DtModelSetId, PerModelSetComponents * > | myPerModelSetComponents |
| std::unordered_map< void *, PerCameraStaging * > | myPerCameraStagingMap |
| tbb::concurrent_vector< void * > | myPendingCameras |
Private Attributes | |
| friend | DtGeom3dLinesSystemCreator |
|
virtual |
|
delete |
Default Constructor not implemented.
|
delete |
Copy Constructor not implemented - Copy not allowed.
|
protected |
Protected CTOR Create using DtGeom3dLinesSystemCreator.
|
delete |
Assignment Operator not implemented - Assignment not allowed.
|
virtual |
Creates and returns a component that is compatible with this system. The component will register itself with this system on creation. The component will un-register itself with this system on destruction. The system does not own the component. The caller of this createComponent() method will own the component and should destroy it when done with it. modelSet the modelset to associate with the component (see DtModelSetEnums.h)
|
virtual |
Registers the given component with this system. The system does not own the component. The system will perform operations on the component while it is registered.
|
virtual |
Un-Registers the given component with this system. The system does not own the component.
|
virtual |
Returns the number of registered components for a specific model set.
| modelSetId | the model set to check for (see DtModelSetEnums.h) |
|
virtual |
Utility method used by a component to compute the altitude at the given point. Also fills in the geoCentric as true if the coordinate system is geocentric.
| point | the vrv local point |
| geoCentric | (output) is set to true when coordinate conversion was geocentric |
|
virtual |
Culls the 3d lines and prepares per camera context staging. Returns true is something is visible. This method can be called multi-threaded if the cameraContext is different for each calling thread.
| cameraContext | a context that can be used to associate a specific camera with a set of culled data |
| modelSetId | the model set to cull for (see DtModelSetEnums.h) |
| cameraPos | the camera position |
| frustum | the frustum to cull against |
|
virtual |
Fills the 3d lines buffer for all non-culled components. Gathers buffers to draw that contain active lines.
| cameraContext | a context that can be used to associate a specific camera with a set of culled data |
| buffers | (out) the resulting staging buffers to render |
|
protectedvirtual |
Slot for when the coordinate system changes. This is needed to keep myCoordinateSystem up to date.
|
protectedvirtual |
Pre tick function. This is currently used to flush invalid camera's.
|
staticprotected |
non-virtual for inner loop Checks to see if the given sphere is visible in the culling planes. Returns true if visible. Calculations are in world (vantage space).
| cullingPlanes | the culling planes |
| center | the center of the sphere |
| radiusSquared | the sphere radius squared |
|
staticprotected |
A cull job function used as a callback for job splitting. This is an internal function called from a tbb::parallel_for.
|
private |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |