VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Public Attributes | Protected Attributes
DtTerrainImplementation Class Referenceabstract

This is the abstract base class for all terrain implementations. A terrain implementation is used by the DtTerrainInterface to interact with a terrain representation.

Related Examples
Inheritance diagram for DtTerrainImplementation:
Inheritance graph
[legend]

Public Types

typedef boost::function< void(const
makVrv::DtDynamicTerrainFeature &)> 
DtDynamicTerrainQueryCallback
 

Public Member Functions

 DtTerrainImplementation (DtConsoleCommandManager *cmdManager)
 
virtual ~DtTerrainImplementation ()
 
virtual
MAKVRinTerra::DtFeatureDatabase
featureDatabase ()
 
virtual const
MAKVRinTerra::DtFeatureDatabase
featureDatabase () const
 
virtual
MAKVRinTerra::DtFeatureContext
featureContext ()
 
virtual const
MAKVRinTerra::DtFeatureContext
featureContext () const
 
virtual
MAKVRinTerra::DtAerodromeLoader
aerodromeLoader ()
 
virtual const
MAKVRinTerra::DtAerodromeLoader
aerodromeLoader () const
 
virtual void cacheAerodromes ()
 
virtual void init ()
 
virtual void finishedLoading (const MAKVRinTerra::DtProj &proj)
 
virtual bool loadTerrain (const makArchives::DtGenericTerrainRecord &rec)=0
 
virtual void clearCache ()
 
virtual void shutdown (bool block=true)
 
virtual const Coordinate_SystemcoordinateSystem () const =0
 
virtual double modelHeightDifferencesFromAppearances (int oldApp, int newApp) const
 
virtual bool createFromExtent (const Dt3dBoundingVolume &)
 
virtual bool loadModel (const DtFilename &, const DtEntityType &t=DtEntityType())
 
virtual DtTerrainInterfaceConfigconfigurationOptions ()
 
virtual const
DtTerrainInterfaceConfig
configurationOptions () const
 
virtual bool chordIntersect (DtTerrainIntersectStatus &status, const DtChord &chord, DtVrfChordIntersectionRecord &record, const DtTerrainIntersectOptions &options) const =0
 
virtual bool allIntersectsAlongChord (DtTerrainIntersectStatus &status, const DtChord &chord, DtVrfChordIntersectRecordList &intList, const DtTerrainIntersectOptions &options) const =0
 
virtual void preloadTerrainAreas (const DtTerrainPagingGeometryList &preloadGeometry)
 
virtual bool dataAvailable (const DtTerrainPagingGeometryList &geometry, DtTerrainIntersectOptions::Fidelity=DtTerrainIntersectOptions::MAX_FIDELITY)
 
virtual const
DtTerrainCapabilities
terrainCapabilities () const =0
 
virtual void setIntersectDataLoadExpireTime (const double &expireTime)
 
virtual void expireDataLoadRequestsBeforeTime (const double &currentTime)
 
virtual void processTrianglesInArea (DtTriangleOutputInterface &, const DtTerrainProcessPolygonsBox &, DtTerrainCategoryMask terrainCategoryMask) const =0
 
virtual void processTrianglesForGeometry (DtTriangleOutputInterface &, DtTerrainGeometryId) const
 
virtual DtTerrainInformationterrainInformation ()
 
virtual void breakUpChords (const MAKVRinTerra::DtProj &, const DtChord &chord, std::vector< DtChord > &chords)
 
virtual bool hasFeatureContext () const
 
virtual DtTerrainGeometryHandlecreateEntityGeometry (const DtFilename &file)
 
virtual DtTerrainGeometryHandlecreateEntityGeometry (const DtEntityType &file)
 
virtual void loadVisuals (const DtScenarioExplorer &)
 
virtual
DtDynamicTerrainRequestHandle 
addDynamicTerrainChangeRequest (double time, makVrv::DtDynamicTerrainChange *command)
 
