VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Types | Protected Attributes
TileData Class Reference
Inheritance diagram for TileData:
Inheritance graph
[legend]

Public Member Functions

 TileData (const DtTerrainSourceTracker &tracker, const osgEarth::TileKey &key)
 
DtTerrainIntersectIDType getLastUsed () const
 
bool updateLastUsed (DtTerrainIntersectIDType value)
 
bool addActiveTileKey (const osgEarth::TileKey &key)
 
void recomputeActiveTileKeyAreas ()
 
bool insideValidArea (const DtPoint &p) const
 
bool extentInsideValidArea (unsigned x1, unsigned y1, unsigned x2, unsigned y2) const
 
bool extentOutsideValidArea (unsigned x1, unsigned y1, unsigned x2, unsigned y2) const
 
bool getLandCoverName (const DtPoint &pt, std::string &landCoverName, bool &dataAvailable, bool blockOnUnavailable) const
 
int getLandCoverValue (const DtPoint &pt, bool &dataAvailable, bool blockOnUnavailable) const
 
- Public Member Functions inherited from DtTileData
 DtTileData (const DtTerrainSourceTracker &tracker, const osgEarth::TileKey &key)
 
virtual ~DtTileData ()
 
virtual bool inUse () const
 
bool setSoilType (const DtPoint &geodeticPt, DtSurface &surface, bool blockIfUnavailable, bool &landDataAvailable) const
 
DtSurface setSoilType (const DtTerrainTriangleStruct &tri, bool blockIfUnavailable) const
 
virtual void addMaskExtents (const Extent::Vector &extents)
 
virtual void addMaskExtent (const Extent &extent)
 
virtual void removeMaskExtent (const Extent &extent)
 
virtual void getMaskExtents (Extent::Vector &extents)
 
virtual std::string description () const =0
 
virtual unsigned numberOfVertices () const =0
 
virtual unsigned numberOfTrianglesForVertices () const
 
virtual void getTriangleVerticesGridSpaced (unsigned xindex, unsigned yindex, double &x, double &y) const =0
 
virtual void getTriangleVertices (unsigned xindex, unsigned yindex, double &x, double &y) const =0
 
virtual void getTriangleIndices (double x, double y, unsigned &xindex, unsigned &yindex) const =0
 
virtual double getTriangleIdxVsHeightFieldIdxRatio () const
 
virtual double interpolateHeight (unsigned triangleXIndex, unsigned triangleYIndex, unsigned *heightFieldXUsed=0, unsigned *heightFieldYUsed=0) const =0
 
virtual double heightField (unsigned col, unsigned row) const =0
 
virtual bool findIntersectionsNonRecursive (const DtChord &chord, unsigned x1, unsigned y1, unsigned x2, unsigned y2, DtVrfChordIntersectRecordList &intList, const DtTerrainIntersectOptions &options, DtIntersectionRecord::DtIntersectionType irtFlag) const
 
virtual bool findIntersections (const DtChord &chord, DtVrfChordIntersectRecordList &intList, const DtTerrainIntersectOptions &options) const =0
 
virtual void findTriangles (const DtTerrainProcessPolygonsBox &box, unsigned x1, unsigned y1, unsigned x2, unsigned y2, DtTriangleOutputInterface &, bool singleCell=false, bool insideValidAreaChecked=false) const
 
virtual void findTriangles (const DtTerrainProcessPolygonsBox &box, DtTriangleOutputInterface &) const =0
 
virtual osgEarth::FeatureList & groundFeatureList ()
 
virtual void forceLoadAllData (bool isBlocking=true)
 

Protected Types

typedef std::set
< osgEarth::TileKey > 
TileKeySet
 

Protected Attributes

tbb::atomic
< DtTerrainIntersectIDType
myLastUsed
 
TileKeySet myInactiveTileKeys
 
TileKeySet myActiveTileKeys
 
tbb::spin_rw_mutex myInactiveAreasMutex
 
Extent::Vector myInactiveAreas
 
IndexExtent::Vector myInactiveIndexAreas
 
- Protected Attributes inherited from DtTileData
tbb::spin_rw_mutex maskExtentsMutex
 
Extent::Vector maskExtents
 
Extent::Vector unSimplifiedMaskExtents
 
IndexExtent::Vector maskIndexExtents
 
osgEarth::FeatureList myGroundFeatureList
 

Additional Inherited Members

- Public Types inherited from DtTileData
enum  TileType { Normal, Empty }
 
