15 #include <osgEarth/Feature>
16 #include <osgEarth/TerrainTileModel>
17 #include <osgEarth/TileKey>
26 #include <boost/shared_ptr.hpp>
28 #include <tbb/atomic.h>
29 #include <tbb/spin_rw_mutex.h>
55 explicit Extent(
const osgEarth::TileKey&);
65 typedef std::vector<IndexExtent>
Vector;
69 unsigned minx,
miny, maxx, maxy;
75 const osgEarth::TileKey& key);
102 bool setSoilType(
const DtPoint & geodeticPt,
DtSurface & surface,
bool blockIfUnavailable,
bool& landDataAvailable)
const;
111 virtual void addMaskExtent(
const Extent& extent);
114 virtual void removeMaskExtent(
const Extent& extent);
124 virtual bool insideValidArea(
const DtPoint& p)
const;
132 virtual bool extentInsideValidArea(
unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2)
const;
139 virtual bool extentOutsideValidArea(
unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2)
const;
146 virtual bool addActiveTileKey(
const osgEarth::TileKey& key) = 0;
153 virtual void recomputeActiveTileKeyAreas() = 0;
173 virtual std::string description()
const = 0;
176 virtual unsigned numberOfVertices()
const = 0;
181 virtual unsigned numberOfTrianglesForVertices()
const;
184 virtual void getTriangleVertices(
unsigned xindex,
unsigned yindex,
double& x,
double& y)
const = 0;
187 virtual DtVector getTriangleVertices(
unsigned xindex,
unsigned yindex)
const;
190 virtual void getTriangleIndices(
double x,
double y,
unsigned& xindex,
unsigned& yindex)
const = 0;
192 virtual double getTriangleIdxVsHeightFieldIdxRatio()
const;
196 virtual void heightfieldIndexForTriangleIndex(
197 unsigned triangleXIndex,
unsigned triangleYIndex,
198 unsigned& heightFieldXUsed,
unsigned& heightFieldYUsed)
const = 0;
201 virtual double interpolateHeight(
202 unsigned triangleXIndex,
unsigned triangleYIndex,
203 unsigned* heightFieldXUsed = 0,
unsigned* heightFieldYUsed = 0)
const = 0;
206 virtual bool getLandCoverName(
const DtPoint & pt, std::string & landCoverName,
bool &dataAvailable,
bool blockOnUnavailable)
const = 0;
209 virtual int getLandCoverValue(
const DtPoint & pt,
bool & dataAvailable,
bool blockOnUnavailable)
const = 0;
231 virtual bool findIntersections(
233 unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2,
237 bool singleCell =
false,
238 bool insideValidAreaChecked =
false)
const;
242 virtual bool findIntersections(
253 virtual void findTriangles(
255 unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2,
257 bool singleCell =
false,
258 bool insideValidAreaChecked =
false)
const;
262 virtual void findTriangles(
292 const osgEarth::TileKey& key);
312 bool getLandCoverName(
const DtPoint & pt, std::string & landCoverName,
bool & dataAvailable,
bool blockOnUnavailable)
const;
DtTileData is tracked by the DtOsgEarthTerrainSourceTracker for paging out tiles. ...
Definition: tileData.h:39
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
void recomputeActiveTileKeyAreas()
Should be called to enable a tilekey subarea once everything else needed for it is setup...
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords.
Definition: vrfChordIntersectRecordList.h:31
unsigned miny
Definition: tileData.h:69
bool getLandCoverName(const DtPoint &pt, std::string &landCoverName, bool &dataAvailable, bool blockOnUnavailable) const
bool pendingRemoval
Whether this tile has had a page out command issued for it and should be ignored when calculating the...
Definition: tileData.h:217
TileData(const DtTerrainSourceTracker &tracker, const osgEarth::TileKey &key)
virtual void forceLoadAllData(bool isBlocking=true)
Definition: tileData.h:269
int getLandCoverValue(const DtPoint &pt, bool &dataAvailable, bool blockOnUnavailable) const
Definition: tileData.h:43
CS_Type cstype
tracker coord system
Definition: tileData.h:87
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
unsigned long long DtTerrainIntersectIDType
Definition: terrainInterfaceDefines.h:28
const DtTerrainSourceTracker & tracker
Tracker that owns this tile.
Definition: tileData.h:81
std::set< GroundFeatureProcess > groundFeatureList
Definition: GroundFeatureProcess.h:43
bool updateLastUsed(DtTerrainIntersectIDType value)
Update last intersect id.
Extent::Vector unSimplifiedMaskExtents
Definition: tileData.h:279
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
Axis aligned extents in osgearth coordinate system.
Definition: tileData.h:48
osgEarth::FeatureList myGroundFeatureList
Ground Feature List (procedural trees from osgEarth)
Definition: tileData.h:285
tbb::spin_rw_mutex myInactiveAreasMutex
Definition: tileData.h:324
Definition: surface.h:179
Extent::Vector myInactiveAreas
Definition: tileData.h:325
Axis aligned extent whose coordinates are in triangle vertex indices.
Definition: tileData.h:63
std::set< osgEarth::TileKey > TileKeySet
Definition: tileData.h:319
DtTerrainIntersectOptions Passed to terrain intersect functions to modify how intersect acts...
Definition: terrainIntersectOptions.h:15
bool insideValidArea(const DtPoint &p) const
Returns true if the point is inside a valid area.
tbb::atomic< DtTerrainIntersectIDType > myLastUsed
Definition: tileData.h:317
std::vector< osg::ref_ptr< osg::Node > > geometries
Geometries associated with this tile.
Definition: tileData.h:160
Definition: terrainProcessPolygonsBox.h:25
DtExtent dtExtent
DtExtent of the tile.
Definition: tileData.h:98
TileKeySet myActiveTileKeys
Definition: tileData.h:322
bool extentOutsideValidArea(unsigned x1, unsigned y1, unsigned x2, unsigned y2) const
Returns true if the extent is entirely outside the valid area.
std::map< osgEarth::TileKey, boost::shared_ptr< DtTileData > > DtTerrainTileMap
Definition: tileData.h:329
std::vector< Extent > Vector
Definition: tileData.h:50
TileType type
Abstract notion of type so we can annotate tiles.
Definition: tileData.h:156
std::vector< std::string > featuresLayerName
Definition: tileData.h:170
Base class for Terrain Source trackers.
Definition: terrainSourceTracker.h:75
TileKeySet myInactiveTileKeys
Definition: tileData.h:321
IndexExtent::Vector maskIndexExtents
Same masks as maskExtents but in triangle index coordinates.
Definition: tileData.h:282
Extent
Definition: DtAxisAlignedBoundingBox.h:16
std::vector< osgEarth::TileKey > featuresTileKey
List of ground features key generated associated with the current tileKey (groundcover is often not a...
Definition: tileData.h:169
Extent::Vector maskExtents
Masks computed from masked out areas in osgearth.
Definition: tileData.h:277
DtTerrainIntersectIDType getLastUsed() const
Return the last intersect id which touch this tile.
const osgEarth::TileKey tileKey
TileKey for this tile.
Definition: tileData.h:90
tbb::spin_rw_mutex maskExtentsMutex
Definition: tileData.h:272
CS_Type
Definition: coordSystem.h:35
std::vector< IndexExtent > Vector
Definition: tileData.h:65
IndexExtent::Vector myInactiveIndexAreas
Definition: tileData.h:326
bool addActiveTileKey(const osgEarth::TileKey &key)
Activate this tile (i.e a subregion) of this tile.
A DtChord is a finite line segment in 3-space, represented by two points.
bool extentInsideValidArea(unsigned x1, unsigned y1, unsigned x2, unsigned y2) const
Returns true if the extent is entirely inside a valid area (doesn't intersect any invalid areas)...
TileType
Definition: tileData.h:41
#define DT_DLL_vantageTerrainImplementation
This file is used to determine how to build.
Definition: vantageTerrainImplementationDefines.h:28
double elevationTolerance
Tracker elevation tolerance.
Definition: tileData.h:84
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea.
Definition: terrainProcessPolygonsBox.h:113
Definition: tileData.h:288
osg::ref_ptr< osgEarth::TerrainTileModel > tileModel
osgearth tile model if using elevation.
Definition: tileData.h:93
std::vector< osg::ref_ptr< osg::Node > > features
list of geometries box created from the features like sim trees
Definition: tileData.h:164
Extent extent
Extent of tile.
Definition: tileData.h:96
DtVector min
Definition: tileData.h:59
tbb::atomic< unsigned int > numTriangles
The number of triangles this tile, and therefore its collision object, contain.
Definition: tileData.h:213
DtIntersectionType
Definition: intersectionRecord.h:41
Represents an area query which can be used to extract triangles from DtTerrainInterface.
Definition: terrainProcessPolygonsBox.h:39