virtual DtDynamicTerrainQueryHandle queryDynamicTerrainFeatures (const DtDynamicTerrainQueryCallback &callback, makVrv::DtDynamicTerrainGeometry *geometry=0, bool useOriginalGeometry=false)
 
virtual void queryCurrentDynamicTerrainFeatures (const DtDynamicTerrainQueryCallback &callback, makVrv::DtDynamicTerrainGeometry *geometry=0, bool useOriginalGeometry=false)
 
virtual void cacheTerrainArea (int requestId, unsigned minLOD, unsigned maxLOD, const DtExtent &cacheArea, DtCacheProgressCallbackFunction fcn=0, void *usr=0)
 
virtual void cancelCacheTerrainArea (int requestId)
 
virtual void writeTerrainIndex (const DtString &name)
 
virtual void addTerrainChangeNotificationCallback (DtTerrainChangeNotificationCallbackFcn fcn, void *user)
 
virtual void removeTerrainChangeNotificationCallback (DtTerrainChangeNotificationCallbackFcn fcn, void *user)
 
virtual void invokeTerrainChangeNotificationCallBacks ()
 
virtual void blockOnPendingOperations ()
 
virtual void setAssertOnBlockingTerrainCalls (bool assertBlock)
 
virtual bool assertOnBlockingTerrainCalls () const
 
virtual void setWarnOnBlockingTerrainCalls (bool warnBlock)
 
virtual bool warnOnBlockingTerrainCalls () const
 

Public Attributes

boost::signals2::signal< void(bool)> signal_terrainPaging
 

Protected Attributes

DtTerrainInterfaceConfig myConfig
 
bool myAssertOnBlockingTerrainCalls
 
bool myWarnOnBlockingTerrainCalls
 
std::unique_ptr
< MAKVRinTerra::DtFeatureDatabase
myFeatureDatabase
 
std::unique_ptr
< MAKVRinTerra::DtFeatureContext
myFeatureContext
 
std::shared_ptr
< MAKVRinTerra::DtAerodromeLoader
myAerodromeLoader
 

Member Typedef Documentation

Constructor & Destructor Documentation

DtTerrainImplementation::DtTerrainImplementation ( DtConsoleCommandManager cmdManager)
virtual DtTerrainImplementation::~DtTerrainImplementation ( )
virtual

Member Function Documentation

virtual MAKVRinTerra::DtFeatureDatabase& DtTerrainImplementation::featureDatabase ( )
virtual

Access feature database.

Reimplemented in DtTerrainPassThroughLayer.

virtual const MAKVRinTerra::DtFeatureDatabase& DtTerrainImplementation::featureDatabase ( ) const
virtual

Reimplemented in DtTerrainPassThroughLayer.

virtual MAKVRinTerra::DtFeatureContext& DtTerrainImplementation::featureContext ( )
virtual

Access feature context.

Reimplemented in DtTerrainPassThroughLayer.

virtual const MAKVRinTerra::DtFeatureContext& DtTerrainImplementation::featureContext ( ) const
virtual

Reimplemented in DtTerrainPassThroughLayer.

virtual MAKVRinTerra::DtAerodromeLoader& DtTerrainImplementation::aerodromeLoader ( )
virtual
virtual const MAKVRinTerra::DtAerodromeLoader& DtTerrainImplementation::aerodromeLoader ( ) const
virtual
virtual void DtTerrainImplementation::cacheAerodromes ( )
virtual

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::init ( )
virtual

Called immediately after creation.

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::finishedLoading ( const MAKVRinTerra::DtProj proj)
virtual

Called after terrain loaded successfully.

Parameters
projDtProj object for local coordinate system.
virtual bool DtTerrainImplementation::loadTerrain ( const makArchives::DtGenericTerrainRecord rec)
pure virtual
virtual void DtTerrainImplementation::clearCache ( )
virtual

Tells the terrain implementation (if it cares) to clear any terrain cache it hold.

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::shutdown ( bool  block = true)
virtual

Shutdown the terrain.

Reimplemented in DtVantageTerrainImplementation, and DtTerrainPassThroughLayer.

