VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
terrainSourceTracker.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2024 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
14 
15 #include <geometry/sphere.h>
16 
19 
21 
23 #include <vrfutil/sphere2.h>
24 
25 #include <atomic>
26 #include <tbb/spin_rw_mutex.h>
27 
28 #include <boost/unordered_map.hpp>
29 #include <boost/optional.hpp>
30 
31 #include <osgEarth/TileKey>
32 
33 typedef boost::unordered_multimap<DtNodeId, std::shared_ptr<btCollisionObject> > DtNodeToCollObjMMap;
34 typedef std::pair<DtNodeToCollObjMMap::iterator, DtNodeToCollObjMMap::iterator>
36 
38 struct DtTileData;
39 
41 struct TileCache
42 {
43 public:
44  TileCache(std::shared_ptr<DtTileData> tilePointer, const DtChord* chord = NULL) :
45  myTilePointer(tilePointer),
46  myIsChord(false)
47  {
48  if (chord != NULL)
49  {
50  myIsChord = true;
51  myPt0 = chord->endpoint0();
52  myPt1 = chord->endpoint1();
53  }
54  }
55  TileCache(const TileCache& tile) :
57  myIsChord(tile.myIsChord),
58  myPt0(tile.myPt0),
59  myPt1(tile.myPt1)
60  {
61 
62  }
63 
64  std::shared_ptr<DtTileData> myTilePointer;
65  bool myIsChord;
68 };
69 
70 typedef std::vector<TileCache> tileDataCacheVector;
71 
76 {
77 public:
78 
80  DtTerrainSourceTracker(DtVantageTerrainEngine*, DtPagerCommandQueue* commandQueue, osgEarth::MapNode* mapNode);
81 
83  virtual ~DtTerrainSourceTracker();
84 
86  virtual DtTerrainInterfaceConfig& configOptions();
87  virtual const DtTerrainInterfaceConfig& configOptions() const;
88 
91  virtual bool init(DtTerrainSourcePager&);
92 
97  virtual boost::optional<DtTerrainIntersectOptions::Fidelity> intersectFidelity() const;
98 
102  virtual DtTerrainCategoryMask terrainCategories() const;
103 
105  virtual bool dataAvailable(DtPagingMetaDataPtr metaData,
106  DtTerrainPagingGeometryPtr geometry) = 0;
107 
115  virtual void pageInData(DtPagingMetaDataPtr metaData,
116  DtTerrainPagingGeometryPtr geometry) = 0;
117 
118  //Should return true if the tracker is capable of paging out data.
119  virtual bool canPageOutData(DtTerrainIntersectIDType intersectId) = 0;
120 
126  virtual DtTerrainIntersectIDType findOldestPagedData(unsigned int& numTriangles) = 0;
127 
130  virtual void pageOutOldestData(const int priority) = 0;
131 
133  virtual void addNodesToCollisionMapping(DtNodeId node,
134  DtCollisionObjectList* collObjList);
135 
137  virtual void removeNodeToCollisionMappings(DtNodeId node);
138 
140  virtual DtCollisionObjectList collisionObjectsForNode(DtNodeId node);
141 
143  virtual osgEarth::MapNode* mapNode() const;
144 
146  virtual const osgEarth::Profile* profile() const;
147 
149  virtual const Coordinate_System* localCS() const;
150 
152  virtual void setLabel(const DtString&);
153  virtual DtString label() const;
154 
156  virtual void printInfo() const;
157 
159  virtual void getPageOutData(DtNodeBoundingList& nodeBoundingList);
160 
162  virtual void getPageInData(DtNodeBoundingList& nodeBoundingList);
163 
165  virtual void getProceduralTreeTile(DtDebugDrawTerrainOutputInterface::terrainLineList& nodeBoundingList);
166 
168  virtual unsigned getMaxLODForBilinearIntersection() const;
169 
171  virtual double intersetionTriangleMergeTolerance() const;
172 
174  virtual bool useLandCoverData() const;
175 
177  virtual bool useLifeMapLayer() const;
178 
180  virtual void getSoilFromString(const std::string & soilType, DtSurface& surface) const;
181 
183  virtual double triangleOutputMergeTolerance() const;
184 
186  virtual unsigned minElevationIndexLOD() const;
187 
189  virtual unsigned maxElevationIndexLOD() const;
190 
192  virtual unsigned maxLOD() const;
193 
195  virtual bool useRawElevation() const;
196 
198  virtual osgEarth::TileKey getBestTileKey(const osgEarth::TileKey&) const;
199 
202  virtual bool findTileInCache(const DtTerrainPagingGeometry* geometry, std::vector< std::shared_ptr<DtTileData> >& data,
203  const DtChord* chord=NULL) const;
204 
208  virtual void addTileToCache(const std::shared_ptr<DtTileData>& data, const DtChord* chord = NULL);
209 
211  virtual void clearTileCache();
212 
215  virtual unsigned minElevationTileLoadingLOD() const;
216  virtual void setMinElevationTileLoading(unsigned lod);
217 
218 
219 protected:
220 
222 
224 
226 
228 
229  mutable tbb::spin_rw_mutex myMutex;
230 
231  mutable tbb::spin_rw_mutex myTileCacheMutex;
232 
234 
237  const osgEarth::Map* myMap;
238  const osgEarth::Profile* myMapProfile;
239 
242 
244  std::atomic<int> myTileCacheHit;
245  std::atomic<int> myTileCacheQuery;
246 
249 
251 };
252 
254 {
255 public:
256  TileDataCallback() { myIsFinished = false; };
257 
258  virtual bool operator()(const std::shared_ptr<DtTileData>& tile) = 0;
259 
260  virtual bool finish() const { return myIsFinished; }
261  virtual void setFinish(bool finish) { myIsFinished=finish; }
262 
263 protected:
264 
266 };
DtTileData is tracked by the DtOsgEarthTerrainSourceTracker for paging out tiles. ...
Definition: tileData.h:37
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
Class DtTerrainInterfaceConfig is a readable-writable class holding terrain interface configuration o...
Definition: terrainInterfaceConfig.h:33
DtTerrainSourcePager is the base class for terrain pagers. There will be one terrainSourcePager per t...
Definition: terrainSourcePager.h:56
DtPoint myPt1
Definition: terrainSourceTracker.h:67
TileCache(std::shared_ptr< DtTileData > tilePointer, const DtChord *chord=NULL)
Definition: terrainSourceTracker.h:44
std::vector< makVrf::DtLine > terrainLineList
Lines structure/calls/list.
Definition: debugDrawTerrainOutputInterface.h:109
DtString myLabel
map node for whole terrain
Definition: terrainSourceTracker.h:221
bool myIsChord
Definition: terrainSourceTracker.h:65
unsigned long long DtTerrainIntersectIDType
Definition: terrainInterfaceDefines.h:28
tbb::spin_rw_mutex myMutex
map node for whole terrain
Definition: terrainSourceTracker.h:229
Definition: surface.h:181
boost::unordered_multimap< DtNodeId, std::shared_ptr< btCollisionObject > > DtNodeToCollObjMMap
Definition: terrainSourceTracker.h:33
tbb::concurrent_queue< DtTerrainPagerCommand * > DtPagerCommandQueue
Definition: vantageTerrainImplementationUtil.h:42
DtPagerCommandQueue * myCommandQueue
map node for whole terrain
Definition: terrainSourceTracker.h:225
bool myIsFinished
Definition: terrainSourceTracker.h:265
const osg::ref_ptr< osgEarth::MapNode > myMapNode
map node for whole terrain
Definition: terrainSourceTracker.h:236
TileCache(const TileCache &tile)
Definition: terrainSourceTracker.h:55
TileDataCallback()
Definition: terrainSourceTracker.h:256
Definition: coordSystem.h:54
DtVantageTerrainEngine * myVantageTerrainEngine
map node for whole terrain
Definition: terrainSourceTracker.h:233
DtTerrainSourcePager * myPager
map node for whole terrain
Definition: terrainSourceTracker.h:250
std::pair< DtNodeToCollObjMMap::iterator, DtNodeToCollObjMMap::iterator > DtNodeToCollObjRangePair
Definition: terrainSourceTracker.h:35
std::shared_ptr< DtTerrainPagingGeometry > DtTerrainPagingGeometryPtr
Definition: terrainPagingGeometry.h:46
std::list< DtSphere2 > DtNodeBoundingList
Definition: sphere2.h:20
Base class for Terrain Source trackers. Determines if the necessary data To perform an intersection i...
Definition: terrainSourceTracker.h:75
const osgEarth::Map * myMap
map node for whole terrain
Definition: terrainSourceTracker.h:237
std::shared_ptr< DtPagingMetaData > DtPagingMetaDataPtr
Definition: terrainPagingGeometry.h:108
unsigned myMinElevationTileLoadingLOD
Min lod an elevation tile can loaded.
Definition: terrainSourceTracker.h:248
std::atomic< int > myTileCacheHit
Stats for cache.
Definition: terrainSourceTracker.h:244
Definition: terrainSourceTracker.h:253
virtual bool finish() const
Definition: terrainSourceTracker.h:260
const osgEarth::Profile * myMapProfile
map node for whole terrain
Definition: terrainSourceTracker.h:238
Abstract base class for defining geometric areas for paging of terrain. Subclasses of this class will...
Definition: terrainPagingGeometry.h:24
DtNodeToCollObjMMap myNodeToCollObjMMap
map node for whole terrain
Definition: terrainSourceTracker.h:227
DtTerrainInterfaceConfig myConfig
map node for whole terrain
Definition: terrainSourceTracker.h:223
std::atomic< int > myTileCacheQuery
map node for whole terrain
Definition: terrainSourceTracker.h:245
std::list< std::shared_ptr< btCollisionObject > > DtCollisionObjectList
Definition: bulletUtil.h:47
unsigned int DtTerrainCategoryMask
This bitmask is made using DtTerrainCategory values.
Definition: rwTerrainCategoryMask.h:27
#define DT_DLL_vantageTerrainImplementation
This file is used to determine how to build.
Definition: vantageTerrainImplementationDefines.h:28
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
tbb::spin_rw_mutex myTileCacheMutex
map node for whole terrain
Definition: terrainSourceTracker.h:231
This class wraps the VR-Vantage Display Engine, and uses as a terrain loader and intersector. This is the terrain engine that powers the DtVantageTerrainImplementation. The DtVantageTerrainEngine runs the DtDe it its own thread, and processes commands thought the command queue.
Definition: vantageTerrainEngine.h:112
virtual void setFinish(bool finish)
Definition: terrainSourceTracker.h:261
std::vector< TileCache > tileDataCacheVector
Definition: terrainSourceTracker.h:70
std::shared_ptr< DtTileData > myTilePointer
Definition: terrainSourceTracker.h:64
tileDataCacheVector myTileDataCache
Tile Data cache to speed up intersections.
Definition: terrainSourceTracker.h:241
DtPoint myPt0
Definition: terrainSourceTracker.h:66
Definition: terrainSourceTracker.h:41
Definition: point.h:34
Interface to query terrain polygon.

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)