- Public Attributes inherited from DtTileData
const DtTerrainSourceTrackertracker
 
double elevationTolerance
 
CS_Type cstype
 
const osgEarth::TileKey tileKey
 
osg::ref_ptr
< osgEarth::TerrainTileModel > 
tileModel
 
Extent extent
 
DtExtent dtExtent
 
TileType type
 
std::vector< osg::ref_ptr
< osg::Node > > 
geometries
 
std::vector< osg::ref_ptr
< osg::Node > > 
features
 
std::vector< osgEarth::TileKey > featuresTileKey
 
std::vector< std::string > featuresLayerName
 
tbb::atomic< unsigned intnumTriangles
 
bool pendingRemoval
 
- Protected Member Functions inherited from DtTileData
virtual void checkIntersect (const DtChord &chord, const int &cellX, const int &cellY, DtVrfChordIntersectRecordList &intList, const DtTerrainIntersectOptions &options, DtIntersectionRecord::DtIntersectionType irtFlag, bool tileLargeEnoughForBilinear, bool &foundIntersection) const
 

Member Typedef Documentation

typedef std::set<osgEarth::TileKey> TileData::TileKeySet
protected

Constructor & Destructor Documentation

TileData::TileData ( const DtTerrainSourceTracker tracker,
const osgEarth::TileKey &  key 
)

Member Function Documentation

DtTerrainIntersectIDType TileData::getLastUsed ( ) const
virtual

Return the last intersect id which touch this tile.

Implements DtTileData.

bool TileData::updateLastUsed ( DtTerrainIntersectIDType  value)
virtual

Update last intersect id.

Implements DtTileData.

bool TileData::addActiveTileKey ( const osgEarth::TileKey &  key)
virtual

Activate this tile (i.e a subregion) of this tile. This complexity is b/c sometimes tiles are only valid for a portion of their extent since there is higher resolution data available for certain subtiles. All the various subtiles (up to the max lod) have to be checked and only once we are sure there is no higher res data can we use that region in this tile.

Implements DtTileData.

void TileData::recomputeActiveTileKeyAreas ( )
virtual

Should be called to enable a tilekey subarea once everything else needed for it is setup. This would be do automatically in addActiveTileKey but that function needs to be called before the masks and skirt geometry are dealt with in order to reject multiple page ins. The area can only be enabled after that is all done though, otherwise there might be some intersections done on the masked out area b/c it is not setup yet.

Implements DtTileData.

bool TileData::insideValidArea ( const DtPoint p) const
virtual

Returns true if the point is inside a valid area. Invalid areas are areas which are covered by a mask (i.e. an cut in), have higher resolution elevation data, or have not been checked for higher resolution data yet. Does not use mask tolerance.

Reimplemented from DtTileData.

bool TileData::extentInsideValidArea ( unsigned  x1,
unsigned  y1,
unsigned  x2,
unsigned  y2 
) const
virtual

Returns true if the extent is entirely inside a valid area (doesn't intersect any invalid areas). Invalid areas are areas which are covered by a mask (i.e. an cut in), have higher resolution elevation data, or have not been checked for higher resolution data yet. Coordinates are triangle indices.

Reimplemented from DtTileData.

bool TileData::extentOutsideValidArea ( unsigned  x1,
unsigned  y1,
unsigned  x2,
unsigned  y2 
) const
virtual

Returns true if the extent is entirely outside the valid area. This means that there is no data to intersect with in this extent in this tile. This function is generally used for optimization and may return false even if the extent actually is completely outside the valid area. Coordinates are triangle indices.

Reimplemented from DtTileData.

bool TileData::getLandCoverName ( const DtPoint pt,
std::string &  landCoverName,
bool dataAvailable,
bool  blockOnUnavailable 
) const
virtual

Return the land cover name for a location.

Implements DtTileData.

int TileData::getLandCoverValue ( const DtPoint pt,
bool dataAvailable,
bool  blockOnUnavailable 
) const
virtual

Return the land cover index value for a location.

Implements DtTileData.

Member Data Documentation

tbb::atomic<DtTerrainIntersectIDType> TileData::myLastUsed
protected
TileKeySet TileData::myInactiveTileKeys
protected
TileKeySet TileData::myActiveTileKeys
protected
tbb::spin_rw_mutex TileData::myInactiveAreasMutex
mutableprotected
Extent::Vector TileData::myInactiveAreas
protected
IndexExtent::Vector TileData::myInactiveIndexAreas
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)