virtual const Coordinate_System* DtTerrainImplementation::coordinateSystem ( ) const
pure virtual
virtual double DtTerrainImplementation::modelHeightDifferencesFromAppearances ( int  oldApp,
int  newApp 
) const
virtual

If supported by the implementation, return the height difference from the currently loaded model as a transition from the old appearance to the new appearance.

Reimplemented in DtVantageTerrainImplementation.

virtual bool DtTerrainImplementation::createFromExtent ( const Dt3dBoundingVolume &  )
virtual

Creates an extent from the given extent. Not all implementations will support this.

Reimplemented in DtGdbTerrainImplementation.

virtual bool DtTerrainImplementation::loadModel ( const DtFilename &  ,
const DtEntityType &  t = DtEntityType() 
)
virtual

Defaults to loading terrain for gdb. Supply option entity for for use by implementation to mutate loaded model based on appearance.

Reimplemented in DtVantageTerrainImplementation.

virtual DtTerrainInterfaceConfig& DtTerrainImplementation::configurationOptions ( )
virtual
virtual const DtTerrainInterfaceConfig& DtTerrainImplementation::configurationOptions ( ) const
virtual
virtual bool DtTerrainImplementation::chordIntersect ( DtTerrainIntersectStatus status,
const DtChord chord,
DtVrfChordIntersectionRecord record,
const DtTerrainIntersectOptions options 
) const
pure virtual

Returns topmost intersection of chord with terrain in record.

Parameters
Input
chordthe chord to test
optionsSee DtTerrainIntersectOptions
Output
recordthe results of the intersection
statusSee DtTerrainIntersectStatus

Implemented in DtVantageTerrainImplementation, DtIntersectRecordPassThroughLayer, DtTerrainPassThroughLayer, DtGdbTerrainImplementation, DtExtentTerrainImplementation, DtEllipsoidTerrainImplementation, and DtIntersectTimerPassThroughLayer.

virtual bool DtTerrainImplementation::allIntersectsAlongChord ( DtTerrainIntersectStatus status,
const DtChord chord,
DtVrfChordIntersectRecordList intList,
const DtTerrainIntersectOptions options 
) const
pure virtual

Returns all intersections of chord with terrain.

Parameters
Input
chordthe chord to test
optionsSee DtTerrainIntersectOptions
Output
intListthe results of the intersection
statusSee DtTerrainIntersectStatus

Implemented in DtVantageTerrainImplementation, DtIntersectRecordPassThroughLayer, DtTerrainPassThroughLayer, DtGdbTerrainImplementation, DtExtentTerrainImplementation, DtEllipsoidTerrainImplementation, and DtIntersectTimerPassThroughLayer.

virtual void DtTerrainImplementation::preloadTerrainAreas ( const DtTerrainPagingGeometryList preloadGeometry)
inlinevirtual

Specifies a list of terrain areas that should be preloaded by the terrain implementation, in the case of a paging or streaming terrain source. The typical use of this is to specify parts of the terrain that are expected to be needed in the near future.

The terrain may not be loaded immediately upon making this call, and there is no guarantee that the terrain areas will be available for intersection immediately after making this call.

Parameters
preloadGeometryA list of the geometric areas that should be preloaded. They can be specified using any of the subclasses of DtTerrainPagingGeometry.
Note
The geometry set with this call completely replaces any geometry previously set using this call.
The default implementation for this is a noop.

Reimplemented in DtVantageTerrainImplementation, and DtTerrainPassThroughLayer.

virtual bool DtTerrainImplementation::dataAvailable ( const DtTerrainPagingGeometryList geometry,
DtTerrainIntersectOptions::Fidelity  = DtTerrainIntersectOptions::MAX_FIDELITY 
)
inlinevirtual

Returns true if all of the terrain which intersects the geometry list is paged in.

Reimplemented in DtVantageTerrainImplementation.

virtual const DtTerrainCapabilities* DtTerrainImplementation::terrainCapabilities ( ) const
pure virtual
Returns
A DtTerrainCapabilites structure that describes the capabilities of the currently loaded terrain.

