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

DtTerrainInterface allows access to common terrain calls without having to know the terrain implementation. Additional terrain implementations can be added as well.

Synchronous and Asynchronous Calls with Paged Terrains

The terrain intersection functions (which do not include the DtTerrainIntersectOptions parameter) in this class will by default block if the requested data needs to be paged in. In general making a blocking call from any tick-based function will cause a long delay resulting in a long frame which will most likely cause very undesirable effects on the simulation. In order to make an asynchronous call a bool pointer called "dataAvailable" must be specified. If the data for the requested location(s) has already been paged in and the result is immediately available, dataAvailble will be set to true and the results returned will reflect the contents of the terrain database. Otherwise, the terrain intersection call will cause the terrain implementation to queue the loading of the corresponding terrain page and the call will return immediately and set dataAvailable to false. In this case, the return value of the function should not be used and it does not reflect the terrain database. For most terrain implementations the cost of making terrain intersections on unavailable databases pages should be minimal and its expected that callers can poll for the data by making repeated intersection calls.

See DtTerrainIntersectOptions and DtTerrainIntersectStatus for information on how calls using these parameters work.

Related Examples

Classes

struct  OceanLayer
 

Public Types

enum  LoadContext { VrfSimulationBackEnd = 1, NavGenerationTool = 2 }
 
typedef MAKVRinTerra::DtAStarGraph DtAStarGraph
 

Public Member Functions

 DtTerrainInterface ()
 
virtual ~DtTerrainInterface ()
 
virtual bool init (bool createConsoleManager=true, unsigned maxThreads=0)
 
virtual void setConfigFile (const std::string &, bool reload=true)
 
virtual const
DtTerrainInterfaceConfig
configOptions () const
 
virtual void tick ()
 
virtual bool isSameTerrain (const DtFilename &) const
 
DtTerrainImplementationterrainImplementation () const
 
virtual void addTerrainImplementation (const DtString &implementationName, DtTerrainImplementationCreatorFcn creatorFcn)
 
virtual void addFeatureLayer (MAKVRinTerra::DtFeatureSet *)
 
virtual void addFeatureLayer (std::shared_ptr< MAKVRinTerra::DtFeatureSet >)
 
virtual void addGenericTerrainRecordCallback (const DtString &recordType, DtGenericTerrainRecordCallbackFunction fcn, void *user)
 
virtual void removeGenericTerrainRecordCallback (const DtString &recordType, DtGenericTerrainRecordCallbackFunction fcn, void *user)
 
virtual void invokeGenericTerrainRecordCallbacks (makArchives::DtGenericTerrainRecord *record)
 
virtual void addTerrainChangeNotificationCallback (DtTerrainChangeNotificationCallbackFcn fcn, void *user)
 
virtual void removeTerrainChangeNotificationCallback (DtTerrainChangeNotificationCallbackFcn fcn, void *user)
 
virtual void cancelAllJobsAndWait ()
 
virtual bool loadTerrain (const DtString &filename, LoadContext context=VrfSimulationBackEnd)
 
virtual bool unloadTerrain (bool block=true)
 
virtual bool loadModel (const DtFilename &f, const DtEntityType &t=DtEntityType(), bool hasOceanLayer=true)
 
virtual double modelHeightDifferencesFromAppearances (int oldApp, int newApp) const
 
virtual bool terrainIsLoaded ()
 
virtual DtString loadedFilename () const
 
virtual const Coordinate_SystemcoordinateSystem () const
 
virtual Coordinate_SystemcoordinateSystem ()
 
virtual std::unique_ptr
< MAKVRinTerra::DtAreaFeatureSet
areas (const std::string &type, const std::shared_ptr< DtVrfCallbackQueue > &=std::shared_ptr< DtVrfCallbackQueue >()) const
 
virtual std::unique_ptr
< MAKVRinTerra::DtAreaFeatureSet
areas (const MAKVRinTerra::DtAreaFeatureSetAdapter::Config &config, const std::shared_ptr< DtVrfCallbackQueue > &=std::shared_ptr< DtVrfCallbackQueue >()) const
 
virtual std::unique_ptr
< MAKVRinTerra::DtPathFeatureSet
paths (const std::string &type) const
 
virtual std::unique_ptr
< MAKVRinTerra::DtFeatureSet
features (const std::string &queryName) const
 
virtual std::unique_ptr
< MAKVRinTerra::DtFeatureSet
allFeatures () const
 
virtual std::unique_ptr
< MAKVRinTerra::DtFeatureSet
featuresRaw (const std::string &queryName) const
 
virtual std::unique_ptr
< MAKVRinTerra::DtFeatureSet
allFeaturesRaw () const
 
virtual bool hasAerodromes () const
 
virtual
MAKVRinTerra::DtAerodromeLoader::AerodromeData 
aerodromeData (const std::string &airportCode) const
 
virtual std::vector
< MAKVRinTerra::DtAerodromeLoader::AerodromeData
aerodromesWithinRange (const DtVector &center, double range) const
 
virtual std::vector
< MAKVRinTerra::DtAerodromeLoader::AerodromeData
aerodromesInArea (const std::vector< DtVector > &) const
 
virtual std::vector
< MAKVRinTerra::DtAerodromeLoader::AerodromeData
aerodromesAtLocation (const DtVector &location) const
 
virtual std::vector
< MAKVRinTerra::DtAerodromeLoader::RunwayData
runwayAtLocation (const DtVector &location) const
 
virtual void preloadTerrainAreas (const DtTerrainPagingGeometryList &preloadGeometry)
 
virtual void forceLoadTerrainAreas (const DtTerrainPagingGeometryList &forceLoadGeometry)
 
virtual bool dataAvailable (const DtTerrainPagingGeometryList &geometry)
 
virtual const
DtTerrainCapabilities
terrainCapabilities () const
 
virtual bool addTerrainPassThroughLayer (const DtString &layerType)
 
virtual void setIntersectDataLoadExpireTime (const double &expireTime)
 
virtual void expireDataLoadRequestsBeforeTime (const double &currentTime)
 
virtual void trianglesInArea (DtTriangleCallbackFcn func, DtTriangleCallbackFinalizeFcn finalize, DtTerrainProcessPolygonsBox &box, DtTerrainCategoryMask terrainCategoryMask, void *usr) const
 
virtual void trianglesInArea (DtTriangleOutputInterface &func, DtTerrainProcessPolygonsBox &box, DtTerrainCategoryMask terrainCategoryMask=DtTerrainCategory::DtTerrainCategoryAll) const
 
virtual void trianglesForGeometry (DtTriangleOutputInterface &outputIf, DtTerrainGeometryId geometryId) const
 
virtual DtTerrainInformationterrainInformation ()
 
virtual std::shared_ptr
< DtAsyncJobMapEntry
makePathAsync (const DtPoint &localStart, const DtPoint &localDestination, const std::string &type, const double &maxSearchRadius, const double &startProximityThreshold, const DtAStarGraph::DtWeightFactorsList &weightFactors=DtAStarGraph::DtWeightFactorsList(), const double &offRoadPathWeight=10.0)
 
virtual DtAStarGraph::Path makePath (const DtPoint &localStart, const DtPoint &localDestination, const std::string &type, const double &maxSearchRadius, const double &startProximityThreshold, boost::function< bool()> cancelCheck, const DtAStarGraph::DtWeightFactorsList &weightFactors=DtAStarGraph::DtWeightFactorsList()) const
 
virtual bool onPathFeature (const DtPoint &location, const DtString &type, double buffer=0.5)
 
virtual DtAStarGraph::Ptr pathFinder (const std::string &) const
 
virtual std::shared_ptr
< DtAsyncJobMapEntry
addAsyncJob (DtAsyncJob *job)
 
MAKVRinTerra::DtProj::CPtr localProj () const
 
MAKVRinTerra::DtFeaturesDebuggerdebugger () const
 
MAKVRinTerra::DtQuery findQuery (const std::string &name) const
 
const double topoDistance (const DtPoint &start, const DtPoint &end, const MAKVRinTerra::DtProj &localProj)
 
MAKVRinTerra::DtClosestPathFeatureFinder closestFeatureOnNetwork (const std::string &type, const DtPoint &startingLocation, const double &searchRadius, bool *dataAvailable=NULL)
 
void breakUpChord (const MAKVRinTerra::DtProj &, const DtChord &chord, std::vector< DtChord > &chords) const
 
void breakUpChord (const DtChord &chord, std::vector< DtChord > &chords) const
 
virtual DtTerrainGeometryHandlecreateEntityGeometry (const DtFilename &file)
 
virtual DtTerrainGeometryHandlecreateEntityGeometry (const DtEntityType &file)
 
virtual void loadVisuals (const DtScenarioExplorer &)
 
virtual void clearCache ()
 
virtual
DtDynamicTerrainRequestHandle 
addDynamicTerrainChangeRequest (double time, const std::map< DtString, DtString > &keyValueChanges, const DtVector &centerLocation, double radius)
 
virtual
DtDynamicTerrainRequestHandle 
addDynamicTerrainChangeRequest (double time, const std::map< DtString, DtString > &keyValueChanges, const std::vector< DtVector > &vertices, double width)
 
virtual
DtDynamicTerrainRequestHandle 
addDynamicTerrainChangeRequest (double time, const std::map< DtString, DtString > &keyValueChanges, const std::list< DtVector > &vertices)
 
virtual
DtDynamicTerrainRequestHandle 
addDynamicTerrainChangeRequest (double time, makVrv::DtDynamicTerrainChange *command)
 
virtual void dynamicTerrainFeaturesInArea (const DtVector &centerLocation, double radius, std::list< DtRwDynamicTerrainInformation > &dynamicTerrainInfo, bool *dataAvailable=NULL, const DtString &filterKey=DtString::nullString())
 
