VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions
makVrv::DtIndirectFeatureGeomHandler Class Reference

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
 
DtDemyDe
 
osg::observer_ptr< const
osgEarth::Layer > 
myLayer
 
DtCellToGeoTypicalIndirectGeoMapmyCellToGTIndirectGeoMap
 
DtIndirectModelsContainermyGTModelsContainer
 
DtCellToGeoSpecificIndirectGeoMapmyCellToGSIndirectGeoMap
 
DtCellToGeoSpecificIndirectGeoMapmyCellToProceduralGSIndirectGeoMap
 
DtModelSemanticsMappermyModelSematicsMapper
 
boost::mutex myProcessedNodeMapMutex
 
boost::condition_variable myProcessedNodeMapCondition
 
std::map< std::string, NodeRefPtrmyProcessedNodeMap
 
std::map< std::string, boolmyIsProcessingNodeMap
 
tbb::atomic< intmyActiveAsyncTasks
 
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< inttheTotalNumActiveAsyncTasks
 

Private Member Functions

 DtIndirectFeatureGeomHandler (const DtIndirectFeatureGeomHandler &other)=delete
 
DtIndirectFeatureGeomHandleroperator= (const DtIndirectFeatureGeomHandler &other)=delete
 

Member Typedef Documentation

Constructor & Destructor Documentation

virtual makVrv::DtIndirectFeatureGeomHandler::~DtIndirectFeatureGeomHandler ( )
virtual

DTOR.

makVrv::DtIndirectFeatureGeomHandler::DtIndirectFeatureGeomHandler ( DtDe de,
const osgEarth::Layer &  layer,
const DtIndirectFadeParameters fadeParameters,
bool  dynamicTerrainInstallerActive,
bool  cullFaceEnabled 
)
protected

CTOR.

makVrv::DtIndirectFeatureGeomHandler::DtIndirectFeatureGeomHandler ( const DtIndirectFeatureGeomHandler other)
privatedelete

Copy Constructor not implemented – Copy Not Allowed.

Member Function Documentation

DtIndirectFeatureGeomHandler& makVrv::DtIndirectFeatureGeomHandler::operator= ( const DtIndirectFeatureGeomHandler other)
privatedelete

Assignment Operator Not implemented – Assignment Not Allowed.

virtual void makVrv::DtIndirectFeatureGeomHandler::onDataPremerge ( osg::Node *  data)
virtual

called before data is added to the scenegraph

virtual void makVrv::DtIndirectFeatureGeomHandler::onDataUnloaded ( const osg::Node *  data)
virtual

called before data is deleted from the scenegraph

virtual const osg::Node* makVrv::DtIndirectFeatureGeomHandler::preloadModelAndRunDynamicTerrainParser ( const std::string &  modelName)
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 void makVrv::DtIndirectFeatureGeomHandler::markTaskFinished ( )
virtual

helper function called by async loader to update atomic counter, and signal the wait condition

virtual void makVrv::DtIndirectFeatureGeomHandler::slot_postTick ( )
virtual

handle the postTick signal.

virtual void makVrv::DtIndirectFeatureGeomHandler::processSubstituteModelFilterNodes ( osg::Node *  data)
protectedvirtual

process point replacement features

virtual void makVrv::DtIndirectFeatureGeomHandler::processExtrudeGeometryFilterNodes ( osg::Node *  data)
protectedvirtual

process multiple extruded geometry nodes by calling processExtrudeGeometryFilterNode for each one in the data

virtual void makVrv::DtIndirectFeatureGeomHandler::processExtrudeGeometryFilterNode ( osgEarth::ExtrudeGeometryFilterNode *  pFeatureNode,
osg::Node *  data 
)
protectedvirtual

process the extruded geometry and add it to the geocell from a DtCellToGeoSpecificIndirectGeoMap

virtual void makVrv::DtIndirectFeatureGeomHandler::processSubstituteModelFilterNode ( const osgEarth::SubstituteModelFilterNode *  pFeatureNode,
const osg::Node *  data 
)
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.

virtual void makVrv::DtIndirectFeatureGeomHandler::processSubstituteModelFilterNodeAsGT ( const osgEarth::SubstituteModelFilterNode *  pFeatureNode,
const osg::Group *  keyNode 
)
protectedvirtual

processes the model filter and adds it to a geocell obtained from the DtCellToGeoTypicalIndirectGeoMap