Implemented in DtVantageTerrainImplementation, DtTerrainPassThroughLayer, DtGdbTerrainImplementation, DtExtentTerrainImplementation, and DtEllipsoidTerrainImplementation.

virtual void DtTerrainImplementation::setAssertOnBlockingTerrainCalls ( bool  assertBlock)
virtual

Determines if an exception should be thrown if a blocking terrain call is made. This can help to track down blocking terrain calls which are causing problems with a running simulation. Note that calling the blocking form of any terrain intersection function will cause an assertion; it is not necessary for the call to actually block and even non-paging implementations will assert. This is done to make it easier to find potential problems regardless of the particular terrain or location being used.

Returns
myAssertOnBlockingTerrainCalls
virtual bool DtTerrainImplementation::assertOnBlockingTerrainCalls ( ) const
virtual

Determines if an exception should be thrown if a blocking terrain call is made. This can help to track down blocking terrain calls which are causing problems with a running simulation. Note that calling the blocking form of any terrain intersection function will cause an assertion; it is not necessary for the call to actually block and even non-paging implementations will assert. This is done to make it easier to find potential problems regardless of the particular terrain or location being used.

Returns
myAssertOnBlockingTerrainCalls
virtual void DtTerrainImplementation::setWarnOnBlockingTerrainCalls ( bool  warnBlock)
virtual

Determines if a warning should be printed out if a blocking terrain call is made.

virtual bool DtTerrainImplementation::warnOnBlockingTerrainCalls ( ) const
virtual

Determines if a warning should be printed out if a blocking terrain call is made.

virtual void DtTerrainImplementation::setIntersectDataLoadExpireTime ( const double expireTime)
inlinevirtual

No-op. Override to set the default expiration time for data load requests generated by intersect calls that require data that has not yet been loaded (paged-in).

Parameters
expireTimeThe expiration time to be assigned to load data requests generated by intersect calls on the terrain implementation.

Reimplemented in DtVantageTerrainImplementation, and DtTerrainPassThroughLayer.

virtual void DtTerrainImplementation::expireDataLoadRequestsBeforeTime ( const double currentTime)
inlinevirtual

No-op. Override to expire data load requests generated before the given time. See comment for #setIntersectLoadDataExpireTime.

Parameters
currentTimeThe time to compare to data load requests to determine if they should be expired rather than executed.

Reimplemented in DtVantageTerrainImplementation, and DtTerrainPassThroughLayer.

virtual void DtTerrainImplementation::processTrianglesInArea ( DtTriangleOutputInterface ,
const DtTerrainProcessPolygonsBox ,
DtTerrainCategoryMask  terrainCategoryMask 
) const
pure virtual
virtual void DtTerrainImplementation::processTrianglesForGeometry ( DtTriangleOutputInterface ,
DtTerrainGeometryId   
) const
inlinevirtual

Reimplemented in DtVantageTerrainImplementation.

virtual DtTerrainInformation* DtTerrainImplementation::terrainInformation ( )
inlinevirtual

Return the terrain information pointer of the terrain implementation (null if none exist) this is a debug/optional function call (return null if not implemented)

Reimplemented in DtVantageTerrainImplementation, DtTerrainPassThroughLayer, DtGdbTerrainImplementation, and DtEllipsoidTerrainImplementation.

virtual void DtTerrainImplementation::breakUpChords ( const MAKVRinTerra::DtProj ,
const DtChord chord,
std::vector< DtChord > &  chords 
)
virtual
virtual bool DtTerrainImplementation::hasFeatureContext ( ) const
virtual

Returns true if there is an active feature context.

virtual DtTerrainGeometryHandle* DtTerrainImplementation::createEntityGeometry ( const DtFilename &  file)
inlinevirtual

Create geometry in the terrain which represents the entity.

Reimplemented in DtVantageTerrainImplementation.

virtual DtTerrainGeometryHandle* DtTerrainImplementation::createEntityGeometry ( const DtEntityType &  file)
inlinevirtual

