VR-Forces 4.3 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 
17 #include <vrfutil/vertexList.h>
18 
19 //Mak Terrain Toolkit includes
20 #include <geometry/sphere.h>
21 
22 #include <vlutil/vlSmartPointers.h>
23 
24 #include <osgTerrain/TerrainTile>
25 #include <osgEarth/Profile>
26 #include <osgEarth/TileKey>
27 
28 #include <string>
29 #include <list>
30 
33 
34 typedef std::list< osgEarth::TileKey > DtTileKeyList;
35 
37 {
38 public:
39  enum Direction
40  {
41  NORTH = 0,
44  WEST
45  };
46 
48  const osgEarth::Profile* profile, unsigned int lod);
49 
51 
55  virtual void addPagedInTile(const osgEarth::TileKey tileKey, const DtTileData& tileData);
56 
58  virtual void removePagedInTile(const osgEarth::TileKey tileKey);
59 
66  virtual bool dataAvailable(DtPagingMetaDataPtr metaData,
68 
76  virtual void pageInData(DtPagingMetaDataPtr metaData,
78 
84  virtual DtTerrainIntersectIDType findOldestPagedData(unsigned int& numTrianglesOut);
85 
88  virtual void pageOutOldestData(const int priority);
89 
91  virtual void drawDebugInfo(btIDebugDraw* debugDrawer);
92 
94  virtual bool canPageOutData(DtTerrainIntersectIDType intersectId);
95 
101  virtual void convertDirectionToOffset(Direction, int& x, int& y) const;
102 
103 protected:
104 
105  virtual DtPageInTilesCommand* createPageInTilesCommand(
106  DtPagingMetaDataPtr metaData);
107 
108  virtual DtPageOutTilesCommand* createPageOutTilesCommand(
109  DtPagingMetaDataPtr metaData);
110 
112  virtual void tilesInGeometry(DtTerrainPagingGeometryPtr geometry,
113  DtTileKeyList& tilesOut) const;
114 
119  virtual void pageOutData(const DtTileKeyList tilesToRemove, const int priority);
120 
121  virtual void tilesUnderChord(const DtChord& chord,
122  DtTileKeyList& tilesOut) const;
123 
124  virtual void tilesInSphere(const DtSphere& sphere,
125  DtTileKeyList& tilesOut) const;
126 
127  virtual void tilesInShape(const DtLocalVertexList& vertices,
128  DtTileKeyList& tilesOut) const;
129 
130  virtual bool dataAvailable(const DtTileKeyList& keyList,
131  DtTerrainIntersectIDType intersectId = 0);
132 
133  virtual void drawTile(btIDebugDraw* debugDrawer, const DtTileData& tileData);
134 
135 protected:
136 
153  Direction nextTileDirection(
154  Direction latDirection,
155  Direction lonDirection,
156  bool isMostlyEastWest, double slope,
157  double startX, double startY, double edgeX, double edgeY) const;
158 
161 
162  std::set<osgEarth::TileKey> myTilesPendingRemoval;
163 
164  osg::ref_ptr<const osgEarth::Profile> myProfile;
165 
166  unsigned int myLOD;
167 
168  osgEarth::TileKey* myOldestPagedObject;
169 
171 };
172 
173 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)