VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
boundingVolumeTerrainSourceTracker.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2010 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 
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 
40 
41 
47  : public DtTerrainSourceTracker
48 {
49 public:
50 
51  //Struct defining the elemnt to add to the spatial subdivision for paged-in
52  //nodes. This is a different data structure from the paged-out nodes because
53  //there is additional data.
55  {
57  : myId(id)
58  , myStatus(status)
59  {
60 
61  }
62 
63  DtNodeStatusSSELement(std::pair<DtNodeId, DtPagedNodeStatusPtr> idStatusPair)
64  : myId(idStatusPair.first)
65  , myStatus(idStatusPair.second)
66  {
67 
68  }
69 
70  DtExtent extent()
71  {
72  return myStatus->myBoundingInfo.extent();
73  }
74 
75  void expandExtent(DtExtent& extent) const
76  {
77  myStatus->myBoundingInfo.expandExtent(extent);
78  }
79 
82  };
83  typedef boost::shared_ptr<DtNodeStatusSSELement> DtNodeStatusSSElementPtr;
84 
87 
89 
91 
92  virtual void updatePagedOutInfo(bool worldPagedOut,
93  const DtNodeBoundingInfoList& volumes);
94 
95  virtual void updatePagedInInfo(
96  const DtNodeBoundingInfoMap& volumes,
97  DtTerrainIntersectIDType intersectId = 0);
98 
99  virtual void removePagedInInfo(DtNodeId node);
100 
101  virtual bool dataAvailable(DtPagingMetaDataPtr metaData,
102  DtTerrainPagingGeometryPtr geometry);
103 
104  virtual void pageInData(DtPagingMetaDataPtr metaData,
105  DtTerrainPagingGeometryPtr geometry);
106 
107  virtual void drawDebugInfo(btIDebugDraw* debugDrawer);
108  virtual void updateDrawer(bool force);
109 
110  virtual bool canPageOutData(DtTerrainIntersectIDType intersectId);
111 
112  virtual void pageOutOldestData(const int priority);
113 
114  virtual DtTerrainIntersectIDType findOldestPagedData(unsigned int& numTrianglesOut);
115 
116  virtual void printInfo() const;
117 
118  virtual bool getPagedOutNodes(DtTerrainPagingGeometryPtr geometry,
119  DtNodeBoundingInfoSet& nodes);
120 
121  virtual bool getPagedInNodes(DtTerrainPagingGeometryPtr geometry,
122  DtPagedNodeStatusMap& nodes);
123 
124  virtual bool setDrawMode(DtDrawMode mode);
125 
126 protected:
127 
128  virtual bool getPagedOutNodes(const DtSphere& sphere,
129  DtNodeBoundingInfoSet& nodes);
130  virtual bool getPagedOutNodes(const DtLocalVertexList& vertexList,
131  DtNodeBoundingInfoSet& nodes);
132  virtual bool getPagedOutNodes(const DtChord& chord,
133  DtNodeBoundingInfoSet& nodes);
134 
135  virtual bool getPagedInNodes(const DtSphere& sphere,
136  DtPagedNodeStatusMap& nodes);
137  virtual bool getPagedInNodes(const DtLocalVertexList& vertexList,
138  DtPagedNodeStatusMap& nodes);
139  virtual bool getPagedInNodes(const DtChord& chord,
140  DtPagedNodeStatusMap& nodes);
141 
142  virtual DtPageInGeometryCommand* createPageInGeometryCommand(
143  DtPagingMetaDataPtr metaData);
144 
145  virtual DtPageOutNodesCommand* createPageOutNodesCommand(
146  DtPagingMetaDataPtr metaData);
147 
148  virtual unsigned int getNumTriangles(DtNodeId node);
149 
150  virtual bool initializePagedOutSpatialSubdivision();
151  virtual bool initializePagedInSpatialSubdivision();
152 
153  virtual bool createPagedOutSpatialContainer(const DtExtent& extent);
154  virtual bool createPagedInSpatialContainer(const DtExtent& extent);
155 
156  virtual void addTerrainNodes(const DtNodeBoundingInfoList& nodes);
157  virtual void addTerrainNodes(const DtPagedNodeStatusMap& nodes);
158 
159 protected:
163 
166 
168 
171 
178 
179  mutable tbb::spin_rw_mutex mySpatialSubdivisionMutex;
180 
181  std::auto_ptr<DtSharedMemoryBulletDebugDrawer> myDrawer;
182 };
183 
184 
185 

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)