Create geometry in the terrain which represents the entity by the given type, looking up visuals.

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::loadVisuals ( const DtScenarioExplorer )
inlinevirtual

Tells the terrain implementation (if it cares) to load visuals to support terrain/model usage.

Reimplemented in DtVantageTerrainImplementation.

virtual DtDynamicTerrainRequestHandle DtTerrainImplementation::addDynamicTerrainChangeRequest ( double  time,
makVrv::DtDynamicTerrainChange command 
)
inlinevirtual

Add a dynamic terrain change request to the system.

Parameters
timeTime at which this request takes place.
commandCommand which describes this change. Takes ownership.
geometryOnly change features which match this geometry. Takes ownership.
Return values
Handleobject for removing this request.

Reimplemented in DtVantageTerrainImplementation.

virtual DtDynamicTerrainQueryHandle DtTerrainImplementation::queryDynamicTerrainFeatures ( const DtDynamicTerrainQueryCallback callback,
makVrv::DtDynamicTerrainGeometry geometry = 0,
bool  useOriginalGeometry = false 
)
inlinevirtual

Install a query which will call the supplied callback on matching dynamic terrain features as they are paged in. Callbacks can then be installed on the feature itself to monitor it for changes and page out.

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::queryCurrentDynamicTerrainFeatures ( const DtDynamicTerrainQueryCallback callback,
makVrv::DtDynamicTerrainGeometry geometry = 0,
bool  useOriginalGeometry = false 
)
inlinevirtual

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::cacheTerrainArea ( int  requestId,
unsigned  minLOD,
unsigned  maxLOD,
const DtExtent cacheArea,
DtCacheProgressCallbackFunction  fcn = 0,
void *  usr = 0 
)
virtual

Call this to start the process of caching terrain data (if supported for the open terrain) using the given request id and extent. Note that the extent coordinates are in lat/lon degrees (not radians). The callback is given to give progress on the load.

Reimplemented in DtVantageTerrainImplementation, and DtTerrainPassThroughLayer.

virtual void DtTerrainImplementation::cancelCacheTerrainArea ( int  requestId)
virtual

Call this routine to cancel a potential cache in progress.

Reimplemented in DtVantageTerrainImplementation, DtExtentTerrainImplementation, and DtTerrainPassThroughLayer.

virtual void DtTerrainImplementation::writeTerrainIndex ( const DtString name)
virtual

Write terrain index.

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::addTerrainChangeNotificationCallback ( DtTerrainChangeNotificationCallbackFcn  fcn,
void *  user 
)
virtual

Adds a terrain change notification callback.

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::removeTerrainChangeNotificationCallback ( DtTerrainChangeNotificationCallbackFcn  fcn,
void *  user 
)
virtual

Removes terrain change notification callback.

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::invokeTerrainChangeNotificationCallBacks ( )
virtual

Invokes terrain change notification callbacks.

Reimplemented in DtVantageTerrainImplementation.

virtual void DtTerrainImplementation::blockOnPendingOperations ( )
inlinevirtual

Reimplemented in DtVantageTerrainImplementation.

Member Data Documentation

boost::signals2::signal<void(bool)> DtTerrainImplementation::signal_terrainPaging

If the implementation is currently paging in terrain, this signal will be sent for the start/stop of terrain paging.

DtTerrainInterfaceConfig DtTerrainImplementation::myConfig
protected
bool DtTerrainImplementation::myAssertOnBlockingTerrainCalls
protected

Determines if an exception should be thrown if a blocking terrain call is made. This can help to track down blocking terrain calls which are causing problems with a running simulation.

bool DtTerrainImplementation::myWarnOnBlockingTerrainCalls
protected
std::unique_ptr<MAKVRinTerra::DtFeatureDatabase> DtTerrainImplementation::myFeatureDatabase
protected
std::unique_ptr<MAKVRinTerra::DtFeatureContext> DtTerrainImplementation::myFeatureContext
protected
std::shared_ptr<MAKVRinTerra::DtAerodromeLoader> DtTerrainImplementation::myAerodromeLoader
protected

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

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)