virtual void makVrv::DtIndirectFeatureGeomHandler::processSubstituteModelFilterNodeAsGS ( const osgEarth::SubstituteModelFilterNode *  pFeatureNode,
const osg::Group *  keyNode 
)
protectedvirtual

processes the model filter and adds it to a geocell obtained from the DtCellToGeoSpecificIndirectGeoMap

virtual void makVrv::DtIndirectFeatureGeomHandler::processCustomFeatures ( osg::Node *  data)
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.

virtual void makVrv::DtIndirectFeatureGeomHandler::processCustomFeature ( const osgEarth::CustomFeatureNode pFeatureNode,
const osg::Node *  key 
)
protectedvirtual

Internal method that will actually process a single CustomFeatureNode. Called via processCustomFeatures.

virtual void makVrv::DtIndirectFeatureGeomHandler::setLayerMask ( const osgEarth::Layer *  layer) const
protectedvirtual

Internal method for setting flags on an incoming layer or layernode.

virtual void makVrv::DtIndirectFeatureGeomHandler::turnOffIntersectionsIfSoSpecified ( const osgEarth::Layer *  layer) const
protectedvirtual

turn off intersections if <intersectable>false</intersectable> was specified for the layer

Member Data Documentation

friend makVrv::DtIndirectFeatureGeomHandler::DtIndirectFeatureGeomHandlerCreator
protected

creator friend class so it is the only one that can create new DtIndirectFeatureGeomHandlers

DtDe& makVrv::DtIndirectFeatureGeomHandler::myDe
protected
osg::observer_ptr<const osgEarth::Layer> makVrv::DtIndirectFeatureGeomHandler::myLayer
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

DtCellToGeoTypicalIndirectGeoMap* makVrv::DtIndirectFeatureGeomHandler::myCellToGTIndirectGeoMap
protected

GeoTypical stuff.

DtIndirectModelsContainer* makVrv::DtIndirectFeatureGeomHandler::myGTModelsContainer
protected
DtCellToGeoSpecificIndirectGeoMap* makVrv::DtIndirectFeatureGeomHandler::myCellToGSIndirectGeoMap
protected

GeoSpecific stuff.

DtCellToGeoSpecificIndirectGeoMap* makVrv::DtIndirectFeatureGeomHandler::myCellToProceduralGSIndirectGeoMap
protected

Procedural stuff. Is also geospecific in the sense that each tile will have its own registrar. Therefore, we need the gs variant.

DtModelSemanticsMapper& makVrv::DtIndirectFeatureGeomHandler::myModelSematicsMapper
protected
boost::mutex makVrv::DtIndirectFeatureGeomHandler::myProcessedNodeMapMutex
protected
boost::condition_variable makVrv::DtIndirectFeatureGeomHandler::myProcessedNodeMapCondition
protected
std::map<std::string, NodeRefPtr > makVrv::DtIndirectFeatureGeomHandler::myProcessedNodeMap
protected
std::map<std::string, bool > makVrv::DtIndirectFeatureGeomHandler::myIsProcessingNodeMap
protected
tbb::atomic<int> makVrv::DtIndirectFeatureGeomHandler::theTotalNumActiveAsyncTasks
staticprotected

tracks how many total threads are active to avoid preemption

tbb::atomic<int> makVrv::DtIndirectFeatureGeomHandler::myActiveAsyncTasks
protected

tracks how many threads are active from this particular instance, when 0 the tasks are done.

boost::condition_variable makVrv::DtIndirectFeatureGeomHandler::myWaitCondition
protected

signaling mutex and condition

boost::mutex makVrv::DtIndirectFeatureGeomHandler::myWaitMutex
protected
osg::ref_ptr< osgEarth::StateSetCache > makVrv::DtIndirectFeatureGeomHandler::myStateSetCache
protected
DtIndirectFadeParameters makVrv::DtIndirectFeatureGeomHandler::myFadeParameters
protected
const bool makVrv::DtIndirectFeatureGeomHandler::myDynamicTerrainInstallerActive
protected
const bool makVrv::DtIndirectFeatureGeomHandler::myCullFaceEnabled
protected
DtSignalConnectionManager makVrv::DtIndirectFeatureGeomHandler::myConnections
protected

manager for connections

std::unordered_set<std::string> makVrv::DtIndirectFeatureGeomHandler::myWarningLoggedForNotFoundModel
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)