VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
osgEarthTerrainSourceTracker.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
16 
18 
19 #include <vrfutil/vertexList.h>
20 
21 //Mak Terrain Toolkit includes
22 #include <geometry/sphere.h>
23 
24 #include <vlutil/vlSmartPointers.h>
25 
26 #include <osgTerrain/TerrainTile>
27 #include <osgEarth/Profile>
28 #include <osgEarth/TileKey>
29 
30 #include <string>
31 #include <list>
32 
36 class DtPoint;
37 class DtGeodeticCoord;
38 
39 typedef std::list< osgEarth::TileKey > DtTileKeyList;
40 
42 {
43 public:
44  enum Direction
45  {
46  NORTH = 0,
49  WEST
50  };
51 
53  const osgEarth::Profile* profile, unsigned int lod);
54 
56 
60  virtual void addPagedInTile(const osgEarth::TileKey tileKey, const DtTileData& tileData);
61 
63  virtual void removePagedInTile(const osgEarth::TileKey tileKey);
64 
71  virtual bool dataAvailable(DtPagingMetaDataPtr metaData,
73 
81  virtual void pageInData(DtPagingMetaDataPtr metaData,
83 
89  virtual DtTerrainIntersectIDType findOldestPagedData(unsigned int& numTrianglesOut);
90 
93  virtual void pageOutOldestData(const int priority);
94 
96  virtual void drawDebugInfo(btIDebugDraw* debugDrawer);
97 
99  virtual bool canPageOutData(DtTerrainIntersectIDType intersectId);
100 
106  virtual void convertDirectionToOffset(Direction, int& x, int& y) const;
107 
108 protected:
109 
110  virtual DtPageInTilesCommand* createPageInTilesCommand(
111  DtPagingMetaDataPtr metaData);
112 
113  virtual DtPageOutTilesCommand* createPageOutTilesCommand(
114  DtPagingMetaDataPtr metaData);
115 
116  virtual osgEarth::TileKey makeTileKey(const DtPoint& local, const DtGeodeticCoord& geod) const;
117 
119  virtual void tilesInGeometry(DtTerrainPagingGeometryPtr geometry,
120  DtTileKeyList& tilesOut) const;
121 
126  virtual void pageOutData(const DtTileKeyList tilesToRemove, const int priority);
127 
128  virtual void tilesUnderChord(const DtChord& chord,
129  DtTileKeyList& tilesOut) const;
130 
131  virtual void tilesInSphere(const DtSphere& sphere,
132  DtTileKeyList& tilesOut) const;
133 
134  virtual void tilesInShape(const DtLocalVertexList& vertices,
135  DtTileKeyList& tilesOut) const;
136 
137  virtual bool dataAvailable(const DtTileKeyList& keyList,
138  DtTerrainIntersectIDType intersectId = 0);
139 
140  virtual bool setDrawMode(DtDrawMode);
141 
142 protected:
143 
160  Direction nextTileDirection(
161  Direction latDirection,
162  Direction lonDirection,
163  bool isMostlyEastWest, double slope,
164  double startX, double startY, double edgeX, double edgeY) const;
165 
168 
169  std::set<osgEarth::TileKey> myTilesPendingRemoval;
170 
171  osg::ref_ptr<const osgEarth::Profile> myProfile;
172 
173  unsigned int myLOD;
174 
175  osgEarth::TileKey* myOldestPagedObject;
176 
178 
179  typedef tbb::spin_mutex DrawerMutex;
181  std::auto_ptr<DtSharedMemoryBulletDebugDrawer> myDrawer;
182 };
183 
184 

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)