![]() |
VR-Forces Developer's Guide
|
Thread object to convert tree marker requests into tree records in a worker thread.

Public Types | |
| typedef std::unordered_set < const osg::Node * > | NodeSet |
| typedef std::unordered_set < DtStreamedSpeedTreeForest * > | ForestSet |
| typedef std::unordered_set < std::string > | StringSet |
Public Member Functions | |
| virtual | ~DtStreamedSpeedTreeThread () |
| virtual void | setForestDeleted (DtStreamedSpeedTreeForest *forest) |
| virtual void | setNodeUnloaded (const osg::Node *node) |
| virtual void | enqueue (DtStreamedSpeedTreeForest *forest, const osgEarth::CustomFeatureNode *featureNode, const osg::Node *dataNode, bool useScaleRandomization, bool useOrientationRandomization, float treeMinScale, float treeMaxScale) |
| virtual bool | workToDo (void) const |
Public Member Functions inherited from makVrv::DtVirtualBaseClass | |
| DtVirtualBaseClass () | |
| virtual | ~DtVirtualBaseClass () |
Static Public Member Functions | |
| static DtStreamedSpeedTreeThread & | instance (DtDe &de) |
Protected Member Functions | |
| DtStreamedSpeedTreeThread (DtDe &de) | |
| virtual void | processMessage (const DtTreeRequestMessage &msg) |
| virtual void | mergeTreeRequests (DtStreamedSpeedTreeForest *forest, const osg::Node *node) |
| virtual bool | isForestDeleted (DtStreamedSpeedTreeForest *forest) const |
| virtual bool | isNodeUnloaded (const osg::Node *node) const |
| virtual double | rotationAngleFromGeocentricQuaternion (const osg::Quat &rotation, const osg::Vec3d &location) const |
| virtual std::size_t | hash_value (const std::string &modelDefName, const osgEarth::CustomFeatureNode::OsgEarthMarkerRequest &val) const |
| virtual void | run () |
| virtual DtTreeRecord * | getTreeRecordFromPool (void) |
| virtual void | returnTreeRecordToPool (DtTreeRecord *treeRecord) |
Protected Attributes | |
| DtDe & | myDe |
| tbb::concurrent_bounded_queue < DtTreeRequestMessage * > | myMessageQueue |
| tbb::atomic< bool > | myStopWork |
| std::thread | myWorkerThread |
| StringSet | myValidModelDefinitions |
| ForestSet | myDeletedForests |
| NodeSet | myUnloadedNodes |
| osg::EllipsoidModel * | myEllipsoidModel |
| std::unordered_map < std::string, std::string > | myModelDefinitionCache |
| std::unordered_map < std::string, std::vector < DtTreeRecord * > > | myScratchModelDefsToTreesToAdd |
| std::deque< DtTreeRecord * > | myTreeRecordPool |
Private Member Functions | |
| DtStreamedSpeedTreeThread ()=delete | |
| DtStreamedSpeedTreeThread (const DtStreamedSpeedTreeThread &rhs)=delete | |
| DtStreamedSpeedTreeThread & | operator= (const DtStreamedSpeedTreeThread &rhs)=delete |
| typedef std::unordered_set<const osg::Node*> makVrv::DtStreamedSpeedTreeThread::NodeSet |
Set of request nodes.
| typedef std::unordered_set<DtStreamedSpeedTreeForest*> makVrv::DtStreamedSpeedTreeThread::ForestSet |
Set of forests.
| typedef std::unordered_set<std::string> makVrv::DtStreamedSpeedTreeThread::StringSet |
Set of model definition names.
|
virtual |
DTOR.
|
privatedelete |
Unimplemented default CTOR.
|
privatedelete |
|
protected |
CTOR.
|
static |
Get the instance of the thread object from its owner de.
|
privatedelete |
|
virtual |
Add a forest object to the deleted set.
|
virtual |
Add a node to the unloaded set.
|
virtual |
Enqueue a new request message.
|
virtual |
|
protectedvirtual |
Handle a single popped DtTreeRequestMessage This is called from run() in the worker thread This prepares myScratchModelDefsToTreesToAdd.
|
protectedvirtual |
Process the trees requested to be added from the popped DtTreeRequestMessage (which is in myScratchModelDefsToTreesToAdd) and add them to the forest in question. This is called after handle request.
|
protectedvirtual |
Check whether a forest is in the deleted set.
|
protectedvirtual |
Check whether a node is in the unloaded set.
|
protectedvirtual |
|
protectedvirtual |
Hashes on request name and XYZ position.
|
protectedvirtual |
Thread main loop.
|
protectedvirtual |
get a record from the pool
|
protectedvirtual |
return a tree record to the pool
|
protected |
|
protected |
Queue of marker request messages.
Lock qm before using
|
protected |
Flag to tell the merging to stop.
|
protected |
|
protected |
Cache of valid SpeedTree model definitions.
Allows filtering out requests with invalid model definitions
|
protected |
Set of deleted forest objects.
The forest object adds itself here on deletion to avoid adding trees to a deleted forest
|
protected |
Set of unloaded feature request nodes.
Requestors should add nodes to this set when they are deleted to prevent adding trees after deletion
|
protected |
|
protected |
|
protected |
worksspace
|
protected |
use pool to avoid fragmentation/repeated news/deletes