VR-Forces 4.1 Class Documentation
List of all members | Public Types | Public Member Functions | Static Public Member Functions | 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. More...

Public Types

typedef std::map< std::string,
std::string > 
TerrainSettings
typedef MAKVRinTerra::DtPathFinder DtPathFinder

Public Member Functions

 DtTerrainInterface ()
 Constructor.
virtual ~DtTerrainInterface ()
 Destructor.
virtual bool init ()
 Virtual initialization.
virtual void tick ()
 Cleans up finished async server jobs, and checks for path finder removal.
virtual void addTerrainImplementation (const DtString &implementationName, DtTerrainImplementationCreatorFcn creatorFcn)
 Add a terrain implementation type to the set of terrain implementations that can be used by this interface.
virtual bool loadTerrain (const DtString &filename, const TerrainSettings &settings=TerrainSettings())
 Settings will be merged into existing – not replace.
virtual bool loadTerrain (const DtString &filename, MAKVRinTerra::DtFeatureLoader &featureLoader, const TerrainSettings &settings=TerrainSettings())
 Settings will be merged into existing – not replace.
virtual bool unloadTerrain ()
virtual bool terrainIsLoaded ()
virtual DtString loadedFilename () const
virtual const Coordinate_SystemcoordinateSystem () const
virtual Coordinate_SystemcoordinateSystem ()
virtual std::auto_ptr
< MAKVRinTerra::DtObstacleFeatureSet
obstacles (const std::string &type) const
 Returns a DtObstacleFeatureSet configured using the provided type.