virtual void dynamicTerrainFeaturesInArea (const std::list< DtVector > &vertices, double width, std::list< DtRwDynamicTerrainInformation > &dynamicTerrainInfo, bool *dataAvailable=NULL, const DtString &filterKey=DtString::nullString())
 
virtual void dynamicTerrainFeaturesInArea (const std::list< DtVector > &vertices, std::list< DtRwDynamicTerrainInformation > &dynamicTerrainInfo, bool *dataAvailable=NULL, const DtString &filterKey=DtString::nullString())
 
virtual bool extractDynamicTerrainFeatureInformation (const makVrv::DtDynamicTerrainFeature &feature, DtRwDynamicTerrainInformation &dynamicTerrainInfo, const DtString &filterKey=DtString::nullString()) const
 
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=DtString())
 
virtual bool oceanLayerPresent () const
 
virtual void setOceanLayerPresent (bool b)
 
virtual bool nonPolygonalWaterHeight (const DtChord &localLocation, double &height) const
 
virtual void setNonPolygonalWaterHeight (double d)
 
virtual double defaultWaterDepth (const DtVector &localLocation) const
 
virtual void setDefaultWaterDepth (double)
 
virtual double defaultSurfaceElevation (const DtVector &localLocation) const
 
virtual DtSurface::DtMedium mediumForUnspecPolygonsUnderWater () const
 
virtual void setMediumForUnspecPolygonsUnderWater (DtSurface::DtMedium m)
 
virtual double landAboveWaterMinimumSeparation () const
 
virtual void setLandAboveWaterMinimumSeparation (double)
 
virtual void setAccumulateIntersections (bool value)
 
virtual bool accumulateIntersections () const
 
virtual void getIntersections (std::vector< DtChord > &accumulatedChords, std::vector< DtPoint > &accumulatedIntersections) const
 
virtual boost::signals2::connection connectToUnloadTerrain (const DtTerrainUnloadSignalType::slot_type &slotIn)
 
void setBlockOnAsynchronousOperations (bool shouldBlock)
 
virtual double terrainHeightAboveSeaLevel (const DtPoint &databaseLocation, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0) const
 
