15 #include <osgEarth/Feature>
16 #include <osgEarth/TerrainTileModel>
17 #include <osgEarth/TileKey>
27 #include <tbb/spin_rw_mutex.h>
53 explicit Extent(
const osgEarth::TileKey&);
54 explicit Extent(
const DtVector& min,
const DtVector& max);
63 typedef std::vector<IndexExtent>
Vector;
67 unsigned minx,
miny, maxx, maxy;
73 const osgEarth::TileKey& key);
78 virtual bool inUse()
const {
return false; };
104 bool setSoilType(
const DtPoint & geodeticPt,
DtSurface & surface,
bool blockIfUnavailable,
bool& landDataAvailable)
const;
113 virtual void addMaskExtent(
const Extent& extent);
116 virtual void removeMaskExtent(
const Extent& extent);
126 virtual bool insideValidArea(
const DtPoint& p)
const;
134 virtual bool extentInsideValidArea(
unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2)
const;
141 virtual bool extentOutsideValidArea(
unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2)
const;
148 virtual bool addActiveTileKey(
const osgEarth::TileKey& key) = 0;
155 virtual void recomputeActiveTileKeyAreas() = 0;
175 virtual std::string description()
const = 0;
178 virtual unsigned numberOfVertices()
const = 0;
183 virtual unsigned numberOfTrianglesForVertices()
const;
186 virtual void getTriangleVerticesGridSpaced(
unsigned xindex,
unsigned yindex,
double& x,
double& y)
const = 0;
189 virtual void getTriangleVertices(
unsigned xindex,
unsigned yindex,
double& x,
double& y)
const = 0;
193 virtual void getTriangleIndices(
double x,
double y,
unsigned& xindex,
unsigned& yindex)
const = 0;
196 virtual double getTriangleIdxVsHeightFieldIdxRatio()
const;
199 virtual double interpolateHeight(
200 unsigned triangleXIndex,
unsigned triangleYIndex,
201 unsigned* heightFieldXUsed = 0,
unsigned* heightFieldYUsed = 0)
const = 0;
204 virtual double heightField(
unsigned col,
unsigned row)
const = 0;
207 virtual bool getLandCoverName(
const DtPoint & pt, std::string & landCoverName,
bool &dataAvailable,
bool blockOnUnavailable)
const = 0;
210 virtual int getLandCoverValue(
const DtPoint & pt,
bool & dataAvailable,
bool blockOnUnavailable)
const = 0;
213 unsigned numberOfTriangles()
const;
236 virtual bool findIntersectionsNonRecursive(
238 unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2,
246 virtual bool findIntersections(
257 virtual void findTriangles(
259 unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2,
261 bool singleCell =
false,
262 bool insideValidAreaChecked =
false)
const;
266 virtual void findTriangles(
277 virtual void checkIntersect(
const DtChord& chord,
const int& cellX,
const int& cellY,
281 bool tileLargeEnoughForBilinear,
282 bool& foundIntersection)
const;
319 virtual bool extentInsideValidArea(
unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2)
const override;
324 const DtPoint& pt, std::string& landCoverName,
bool& dataAvailable,
bool blockOnUnavailable)
const override;
DtTileData is tracked by the DtOsgEarthTerrainSourceTracker for paging out tiles. ...
Definition: tileData.h:37
std::atomic< DtTerrainIntersectIDType > myLastUsed
Definition: tileData.h:330
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords. This is useful for followi...
Definition: vrfChordIntersectRecordList.h:31
unsigned miny
Definition: tileData.h:67
bool pendingRemoval
Whether this tile has had a page out command issued for it and should be ignored when calculating the...
Definition: tileData.h:224
TileData(const DtTerrainSourceTracker &tracker, const osgEarth::TileKey &key)
virtual void forceLoadAllData(bool isBlocking=true)
Definition: tileData.h:273
virtual bool addActiveTileKey(const osgEarth::TileKey &key) override
Activate this tile (i.e a subregion) of this tile. This complexity is b/c sometimes tiles are only va...
virtual bool updateLastUsed(DtTerrainIntersectIDType value) override
Update last intersect id.
virtual bool getLandCoverName(const DtPoint &pt, std::string &landCoverName, bool &dataAvailable, bool blockOnUnavailable) const override
Return the land cover name for a location.
Definition: tileData.h:41
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:78
std::set< GroundFeatureProcess > groundFeatureList
Definition: GroundFeatureProcess.h:43
Extent::Vector unSimplifiedMaskExtents
Definition: tileData.h:291
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
Axis aligned extents in osgearth coordinate system.
Definition: tileData.h:46
osgEarth::FeatureList myGroundFeatureList
Ground Feature List (procedural trees from osgEarth)
Definition: tileData.h:297
tbb::spin_rw_mutex myInactiveAreasMutex
Definition: tileData.h:337
Definition: surface.h:181
Extent::Vector myInactiveAreas
Definition: tileData.h:338
Axis aligned extent whose coordinates are in triangle vertex indices.
Definition: tileData.h:61
virtual void recomputeActiveTileKeyAreas() override
Should be called to enable a tilekey subarea once everything else needed for it is setup...
std::set< osgEarth::TileKey > TileKeySet
Definition: tileData.h:332
DtTerrainIntersectOptions Passed to terrain intersect functions to modify how intersect acts...
Definition: terrainIntersectOptions.h:22
std::vector< osg::ref_ptr< osg::Node > > geometries
Geometries associated with this tile. Could be geometry for tile or just the skirt part if it exists...
Definition: tileData.h:162
Definition: terrainProcessPolygonsBox.h:25
DtExtent dtExtent
DtExtent of the tile.
Definition: tileData.h:98
TileKeySet myActiveTileKeys
Definition: tileData.h:335
std::map< osgEarth::TileKey, std::shared_ptr< DtTileData > > DtTerrainTileMap
Definition: tileData.h:342
std::vector< Extent > Vector
Definition: tileData.h:48
TileType type
Abstract notion of type so we can annotate tiles.
Definition: tileData.h:158
bool blacklist
blacklist the tile if there is 0 triangles
Definition: tileData.h:220
std::vector< std::string > featuresLayerName
Definition: tileData.h:172
Base class for Terrain Source trackers. Determines if the necessary data To perform an intersection i...
Definition: terrainSourceTracker.h:75
TileKeySet myInactiveTileKeys
Definition: tileData.h:334
IndexExtent::Vector maskIndexExtents
Same masks as maskExtents but in triangle index coordinates.
Definition: tileData.h:294
Extent
Definition: DtAxisAlignedBoundingBox.h:16
virtual DtTerrainIntersectIDType getLastUsed() const override
Return the last intersect id which touch this tile.
std::vector< osgEarth::TileKey > featuresTileKey
List of ground features key generated associated with the current tileKey (groundcover is often not a...
Definition: tileData.h:171
Extent::Vector maskExtents
Masks computed from masked out areas in osgearth. Points inside these extents are not part of this ti...
Definition: tileData.h:289
const osgEarth::TileKey tileKey
TileKey for this tile.
Definition: tileData.h:90
virtual bool extentOutsideValidArea(unsigned x1, unsigned y1, unsigned x2, unsigned y2) const override
Returns true if the extent is entirely outside the valid area. This means that there is no data to in...
tbb::spin_rw_mutex maskExtentsMutex
Definition: tileData.h:284
CS_Type
Definition: coordSystem.h:35
std::vector< IndexExtent > Vector
Definition: tileData.h:63
IndexExtent::Vector myInactiveIndexAreas
Definition: tileData.h:339
A DtChord is a finite line segment in 3-space, represented by two points. Data derived from the two e...
TileType
Definition: tileData.h:39
#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
virtual int getLandCoverValue(const DtPoint &pt, bool &dataAvailable, bool blockOnUnavailable) const override
Return the land cover index value for a location.
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea. This object should always be created on the stack.
Definition: terrainProcessPolygonsBox.h:134
virtual bool insideValidArea(const DtPoint &p) const override
Returns true if the point is inside a valid area. Invalid areas are areas which are covered by a mask...
Definition: tileData.h:300
virtual bool extentInsideValidArea(unsigned x1, unsigned y1, unsigned x2, unsigned y2) const override
Returns true if the extent is entirely inside a valid area (doesn't intersect any invalid areas)...
osg::ref_ptr< osgEarth::TerrainTileModel > tileModel
osgearth tile model if using elevation.
Definition: tileData.h:93
const osgEarth::TileKey & myKey
Key of this tile.
Definition: tileData.h:100
std::atomic< unsigned int > numTriangles
The number of triangles this tile, and therefore its collision object, contain. Used for estimating p...
Definition: tileData.h:217
std::vector< osg::ref_ptr< osg::Node > > features
list of geometries box created from the features like sim trees
Definition: tileData.h:166
Extent extent
Extent of tile.
Definition: tileData.h:96
DtVector min
Definition: tileData.h:57
DtIntersectionType
Definition: intersectionRecord.h:41
Represents an area query which can be used to extract triangles from DtTerrainInterface. The box points are in local but the box is always projected against the local topo at the center point of the box.
Definition: terrainProcessPolygonsBox.h:60