24 #include <boost/thread.hpp>
25 #include <unordered_map>
26 #include <unordered_set>
28 #include <tbb/concurrent_hash_map.h>
29 #include <tbb/concurrent_vector.h>
34 class DtIndirectEntityGeometry;
35 class DtIndirectModelsContainer;
36 class DtIndirectGeometryRenderer;
39 class DtIndirectGeometryGrid;
78 , INSTANCE_REMOVE_REGULAR
81 , INSTANCE_ADD_MOVE_NEW_CELL
84 , INSTANCE_REMOVE_MOVE_OLD_CELL
87 , INSTANCE_REMOVE_MOVE_CANCEL_NEW_CELL
90 , INSTANCE_REMOVE_CELL_PAGED_OUT
145 virtual bool ts_removeCell(
const Vector3_int& cellId);
163 virtual void setCellSize(
const Vector3_64& cellSize);
165 virtual const Vector3_64& cellSize(
void)
const;
169 virtual void setCellPadding(
const Vector3_64& padding);
174 virtual const Vector3_64& cellPadding(
void)
const;
192 virtual void processInstanceTrackingRequests();
210 virtual std::string modelSetString(
void)
const;
Vector3_64 myCellPadding
the cell 'padding'
Definition: DtIndirectGeometryGrid.h:233
AxisAlignedBoundingBox_64 myInfiniteBoundingBox
Definition: DtIndirectGeometryGrid.h:247
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Struct for storing tracking ino that can be pushed onto a concurrent vector.
Definition: DtIndirectGeometryGrid.h:94
DtIndirectLimitTextureStrategy * myLimitTextureStrategy
Definition: DtIndirectGeometryGrid.h:243
tbb::concurrent_vector< InstanceTrackingStruct > InstanceTrackingRequestsVector
Concurrent vector for storing indirect tracking info. As indirect geomtries can be created in multipl...
Definition: DtIndirectGeometryGrid.h:115
osg::ref_ptr< DtIndirectGeometryRenderer > myGridRenderer
Definition: DtIndirectGeometryGrid.h:220
tbb::concurrent_hash_map< Vector3_int, osg::ref_ptr< DtIndirectEntityGeometry >, DtIndirectCellHasher > MapCellIdsToIndirectGeometry
The map of a cell 'id' to its corresponding indirect geometry.
Definition: DtIndirectGeometryGrid.h:67
const char * creatorTypeName< DtIndirectGeometryGrid >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtIndirectGeometryGrid.h:48
boost::mutex myMapCellIdsToIndirectGeometryMutex
Definition: DtIndirectGeometryGrid.h:235
std::unordered_map< int, int > myModelIdToNumInstances
map of model ids to number of instances of those model ids, for the entire grid
Definition: DtIndirectGeometryGrid.h:241
bool myMutexesEnabled
Definition: DtIndirectGeometryGrid.h:253
int myModelId
Definition: DtIndirectGeometryGrid.h:108
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
Inherited from DtIndirectGeometry additionally implements: -removal of instances -ability to set/get ...
Definition: DtIndirectEntityGeometry.h:40
Axis Aligned Bounding Box class.
InstanceTrackingType
Definition: DtIndirectGeometryGrid.h:72
Vector3_int myCellId
Definition: DtIndirectGeometryGrid.h:107
std::unordered_map< Vector3_int, std::unordered_map< int, int >, DtIndirectCellHasher > myMapCellToModelInstances
map of a cell to a map of model ids to number of instances of those model ids, in the cell ...
Definition: DtIndirectGeometryGrid.h:238
The indirect system uses this in conjunction with the system wide limits (for entity/terrain) to clam...
Definition: DtIndirectLimitTextureStrategy.h:65
InstanceTrackingType myType
Definition: DtIndirectGeometryGrid.h:109
InstanceTrackingRequestsVector myInstanceTrackingRequests
Definition: DtIndirectGeometryGrid.h:249
Vector3_64 myCellSize
the cell size
Definition: DtIndirectGeometryGrid.h:230
MapCellIdsToDebugCellDrawables myMapCellIdsToDebugCellDrawables
Definition: DtIndirectGeometryGrid.h:225
std::unordered_map< Vector3_int, osg::ref_ptr< osg::Drawable >, DtIndirectCellHasher > MapCellIdsToDebugCellDrawables
The map of a cell 'id' to its corresponding debug drawable.
Definition: DtIndirectGeometryGrid.h:70
DtIndirectModelsContainer * myModelsContainer
Definition: DtIndirectGeometryGrid.h:227
Contains DLL export macros.
MapCellIdsToIndirectGeometry myMapCellIdsToIndirectGeometry
Definition: DtIndirectGeometryGrid.h:222
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:72
osg::ref_ptr< osg::Node > myGridNode
Definition: DtIndirectGeometryGrid.h:218
friend DtIndirectGeometryGridCreator
only creator can created
Definition: DtIndirectGeometryGrid.h:118
DtDe & myDe
reference to DtDe
Definition: DtIndirectGeometryGrid.h:215
DtModelSetId
Definition: DtModelSetEnums.h:19
Manages a bunch of 'cells' for a given cell size (similar to a sparse octree) each cell has a...
Definition: DtIndirectGeometryGrid.h:62
DtVirtualBaseClassCreator< DtIndirectGeometryGrid, const DtModelSetId & > DtIndirectGeometryGridCreator
creator
Definition: DtIndirectGeometryGrid.h:41
hash for Vector3Int (cell ids), so that we can map cell ids to the corresponding indirect geometry ...
Definition: DtIndirectCellHasher.h:19
Contains makVrv::DtIndirectCellHasher class.
Contains various enum classes relating to model sets.
boost::mutex myMapCellIdsToDebugCellDrawablesMutex
Definition: DtIndirectGeometryGrid.h:224