virtual double terrainHeightAboveSeaLevel (DtTerrainIntersectStatus &status, const DtPoint &databaseLocation, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool terrainHeightAndIntersection (const DtVector &localLocation, double &height, DtVrfChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0) const
 
virtual bool terrainHeightAndIntersection (DtTerrainIntersectStatus &status, const DtVector &localLocation, double &height, DtVrfChordIntersectionRecord &record, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool terrainHeightAndIntersectionBelow (const DtVector &localLocation, double &height, DtVrfChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0) const
 
virtual bool terrainHeightAndIntersectionBelow (DtTerrainIntersectStatus &status, const DtVector &localLocation, double &height, DtVrfChordIntersectionRecord &record, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool terrainHeightUnderWater (const DtVector &databaseLocation, double &groundHeight, DtSurface &groundSurface, DtVector &groundNormal, double &waterHeight, DtSurface::DtMedium &topSurfaceMedium, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0)
 
virtual bool terrainHeightUnderWater (DtTerrainIntersectStatus &status, const DtVector &databaseLocation, double &groundHeight, DtSurface &groundSurface, DtVector &groundNormal, double &waterHeight, DtSurface::DtMedium &topSurfaceMedium, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions())
 
virtual bool closestIntersection (const DtVector &localLocation, DtPoint &intersectionPoint, bool *dataAvailable=0, bool overrideBlockingAssert=false, bool doNotAddDefaultRecord=false, int flags=0) const
 
virtual bool closestIntersection (DtTerrainIntersectStatus &status, const DtVector &localLocation, DtPoint &intersectionPoint, bool doNotAddDefaultRecord=false, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool closestIntersection (double lat, double lon, DtPoint &intersectionPoint, bool *dataAvailable=0, bool overrideBlockingAssert=false, bool doNotAddDefaultRecord=false, int flags=0) const
 
virtual bool closestIntersection (DtTerrainIntersectStatus &status, double lat, double lon, DtPoint &intersectionPoint, bool doNotAddDefaultRecord=false, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool closestIntersection (const DtVector &localLocation, DtVrfChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false, bool doNotAddDefaultRecord=false, int flags=0) const
 
virtual bool closestIntersection (DtTerrainIntersectStatus &status, const DtVector &localLocation, DtVrfChordIntersectionRecord &record, bool doNotAddDefaultRecord=false, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool closestIntersection (double lat, double lon, DtVrfChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false, bool doNotAddDefaultRecord=false, int flags=0) const
 
virtual bool closestIntersection (DtTerrainIntersectStatus &status, double lat, double lon, DtVrfChordIntersectionRecord &record, bool doNotAddDefaultRecord=false, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool closestIntersection (const std::list< DtVector > &localLocationList, DtVrfChordIntersectRecordList &recordList, int &numIntersections, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false, bool doNotAddDefaultRecord=false, int flags=0) const
 
virtual bool closestIntersection (DtTerrainIntersectStatus &status, const std::list< DtVector > &localLocationList, DtVrfChordIntersectRecordList &recordList, int &numIntersections, bool doNotAddDefaultRecord=false, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool intersect (const DtChord &chord, DtPoint &intersectionPoint, double &intersectionTime, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0) const
 
virtual bool intersect (DtTerrainIntersectStatus &status, const DtChord &chord, DtPoint &intersectionPoint, double &intersectionTime, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool intersect (const DtChord &chord, DtVrfChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0) const
 
virtual bool intersect (DtTerrainIntersectStatus &status, const DtChord &chord, DtVrfChordIntersectionRecord &record, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool allIntersectsAlongChord (const DtChord &chord, DtVrfChordIntersectRecordList &intList, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0) const
 
virtual bool allIntersectsAlongChord (DtTerrainIntersectStatus &status, const DtChord &chord, DtVrfChordIntersectRecordList &intList, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool allIntersectsAlongChordDebug (const DtChord &chord, DtVrfChordIntersectRecordList &intList, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0) const
 
virtual bool allIntersectsAlongChordDebug (DtTerrainIntersectStatus &status, const DtChord &chord, DtVrfChordIntersectRecordList &intList, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
virtual bool intersectList (const std::list< DtChord > &chordList, DtVrfChordIntersectRecordList &recordList, int &numTerrainIntersections, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false, int flags=0) const
 
virtual bool intersectList (DtTerrainIntersectStatus &status, const std::list< DtChord > &chordList, DtVrfChordIntersectRecordList &recordList, int &numTerrainIntersections, const DtTerrainIntersectOptions &options=DtTerrainIntersectOptions()) const
 
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
 
boost::signals2::signal< void(bool)> signal_jobQueueStatusChanged
 

Protected Types

typedef std::map< DtString,
DtGenericTerrainRecordCallbackListPtr
DtGenericTerrainRecordCallbackListMap
 
typedef boost::ptr_list
< MAKVRinTerra::DtFeatureSet
FeatureSetList
 

Protected Member Functions

void insertNonPolyWaterIntoIntersectionList (DtVrfChordIntersectionRecord &waterInterx, DtVrfChordIntersectRecordList &intrxList) const
 
virtual
DtVrfChordIntersectionRecord 
blankSurfaceIntersectionRecord (const DtVector &localLocation, const double height) const
 
virtual bool nonPolygonalWaterIntersect (const DtChord &chord, DtVrfChordIntersectRecordList &waterRecords, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA) const
 
virtual
DtGenericTerrainRecordCallbackListPtr 
findOrAddCallbackList (DtGenericTerrainRecordCallbackListMap &map, const DtString &recordType)
 
virtual void accumulateIntersections (const DtChord &chord, const DtVrfChordIntersectionRecord &record) const
 
virtual void accumulateIntersections (const DtChord &chord, const DtVrfChordIntersectRecordList &intList) const
 
virtual void accumulateIntersections (const std::list< DtChord > &chordList, const DtVrfChordIntersectRecordList &recordList) const
 
virtual void terrainPaging (bool)
 

Protected Attributes

DtFilename myTerrainOptionsFilename
 
DtTerrainInterfaceConfig myFileConfig
 
FeatureSetList myFeatureLayers
 
DtTerrainImplementationmyTerrainImpl
 
bool myTerrainIsLoaded
 
DtTerrainImplementationManagermyTerrainImplManager
 
DtConsoleCommandManagermyConsoleCommandManager
 
DtString myLoadedFilename
 
DtString myUnresolvedFilename
 
DtTerrainPagingGeometryList myForceLoadAreas
 
double myLastFileTime
 
MAKVRinTerra::DtProj::CPtr myProjObject
 
DtAsyncJobServermyAsyncJobServer
 
OceanLayer myGlobalOceanLayer
 
std::ofstream myDebugOutputFile
 
tbb::tick_count myLastDebugOutputTick
 
makArchives::DtTerrainRecordmyTerrainRecord
 
DtGenericTerrainRecordCallbackListMap myGenericTerrainRecordCallbacklists
 
bool myAccumulateIntersections
 
std::vector< DtChordmyAccumulatedChords
 
std::vector< DtPointmyAccumulatedIntersectionPoints
 
DtTerrainUnloadSignalType myUnloadTerrainSignal
 
bool myActive = false
 
bool myBlockOnAsynchronousOperations
 

Static Protected Attributes

static double theTerrainPagingMaxHeight
 

Member Typedef Documentation

Member Enumeration Documentation

Enumerator
VrfSimulationBackEnd 
NavGenerationTool 

Constructor & Destructor Documentation

DtTerrainInterface::DtTerrainInterface ( )

Constructor.

virtual DtTerrainInterface::~DtTerrainInterface ( )
virtual

Destructor.

Member Function Documentation

virtual bool DtTerrainInterface::init ( bool  createConsoleManager = true,
unsigned  maxThreads = 0 
)
virtual

Virtual initialization. Call this after construction, and before calling any other members on the class. Creates the terrain implementation manager.

virtual void DtTerrainInterface::setConfigFile ( const std::string &  ,
bool  reload = true 
)
virtual

Set the config file which will attempt to be loaded during init.

virtual const DtTerrainInterfaceConfig& DtTerrainInterface::configOptions ( ) const
virtual

Current config options.

virtual void DtTerrainInterface::tick ( )
virtual

Cleans up finished async server jobs, and checks for path finder removal.

virtual bool DtTerrainInterface::isSameTerrain ( const DtFilename &  ) const
virtual

Returns true if this terrain is the same terrain as is currently open.

DtTerrainImplementation* DtTerrainInterface::terrainImplementation ( ) const
inline

Returns the current terrain implementation.

virtual void DtTerrainInterface::addTerrainImplementation ( const DtString implementationName,
DtTerrainImplementationCreatorFcn  creatorFcn 
)
virtual

Add a terrain implementation type to the set of terrain implementations that can be used by this interface.

virtual void DtTerrainInterface::addFeatureLayer ( MAKVRinTerra::DtFeatureSet )
virtual

Add a feature layer that will be added to the feature database.

virtual void DtTerrainInterface::addFeatureLayer ( std::shared_ptr< MAKVRinTerra::DtFeatureSet )
virtual
virtual void DtTerrainInterface::addGenericTerrainRecordCallback ( const DtString recordType,
DtGenericTerrainRecordCallbackFunction  fcn,
void *  user 
)
virtual
virtual void DtTerrainInterface::removeGenericTerrainRecordCallback ( const DtString recordType,
DtGenericTerrainRecordCallbackFunction  fcn,
void *  user 
)
virtual
virtual void DtTerrainInterface::invokeGenericTerrainRecordCallbacks ( makArchives::DtGenericTerrainRecord record)
virtual
virtual void DtTerrainInterface::addTerrainChangeNotificationCallback ( DtTerrainChangeNotificationCallbackFcn  fcn,
void *  user 
)
virtual

Adds a callback for terrain change notifications.

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

removes a callback for terrain change notifications

virtual void DtTerrainInterface::cancelAllJobsAndWait ( )
virtual

If there is a job server and there are jobs in the job server, cancel them and wait for them to be cancelled.

virtual bool DtTerrainInterface::loadTerrain ( const DtString filename,
LoadContext  context = VrfSimulationBackEnd 
)
virtual

Settings will be merged into existing – not replace.

virtual bool DtTerrainInterface::unloadTerrain ( bool  block = true)
virtual
Parameters
blockwhether this function should block until all resources are cleaned up
virtual bool DtTerrainInterface::loadModel ( const DtFilename &  f,
const DtEntityType &  t = DtEntityType(),
bool  hasOceanLayer = true 
)
virtual

Loads a model from the specified file. This is different from loadTerrain in that, if the implementation supports it, will not load this file into the main terrain, but rather will create a separate database that contains just this model. Supply option entity for for use by implementation to mutate loaded model based on appearance. If hasOceanLayer is false, the configuration of the terrain implementation will be changed to disable the ocean layer.

virtual double DtTerrainInterface::modelHeightDifferencesFromAppearances ( int  oldApp,
int  newApp 
) const
virtual

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

virtual bool DtTerrainInterface::terrainIsLoaded ( )
virtual

Creates a terrain from the given extent.

virtual DtString DtTerrainInterface::loadedFilename ( ) const
virtual
Returns
The last filename that was passed to loadTerrain() and successfully loaded.
virtual const Coordinate_System* DtTerrainInterface::coordinateSystem ( ) const
virtual
virtual Coordinate_System* DtTerrainInterface::coordinateSystem ( )
virtual
virtual std::unique_ptr<MAKVRinTerra::DtAreaFeatureSet> DtTerrainInterface::areas ( const std::string &  type,
const std::shared_ptr< DtVrfCallbackQueue > &  = std::shared_ptr< DtVrfCallbackQueue >() 
) const
virtual

Returns a DtAreaFeatureSet configured using the provided type. See appData/settings/featureconfig.txt for types.

virtual std::unique_ptr<MAKVRinTerra::DtAreaFeatureSet> DtTerrainInterface::areas ( const MAKVRinTerra::DtAreaFeatureSetAdapter::Config config,
const std::shared_ptr< DtVrfCallbackQueue > &  = std::shared_ptr< DtVrfCallbackQueue >() 
) const
virtual

Returns a DtAreaFeatureSet configured using the provided type and parameters. See appData/settings/featureconfig.txt for types.

virtual std::unique_ptr<MAKVRinTerra::DtPathFeatureSet> DtTerrainInterface::paths ( const std::string &  type) const
virtual
virtual std::unique_ptr<MAKVRinTerra::DtFeatureSet> DtTerrainInterface::features ( const std::string &  queryName) const
virtual

Access filtered features.

Parameters
queryNameName of config query identifying features which will be returned.
virtual std::unique_ptr<MAKVRinTerra::DtFeatureSet> DtTerrainInterface::allFeatures ( ) const
virtual

Access all features.

virtual std::unique_ptr<MAKVRinTerra::DtFeatureSet> DtTerrainInterface::featuresRaw ( const std::string &  queryName) const
virtual

Access all features. Features will be read directly from the source.

virtual std::unique_ptr<MAKVRinTerra::DtFeatureSet> DtTerrainInterface::allFeaturesRaw ( ) const
virtual

Access all features directly from the source.

virtual bool DtTerrainInterface::hasAerodromes ( ) const
virtual

Whether or not there are aerodromes in this database.

virtual MAKVRinTerra::DtAerodromeLoader::AerodromeData DtTerrainInterface::aerodromeData ( const std::string &  airportCode) const
virtual

Returns the aerodrome data for the given aerodrome airport code.

virtual std::vector<MAKVRinTerra::DtAerodromeLoader::AerodromeData> DtTerrainInterface::aerodromesWithinRange ( const DtVector &  center,
double  range 
) const
virtual

Returns the aerodromes within the given sphere (location is geocentric, radius in meters)

virtual std::vector<MAKVRinTerra::DtAerodromeLoader::AerodromeData> DtTerrainInterface::aerodromesInArea ( const std::vector< DtVector > &  ) const
virtual

Returns the aerodrome data for the aerodromes in the given area.

virtual std::vector<MAKVRinTerra::DtAerodromeLoader::AerodromeData> DtTerrainInterface::aerodromesAtLocation ( const DtVector &  location) const
virtual

Return the aerodrome data for the aerodromes intersection a given location.

virtual std::vector<MAKVRinTerra::DtAerodromeLoader::RunwayData> DtTerrainInterface::runwayAtLocation ( const DtVector &  location) const
virtual

Return if there is a runway(s) at given location (within the bounding box of the runway)

virtual double DtTerrainInterface::terrainHeightAboveSeaLevel ( const DtPoint databaseLocation,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
) const
virtual

Returns the height above sea level for the topmost terrain intersection at databaseLocation.

Parameters
Input
databaseLocationthe location to test
optionsSee DtTerrainIntersectOptions
Output
statusSee DtTerrainIntersectStatus
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false and zero will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
terrainHeight (or zero if the terrain is not yet available)
virtual double DtTerrainInterface::terrainHeightAboveSeaLevel ( DtTerrainIntersectStatus status,
const DtPoint databaseLocation,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Returns the height above sea level for the topmost terrain intersection at databaseLocation.

Parameters
Input
databaseLocationthe location to test
optionsSee DtTerrainIntersectOptions
Output
statusSee DtTerrainIntersectStatus
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false and zero will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
terrainHeight (or zero if the terrain is not yet available)
virtual bool DtTerrainInterface::terrainHeightAndIntersection ( const DtVector &  localLocation,
double height,
DtVrfChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
) const
virtual

Returns whether there is a terrain intersection and if so sets height and record from the topmost terrain intersection point.

Parameters
Input
optionsSee DtTerrainIntersectOptions
localLocationthe location to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, height will be set to zero, and the record will not reflect any results.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::terrainHeightAndIntersection ( DtTerrainIntersectStatus status,
const DtVector &  localLocation,
double height,
DtVrfChordIntersectionRecord record,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Returns whether there is a terrain intersection and if so sets height and record from the topmost terrain intersection point.

Parameters
Input
optionsSee DtTerrainIntersectOptions
localLocationthe location to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, height will be set to zero, and the record will not reflect any results.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::terrainHeightAndIntersectionBelow ( const DtVector &  localLocation,
double height,
DtVrfChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
) const
virtual

Like terrainHeightAndIntersection(), but only looks for intersections below the given local location.

virtual bool DtTerrainInterface::terrainHeightAndIntersectionBelow ( DtTerrainIntersectStatus status,
const DtVector &  localLocation,
double height,
DtVrfChordIntersectionRecord record,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Like terrainHeightAndIntersection(), but only looks for intersections below the given local location.

virtual bool DtTerrainInterface::terrainHeightUnderWater ( const DtVector &  databaseLocation,
double groundHeight,
DtSurface groundSurface,
DtVector &  groundNormal,
double waterHeight,
DtSurface::DtMedium topSurfaceMedium,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
)
virtual

This function gets the ground and water (if it exists) surfaces at the given location. It provides the ground height, the surface structure for the ground, the normal of that surface, the height of the water surface, and a flag indicating whether there is actually water.

Note
1 - This function does NOT intersect vector or geometric feature data - they are intended for finding the "ground" height.
2 - This function determines the topmost terrain surfaces. Thus if there are multiple levels of terrain, the highest intersection point will be returned as the height. In order to get the closest intersection points with terrain (and possibly features data, use the closestIntersection() function below; but that function will not attempt to interpret unspecified surfaces, or synthesize a sea-floor surface.
3 - This function will make assumptions about "unspecified" surfaces, and will synthesize terrain heights if the location is off the known terrain, using default heights and water depths in the database or the code. Thus it will always return a ground surface. It will interpret unspecified surfaces as water if they are over a ground surface, and as ground if they are under a water surface.

This function may find one or more surfaces, which may be labeled as ground, water, or unspecified. The database may have a global sea level altitude specified, and may have a default ocean depth specified. The function interprets different combinations of data as follows:

  • Terrain is not available (i.e., tiled data is not paged in): the function sets the dataAvailable flag and the return value to false. Other output data is undefined.
  • No surfaces are found, and the terrain database has a global sea level: This case should not come up, as a water surface is synthesized to correspond to the global sea level, and thus a water surface should be found. However, if it comes up, the topSurfaceMedium is set to be water, with waterHeight at the global sea level. A surface is synthesized for the sea floor at a default depth under the water height. If the database has a global ocean depth, that is used; otherwise, the default depth is 500m.
  • No surfaces are found, and the terrain database does NOT have a global sea level: The topSurfaceMedium is set to be water, with waterHeight at an altitude of 0; the sea floor is synthesized at the default depth (database global depth or default of 500m).
  • Only one surface is found, of medium type "unspecified": The altitude of this surface is returned in waterHeight, but the topSurfaceMedium is left as "unspecified;" the calling code must decide whether to interpret this as actual water, or as ground. A sea floor surface is synthesized at the default depth under the unspecified surface.
    Note that this case should only come up if there is no global sea level in the terrain database.
  • Ground surface found on top: This is returned as the ground level. Any surfaces below this one are ignored.
  • Only one surface is found, of type "water surface": This surface determines the waterHeight, and a default depth is used to generate a sea floor ground surface.
  • Water surface found on top, with other surfaces below: The top surface type is set to water, and waterHeight is determined by the top surface. For other surfaces:
    1) If another water surface is found, it is ignored.
    2) If a ground surface is found, it determines the groundSurface, and all lower surfaces are ignored. If no ground surfaces are present, then treat this case the same as a single water surface (above).
    3) If an unspecified surface is found, then treat as water or ground according to mediumForUnspecPolygonsUnderWater(). This function is Ground by default, which is appropriate when the surface is supposed to represent sea floor when it is under sea level (i.e., a global sea level).
    Note that if the terrain database has a global sea level, then it is not possible for it to represent [dry] ground or water that is below sea level, since the global sea level is always represented by an implied water surface.
  • "Unspecified" surface found on top, with other surfaces below:
    1) if a ground surface is found under it, the unspecified surface is assumed to be water;
    2) if an unspecified surface is found under it, the top one is assumed to be water and the bottom one ground;
    3) if a water surface is found, then the top surface is usually interpreted to be ground. However, the unspecified surface may be interpreted as water and ignored in one special case. Some terrain databases may use unspecified polygons to represent the sea surface (vs. the sea floor), in addition to specifying a global sea level. For these databases, mediumForUnspecPolygonsUnderWater should be made to return Water Surface. Because these polygons are flat approximations to the earth's surface, their corners may stick up above the global sea level. To prevent these corners from being interpreted as land, they will be interpreted as water if they are less than a threshold (1.0m) above a water surface. So, unspecified polygons above water are interpreted as water if mediumFor...() is Water Surface and the height above the water is < 1.0m.
Parameters
databaseLocationThe only input to the function; the location to be tested, in database coordinates.
groundHeightThe altitude of the ground at the location, either under a water surface or as the top surface.
groundSurfaceThe surface (structure) of the ground (either the top surface if it is ground, or the sea bottom if the top is water).
waterHeightThe altitude of the water surface at the location. NOT VALID IF TOP SURFACE IS GROUND.
topSurfaceMediumThe medium (see surface.h) of the top surface. This returns one of three values: Ground, WaterSurface, or UnspecifiedMedium. If Ground, then the waterHeight parameter is not meaningful. Ground is returned if the medium is Ground, Above Ground, Below Ground, Above Water, or Under Water. If UnspecifiedMedium, then the calling code can interpret this as it needs to. For example, if this function finds only an unspecified surface, it will return its height in waterHeight as if it were water, and synthesize a bottom surface for groundHeight. The calling code could choose to treat the unspecified surface as ground though. Note that the algorithm treats a surface as Unspecified if the soil type is Unspecified, no medium bits are set, or the medium water-surface bit is set AND some other medium bit is set.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the terrain data is not yet paged in, dataAvailable will be set to false.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
optionsSee DtTerrainIntersectOptions
statusSee DtTerrainIntersectStatus
Returns
result of the data availability
Return values
trueAll source terrain was available, so the output parameter values are valid. Note that the query may be outside the region of source data, but the function will still return true, with default values in the parameters.
falseIf some source data for the location was not yet available, i.e. not paged in.
virtual bool DtTerrainInterface::terrainHeightUnderWater ( DtTerrainIntersectStatus status,
const DtVector &  databaseLocation,
double groundHeight,
DtSurface groundSurface,
DtVector &  groundNormal,
double waterHeight,
DtSurface::DtMedium topSurfaceMedium,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
)
virtual

This function gets the ground and water (if it exists) surfaces at the given location. It provides the ground height, the surface structure for the ground, the normal of that surface, the height of the water surface, and a flag indicating whether there is actually water.

Note
1 - This function does NOT intersect vector or geometric feature data - they are intended for finding the "ground" height.
2 - This function determines the topmost terrain surfaces. Thus if there are multiple levels of terrain, the highest intersection point will be returned as the height. In order to get the closest intersection points with terrain (and possibly features data, use the closestIntersection() function below; but that function will not attempt to interpret unspecified surfaces, or synthesize a sea-floor surface.
3 - This function will make assumptions about "unspecified" surfaces, and will synthesize terrain heights if the location is off the known terrain, using default heights and water depths in the database or the code. Thus it will always return a ground surface. It will interpret unspecified surfaces as water if they are over a ground surface, and as ground if they are under a water surface.

This function may find one or more surfaces, which may be labeled as ground, water, or unspecified. The database may have a global sea level altitude specified, and may have a default ocean depth specified. The function interprets different combinations of data as follows:

  • Terrain is not available (i.e., tiled data is not paged in): the function sets the dataAvailable flag and the return value to false. Other output data is undefined.
  • No surfaces are found, and the terrain database has a global sea level: This case should not come up, as a water surface is synthesized to correspond to the global sea level, and thus a water surface should be found. However, if it comes up, the topSurfaceMedium is set to be water, with waterHeight at the global sea level. A surface is synthesized for the sea floor at a default depth under the water height. If the database has a global ocean depth, that is used; otherwise, the default depth is 500m.
  • No surfaces are found, and the terrain database does NOT have a global sea level: The topSurfaceMedium is set to be water, with waterHeight at an altitude of 0; the sea floor is synthesized at the default depth (database global depth or default of 500m).
  • Only one surface is found, of medium type "unspecified": The altitude of this surface is returned in waterHeight, but the topSurfaceMedium is left as "unspecified;" the calling code must decide whether to interpret this as actual water, or as ground. A sea floor surface is synthesized at the default depth under the unspecified surface.
    Note that this case should only come up if there is no global sea level in the terrain database.
  • Ground surface found on top: This is returned as the ground level. Any surfaces below this one are ignored.
  • Only one surface is found, of type "water surface": This surface determines the waterHeight, and a default depth is used to generate a sea floor ground surface.
  • Water surface found on top, with other surfaces below: The top surface type is set to water, and waterHeight is determined by the top surface. For other surfaces:
    1) If another water surface is found, it is ignored.
    2) If a ground surface is found, it determines the groundSurface, and all lower surfaces are ignored. If no ground surfaces are present, then treat this case the same as a single water surface (above).
    3) If an unspecified surface is found, then treat as water or ground according to mediumForUnspecPolygonsUnderWater(). This function is Ground by default, which is appropriate when the surface is supposed to represent sea floor when it is under sea level (i.e., a global sea level).
    Note that if the terrain database has a global sea level, then it is not possible for it to represent [dry] ground or water that is below sea level, since the global sea level is always represented by an implied water surface.
  • "Unspecified" surface found on top, with other surfaces below:
    1) if a ground surface is found under it, the unspecified surface is assumed to be water;
    2) if an unspecified surface is found under it, the top one is assumed to be water and the bottom one ground;
    3) if a water surface is found, then the top surface is usually interpreted to be ground. However, the unspecified surface may be interpreted as water and ignored in one special case. Some terrain databases may use unspecified polygons to represent the sea surface (vs. the sea floor), in addition to specifying a global sea level. For these databases, mediumForUnspecPolygonsUnderWater should be made to return Water Surface. Because these polygons are flat approximations to the earth's surface, their corners may stick up above the global sea level. To prevent these corners from being interpreted as land, they will be interpreted as water if they are less than a threshold (1.0m) above a water surface. So, unspecified polygons above water are interpreted as water if mediumFor...() is Water Surface and the height above the water is < 1.0m.
Parameters
databaseLocationThe only input to the function; the location to be tested, in database coordinates.
groundHeightThe altitude of the ground at the location, either under a water surface or as the top surface.
groundSurfaceThe surface (structure) of the ground (either the top surface if it is ground, or the sea bottom if the top is water).
waterHeightThe altitude of the water surface at the location. NOT VALID IF TOP SURFACE IS GROUND.
topSurfaceMediumThe medium (see surface.h) of the top surface. This returns one of three values: Ground, WaterSurface, or UnspecifiedMedium. If Ground, then the waterHeight parameter is not meaningful. Ground is returned if the medium is Ground, Above Ground, Below Ground, Above Water, or Under Water. If UnspecifiedMedium, then the calling code can interpret this as it needs to. For example, if this function finds only an unspecified surface, it will return its height in waterHeight as if it were water, and synthesize a bottom surface for groundHeight. The calling code could choose to treat the unspecified surface as ground though. Note that the algorithm treats a surface as Unspecified if the soil type is Unspecified, no medium bits are set, or the medium water-surface bit is set AND some other medium bit is set.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the terrain data is not yet paged in, dataAvailable will be set to false.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
optionsSee DtTerrainIntersectOptions
statusSee DtTerrainIntersectStatus
Returns
result of the data availability
Return values
trueAll source terrain was available, so the output parameter values are valid. Note that the query may be outside the region of source data, but the function will still return true, with default values in the parameters.
falseIf some source data for the location was not yet available, i.e. not paged in.
virtual bool DtTerrainInterface::closestIntersection ( const DtVector &  localLocation,
DtPoint intersectionPoint,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
bool  doNotAddDefaultRecord = false,
int  flags = 0 
) const
virtual

Similar to the terrainHeight functions above. Function to determine the closest intersection to a specified location, either in local (DB) coordinates or in lat/lon. The closest intersection is defined as the closest intersection in the down or up direction from location. Thus if there are multiple terrain levels, it will not necessarily return an intersection with the topmost as the terrainHeight functions do.

Note
Unlike the terrainHeight functions, if the vectorNetworkRecord and vectorNetworkIntersectionRecord are non-NULL, it will compute an intersection with the vector network and return the best intersection as defined by the metrics in the vectorNetworkRecord.

Return Values: True if any intersection, vector data or terrain, is found. If a vector data intersection is found, then the vecNetworkIntersectionRecord is set appropriately. If at least one terrain intersection is found, the intersectionPoint parameter is set to the closest intersection point.

Parameters
Input
optionsSee DtTerrainIntersectOptions
localLocationthe location to test
Output
statusSee DtTerrainIntersectStatus
intersectionPointthe point of intersection, left unchanged if dataAvailable is set to false.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, intersectionPoint will not be modified and false will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
doNotAddDefaultRecordthe closest intersection, when all else fails, will add a default record at the location. Set this flag to true to not add a record and return false
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( DtTerrainIntersectStatus status,
const DtVector &  localLocation,
DtPoint intersectionPoint,
bool  doNotAddDefaultRecord = false,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Similar to the terrainHeight functions above. Function to determine the closest intersection to a specified location, either in local (DB) coordinates or in lat/lon. The closest intersection is defined as the closest intersection in the down or up direction from location. Thus if there are multiple terrain levels, it will not necessarily return an intersection with the topmost as the terrainHeight functions do.

Note
Unlike the terrainHeight functions, if the vectorNetworkRecord and vectorNetworkIntersectionRecord are non-NULL, it will compute an intersection with the vector network and return the best intersection as defined by the metrics in the vectorNetworkRecord.

Return Values: True if any intersection, vector data or terrain, is found. If a vector data intersection is found, then the vecNetworkIntersectionRecord is set appropriately. If at least one terrain intersection is found, the intersectionPoint parameter is set to the closest intersection point.

Parameters
Input
optionsSee DtTerrainIntersectOptions
localLocationthe location to test
Output
statusSee DtTerrainIntersectStatus
intersectionPointthe point of intersection, left unchanged if dataAvailable is set to false.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, intersectionPoint will not be modified and false will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
doNotAddDefaultRecordthe closest intersection, when all else fails, will add a default record at the location. Set this flag to true to not add a record and return false
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( double  lat,
double  lon,
DtPoint intersectionPoint,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
bool  doNotAddDefaultRecord = false,
int  flags = 0 
) const
virtual

Same as above function, but accepts location in lat/lon.

Parameters
Input
optionsSee DtTerrainIntersectOptions
latthe latitude to test
lonthe longitude to test
Output
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, intersectionPoint will not be modified and false will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( DtTerrainIntersectStatus status,
double  lat,
double  lon,
DtPoint intersectionPoint,
bool  doNotAddDefaultRecord = false,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Same as above function, but accepts location in lat/lon.

Parameters
Input
optionsSee DtTerrainIntersectOptions
latthe latitude to test
lonthe longitude to test
Output
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, intersectionPoint will not be modified and false will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( const DtVector &  localLocation,
DtVrfChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
bool  doNotAddDefaultRecord = false,
int  flags = 0 
) const
virtual

Same as above function, but returns the entire intersection record, and not just the intersection point.

Parameters
Input
optionsSee DtTerrainIntersectOptions
localLocationthe location to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
recordthe result of the terrain intersection
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, record will not be modified and false will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
doNotAddDefaultRecordthe closest intersection, when all else fails, will add a default record at the location. Set this flag to true to not add a record and return false
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( DtTerrainIntersectStatus status,
const DtVector &  localLocation,
DtVrfChordIntersectionRecord record,
bool  doNotAddDefaultRecord = false,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Same as above function, but returns the entire intersection record, and not just the intersection point.

Parameters
Input
optionsSee DtTerrainIntersectOptions
localLocationthe location to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
recordthe result of the terrain intersection
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, record will not be modified and false will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
doNotAddDefaultRecordthe closest intersection, when all else fails, will add a default record at the location. Set this flag to true to not add a record and return false
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( double  lat,
double  lon,
DtVrfChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
bool  doNotAddDefaultRecord = false,
int  flags = 0 
) const
virtual

Same as above function, but accepts location in lat/lon.

Parameters
Input
optionsSee DtTerrainIntersectOptions
latthe latitude to test
lonthe longitude to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
recordthe result of the terrain intersection
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, intersectionPoint will not be modified and false will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
doNotAddDefaultRecordthe closest intersection, when all else fails, will add a default record at the location. Set this flag to true to not add a record and return false
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( DtTerrainIntersectStatus status,
double  lat,
double  lon,
DtVrfChordIntersectionRecord record,
bool  doNotAddDefaultRecord = false,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Same as above function, but accepts location in lat/lon.

Parameters
Input
optionsSee DtTerrainIntersectOptions
latthe latitude to test
lonthe longitude to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
recordthe result of the terrain intersection
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, intersectionPoint will not be modified and false will be returned.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
doNotAddDefaultRecordthe closest intersection, when all else fails, will add a default record at the location. Set this flag to true to not add a record and return false
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
truea terrain intersection was found
falseif dataAvailable was specified and returns true, then the database does not have an intersection at localLocation. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( const std::list< DtVector > &  localLocationList,
DtVrfChordIntersectRecordList recordList,
int numIntersections,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
bool  doNotAddDefaultRecord = false,
int  flags = 0 
) const
virtual

Returns complete intersection information about the closest terrain intersection point for each location in the list in Database Coordinates.

Parameters
Input
optionsSee DtTerrainIntersectOptions
localLocationListlist of locations to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
recordLista DtVrfChordIntersectionRecordList (one record for each localLocation).
numIntersectionsset to the number of intersections that occur for the list of locations.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, recordList will not represent any intersections and numIntersections will be set to 0.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
doNotAddDefaultRecordthe closest intersection, when all else fails, will add a default record at the location. Set this flag to true to not add a record and return false
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
trueany chord intersects the terrain
falseif dataAvailable was specified and returns true, then none of the chords intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::closestIntersection ( DtTerrainIntersectStatus status,
const std::list< DtVector > &  localLocationList,
DtVrfChordIntersectRecordList recordList,
int numIntersections,
bool  doNotAddDefaultRecord = false,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Returns complete intersection information about the closest terrain intersection point for each location in the list in Database Coordinates.

Parameters
Input
optionsSee DtTerrainIntersectOptions
localLocationListlist of locations to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
recordLista DtVrfChordIntersectionRecordList (one record for each localLocation).
numIntersectionsset to the number of intersections that occur for the list of locations.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, recordList will not represent any intersections and numIntersections will be set to 0.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
doNotAddDefaultRecordthe closest intersection, when all else fails, will add a default record at the location. Set this flag to true to not add a record and return false
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
trueany chord intersects the terrain
falseif dataAvailable was specified and returns true, then none of the chords intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::intersect ( const DtChord chord,
DtPoint intersectionPoint,
double intersectionTime,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
) const
virtual

Calculates the first terrain intersection point along a chord given in Database Coordinates.

Parameters
Input
optionsSee DtTerrainIntersectOptions
chordthe chord to test
Output
statusSee DtTerrainIntersectStatus
intersectionPointlocation of the intersection or left unchanged if there's no intersection or the data is not yet available (see dataAvailable).
intersectionTimetime of the intersection along the input chord or left unchanged if there's no intersection or the data is not yet available (see dataAvailable).
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, and intersectionPoint and intersectionTime will be left unchanged.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
trueif the chord intersects the terrain
falseif dataAvailable was specified and returns true, then the chord does not intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::intersect ( DtTerrainIntersectStatus status,
const DtChord chord,
DtPoint intersectionPoint,
double intersectionTime,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Calculates the first terrain intersection point along a chord given in Database Coordinates.

Parameters
Input
optionsSee DtTerrainIntersectOptions
chordthe chord to test
Output
statusSee DtTerrainIntersectStatus
intersectionPointlocation of the intersection or left unchanged if there's no intersection or the data is not yet available (see dataAvailable).
intersectionTimetime of the intersection along the input chord or left unchanged if there's no intersection or the data is not yet available (see dataAvailable).
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, and intersectionPoint and intersectionTime will be left unchanged.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
trueif the chord intersects the terrain
falseif dataAvailable was specified and returns true, then the chord does not intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::intersect ( const DtChord chord,
DtVrfChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
) const
virtual

Returns complete intersection information about the first terrain intersection point along a chord given in Database Coordinates. The irtFlag value specifies which data should be calculated and returned for each intersection point.

Parameters
Input
optionsSee DtTerrainIntersectOptions
chordthe chord to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
recordthe result of the terrain intersection. Not filled in if dataAvailable is false, unless the chord hit global water, in which case it will contain water surface data.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, record will not reflect any terrain intersections (except possibly global water).
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
true&ndash;if the chord intersects the terrain. The function will return true if dataAvailable is false but the chord hits global water.
false&ndash;if dataAvailable was specified and returns true, then a false return means that the chord does not intersect any terrain. If dataAvailable is false, then a false value just confirms that no terrain data was available.
virtual bool DtTerrainInterface::intersect ( DtTerrainIntersectStatus status,
const DtChord chord,
DtVrfChordIntersectionRecord record,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Returns complete intersection information about the first terrain intersection point along a chord given in Database Coordinates. The irtFlag value specifies which data should be calculated and returned for each intersection point.

Parameters
Input
optionsSee DtTerrainIntersectOptions
chordthe chord to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
recordthe result of the terrain intersection. Not filled in if dataAvailable is false, unless the chord hit global water, in which case it will contain water surface data.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, record will not reflect any terrain intersections (except possibly global water).
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
true&ndash;if the chord intersects the terrain. The function will return true if dataAvailable is false but the chord hits global water.
false&ndash;if dataAvailable was specified and returns true, then a false return means that the chord does not intersect any terrain. If dataAvailable is false, then a false value just confirms that no terrain data was available.
virtual bool DtTerrainInterface::allIntersectsAlongChord ( const DtChord chord,
DtVrfChordIntersectRecordList intList,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
) const
virtual

Computes the list of all intersections of a chord (in Database Coordinates) with the terrain database.

Parameters
Input
optionsSee DtTerrainIntersectOptions
chordthe chord to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Note
that passing an irtFlag value of INT_EXISTS will probably never return more than one intersection.
Parameters
Output
statusSee DtTerrainIntersectStatus
intListthe result of the terrain intersection
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false and intList will not reflect any terrain intersections
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
trueif the chord intersects the terrain
falseif dataAvailable was specified and returns true, then the chord does not intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::allIntersectsAlongChord ( DtTerrainIntersectStatus status,
const DtChord chord,
DtVrfChordIntersectRecordList intList,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Computes the list of all intersections of a chord (in Database Coordinates) with the terrain database.

Parameters
Input
optionsSee DtTerrainIntersectOptions
chordthe chord to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Note
that passing an irtFlag value of INT_EXISTS will probably never return more than one intersection.
Parameters
Output
statusSee DtTerrainIntersectStatus
intListthe result of the terrain intersection
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false and intList will not reflect any terrain intersections
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
trueif the chord intersects the terrain
falseif dataAvailable was specified and returns true, then the chord does not intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::allIntersectsAlongChordDebug ( const DtChord chord,
DtVrfChordIntersectRecordList intList,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
) const
virtual

Same as allIntersectsAlongChord, but prints debug info about all surfaces found. Prints to sim console at "warn" notify level. Always gets all data from intersections.

virtual bool DtTerrainInterface::allIntersectsAlongChordDebug ( DtTerrainIntersectStatus status,
const DtChord chord,
DtVrfChordIntersectRecordList intList,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Same as allIntersectsAlongChord, but prints debug info about all surfaces found. Prints to sim console at "warn" notify level. Always gets all data from intersections.

virtual bool DtTerrainInterface::intersectList ( const std::list< DtChord > &  chordList,
DtVrfChordIntersectRecordList recordList,
int numTerrainIntersections,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false,
int  flags = 0 
) const
virtual

Returns complete intersection information about the first terrain intersection points along each of a list of DtChords given in Database Coordinates. The returned record list is a DtVrfChordIntersectionRecordList (one record for each chord).

Parameters
Input
optionsSee DtTerrainIntersectOptions
chordListthe chords to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
numTerrainIntersectionsnumber of chords that intersected with the terrain
numVectorNetworkIntersectionsnumber of chords that intersected with the vector network
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, numTerrainIntersections and numVectorNetworkIntersections will be set to zero and the recordList will not reflect any intersections.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
trueif any chord intersected the terrain (or vector network if specified)
falseif dataAvailable was specified and returns true, then the chord does not intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::intersectList ( DtTerrainIntersectStatus status,
const std::list< DtChord > &  chordList,
DtVrfChordIntersectRecordList recordList,
int numTerrainIntersections,
const DtTerrainIntersectOptions options = DtTerrainIntersectOptions() 
) const
virtual

Returns complete intersection information about the first terrain intersection points along each of a list of DtChords given in Database Coordinates. The returned record list is a DtVrfChordIntersectionRecordList (one record for each chord).

Parameters
Input
optionsSee DtTerrainIntersectOptions
chordListthe chords to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
statusSee DtTerrainIntersectStatus
numTerrainIntersectionsnumber of chords that intersected with the terrain
numVectorNetworkIntersectionsnumber of chords that intersected with the vector network
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false, numTerrainIntersections and numVectorNetworkIntersections will be set to zero and the recordList will not reflect any intersections.
overrideBlockingAssertwhen set to true this parameter will prevent an assertion from being thrown when the terrain implementation has myAssertOnBlockingTerrainCalls set to true. This should only be done when the call is being made from outside the main simulation thread and a blocking call would not cause a a problem.
flagsoptional flags to pass into the intersector. The flags are implementation dependent
Returns
result of the terrain intersection or data availability
Return values
trueif any chord intersected the terrain (or vector network if specified)
falseif dataAvailable was specified and returns true, then the chord does not intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual void DtTerrainInterface::preloadTerrainAreas ( const DtTerrainPagingGeometryList preloadGeometry)
virtual

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.
This call may be a noop depending on what type of terrain is loaded.
virtual void DtTerrainInterface::forceLoadTerrainAreas ( const DtTerrainPagingGeometryList forceLoadGeometry)
virtual

Functions like preloadTerrainAreas except the geometries are saved and will be kept loaded. Use this function when you want to pin terrain areas in memory. Only the set of geometries from the last call to this function will be saved. This command is not thread safe.

virtual bool DtTerrainInterface::dataAvailable ( const DtTerrainPagingGeometryList geometry)
virtual

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

virtual const DtTerrainCapabilities* DtTerrainInterface::terrainCapabilities ( ) const
virtual
Returns
A class which describes the capabilities of the currently loaded terrain. This provides a guide on particular features of the terrain implementation that are supported or not supported, and should guide the user of the DtTerrainInterface API when interacting with this terrain. If no terrain is loaded, this will return a null pointer.
virtual bool DtTerrainInterface::addTerrainPassThroughLayer ( const DtString layerType)
virtual

Adds a pass though layer registered with the specified type to the currently loaded terrain implementation. This is typically a debugging or analysis activity.

virtual void DtTerrainInterface::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.

virtual bool DtTerrainInterface::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.

virtual void DtTerrainInterface::setWarnOnBlockingTerrainCalls ( bool  warnBlock)
virtual

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

virtual bool DtTerrainInterface::warnOnBlockingTerrainCalls ( ) const
virtual

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

virtual void DtTerrainInterface::setIntersectDataLoadExpireTime ( const double expireTime)
virtual

Set the default expiration time for data load requests generated by intersect calls that require data that has not been loaded (paged-in).

Parameters
expireTimeThe expiration time to be assigned to data load requests generated by intersect calls on the terrain implementation.
virtual void DtTerrainInterface::expireDataLoadRequestsBeforeTime ( const double currentTime)
virtual
virtual void DtTerrainInterface::trianglesInArea ( DtTriangleCallbackFcn  func,
DtTriangleCallbackFinalizeFcn  finalize,
DtTerrainProcessPolygonsBox box,
DtTerrainCategoryMask  terrainCategoryMask,
void *  usr 
) const
virtual

Calls the function in the first argument on each triangle in the area specified by the box. Once all of the triangles have been processed, it calls the finalize function to signify it has completed.

Parameters
funcFunction that will handle a single terrain triangle
finalizeFunction that will handle when this function is completed
boxThe area (in local coordinates) in which to get terrain triangles from
terrainCategoryMaskbitmask to specify the category of terrain you want to retrieve
usrThe object that owns both the first and second argument of this function
Note
This may return additional triangles that are outside the specified box.
This will force paging in of all terrain within the box, which may take a significant amount of time and may also consume large amounts of memory.
This callback may be invoked my multiple threads and must be reentrant.
virtual void DtTerrainInterface::trianglesInArea ( DtTriangleOutputInterface func,
DtTerrainProcessPolygonsBox box,
DtTerrainCategoryMask  terrainCategoryMask = DtTerrainCategory::DtTerrainCategoryAll 
) const
virtual

Calls the object in the first argument on each triangle in the area specified by the box. Once all of the triangles have been processed, it calls the finalize function to signify it has completed.

Parameters
funcUser supplied interface to triangle output.
boxThe area (in local coordinates) in which to get terrain triangles from
terrainCategoryMaskbitmask to specify the category of terrain you want to retrieve
Note
This may return additional triangles that are outside the specified box.
This callback may be invoked my multiple threads and must be reentrant.
virtual void DtTerrainInterface::trianglesForGeometry ( DtTriangleOutputInterface outputIf,
DtTerrainGeometryId  geometryId 
) const
virtual

Calls the object in the first argument for each triangle in the geometry of the specified ID. These IDs are the geometry IDs passed back from trianglesInArea() if the enableInstanceGeometry is enabled. The triangles returned here will be have an origin of 0,0,0 and will need to be placed based on the rotation and offset that are also provided by trianglesInArea().

virtual DtTerrainInformation* DtTerrainInterface::terrainInformation ( )
virtual

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)

virtual std::shared_ptr<DtAsyncJobMapEntry> DtTerrainInterface::makePathAsync ( const DtPoint localStart,
const DtPoint localDestination,
const std::string &  type,
const double maxSearchRadius,
const double startProximityThreshold,
const DtAStarGraph::DtWeightFactorsList weightFactors = DtAStarGraph::DtWeightFactorsList(),
const double offRoadPathWeight = 10.0 
)
virtual

Register asynchronous path finding task. Once token's status is "complete", result can be used. See makePath.

virtual DtAStarGraph::Path DtTerrainInterface::makePath ( const DtPoint localStart,
const DtPoint localDestination,
const std::string &  type,
const double maxSearchRadius,
const double startProximityThreshold,
boost::function< bool()>  cancelCheck,
const DtAStarGraph::DtWeightFactorsList weightFactors = DtAStarGraph::DtWeightFactorsList() 
) const
virtual

Make a path from start to destination on features configured using the provided type. See appData/settings/featureconfig.txt for types. Note that this function may take a long time to return. To calculate a path in another thread see makePathAsync. Do not call this function in the main thread.

Parameters
localStartStart point in local
localDestinationDestination point in local
typeType of features to path plan on, for example "MAK_ROAD"
maxSearchradiusA vertex more than this distance from the destination will not cause more feature data to be paged in.
cancelCheckA function that returns true when the task should be canceled.
weightFactorsList of modifications to edge weights based on DtQueries
virtual bool DtTerrainInterface::onPathFeature ( const DtPoint location,
const DtString type,
double  buffer = 0.5 
)
virtual

returns whether the given point is within "offset" distance of any edge on the path graph.

virtual DtAStarGraph::Ptr DtTerrainInterface::pathFinder ( const std::string &  ) const
virtual

Return the DtAStarGraph object for the given feature type.

virtual std::shared_ptr<DtAsyncJobMapEntry> DtTerrainInterface::addAsyncJob ( DtAsyncJob job)
virtual

Add an user defined async job type to the job queue.

Parameters
jobPointer to job object, should be initialized with operator new .
MAKVRinTerra::DtProj::CPtr DtTerrainInterface::localProj ( ) const

Returns the local DtProj object for the current terrain.

MAKVRinTerra::DtFeaturesDebugger& DtTerrainInterface::debugger ( ) const
MAKVRinTerra::DtQuery DtTerrainInterface::findQuery ( const std::string &  name) const
const double DtTerrainInterface::topoDistance ( const DtPoint start,
const DtPoint end,
const MAKVRinTerra::DtProj localProj 
)
MAKVRinTerra::DtClosestPathFeatureFinder DtTerrainInterface::closestFeatureOnNetwork ( const std::string &  type,
const DtPoint startingLocation,
const double searchRadius,
bool dataAvailable = NULL 
)

Finds the closest feature on the feature network to startingLocation. Returns false if no features are found.

Parameters
startingLocationlocation in local to which the closest feature on the feature network is found.
searchRadiusThe radius used to load in features
dataAvailableIf NULL, function will block for up to 20 seconds, and return false if the data is not loaded. Otherwise, being feature loading, but do not block. If the features are not fully loaded, it will find the closest feature using whichever features are loaded.
void DtTerrainInterface::breakUpChord ( const MAKVRinTerra::DtProj ,
const DtChord chord,
std::vector< DtChord > &  chords 
) const
void DtTerrainInterface::breakUpChord ( const DtChord chord,
std::vector< DtChord > &  chords 
) const
virtual DtTerrainGeometryHandle* DtTerrainInterface::createEntityGeometry ( const DtFilename &  file)
virtual

Create geometry in the terrain which represents the entity.

virtual DtTerrainGeometryHandle* DtTerrainInterface::createEntityGeometry ( const DtEntityType &  file)
virtual

Create geometry in the terrain which represents the given entity type. If the underlying implementation does not support create by visuals then this will return NULL.

virtual void DtTerrainInterface::loadVisuals ( const DtScenarioExplorer )
virtual

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

virtual void DtTerrainInterface::clearCache ( )
virtual

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

virtual DtDynamicTerrainRequestHandle DtTerrainInterface::addDynamicTerrainChangeRequest ( double  time,
const std::map< DtString, DtString > &  keyValueChanges,
const DtVector &  centerLocation,
double  radius 
)
virtual

Add a dynamic terrain change request defined by a spherical geometry to the system.

Parameters
timeTime at which this request takes place.
keyValueChangesKey/value pairs that define what changes should be made.
centerLocationCenter, in local coordinates, of the spherical area being changed.
radiusRadius of the spherical area being changed.
Return values
Handleobject for removing this request.
virtual DtDynamicTerrainRequestHandle DtTerrainInterface::addDynamicTerrainChangeRequest ( double  time,
const std::map< DtString, DtString > &  keyValueChanges,
const std::vector< DtVector > &  vertices,
double  width 
)
virtual

Add a dynamic terrain change request defined by a linear geometry to the system.

Parameters
timeTime at which this request takes place.
keyValueChangesKey/value pairs that define what changes should be made.
verticesVertices of the line, in local coordinates.
widthWidth of the line.
Return values
Handleobject for removing this request.
virtual DtDynamicTerrainRequestHandle DtTerrainInterface::addDynamicTerrainChangeRequest ( double  time,
const std::map< DtString, DtString > &  keyValueChanges,
const std::list< DtVector > &  vertices 
)
virtual

Add a dynamic terrain change request defined by a polygonal geometry to the system.

Parameters
timeTime at which this request takes place.
keyValueChangesKey/value pairs that define what changes should be made.
verticesVertices of the closed area, in local coordinates.
Return values
Handleobject for removing this request.
virtual DtDynamicTerrainRequestHandle DtTerrainInterface::addDynamicTerrainChangeRequest ( double  time,
makVrv::DtDynamicTerrainChange command 
)
virtual

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.
virtual void DtTerrainInterface::dynamicTerrainFeaturesInArea ( const DtVector &  centerLocation,
double  radius,
std::list< DtRwDynamicTerrainInformation > &  dynamicTerrainInfo,
bool dataAvailable = NULL,
const DtString filterKey = DtString::nullString() 
)
virtual

Gets the list of all dynamic terrain features and potential values in the given spherical geometry.

Parameters
centerLocationCenter, in local coordinates, of the spherical area being queried.
radiusRadius of the spherical area being queried.
dynamicTerrainInfoThe result of this query, a list of potential dynamic terrain changes in the designated area.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false and dynamicTerrainInfo will not reflect any terrain intersections
filterKeyIf not empty, specifies a specific key of interest. Only dynamic terrain changes with this key will be returned.
virtual void DtTerrainInterface::dynamicTerrainFeaturesInArea ( const std::list< DtVector > &  vertices,
double  width,
std::list< DtRwDynamicTerrainInformation > &  dynamicTerrainInfo,
bool dataAvailable = NULL,
const DtString filterKey = DtString::nullString() 
)
virtual

Gets the list of all dynamic terrain features and potential values in the given linear geometry.

Parameters
verticesVertices of the line, in local coordinates.
widthWidth of the line.
dynamicTerrainInfoThe result of this query, a list of potential dynamic terrain changes in the designated area.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false and dynamicTerrainInfo will not reflect any terrain intersections
filterKeyIf not empty, specifies a specific key of interest. Only dynamic terrain changes with this key will be returned.
virtual void DtTerrainInterface::dynamicTerrainFeaturesInArea ( const std::list< DtVector > &  vertices,
std::list< DtRwDynamicTerrainInformation > &  dynamicTerrainInfo,
bool dataAvailable = NULL,
const DtString filterKey = DtString::nullString() 
)
virtual

Gets the list of all dynamic terrain features and potential values in the given polygonal geometry.

Parameters
verticesVertices of the closed area, in local coordinates.
dynamicTerrainInfoThe result of this query, a list of potential dynamic terrain changes in the designated area.
dataAvailablePlease see Synchronous and Asynchronous Calls with Paged Terrains for information on how to specify that this function be blocking or non-blocking. If the data is not yet paged in, dataAvailable will be set to false and dynamicTerrainInfo will not reflect any terrain intersections
filterKeyIf not empty, specifies a specific key of interest. Only dynamic terrain changes with this key will be returned.
virtual bool DtTerrainInterface::extractDynamicTerrainFeatureInformation ( const makVrv::DtDynamicTerrainFeature feature,
DtRwDynamicTerrainInformation dynamicTerrainInfo,
const DtString filterKey = DtString::nullString() 
) const
virtual

Extracts information out of a makVrv::DtDynamicTerrainFeature and stores in DtRwDynamicTerrainInformation.

Parameters
featureThe dynamic terrain feature whose information we want to extract.
dynamicTerrainInfoThe result of this operation, extracted information about this feature.
filterKeyIf not empty, specifies a specific key of interest. Only if the dynamic terrain feature contains this key will be it processed.
Return values
Trueif the information was successfully extracted, false if the operation failed or the feature did not contain the filterKey.
virtual DtDynamicTerrainQueryHandle DtTerrainInterface::queryDynamicTerrainFeatures ( const DtDynamicTerrainQueryCallback callback,
makVrv::DtDynamicTerrainGeometry geometry = 0,
bool  useOriginalGeometry = false 
)
virtual

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.

virtual void DtTerrainInterface::queryCurrentDynamicTerrainFeatures ( const DtDynamicTerrainQueryCallback callback,
makVrv::DtDynamicTerrainGeometry geometry = 0,
bool  useOriginalGeometry = false 
)
virtual
virtual void DtTerrainInterface::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 terain 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.

virtual void DtTerrainInterface::cancelCacheTerrainArea ( int  requestId)
virtual

Call this routine to cancel a potential cache in progress.

virtual void DtTerrainInterface::writeTerrainIndex ( const DtString name = DtString())
virtual

Create terrain index.

Parameters
nameName of index to create (i.e. name tag in earth file elevation layer). If name is empty then all indices will be created. This function throws exceptions on errors.
virtual bool DtTerrainInterface::oceanLayerPresent ( ) const
virtual

Returns whether or not an ocean layer is present in this terrain.

virtual void DtTerrainInterface::setOceanLayerPresent ( bool  b)
virtual

Sets whether or not the ocean layer is present in this terrain.

virtual bool DtTerrainInterface::nonPolygonalWaterHeight ( const DtChord localLocation,
double height 
) const
virtual

Function to return the water level defined for water regions that aren't defined with surface water polygons. If this database has water defined this way, terrainCapabilities()->hasNonPolygonalWaterRegions() will return true.

Parameters
localLocationLocation of intersection.
HeightThe height of the water is returned in the height parameter.
Returns
Boolean indicating the success of the request.
Return values
TrueIf there is non-polygonal water at this location.
FalseIf there is no non-polygonal water at this location.
virtual void DtTerrainInterface::setNonPolygonalWaterHeight ( double  d)
virtual

Sets the non polygonal water height to use as referenced in nonPolygonalWaterHeight.

virtual double DtTerrainInterface::defaultWaterDepth ( const DtVector &  localLocation) const
virtual

Defines the default water depth when floor and surface levels are not defined in the database. The location argument is provided for future extension.

virtual void DtTerrainInterface::setDefaultWaterDepth ( double  )
virtual

Sets the default water depth.

virtual double DtTerrainInterface::defaultSurfaceElevation ( const DtVector &  localLocation) const
virtual

Defines the elevation of the terrain surface when there is no data. The location argument is provided for future extension. This returns seaLevel (as in nonPolygonalWaterHeight). Override this method to return a different value.

virtual DtSurface::DtMedium DtTerrainInterface::mediumForUnspecPolygonsUnderWater ( ) const
virtual

Defines what to do in terrainHeightUnderWater when a polygon with medium "unspecified" is encountered below a water surface.

If a database uses "unspecified" for all ground and water surfaces, then it is appropriate for this function to return WaterSurface. I.e. the unspecified polygons below non-poly water are redundant and ignored. (Unspecified polygons above water are still treated as ground; "above" means landAboveWaterMinimumSeparation() above the water surface.)

However, if a database uses "unspecified" for ground polygons, including the sea floor, then this function should return a Ground, signifying that the unspecified polygons below water are ground.

Returns
Ground or WaterSurface.
virtual void DtTerrainInterface::setMediumForUnspecPolygonsUnderWater ( DtSurface::DtMedium  m)
virtual

Sets the medium for mediumForUnspecPolygonsUnderWater.

virtual double DtTerrainInterface::landAboveWaterMinimumSeparation ( ) const
virtual

This function returns a constant threshold value that determines how far an unspecified-medium polygon has to be above a water surface for it to be considered above-sea-level land. If the unspecified polygon is below this threshold, it is considered "below" and will be classified according to mediumForUnspecPolygonsUnderWater().

This value could be very tiny, but on a curved-earth terrain with unspecified-medium polygons being used (redundantly) as the sea surface, e.g. alongside non-polygonal sea-level data, the polygons will be tangent to the curved earth and may stick up above sea level at their edges.

virtual void DtTerrainInterface::setLandAboveWaterMinimumSeparation ( double  )
virtual
virtual void DtTerrainInterface::setAccumulateIntersections ( bool  value)
virtual

Enable the accumulate intersection function for debug purpose.

virtual bool DtTerrainInterface::accumulateIntersections ( ) const
virtual

Check if the accumulate intersection function was enabled for debug purpose.

virtual void DtTerrainInterface::getIntersections ( std::vector< DtChord > &  accumulatedChords,
std::vector< DtPoint > &  accumulatedIntersections 
) const
virtual

Get the accumulated chords/intersections.

virtual boost::signals2::connection DtTerrainInterface::connectToUnloadTerrain ( const DtTerrainUnloadSignalType::slot_type &  slotIn)
virtual
void DtTerrainInterface::setBlockOnAsynchronousOperations ( bool  shouldBlock)

Passes to the terrain implementation to force blocked paging on all intersections.

void DtTerrainInterface::insertNonPolyWaterIntoIntersectionList ( DtVrfChordIntersectionRecord waterInterx,
DtVrfChordIntersectRecordList intrxList 
) const
protected

Insert the given intersection record into the intersection list based on intersection time order.

virtual DtVrfChordIntersectionRecord DtTerrainInterface::blankSurfaceIntersectionRecord ( const DtVector &  localLocation,
const double  height 
) const
protectedvirtual

Creates a chord intersection record corresponding to a surface with unspecified soil type (and medium). This is used in terrainHeightAndIntersection and closestIntersection. The surface intersection is set at a point on a vertical line through the localLocation, at the given altitude. The normal of the surface is set to point up. The "time" in the intersection record is set to 0.5.

virtual bool DtTerrainInterface::nonPolygonalWaterIntersect ( const DtChord chord,
DtVrfChordIntersectRecordList waterRecords,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA 
) const
protectedvirtual

If there is non-polygonal water, this function computes the intersection records for the chord with this water. The chord is in local (database) coordinates.

Returns
True if there was an intersection with non-poly water.
virtual DtGenericTerrainRecordCallbackListPtr DtTerrainInterface::findOrAddCallbackList ( DtGenericTerrainRecordCallbackListMap map,
const DtString recordType 
)
protectedvirtual

Finds recordType in the specified map. If found, returns the associated list. If not found, adds a new empty list to the map and returns that list.

virtual void DtTerrainInterface::accumulateIntersections ( const DtChord chord,
const DtVrfChordIntersectionRecord record 
) const
protectedvirtual

Function to check if we need to accumulate intersections for debug purpose.

virtual void DtTerrainInterface::accumulateIntersections ( const DtChord chord,
const DtVrfChordIntersectRecordList intList 
) const
protectedvirtual
virtual void DtTerrainInterface::accumulateIntersections ( const std::list< DtChord > &  chordList,
const DtVrfChordIntersectRecordList recordList 
) const
protectedvirtual
virtual void DtTerrainInterface::terrainPaging ( bool  )
protectedvirtual

Called when implementation is paging terrain. Will signal the terrain paging signal.

Member Data Documentation

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

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

boost::signals2::signal<void(bool)> DtTerrainInterface::signal_jobQueueStatusChanged

If the implementation is currently making a path plan (using the async job server) and the status changes, this signal is sent.

DtFilename DtTerrainInterface::myTerrainOptionsFilename
protected

Default config loaded in init Loading terrains will have a copy of this and may set their own specific values internally, and these will be active for the duration it is loaded. A new terrain would use the original values in these variables though.

DtTerrainInterfaceConfig DtTerrainInterface::myFileConfig
protected
FeatureSetList DtTerrainInterface::myFeatureLayers
protected
DtTerrainImplementation* DtTerrainInterface::myTerrainImpl
protected
bool DtTerrainInterface::myTerrainIsLoaded
protected

Status publisher needs to keep track of when terrain is loaded and unloaded.

DtTerrainImplementationManager* DtTerrainInterface::myTerrainImplManager
protected
DtConsoleCommandManager* DtTerrainInterface::myConsoleCommandManager
protected
DtString DtTerrainInterface::myLoadedFilename
protected

The last filename that was passed to loadTerrain()

DtString DtTerrainInterface::myUnresolvedFilename
protected
DtTerrainPagingGeometryList DtTerrainInterface::myForceLoadAreas
protected
double DtTerrainInterface::myLastFileTime
protected

Needed in case file is saved with same name and then reloaded.

double DtTerrainInterface::theTerrainPagingMaxHeight
staticprotected
MAKVRinTerra::DtProj::CPtr DtTerrainInterface::myProjObject
protected
DtAsyncJobServer* DtTerrainInterface::myAsyncJobServer
protected

Manages asynchronous path planning tasks.

OceanLayer DtTerrainInterface::myGlobalOceanLayer
protected
std::ofstream DtTerrainInterface::myDebugOutputFile
protected
tbb::tick_count DtTerrainInterface::myLastDebugOutputTick
protected
makArchives::DtTerrainRecord* DtTerrainInterface::myTerrainRecord
protected
DtGenericTerrainRecordCallbackListMap DtTerrainInterface::myGenericTerrainRecordCallbacklists
protected
bool DtTerrainInterface::myAccumulateIntersections
protected

check if we need to accumulate terrain intersections results for debug purpose

std::vector<DtChord> DtTerrainInterface::myAccumulatedChords
protected
std::vector<DtPoint> DtTerrainInterface::myAccumulatedIntersectionPoints
protected
DtTerrainUnloadSignalType DtTerrainInterface::myUnloadTerrainSignal
protected
bool DtTerrainInterface::myActive = false
protected
bool DtTerrainInterface::myBlockOnAsynchronousOperations
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)