18 #include <osg/Matrixd>
23 #include <unordered_set>
24 #include <unordered_map>
26 #include <boost/thread/condition.hpp>
36 class DtCellToGeoTypicalIndirectGeoMap;
37 class DtCellToGeoSpecificIndirectGeoMap;
38 class DtCellIndirectGeo;
39 class DtCellGeoTypicalIndirectGeo;
40 class DtCellGeoSpecificIndirectGeo;
41 class DtIndirectModelsContainer;
42 class DtIndirectVisitorControlGroupCreator;
43 class DtIndirectRegistrarDriverNode;
44 struct DtNodePlusTraversalInfo;
45 class DtLightPointNode;
46 class DtOsgTerrainPatchObject;
51 #define DTPAGEDTILESINDIRECTMANAGER_PROXIES_USE_GT 1
98 virtual void setName(
const std::string& name);
104 virtual void nodePagedIn(
const osg::Node* node,
const std::string& fileName, osg::NodePath& parentalNodePath,
bool oceanExtracted);
109 virtual void nodePagingOut(
const osg::Node* node);
114 virtual void addTextureLoaderToSceneGraph(osg::Group& myTerrainGroup);
119 virtual void slot_postTick();
130 virtual void slot_childLoaded(
const osg::Group* page,
const osg::Node* child,
const std::string& fileName, osg::Node*& returnedNode);
133 virtual bool pageBelongsToThisMetaFlightTerrain(
const osg::Group* page)
const;
139 virtual void slot_childPagedIn(
const osg::Group* page,
const osg::Node* child);
143 virtual void indirectChildFromPageIn(
const osg::Group* page,
const osg::Node* child,
const std::string& fileName, osg::NodePath& parentalNodePath,
bool oceanExtracted);
155 virtual void slot_childAboutToPageOut(
const osg::Group* page,
const osg::Node* child);
160 virtual bool processProxyNodes(osg::Group *indirectGroup,
const osg::Group* child, std::set<osg::Node*>& foundProxyNodes,
161 osg::NodePath& parentalNodePath);
164 virtual void processGeodes(osg::Group* indirectGroup, osg::Group* child,
const std::string& fileName,
165 const std::set<osg::Node*>& foundProxyNodes,
bool backgroundThread, osg::NodePath& parentalNodePath,
bool oceanIsIndirect);
168 virtual void replaceChildWithGroup(
const osg::Group* child,
const osg::Group* childReplacement);
171 virtual void indirectThisChild(osg::Group* intersectionGroup, osg::Group* child,
const std::string& fileName,
172 bool backgroundThread, osg::NodePath& parentalNodePath,
bool oceanExtracted);
175 virtual void disconnectSignalsAndWait();
178 virtual void printHierarchy(
const osg::Node* node)
const;
181 virtual void removeNestedProxyNodes(
ProxyNodesArray& proxyNodesArray)
const;
187 virtual void terrainSkinCellCreatedAndInstancesAdded(
const DtCellGeoSpecificIndirectGeo* cell,
const std::unordered_set<int>& instances);
195 #if DTPAGEDTILESINDIRECTMANAGER_PROXIES_USE_GT
boost::mutex myMapCelltoSetGeodesInCellMutex
lock for the map above
Definition: DtPagedTilesIndirectManager.h:208
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Helper for managing a map of feature tile nodes (for a layer) to DtCellGeoSpecificIndirectGeo DtCellG...
Definition: DtCellToGeoSpecificIndirectGeoMap.h:39
DtCellToGeoSpecificIndirectGeoMap * myCellToGSIndirectGeoMapTerrainSkin
Definition: DtPagedTilesIndirectManager.h:202
handles the management of paged tiles and terrain patches being added to the indirect rendering syste...
Definition: DtPagedTilesIndirectManager.h:69
DtIndirectVisitorControlGroupCreator & myIndirectGeoIntersectionGroupCreator
Definition: DtPagedTilesIndirectManager.h:225
DtOsgTerrainPatchObject & myOsgTerrainPatchObject
Definition: DtPagedTilesIndirectManager.h:227
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Definition: featureContext.h:36
boost::mutex mySignalMutex
Definition: DtPagedTilesIndirectManager.h:221
std::vector< DtNodePlusTraversalInfo > ProxyNodesArray
Definition: DtPagedTilesIndirectManager.h:95
DtIndirectModelsContainer * myGTModelsContainer
Definition: DtPagedTilesIndirectManager.h:197
Connections myConnections
The connected signals for paging.
Definition: DtPagedTilesIndirectManager.h:214
bool myAdjustLodStart
Definition: DtPagedTilesIndirectManager.h:224
Helper for managing a map of feature tile nodes (for a layer) to DtCellGeoTypicalIndirectGeo DtCellGe...
Definition: DtCellToGeoTypicalIndirectGeoMap.h:39
creator for DtIndirectVisitorControlGroup
Definition: DtIndirectVisitorControlGroup.h:56
friend DtPagedTilesIndirectManagerCreator
friend class creator so that it is the only thing that will create DtPageTilesIndirectManagers ...
Definition: DtPagedTilesIndirectManager.h:78
class for holding an indirect geometry registrar (which holds the information about how to draw model...
Definition: DtIndirectModelsContainer.h:71
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:23
DtVirtualBaseClassCreator< DtPagedTilesIndirectManager, DtOsgTerrainPatchObject &, const bool &, const bool & > DtPagedTilesIndirectManagerCreator
creator
Definition: DtPagedTilesIndirectManager.h:56
A DtOsgTerrainPatchObject contains the methods for loading a file as a terrain. When loading a file a...
Definition: DtOsgTerrainPatchObject.h:54
boost::signalslib::signal< void(const DtPagedTilesIndirectManager &)> signal_terrainInstancesReadyToRender
Emitted when instances of the terrain skin are ready to render.
Definition: DtPagedTilesIndirectManager.h:123
std::vector< boost::signalslib::connection > Connections
A collection of signals.
Definition: DtPagedTilesIndirectManager.h:211
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtDe & myDe
Definition: DtPagedTilesIndirectManager.h:193
boost::condition mySignalConditional
Definition: DtPagedTilesIndirectManager.h:222
Helper for managing indirect geometry, its intersection group and registrar corresponding to a 'tile ...
Definition: DtCellGeoSpecificIndirectGeo.h:26
int mySignalWaitCount
Definition: DtPagedTilesIndirectManager.h:223
Base class to provide boost signal/slot management.
const char * creatorTypeName< DtPagedTilesIndirectManager >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtPagedTilesIndirectManager.h:63
Contains DLL export macros.
std::unordered_map< const DtCellGeoSpecificIndirectGeo *, std::unordered_set< int > > myMapCelltoSetGeodesInCell
map of each cell to the set of instance ids (in the indirect geometry) for that cell ...
Definition: DtPagedTilesIndirectManager.h:205
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
DtSignalConnectionManager myOtherConnections
manager for other connections
Definition: DtPagedTilesIndirectManager.h:217
DtCellToGeoTypicalIndirectGeoMap * myCellToGTIndirectGeoMap
Definition: DtPagedTilesIndirectManager.h:196
osg::ref_ptr< DtIndirectRegistrarDriverNode > myIndirectTextureLoaderNode
Definition: DtPagedTilesIndirectManager.h:219