![]() |
VR-Forces 5.0.2 Developer's Guide
|
class used to collect geometry coming in via feature_geom and add it to the indirect engine. will process point features (expressed as GS or GT) and extruded geometry (procedurally generated) Handles callback from a feature_geom layer in order to add indirect geometry to the scene.
Public Member Functions | |
| virtual | ~DtIndirectFeatureGeomHandler () |
| virtual void | onDataPremerge (osg::Node *data) |
| virtual void | onDataUnloaded (const osg::Node *data) |
| virtual const osg::Node * | preloadModelAndRunDynamicTerrainParser (const std::string &modelName) |
| virtual void | markTaskFinished () |
| virtual void | slot_postTick () |
Protected Types | |
| typedef osg::ref_ptr< const osg::Node > | NodeRefPtr |
Protected Member Functions | |
| DtIndirectFeatureGeomHandler (DtDe &de, const osgEarth::Layer &layer, const DtIndirectFadeParameters &fadeParameters, bool dynamicTerrainInstallerActive, bool cullFaceEnabled) | |
| virtual void | processSubstituteModelFilterNodes (osg::Node *data) |
| virtual void | processExtrudeGeometryFilterNodes (osg::Node *data) |
| virtual void | processExtrudeGeometryFilterNode (osgEarth::ExtrudeGeometryFilterNode *pFeatureNode, osg::Node *data) |
| virtual void | processSubstituteModelFilterNode (const osgEarth::SubstituteModelFilterNode *pFeatureNode, const osg::Node *data) |
| virtual void | processSubstituteModelFilterNodeAsGT (const osgEarth::SubstituteModelFilterNode *pFeatureNode, const osg::Group *keyNode) |
| virtual void | processSubstituteModelFilterNodeAsGS (const osgEarth::SubstituteModelFilterNode *pFeatureNode, const osg::Group *keyNode) |
| virtual void | processCustomFeatures (osg::Node *data) |
| virtual void | processCustomFeature (const osgEarth::CustomFeatureNode *pFeatureNode, const osg::Node *key) |
| virtual void | setLayerMask (const osgEarth::Layer *layer) const |
| virtual void | turnOffIntersectionsIfSoSpecified (const osgEarth::Layer *layer) const |
Protected Attributes | |
| friend | DtIndirectFeatureGeomHandlerCreator |
| DtDe & | myDe |
| osg::observer_ptr< const osgEarth::Layer > | myLayer |
| DtCellToGeoTypicalIndirectGeoMap * | myCellToGTIndirectGeoMap |
| DtIndirectModelsContainer * | myGTModelsContainer |
| DtCellToGeoSpecificIndirectGeoMap * | myCellToGSIndirectGeoMap |
| DtCellToGeoSpecificIndirectGeoMap * | myCellToProceduralGSIndirectGeoMap |
| DtModelSemanticsMapper & | myModelSematicsMapper |
| boost::mutex | myProcessedNodeMapMutex |
| boost::condition_variable | myProcessedNodeMapCondition |
| std::map< std::string, NodeRefPtr > | myProcessedNodeMap |
| std::map< std::string, bool > | myIsProcessingNodeMap |
| tbb::atomic< int > | myActiveAsyncTasks |
| boost::condition_variable | myWaitCondition |
| boost::mutex | myWaitMutex |
| osg::ref_ptr < osgEarth::StateSetCache > | myStateSetCache |
| DtIndirectFadeParameters | myFadeParameters |
| const bool | myDynamicTerrainInstallerActive |
| const bool | myCullFaceEnabled |
| DtSignalConnectionManager | myConnections |
| std::unordered_set< std::string > | myWarningLoggedForNotFoundModel |
Static Protected Attributes | |
| static tbb::atomic< int > | theTotalNumActiveAsyncTasks |
Private Member Functions | |
| DtIndirectFeatureGeomHandler (const DtIndirectFeatureGeomHandler &other)=delete | |
| DtIndirectFeatureGeomHandler & | operator= (const DtIndirectFeatureGeomHandler &other)=delete |
|
protected |
|
virtual |
DTOR.
|
protected |
CTOR.
|
privatedelete |
Copy Constructor not implemented – Copy Not Allowed.
|
privatedelete |
Assignment Operator Not implemented – Assignment Not Allowed.
|
virtual |
called before data is added to the scenegraph
|
virtual |
called before data is deleted from the scenegraph
|
virtual |
loads the model and stores a reference pointer to it in the modelName to modelNode map. also waits for other threads to finish if they are loading the same model. Returns a raw point to the model but it is saved in the member variable map so it will not be deleted in the rest of the premerge processing.
|
virtual |
helper function called by async loader to update atomic counter, and signal the wait condition
|
virtual |
handle the postTick signal.
|
protectedvirtual |
process point replacement features
|
protectedvirtual |
process multiple extruded geometry nodes by calling processExtrudeGeometryFilterNode for each one in the data
|
protectedvirtual |
process the extruded geometry and add it to the geocell from a DtCellToGeoSpecificIndirectGeoMap
|
protectedvirtual |
Internal methods that will actually process the nodes. checks the instancing to see if the layer is GT (instanced) or GS (not instanced) and then calls the appropriate additional processSubstituteModelFilerNodeAs* function.
|
protectedvirtual |
processes the model filter and adds it to a geocell obtained from the DtCellToGeoTypicalIndirectGeoMap
|
protectedvirtual |
processes the model filter and adds it to a geocell obtained from the DtCellToGeoSpecificIndirectGeoMap
|
protectedvirtual |
Process the tile to see if there are any custom feature nodes and add them to the indirect system if there are any. These come from feature_custom driver model layers.
|
protectedvirtual |
Internal method that will actually process a single CustomFeatureNode. Called via processCustomFeatures.
|
protectedvirtual |
Internal method for setting flags on an incoming layer or layernode.
|
protectedvirtual |
turn off intersections if <intersectable>false</intersectable> was specified for the layer
|
protected |
creator friend class so it is the only one that can create new DtIndirectFeatureGeomHandlers
|
protected |
|
protected |
store by observer ptr here onDataPremerge for a node can get launched (in another thread) just after the layer has been deleted (e.g. reload) so the layer and hence the nodes being traverse via findTopMostNodeOfType are possibly invalid
|
protected |
GeoTypical stuff.
|
protected |
|
protected |
GeoSpecific stuff.
|
protected |
Procedural stuff. Is also geospecific in the sense that each tile will have its own registrar. Therefore, we need the gs variant.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
staticprotected |
tracks how many total threads are active to avoid preemption
|
protected |
tracks how many threads are active from this particular instance, when 0 the tasks are done.
|
protected |
signaling mutex and condition
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
manager for connections
|
protected |