VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
boundingVolumeTerrainSourceTracker.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 
12 
13 //Mak Terrain Toolkit includes
14 #include <geometry/sphere.h>
16 #include <boost/unordered_map.hpp>
17 
23 #include <vrfutil/sphere2.h>
24 
25 //VR-Link includes
26 #include <vlutil/vlSmartPointers.h>
27 #include <matrix/coordTransform.h>
28 
29 #include <tbb/spin_rw_mutex.h>
30 
31 #include <string>
32 #include <list>
33 #include <stack>
34 
38 class DtLocalVertexList;
39 
41 
42 
48  : public DtTerrainSourceTracker
49 {
50 public:
51 
52  //Struct defining the elemnt to add to the spatial subdivision for paged-in
53  //nodes. This is a different data structure from the paged-out nodes because
54  //there is additional data.
56  {
58  : myId(id)
59  , myStatus(status)
60  {
61 
62  }
63 
64  DtNodeStatusSSELement(std::pair<DtNodeId, DtPagedNodeStatusPtr> idStatusPair)
65  : myId(idStatusPair.first)
66  , myStatus(idStatusPair.second)
67  {
68 
69  }
70 
72  {
73  return myStatus->myBoundingInfo.extent();
74  }
75 
76  void expandExtent(DtExtent& extent) const
77  {
78  myStatus->myBoundingInfo.expandExtent(extent);
79  }
80 
83  };
84  typedef boost::shared_ptr<DtNodeStatusSSELement> DtNodeStatusSSElementPtr;
85 
88 
90 
92 
93  virtual void updatePagedOutInfo(const DtNodeBoundingInfoList& volumes, bool invalid = false);
94 
97  virtual void updatePagedOutInfo(
98  const DtNodeBoundingInfoList& volumes,
99  const DtNodeBoundingInfoList& removed,
100  bool invalid = false);
101 
102  virtual void updatePagedInInfo(
103  const DtNodeBoundingInfoMap& volumes,
104  DtTerrainIntersectIDType intersectId = 0);
105 
106  virtual void removePagedInInfo(DtNodeId node);
107 
108  virtual bool dataAvailable(DtPagingMetaDataPtr metaData,
109  DtTerrainPagingGeometryPtr geometry);
110 
111  virtual bool isPagedOut(DtTerrainPagingGeometryPtr geometry, std::set<std::string>& retVec);
112 
113  virtual void pageInData(DtPagingMetaDataPtr metaData,
114  DtTerrainPagingGeometryPtr geometry);
115 
116  virtual bool canPageOutData(DtTerrainIntersectIDType intersectId);
117 
118  virtual void pageOutOldestData(const int priority);
119 
120  virtual DtTerrainIntersectIDType findOldestPagedData(unsigned int& numTrianglesOut);
121 
122  virtual void printInfo() const;
123 
124  virtual bool getPagedOutNodes(DtTerrainPagingGeometryPtr geometry,
125  DtNodeBoundingInfoSet& nodes);
126 
127  virtual bool getPagedInNodes(DtTerrainPagingGeometryPtr geometry,
128  DtPagedNodeStatusMap& nodes);
129 
131  virtual void getPageOutData(DtNodeBoundingList& nodeBoundingList);
132 
134  virtual void getPageInData(DtNodeBoundingList& nodeBoundingList);
135 
136 protected:
137 
138  virtual bool getPagedOutNodes(const DtSphere& sphere,
139  DtNodeBoundingInfoSet& nodes);
140  virtual bool getPagedOutNodes(const DtLocalVertexList& vertexList,
141  DtNodeBoundingInfoSet& nodes);
142  virtual bool getPagedOutNodes(const DtChord& chord,
143  DtNodeBoundingInfoSet& nodes);
144 
145  virtual bool getPagedInNodes(const DtSphere& sphere,
146  DtPagedNodeStatusMap& nodes);
147  virtual bool getPagedInNodes(const DtLocalVertexList& vertexList,
148  DtPagedNodeStatusMap& nodes);
149  virtual bool getPagedInNodes(const DtChord& chord,
150  DtPagedNodeStatusMap& nodes);
151 
152  virtual DtTerrainIntersectIDType findOldestPagedDataUnlocked(unsigned int& numTrianglesOut);
153 
154  virtual DtPageInGeometryCommand* createPageInGeometryCommand(
155  DtPagingMetaDataPtr metaData);
156 
157  virtual DtPageOutNodesCommand* createPageOutNodesCommand(
158  DtPagingMetaDataPtr metaData);
159 
160  virtual unsigned int getNumTriangles(DtNodeId node);
161 
162 protected:
166 
169 
171 
173  tbb::atomic<bool> myRecomputeOldestPagedObject;
174 
182 };
183 
184 
185 
DtBoost::shared_ptr< DtPagedNodeStatus > DtPagedNodeStatusPtr
Definition: boundingNodeInfo.h:86
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtBoost::shared_ptr< DtTerrainPagingGeometry > DtTerrainPagingGeometryPtr
Definition: terrainPagingGeometry.h:41
boost::unordered_map< DtNodeId, DtNodeBoundingInfoPtr > DtNodeBoundingInfoMap
Definition: boundingNodeInfo.h:97
Definition: sphere.h:22
boost::unordered_map< DtNodeId, DtPagedNodeStatusPtr > DtPagedNodeStatusMap
Definition: boundingNodeInfo.h:98
unsigned long long DtTerrainIntersectIDType
Definition: terrainInterfaceDefines.h:28
virtual void pageInData(DtPagingMetaDataPtr metaData, DtTerrainPagingGeometryPtr geometry)=0
Page in data within geometry.
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
virtual void pageOutOldestData(const int priority)=0
Adds a page out command for the least-recently-used tileID to myCommandQueue.
virtual void getPageInData(DtNodeBoundingList &nodeBoundingList)
Return a list of bounding sphere that represent the the paged out tiles.
std::list< DtNodeBoundingInfoPtr > DtNodeBoundingInfoList
Definition: boundingNodeInfo.h:95
tbb::concurrent_queue< DtTerrainPagerCommand * > DtPagerCommandQueue
Definition: vantageTerrainImplementationUtil.h:29
Definition: boundingVolumeCommands.h:41
void expandExtent(DtExtent &extent) const
Definition: boundingVolumeTerrainSourceTracker.h:76
virtual bool dataAvailable(DtPagingMetaDataPtr metaData, DtTerrainPagingGeometryPtr geometry)=0
DtSpatialSubdivision< DtNodeBoundingInfoPtr > DtSpatialNodeBoundingInfoContainer
Definition: boundingVolumeTerrainSourceTracker.h:86
const Coordinate_System * myCoordSys
Definition: boundingVolumeTerrainSourceTracker.h:181
virtual void printInfo() const
DtNodeId myId
Definition: boundingVolumeTerrainSourceTracker.h:81
Definition: boundingVolumeTerrainSourceTracker.h:55
Definition: coordSystem.h:54
DtNodeBoundingInfoList myPagedOutAreas
For now, just a primitive list of spheres.
Definition: boundingVolumeTerrainSourceTracker.h:165
std::list< DtSphere2 > DtNodeBoundingList
Definition: sphere2.h:20
boost::shared_ptr< DtNodeStatusSSELement > DtNodeStatusSSElementPtr
Definition: boundingVolumeTerrainSourceTracker.h:84
Base class for Terrain Source trackers.
Definition: terrainSourceTracker.h:40
Command which causes all data within the specified geometry to be paged in by the terrain pager...
Definition: boundingVolumeCommands.h:16
bool myInvalidFlag
Definition: boundingVolumeTerrainSourceTracker.h:170
DtNodeId myOldestPagedObject
Definition: boundingVolumeTerrainSourceTracker.h:172
DtSpatialSubdivision< DtNodeStatusSSElementPtr > DtSpatialNodeStatusContainer
Definition: boundingVolumeTerrainSourceTracker.h:87
virtual void getPageOutData(DtNodeBoundingList &nodeBoundingList)
Return a list of bounding sphere that represent the the paged in tiles.
A DtBoundingVolumeTerrainSourceTracker tracks data from a paging terrain source for purposes such as ...
Definition: boundingVolumeTerrainSourceTracker.h:47
DtPagedNodeStatusPtr myStatus
Definition: boundingVolumeTerrainSourceTracker.h:82
DtNodeStatusSSELement(std::pair< DtNodeId, DtPagedNodeStatusPtr > idStatusPair)
Definition: boundingVolumeTerrainSourceTracker.h:64
#define DT_DLL_vantageTerrainImplementation
This file is used to determine how to build.
Definition: vantageTerrainImplementationDefines.h:28
DtExtent extent()
Definition: boundingVolumeTerrainSourceTracker.h:71
Definition: spatialSubdivision.h:68
DtSpatialNodeStatusContainer * myPagedInSpatialNodeContainer
Definition: boundingVolumeTerrainSourceTracker.h:180
This class wraps the VR-Vantage Display Engine, and uses as a terrain loader and intersector.
Definition: vantageTerrainEngine.h:93
virtual bool canPageOutData(DtTerrainIntersectIDType intersectId)=0
class DtLocalVertexList:
Definition: localVertexList.h:20
DtBoost::shared_ptr< DtPagingMetaData > DtPagingMetaDataPtr
Definition: terrainPagingGeometry.h:89
DtNodeStatusSSELement(DtNodeId id, DtPagedNodeStatusPtr status)
Definition: boundingVolumeTerrainSourceTracker.h:57
boost::unordered_set< DtNodeBoundingInfoPtr > DtNodeBoundingInfoSet
Definition: boundingNodeInfo.h:96
DtSpatialNodeBoundingInfoContainer * myPagedOutSpatialNodeContainer
Spatial subdivision for finding relevant bounding nodes.
Definition: boundingVolumeTerrainSourceTracker.h:179
tbb::atomic< bool > myRecomputeOldestPagedObject
Definition: boundingVolumeTerrainSourceTracker.h:173
virtual DtTerrainIntersectIDType findOldestPagedData(unsigned int &numTriangles)=0
Finds the least-recently-used tile and set myOldestPagedObject to it.
DtPagedNodeStatusMap myPagedInAreas
List of paged in volumes. Used for tracking usage for paging out.
Definition: boundingVolumeTerrainSourceTracker.h:168

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)