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>
54 explicit Extent(
const osgEarth::TileKey&);
64 typedef std::vector<IndexExtent>
Vector;
68 unsigned minx,
miny, maxx, maxy;
74 const osgEarth::TileKey& key);
101 bool setSoilType(
const DtPoint & geodeticPt,
DtSurface & surface,
bool blockIfUnavailable,
bool& landDataAvailable)
const;
110 virtual void addMaskExtent(
const Extent& extent);
113 virtual void removeMaskExtent(
const Extent& extent);
123 virtual bool insideValidArea(
const DtPoint& p)
const;
131 virtual bool extentInsideValidArea(
unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2)
const;
138 virtual bool extentOutsideValidArea(
unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2)
const;
145 virtual bool addActiveTileKey(
const osgEarth::TileKey& key) = 0;
152 virtual void recomputeActiveTileKeyAreas() = 0;
172 virtual std::string description()
const = 0;
175 virtual unsigned numberOfVertices()
const = 0;
180 virtual unsigned numberOfTrianglesForVertices()
const;
183 virtual void getTriangleVerticesGridSpaced(
unsigned xindex,
unsigned yindex,
double& x,
double& y)
const = 0;
186 virtual void getTriangleVertices(
unsigned xindex,
unsigned yindex,
double& x,
double& y)
const = 0;
190 virtual void getTriangleIndices(
double x,
double y,
unsigned& xindex,
unsigned& yindex)
const = 0;
193 virtual double getTriangleIdxVsHeightFieldIdxRatio()
const;
196 virtual double interpolateHeight(
197 unsigned triangleXIndex,
unsigned triangleYIndex,
198 unsigned* heightFieldXUsed = 0,
unsigned* heightFieldYUsed = 0)
const = 0;
201 virtual double heightField(
unsigned col,
unsigned row)
const = 0;
204 virtual bool getLandCoverName(
const DtPoint & pt, std::string & landCoverName,
bool &dataAvailable,
bool blockOnUnavailable)
const = 0;
207 virtual int getLandCoverValue(
const DtPoint & pt,
bool & dataAvailable,
bool blockOnUnavailable)
const = 0;
227 virtual bool findIntersectionsNonRecursive(
229 unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2,
237 virtual bool findIntersections(
248 virtual void findTriangles(
250 unsigned x1,
unsigned y1,
unsigned x2,
unsigned y2,
252 bool singleCell =
false,
253 bool insideValidAreaChecked =
false)
const;
257 virtual void findTriangles(
268 virtual void checkIntersect(
const DtChord& chord,
const int& cellX,
const int& cellY,
272 bool tileLargeEnoughForBilinear,
273 bool& foundIntersection)
const;
295 const osgEarth::TileKey& key);
315 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:38
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. This is useful for followi...
Definition: vrfChordIntersectRecordList.h:31
unsigned miny
Definition: tileData.h:68
bool getLandCoverName(const DtPoint &pt, std::string &landCoverName, bool &dataAvailable, bool blockOnUnavailable) const
Return the land cover name for a location.
bool pendingRemoval
Whether this tile has had a page out command issued for it and should be ignored when calculating the...
Definition: tileData.h:215
TileData(const DtTerrainSourceTracker &tracker, const osgEarth::TileKey &key)
virtual void forceLoadAllData(bool isBlocking=true)
Definition: tileData.h:264
int getLandCoverValue(const DtPoint &pt, bool &dataAvailable, bool blockOnUnavailable) const
Return the land cover index value for a location.
Definition: tileData.h:42
CS_Type cstype
tracker coord system
Definition: tileData.h:86
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
const DtTerrainSourceTracker & tracker
Tracker that owns this tile.
Definition: tileData.h:80
std::set< GroundFeatureProcess > groundFeatureList
Definition: GroundFeatureProcess.h:43
bool updateLastUsed(DtTerrainIntersectIDType value)
Update last intersect id.
Extent::Vector unSimplifiedMaskExtents
Definition: tileData.h:282
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
Axis aligned extents in osgearth coordinate system.
Definition: tileData.h:47
osgEarth::FeatureList myGroundFeatureList
Ground Feature List (procedural trees from osgEarth)
Definition: tileData.h:288
tbb::spin_rw_mutex myInactiveAreasMutex
Definition: tileData.h:328
Definition: surface.h:179
Extent::Vector myInactiveAreas
Definition: tileData.h:329
Axis aligned extent whose coordinates are in triangle vertex indices.
Definition: tileData.h:62
std::set< osgEarth::TileKey > TileKeySet
Definition: tileData.h:323
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. Invalid areas are areas which are covered by a mask...
tbb::atomic< DtTerrainIntersectIDType > myLastUsed
Definition: tileData.h:321
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:159
Definition: terrainProcessPolygonsBox.h:25
DtExtent dtExtent
DtExtent of the tile.
Definition: tileData.h:97
TileKeySet myActiveTileKeys
Definition: tileData.h:326
bool extentOutsideValidArea(unsigned x1, unsigned y1, unsigned x2, unsigned y2) const
Returns true if the extent is entirely outside the valid area. This means that there is no data to in...
std::map< osgEarth::TileKey, boost::shared_ptr< DtTileData > > DtTerrainTileMap
Definition: tileData.h:333
std::vector< Extent > Vector
Definition: tileData.h:49
TileType type
Abstract notion of type so we can annotate tiles.
Definition: tileData.h:155
std::vector< std::string > featuresLayerName
Definition: tileData.h:169
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:325
IndexExtent::Vector maskIndexExtents
Same masks as maskExtents but in triangle index coordinates.
Definition: tileData.h:285
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:168
Extent::Vector maskExtents
Masks computed from masked out areas in osgearth. Points inside these extents are not part of this ti...
Definition: tileData.h:280
DtTerrainIntersectIDType getLastUsed() const
Return the last intersect id which touch this tile.
const osgEarth::TileKey tileKey
TileKey for this tile.
Definition: tileData.h:89
tbb::spin_rw_mutex maskExtentsMutex
Definition: tileData.h:275
CS_Type
Definition: coordSystem.h:35
std::vector< IndexExtent > Vector
Definition: tileData.h:64
IndexExtent::Vector myInactiveIndexAreas
Definition: tileData.h:330
bool addActiveTileKey(const osgEarth::TileKey &key)
Activate this tile (i.e a subregion) of this tile. This complexity is b/c sometimes tiles are only va...
A DtChord is a finite line segment in 3-space, represented by two points. Data derived from the two e...
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:40
#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:83
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea. This object should always be created on the stack.
Definition: terrainProcessPolygonsBox.h:113
Definition: tileData.h:291
osg::ref_ptr< osgEarth::TerrainTileModel > tileModel
osgearth tile model if using elevation.
Definition: tileData.h:92
std::vector< osg::ref_ptr< osg::Node > > features
list of geometries box created from the features like sim trees
Definition: tileData.h:163
Extent extent
Extent of tile.
Definition: tileData.h:95
DtVector min
Definition: tileData.h:58
tbb::atomic< unsigned int > numTriangles
The number of triangles this tile, and therefore its collision object, contain. Used for estimating p...
Definition: tileData.h:211
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:39