virtual std::auto_ptr
< MAKVRinTerra::DtPathFeatureSet
paths (const std::string &type) const
virtual std::auto_ptr
< MAKVRinTerra::DtFeatureSet
allFeatures () const
virtual double terrainHeightAboveSeaLevel (const DtPoint &databaseLocation, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Returns the height above sea level for the topmost terrain intersection at databaseLocation.
virtual bool terrainHeightAndIntersection (const DtVector &localLocation, double &height, DtChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Returns whether there is a terrain intersection and if so sets height and record from the topmost terrain intersection point.
virtual bool closestIntersection (const DtVector &localLocation, DtPoint &intersectionPoint, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Similar to the terrainHeight functions above.
virtual bool closestIntersection (double lat, double lon, DtPoint &intersectionPoint, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Same as above function, but accepts location in lat/lon.
virtual bool closestIntersection (const DtVector &localLocation, DtChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Same as above function, but returns the entire intersection record, and not just the intersection point.
virtual bool closestIntersection (double lat, double lon, DtChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Same as above function, but accepts location in lat/lon.
virtual bool closestIntersection (const std::list< DtVector > &localLocationList, DtChordIntersectRecordList &recordList, int &numIntersections, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Returns complete intersection information about the closest terrain intersection point for each location in the list in Database Coordinates.
virtual bool intersect (const DtChord &chord, DtPoint &intersectionPoint, double &intersectionTime, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Calculates the first terrain intersection point along a chord given in Database Coordinates.
virtual bool intersect (const DtChord &chord, DtChordIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Returns complete intersection information about the first terrain intersection point along a chord given in Database Coordinates.
virtual bool intersect (const DtSphere &sphere, DtSphereIntersectionRecord &record, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Sphere intersection test.
virtual bool allIntersectsAlongChord (const DtChord &chord, DtChordIntersectRecordList &intList, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Computes the list of all intersections of a chord (in Database Coordinates) with the terrain database.
virtual bool intersectList (const std::list< DtChord > &chordList, DtChordIntersectRecordList &recordList, int &numTerrainIntersections, DtIntersectionRecord::DtIntersectionType irtFlag=DtIntersectionRecord::INT_ALL_DATA, bool *dataAvailable=0, bool overrideBlockingAssert=false) const
 Returns complete intersection information about the first terrain intersection points along each of a list of DtChords given in Database Coordinates.
virtual void preloadTerrainAreas (const DtTerrainPagingGeometryList &preloadGeometry)
 Specifies a list of terrain areas that should be preloaded by the terrain implementation, in the case of a paging or streaming terrain source.
virtual const
DtTerrainCapabilities
terrainCapabilities () const
virtual bool addTerrainPassThroughLayer (const DtString &layerType)
 Adds a pass though layer registered with the specified type to the currently loaded terrain implementation.
virtual void setIntersectDataLoadExpireTime (const double &expireTime)
 Set the default expiration time for data load requests generated by intersect calls that require data that has not been loaded (paged-in).
virtual void expireDataLoadRequestsBeforeTime (const double &currentTime)
virtual void setDataPath (const std::string &)
 Sets the path to find for the data directory.
virtual std::string dataPath () const
virtual void setUserDataPath (const std::string &)
 Sets the path to find for the data directory.
virtual std::string userDataPath () const
virtual void trianglesInArea (DtTriangleCallbackFcn func, DtTriangleCallbackFinalizeFcn finalize, DtTerrainProcessPolygonsBox &box, void *usr) const
 Calls the function in the first argument on each triangle in the area specified by the box.
virtual DtAsyncJobTokenmakePathAsync (const DtPoint &localStart, const DtPoint &localDestination, const std::string &type, const double &maxSearchRadius, const double &startProximityThreshold, DtPathFinder::DtWeightFactorsListPtr weightFactors=DtPathFinder::DtWeightFactorsListPtr(new DtPathFinder::DtWeightFactorsList))
 Register asynchronous path finding task.
virtual bool onPathFeature (const DtPoint &location, const DtString &type, double buffer=0.5)
 returns whether the given point is within "offset" distance of any edge on the path graph.
MAKVRinTerra::DtProj::CPtr localProj () const
 Returns the local DtProj object for the current terrain.
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)
 Finds the closest feature on the feature network to startingLocation.
void breakUpChord (const MAKVRinTerra::DtProj &, const DtChord &chord, std::vector< DtChord > &chords) const
void breakUpChord (const DtChord &chord, std::vector< DtChord > &chords) const
virtual boost::shared_ptr
< DtTerrainInterfaceConfig
config () const
virtual void setAssertOnBlockingTerrainCalls (bool assertBlock)
 Determines if an exception should be thrown if a blocking terrain call is made.
virtual bool assertOnBlockingTerrainCalls () const
 Determines if an exception should be thrown if a blocking terrain call is made.

Static Public Member Functions

static void setModelDefinitionFilePath (const DtString &fullFilePath)
static DtString modelDefinitionFilePath ()

Protected Member Functions

virtual DtPathFinder::Path makePath (const DtPoint &localStart, const DtPoint &localDestination, const std::string &type, const double &maxSearchRadius, const double &startProximityThreshold, boost::function< bool()> cancelCheck, DtPathFinder::ReturnCode &result, DtPathFinder::DtWeightFactorsListPtr weightFactors=DtPathFinder::DtWeightFactorsListPtr(new DtPathFinder::DtWeightFactorsList)) const
 Make a path from start to destination on features configured using the provided type.
virtual void loadConfigurationFile (const DtFilename &filename)

Protected Attributes

DtTerrainImplementationmyTerrainImpl
bool myTerrainIsLoaded
 Status publisher needs to keep track of when terrain is loaded and unloaded.
DtTerrainImplementationManagermyTerrainImplManager
DtConsoleCommandManagermyConsoleCommandManager
std::list< DtConsoleCommand * > myCommandList
DtString myLoadedFilename
 The last filename that was passed to loadTerrain()
TerrainSettings mySettings
boost::scoped_ptr
< MAKVRinTerra::DtFeatureContext
myFeatureContext
MAKVRinTerra::DtProj::CPtr myProjObject
DtAsyncJobServer myAsyncJobServer
 Manages asynchronous path planning tasks.
boost::shared_ptr
< DtTerrainInterfaceConfig
myConfig
DtFilename myConfigFilename

Static Protected Attributes

static DtString theModelDefinitionFilePath
static double theTerrainPagingMaxHeight

Detailed Description

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 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.

Member Typedef Documentation

typedef std::map<std::string, std::string> DtTerrainInterface::TerrainSettings

Constructor & Destructor Documentation

DtTerrainInterface::DtTerrainInterface ( )

Constructor.

virtual DtTerrainInterface::~DtTerrainInterface ( )
virtual

Destructor.

Member Function Documentation

virtual bool DtTerrainInterface::init ( )
virtual

Virtual initialization.

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

virtual void DtTerrainInterface::tick ( )
virtual

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

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 bool DtTerrainInterface::loadTerrain ( const DtString filename,
const TerrainSettings settings = TerrainSettings() 
)
virtual

Settings will be merged into existing – not replace.

virtual bool DtTerrainInterface::loadTerrain ( const DtString filename,
MAKVRinTerra::DtFeatureLoader featureLoader,
const TerrainSettings settings = TerrainSettings() 
)
virtual

Settings will be merged into existing – not replace.

virtual bool DtTerrainInterface::unloadTerrain ( )
virtual
virtual bool DtTerrainInterface::terrainIsLoaded ( )
virtual
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::auto_ptr<MAKVRinTerra::DtObstacleFeatureSet> DtTerrainInterface::obstacles ( const std::string &  type) const
virtual

Returns a DtObstacleFeatureSet configured using the provided type.

See appData/settings/featureconfig.txt for types.

virtual std::auto_ptr<MAKVRinTerra::DtPathFeatureSet> DtTerrainInterface::paths ( const std::string &  type) const
virtual
virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> DtTerrainInterface::allFeatures ( ) const
virtual
virtual double DtTerrainInterface::terrainHeightAboveSeaLevel ( const DtPoint databaseLocation,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) const
virtual

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

Parameters
Input
databaseLocationthe location 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 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.
Returns
terrainHeight (or zero if the terrain is not yet available)
virtual bool DtTerrainInterface::terrainHeightAndIntersection ( const DtVector localLocation,
double &  height,
DtChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) const
virtual

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

Parameters
Input
localLocationthe location to test
irtFlagspecifies which data should be calculated and returned for each intersection point
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, 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.
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,
DtPoint intersectionPoint,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) 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
localLocationthe location to test
Output
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.
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 
) const
virtual

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

Parameters
Input
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,
DtChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) const
virtual

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

Parameters
Input
localLocationthe location to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
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.
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,
DtChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) const
virtual

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

Parameters
Input
latthe latitude to test
lonthe longitude to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
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.
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,
DtChordIntersectRecordList recordList,
int &  numIntersections,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) const
virtual

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

Parameters
Input
localLocationListlist of locations to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
recordLista DtChordIntersectionRecordList (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.
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 
) const
virtual

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

Parameters
Input
chordthe chord to test
Output
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.
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,
DtChordIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) 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
chordthe chord to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
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 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.
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 DtSphere sphere,
DtSphereIntersectionRecord record,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) const
virtual

Sphere intersection test.

Parameters
Input
spherethe sphere to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
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 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.
Returns
result of the terrain intersection or data availability
Return values
trueif the sphere intersects with any terrain polygons
falseif dataAvailable was specified and returns true, then the sphere does not intersect the terrain. Otherwise false indicates that the data is not yet available.
virtual bool DtTerrainInterface::allIntersectsAlongChord ( const DtChord chord,
DtChordIntersectRecordList intList,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) const
virtual

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

Parameters
Input
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
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.
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::intersectList ( const std::list< DtChord > &  chordList,
DtChordIntersectRecordList recordList,
int &  numTerrainIntersections,
DtIntersectionRecord::DtIntersectionType  irtFlag = DtIntersectionRecord::INT_ALL_DATA,
bool dataAvailable = 0,
bool  overrideBlockingAssert = false 
) 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 DtChordIntersectionRecordList (one record for each chord).

Parameters
Input
chordListthe chords to test
irtFlagspecifies which data should be calculated and returned for each intersection point
Output
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.
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 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::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::setDataPath ( const std::string &  )
virtual

Sets the path to find for the data directory.

For terrains being loaded, will substitute DataDirectory for the dataPath (default to ../data) and UserDataDirectory to the user data path (default to ../userData)

virtual std::string DtTerrainInterface::dataPath ( ) const
virtual
virtual void DtTerrainInterface::setUserDataPath ( const std::string &  )
virtual

Sets the path to find for the data directory.

For terrains being loaded, will substitute DataDirectory for the dataPath (default to ../data) and UserDataDirectory to the user data path (default to ../userData)

virtual std::string DtTerrainInterface::userDataPath ( ) const
virtual
virtual void DtTerrainInterface::trianglesInArea ( DtTriangleCallbackFcn  func,
DtTriangleCallbackFinalizeFcn  finalize,
DtTerrainProcessPolygonsBox box,
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
usrThe object that owns both the first and second argument of this function
static void DtTerrainInterface::setModelDefinitionFilePath ( const DtString fullFilePath)
static
static DtString DtTerrainInterface::modelDefinitionFilePath ( )
static
virtual DtAsyncJobToken* DtTerrainInterface::makePathAsync ( const DtPoint localStart,
const DtPoint localDestination,
const std::string &  type,
const double &  maxSearchRadius,
const double &  startProximityThreshold,
DtPathFinder::DtWeightFactorsListPtr  weightFactors = DtPathFinder::DtWeightFactorsListPtr(new DtPathFinder::DtWeightFactorsList) 
)
virtual

Register asynchronous path finding task.

Once token's status is "complete", result can be used. See makePath.

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.

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 boost::shared_ptr<DtTerrainInterfaceConfig> DtTerrainInterface::config ( ) const
virtual
virtual DtPathFinder::Path DtTerrainInterface::makePath ( const DtPoint localStart,
const DtPoint localDestination,
const std::string &  type,
const double &  maxSearchRadius,
const double &  startProximityThreshold,
boost::function< bool()>  cancelCheck,
DtPathFinder::ReturnCode result,
DtPathFinder::DtWeightFactorsListPtr  weightFactors = DtPathFinder::DtWeightFactorsListPtr(new DtPathFinder::DtWeightFactorsList) 
) const
protectedvirtual

Make a path from start to destination on features configured using the provided type.

See appData/settings/featureconfig.txt for types.

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.
resultThe return status of the make path call.
weightFactorsList of modifications to edge weights based on DtQueries
virtual void DtTerrainInterface::loadConfigurationFile ( const DtFilename &  filename)
protectedvirtual

Member Data Documentation

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
std::list<DtConsoleCommand*> DtTerrainInterface::myCommandList
protected
DtString DtTerrainInterface::myLoadedFilename
protected

The last filename that was passed to loadTerrain()

TerrainSettings DtTerrainInterface::mySettings
protected
DtString DtTerrainInterface::theModelDefinitionFilePath
staticprotected
double DtTerrainInterface::theTerrainPagingMaxHeight
staticprotected
boost::scoped_ptr<MAKVRinTerra::DtFeatureContext> DtTerrainInterface::myFeatureContext
protected
MAKVRinTerra::DtProj::CPtr DtTerrainInterface::myProjObject
protected
DtAsyncJobServer DtTerrainInterface::myAsyncJobServer
protected

Manages asynchronous path planning tasks.

boost::shared_ptr<DtTerrainInterfaceConfig> DtTerrainInterface::myConfig
protected
DtFilename DtTerrainInterface::myConfigFilename
protected

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

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)