18 #include <osg/Matrixd>
23 #include <unordered_set>
25 #include <boost/thread/condition.hpp>
35 class DtCellToGeoTypicalIndirectGeoMap;
36 class DtCellToGeoSpecificIndirectGeoMap;
37 class DtCellIndirectGeo;
38 class DtCellGeoTypicalIndirectGeo;
39 class DtCellGeoSpecificIndirectGeo;
40 class DtIndirectModelsContainer;
41 class DtIndirectVisitorControlGroupCreator;
42 class DtIndirectTextureLoaderNode;
43 struct DtNodePlusTraversalInfo;
44 class DtLightPointNode;
49 #define DTPAGEDTILESINDIRECTMANAGER_PROXIES_USE_GT 1
96 virtual void setName(
const std::string& name);
102 virtual void nodePagedIn(
const osg::Node* node,
const std::string& fileName, osg::NodePath& parentalNodePath,
bool oceanExtracted);
107 virtual void nodePagingOut(
const osg::Node* node);
112 virtual void addTextureLoaderToSceneGraph(osg::Group& myTerrainGroup);
117 virtual void slot_postTick();
120 virtual void setMetaflightGroup(osg::Node* node);
131 virtual void slot_childLoaded(
const osg::Group* page,
const osg::Node* child,
const std::string& fileName, osg::Node*& returnedNode);
134 virtual bool shouldHandlePage(
const osg::Group* page);
140 virtual void slot_childPagedIn(
const osg::Group* page,
const osg::Node* child);
144 virtual void indirectChildFromPageIn(
const osg::Group* page,
const osg::Node* child,
const std::string& fileName, osg::NodePath& parentalNodePath,
bool oceanExtracted);
156 virtual void slot_childAboutToPageOut(
const osg::Group* page,
const osg::Node* child);
161 virtual bool processProxyNodes(osg::Group *indirectGroup,
const osg::Group* child, std::set<osg::Node*>& foundProxyNodes,
162 osg::NodePath& parentalNodePath);
165 virtual void processGeodes(osg::Group* indirectGroup, osg::Group* child,
const std::string& fileName,
166 const std::set<osg::Node*>& foundProxyNodes,
bool backgroundThread, osg::NodePath& parentalNodePath,
bool oceanIsIndirect);
169 virtual void replaceChildWithGroup(
const osg::Group* child,
const osg::Group* childReplacement);
172 virtual void indirectThisChild(osg::Group* intersectionGroup, osg::Group* child,
const std::string& fileName,
173 bool backgroundThread, osg::NodePath& parentalNodePath,
bool oceanExtracted);
176 virtual void disconnectSignalsAndWait();
179 virtual void printHierarchy(
const osg::Node* node)
const;
182 virtual void removeNestedProxyNodes(
ProxyNodesArray& proxyNodesArray)
const;
188 virtual void terrainSkinCellCreatedAndInstancesAdded(
const DtCellGeoSpecificIndirectGeo* cell,
const std::unordered_set<int>& instances);
196 #if DTPAGEDTILESINDIRECTMANAGER_PROXIES_USE_GT
boost::mutex myMapCelltoSetGeodesInCellMutex
lock for the map above
Definition: DtPagedTilesIndirectManager.h:209
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:203
handles the management of paged tiles and terrain patches being added to the indirect rendering syste...
Definition: DtPagedTilesIndirectManager.h:67
DtIndirectVisitorControlGroupCreator & myIndirectGeoIntersectionGroupCreator
Definition: DtPagedTilesIndirectManager.h:226
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Definition: featureContext.h:37
boost::mutex mySignalMutex
Definition: DtPagedTilesIndirectManager.h:222
std::vector< DtNodePlusTraversalInfo > ProxyNodesArray
Definition: DtPagedTilesIndirectManager.h:93
DtIndirectModelsContainer * myGTModelsContainer
Definition: DtPagedTilesIndirectManager.h:198
Connections myConnections
The connected signals for paging.
Definition: DtPagedTilesIndirectManager.h:215
bool myAdjustLodStart
Definition: DtPagedTilesIndirectManager.h:225
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
osg::Node * myMetaflightGroupNode
Definition: DtPagedTilesIndirectManager.h:227
friend DtPagedTilesIndirectManagerCreator
friend class creator so that it is the only thing that will create DtPageTilesIndirectManagers ...
Definition: DtPagedTilesIndirectManager.h:76
class for holding an indirect geometry registrar (which holds the information about how to draw model...
Definition: DtIndirectModelsContainer.h:55
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
DtVirtualBaseClassCreator< DtPagedTilesIndirectManager, const bool &, const bool & > DtPagedTilesIndirectManagerCreator
creator
Definition: DtPagedTilesIndirectManager.h:54
boost::signalslib::signal< void(const DtPagedTilesIndirectManager &)> signal_terrainInstancesReadyToRender
Emitted when instances of the terrain skin are ready to render.
Definition: DtPagedTilesIndirectManager.h:124
std::vector< boost::signalslib::connection > Connections
A collection of signals.
Definition: DtPagedTilesIndirectManager.h:212
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtDe & myDe
Definition: DtPagedTilesIndirectManager.h:194
osg::ref_ptr< DtIndirectTextureLoaderNode > myTextureLoaderNode
Definition: DtPagedTilesIndirectManager.h:220
boost::condition mySignalConditional
Definition: DtPagedTilesIndirectManager.h:223
Helper for managing indirect geometry, its intersection group and registrar corresponding to a 'tile ...
Definition: DtCellGeoSpecificIndirectGeo.h:26
int mySignalWaitCount
Definition: DtPagedTilesIndirectManager.h:224
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:61
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:206
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:70
DtSignalConnectionManager myOtherConnections
manager for other connections
Definition: DtPagedTilesIndirectManager.h:218
DtCellToGeoTypicalIndirectGeoMap * myCellToGTIndirectGeoMap
Definition: DtPagedTilesIndirectManager.h:197