![]() |
VR-Forces 4.2 Class Documentation
|
DtTerrainInterface allows access to common terrain calls without having to know the terrain implementation. More...
Classes | |
| struct | OceanLayer |
| Global ocean layer info; used in conjunction with the polygon data. 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 bool | isSameTerrain (const DtFilename &) const |
| Returns true if this terrain is the same terrain as is currently open. | |
| 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_System * | coordinateSystem () const |
| virtual Coordinate_System * | coordinateSystem () |
| 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::DtObstacleFeatureSet > | obstacles (MAKVRinTerra::DtObstacleFeatureSetAdapter::Config config) |
| Returns a DtObstacleFeatureSet configured using the provided type and parameters. | |
| virtual std::auto_ptr < MAKVRinTerra::DtPathFeatureSet > | paths (const std::string &type) const |
| virtual std::auto_ptr < MAKVRinTerra::DtFeatureSet > | allFeatures (const std::string &type=std::string(), bool readDirectly=false) 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 | allIntersectsAlongChordDebug (const DtChord &chord, DtChordIntersectRecordList &intList, bool *dataAvailable=0, bool overrideBlockingAssert=false) const |
| Same as allIntersectsAlongChord, but prints debug info about all surfaces found. | |
| 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 ¤tTime) |
| 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 boost::shared_ptr < DtAsyncJobMapEntry > | 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)) |
| 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. | |
| virtual boost::shared_ptr < DtAsyncJobMapEntry > | addAsyncJob (DtAsyncJob *job) |
| Add an user defined async job type to the job queue. | |
| MAKVRinTerra::DtProj::CPtr | localProj () const |
| Returns the local DtProj object for the current terrain. | |
| MAKVRinTerra::DtFeaturesDebugger & | debugger () 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 bool | terrainHeightUnderWater (const DtVector &databaseLocation, double &groundHeight, DtSurface &groundSurface, DtVector &groundNormal, double &waterHeight, DtSurface::DtMedium &topSurfaceMedium, bool *dataAvailable=0, bool overrideBlockingAssert=false) |
| This function gets the ground and water (if it exists) surfaces at the given location. | |
| virtual bool | terrainHeightUnderWaterDebug (const DtVector &databaseLocation, double &groundHeight, DtSurface &groundSurface, DtVector &groundNormal, double &waterHeight, DtSurface::DtMedium &topSurfaceMedium, bool debug, bool *dataAvailable=0, bool overrideBlockingAssert=false) |
| Performs the computations for terrainHeightUnderWater. | |
| 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 bool | nonPolygonalWaterHeight (const DtVector &localLocation, double &height) const |
| Function to return the water level defined for water regions that aren't defined with surface water polygons. | |
| virtual double | defaultWaterDepth (const DtVector &localLocation) const |
| Defines the default water depth when floor and surface levels are not defined in the database. | |
| virtual double | defaultSurfaceElevation (const DtVector &localLocation) const |
| Defines the elevation of the terrain surface when there is no data. | |
| virtual DtSurface::DtMedium | mediumForUnspecPolygonsUnderWater () const |
| Defines what to do in terrainHeightUnderWater when a polygon with medium "unspecified" is encountered below a water surface. | |
| virtual double | landAboveWaterMinimumSeparation () const |
| 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. | |
| void | insertNonPolyWaterIntoIntersectionList (DtChordIntersectionRecord &waterInterx, DtChordIntersectRecordList &intrxList) const |
| Insert the given intersection record into the intersection list based on intersection time order. | |
| virtual DtChordIntersectionRecord | blankSurfaceIntersectionRecord (const DtVector &localLocation, const double height) const |
| Creates a chord intersection record corresponding to a surface with unspecified soil type (and medium). | |
| virtual bool | nonPolygonalWaterIntersect (const DtChord &chord, DtChordIntersectionRecord &waterInterxRecord) const |
| If there is non-polygonal water, this function computes an intersection record for the chord with this water. | |
| 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 | |
| DtTerrainImplementation * | myTerrainImpl |
| bool | myTerrainIsLoaded |
| Status publisher needs to keep track of when terrain is loaded and unloaded. | |
| DtTerrainImplementationManager * | myTerrainImplManager |
| DtConsoleCommandManager * | myConsoleCommandManager |
| std::list< DtConsoleCommand * > | myCommandList |
| DtString | myLoadedFilename |
| The last filename that was passed to loadTerrain() | |
| DtString | myUnresolvedFilename |
| double | myLastFileTime |
| Needed in case file is saved with same name and then reloaded. | |
| 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 |
| OceanLayer | myGlobalOceanLayer |
Static Protected Attributes | |
| static DtString | theModelDefinitionFilePath |
| static double | theTerrainPagingMaxHeight |
DtTerrainInterface allows access to common terrain calls without having to know the terrain implementation.
Additional terrain implementations can be added as well.
| typedef std::map<std::string, std::string> DtTerrainInterface::TerrainSettings |
| DtTerrainInterface::DtTerrainInterface | ( | ) |
Constructor.
|
virtual |
Destructor.
|
virtual |
Virtual initialization.
Call this after construction, and before calling any other members on the class. Creates the terrain implementation manager
|
virtual |
Cleans up finished async server jobs, and checks for path finder removal.
|
virtual |
Returns true if this terrain is the same terrain as is currently open.
|
virtual |
Add a terrain implementation type to the set of terrain implementations that can be used by this interface.
|
virtual |
Settings will be merged into existing – not replace.
|
virtual |
Settings will be merged into existing – not replace.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Returns a DtObstacleFeatureSet configured using the provided type.
See appData/settings/featureconfig.txt for types.
|
virtual |
Returns a DtObstacleFeatureSet configured using the provided type and parameters.
See appData/settings/featureconfig.txt for types.
|
virtual |
|
virtual |
|
virtual |
Returns the height above sea level for the topmost terrain intersection at databaseLocation.
| Input | |
| databaseLocation | the location to test |
| Output | |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
|
virtual |
Returns whether there is a terrain intersection and if so sets height and record from the topmost terrain intersection point.
| Input | |
| localLocation | the location to test |
| irtFlag | specifies which data should be calculated and returned for each intersection point |
| Output | |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
| true | a terrain intersection was found |
| false | if 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 |
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.
If there is water defined in the terrain that is not part of the polygonal terrain, Cases:
| Output | |
| groundHeight | The height of the ground at the location, either under a water surface or as the top surface. |
| groundSurface | The surface (structure) of the ground. |
| waterHeight | The height of the water surface at the location. NOT VALID IF TOP SURFACE IS GROUND. |
| topSurfaceMedium | The 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 changed; it's value is not meaningful. 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. |
| dataAvailable | Please see "Synchronous and asynchronous calls with paged terrains" in the class documentation for DtTerrainInterface 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. |
| overrideBlockingAssert | when 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. |
| true | All 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. |
| false | If some source data for the location was not yet available, i.e. not paged in. |
|
virtual |
Performs the computations for terrainHeightUnderWater.
If debug is true, dumps information about the surfaces it finds to the Warn simulation console.
|
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.
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.
| Input | |
| localLocation | the location to test |
| Output | |
| intersectionPoint | the point of intersection, left unchanged if dataAvailable is set to false. |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
| true | a terrain intersection was found |
| false | if 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 |
Same as above function, but accepts location in lat/lon.
| Input | |
| lat | the latitude to test |
| lon | the longitude to test |
| Output | |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
| true | a terrain intersection was found |
| false | if 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 |
Same as above function, but returns the entire intersection record, and not just the intersection point.
| Input | |
| localLocation | the location to test |
| irtFlag | specifies which data should be calculated and returned for each intersection point |
| Output | |
| record | the result of the terrain intersection |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
| true | a terrain intersection was found |
| false | if 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 |
Same as above function, but accepts location in lat/lon.
| Input | |
| lat | the latitude to test |
| lon | the longitude to test |
| irtFlag | specifies which data should be calculated and returned for each intersection point |
| Output | |
| record | the result of the terrain intersection |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
| true | a terrain intersection was found |
| false | if 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 |
Returns complete intersection information about the closest terrain intersection point for each location in the list in Database Coordinates.
| Input | |
| localLocationList | list of locations to test |
| irtFlag | specifies which data should be calculated and returned for each intersection point |
| Output | |
| recordList | a DtChordIntersectionRecordList (one record for each localLocation). |
| numIntersections | set to the number of intersections that occur for the list of locations. |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
| true | any chord intersects the terrain |
| false | if 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 |
Calculates the first terrain intersection point along a chord given in Database Coordinates.
| Input | |
| chord | the chord to test |
| Output | |
| intersectionPoint | location of the intersection or left unchanged if there's no intersection or the data is not yet available (see dataAvailable). |
| intersectionTime | time of the intersection along the input chord or left unchanged if there's no intersection or the data is not yet available (see dataAvailable). |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
| true | if the chord intersects the terrain |
| false | if 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 |
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.
| Input | |
| chord | the chord to test |
| irtFlag | specifies which data should be calculated and returned for each intersection point |
| Output | |
| record | the result of the terrain intersection |
| dataAvailable | Please 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 |
| overrideBlockingAssert | when 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. |
| true | if the chord intersects the terrain |
| false | if 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 |
Sphere intersection test.
| Input | |
| sphere | the sphere to test |
| irtFlag | specifies which data should be calculated and returned for each intersection point |
| Output | |
| record | the result of the terrain intersection |
| dataAvailable | Please 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 |
| overrideBlockingAssert | when 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. |
| true | if the sphere intersects with any terrain polygons |
| false | if 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 |
Computes the list of all intersections of a chord (in Database Coordinates) with the terrain database.
| Input | |
| chord | the chord to test |
| irtFlag | specifies which data should be calculated and returned for each intersection point |
| Output | |
| intList | the result of the terrain intersection |
| dataAvailable | Please 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 |
| overrideBlockingAssert | when 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. |
| true | if the chord intersects the terrain |
| false | if 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 |
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 |
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).
| Input | |
| chordList | the chords to test |
| irtFlag | specifies which data should be calculated and returned for each intersection point |
| Output | |
| numTerrainIntersections | number of chords that intersected with the terrain |
| numVectorNetworkIntersections | number of chords that intersected with the vector network |
| dataAvailable | Please 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. |
| overrideBlockingAssert | when 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. |
| true | if any chord intersected the terrain (or vector network if specified) |
| false | if 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 |
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.
| preloadGeometry | A list of the geometric areas that should be preloaded. They can be specified using any of the subclasses of DtTerrainPagingGeometry. |
|
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 |
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 |
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 |
Set the default expiration time for data load requests generated by intersect calls that require data that has not been loaded (paged-in).
| expireTime | The expiration time to be assigned to data load requests generated by intersect calls on the terrain implementation. |
|
virtual |
|
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 |
|
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 |
|
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.
| func | Function that will handle a single terrain triangle |
| finalize | Function that will handle when this function is completed |
| box | The area (in local coordinates) in which to get terrain triangles from |
| usr | The object that owns both the first and second argument of this function |
|
static |
|
static |
|
virtual |
Register asynchronous path finding task.
Once token's status is "complete", result can be used. See makePath.
|
virtual |
returns whether the given point is within "offset" distance of any edge on the path graph.
|
virtual |
Add an user defined async job type to the job queue.
| job | Pointer to job object, should be initialized with operator new (tbb::task::allocate_root()). |
| 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.
| startingLocation | location in local to which the closest feature on the feature network is found. |
| searchRadius | The radius used to load in features |
| dataAvailable | If 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 |
|
protectedvirtual |
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.
| Height | The height of the water is returned in the height parameter. |
| True | If there is non-polygonal water at this location. |
| False | If there is no non-polygonal water at this location. |
|
protectedvirtual |
Defines the default water depth when floor and surface levels are not defined in the database.
The location argument is provided for future extension.
|
protectedvirtual |
Defines the elevation of the terrain surface when there is no data.
The location argument is provided for future extension.
|
protectedvirtual |
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.
|
protectedvirtual |
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.
|
protected |
Insert the given intersection record into the intersection list based on intersection time order.
|
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.
|
protectedvirtual |
If there is non-polygonal water, this function computes an intersection record for the chord with this water.
The chord is in local (database) coordinates.
|
protectedvirtual |
Make a path from start to destination on features configured using the provided type.
See appData/settings/featureconfig.txt for types.
| localStart | Start point in local |
| localDestination | Destination point in local |
| type | Type of features to path plan on, for example "MAK_ROAD" |
| maxSearchradius | A vertex more than this distance from the destination will not cause more feature data to be paged in. |
| cancelCheck | A function that returns true when the task should be canceled. |
| result | The return status of the make path call. |
| weightFactors | List of modifications to edge weights based on DtQueries |
|
protectedvirtual |
|
protected |
|
protected |
Status publisher needs to keep track of when terrain is loaded and unloaded.
|
protected |
|
protected |
|
protected |
|
protected |
The last filename that was passed to loadTerrain()
|
protected |
|
protected |
Needed in case file is saved with same name and then reloaded.
|
protected |
|
staticprotected |
|
staticprotected |
|
protected |
|
protected |
|
protected |
Manages asynchronous path planning tasks.
|
protected |
|
protected |
|
protected |