33 #include <boost/scoped_ptr.hpp>
34 #include <boost/ptr_container/ptr_list.hpp>
37 class DtTerrainImplementationDescriptor;
43 class Dt3dBoundingVolume;
44 class DtTerrainIndexParameters;
50 class DtTerrainRecord;
51 class DtGenericTerrainRecord;
89 VrfSimulationBackEnd = 1,
117 virtual bool init(
bool createConsoleManager =
true);
120 virtual void setConfigFile(
const std::string&,
bool reload=
true);
129 virtual bool isSameTerrain(
const DtFilename&)
const;
134 return myTerrainImpl;
139 virtual void addTerrainImplementation(
const DtString& implementationName,
144 virtual void addFeatureLayer(boost::shared_ptr<MAKVRinTerra::DtFeatureSet>);
146 virtual void addGenericTerrainRecordCallback(
151 virtual void removeGenericTerrainRecordCallback(
156 virtual void invokeGenericTerrainRecordCallbacks(
160 virtual bool loadTerrain(
const DtString&
filename, LoadContext context = VrfSimulationBackEnd);
163 virtual bool unloadTerrain(
bool block =
true);
169 virtual bool loadModel(
const DtFilename& f,
const DtEntityType& t = DtEntityType(),
bool hasOceanLayer =
true);
173 virtual double modelHeightDifferencesFromAppearances(
int oldApp,
int newApp)
const;
176 virtual bool terrainIsLoaded();
179 virtual DtString loadedFilename()
const;
186 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
187 const std::string& type,
188 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
192 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
194 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
197 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> LOSfeatures()
const;
199 virtual std::auto_ptr<MAKVRinTerra::DtPathFeatureSet> paths(
const std::string& type)
const;
203 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> features(
204 const std::string& queryName)
const;
207 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeatures()
const;
211 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> featuresRaw(
212 const std::string& queryName)
const;
215 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeaturesRaw()
const;
236 virtual double terrainHeightAboveSeaLevel(
const DtPoint& databaseLocation,
237 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
240 const DtPoint& databaseLocation,
270 virtual bool terrainHeightAndIntersection(
const DtVector& localLocation,
273 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
284 virtual bool terrainHeightAndIntersectionBelow(
const DtVector& localLocation,
287 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
425 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
428 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0) ;
483 virtual bool closestIntersection(
const DtVector& localLocation,
484 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
485 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
489 bool doNotAddDefaultRecord =
false,
515 virtual bool closestIntersection(
double lat,
double lon,
516 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
517 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
520 double lat,
double lon,
522 bool doNotAddDefaultRecord =
false,
555 virtual bool closestIntersection(
const DtVector& localLocation,
558 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
559 bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
564 bool doNotAddDefaultRecord =
false,
597 virtual bool closestIntersection(
double lat,
double lon,
601 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
604 double lat,
double lon,
606 bool doNotAddDefaultRecord =
false,
642 virtual bool closestIntersection(
const std::list<DtVector>& localLocationList,
645 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
646 bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
649 const std::list<DtVector>& localLocationList,
651 bool doNotAddDefaultRecord =
false,
685 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
686 double& intersectionTime,
bool* dataAvailable = 0,
687 bool overrideBlockingAssert =
false,
int flags = 0)
const;
691 double& intersectionTime,
729 virtual bool intersect(
const DtChord& chord,
732 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
769 virtual bool allIntersectsAlongChord(
const DtChord& chord,
772 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
784 virtual bool allIntersectsAlongChordDebug(
const DtChord& chord,
786 bool* dataAvailable = 0,
787 bool overrideBlockingAssert =
false,
int flags = 0)
const;
829 virtual bool intersectList(
const std::list<DtChord>& chordList,
832 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
835 const std::list<DtChord>& chordList,
854 virtual void preloadTerrainAreas(
862 virtual void forceLoadTerrainAreas(
878 virtual bool addTerrainPassThroughLayer(
const DtString& layerType);
889 virtual void setAssertOnBlockingTerrainCalls(
bool assertBlock);
890 virtual bool assertOnBlockingTerrainCalls()
const;
895 virtual void setWarnOnBlockingTerrainCalls(
bool warnBlock);
896 virtual bool warnOnBlockingTerrainCalls()
const;
903 virtual void setIntersectDataLoadExpireTime(
const double& expireTime);
904 virtual void expireDataLoadRequestsBeforeTime(
const double& currentTime);
934 virtual boost::shared_ptr<DtAsyncJobMapEntry> makePathAsync(
936 const DtPoint& localDestination,
937 const std::string& type,
938 const double& maxSearchRadius,
939 const double& startProximityThreshold,
940 const DtAStarGraph::DtWeightFactorsList& weightFactors
941 = DtAStarGraph::DtWeightFactorsList());
956 virtual DtAStarGraph::Path makePath(
958 const DtPoint& localDestination,
959 const std::string& type,
960 const double& maxSearchRadius,
961 const double& startProximityThreshold,
962 boost::function<
bool ()> cancelCheck,
963 const DtAStarGraph::DtWeightFactorsList& weightFactors
964 = DtAStarGraph::DtWeightFactorsList())
const;
968 virtual bool onPathFeature(
972 virtual DtAStarGraph::Ptr pathFinder(
const std::string&)
const;
977 virtual boost::shared_ptr<DtAsyncJobMapEntry> addAsyncJob(
DtAsyncJob* job);
986 const double topoDistance(
const DtPoint& start,
const DtPoint& end,
999 const std::string& type,
const DtPoint& startingLocation,
1000 const double& searchRadius,
bool* dataAvailable = NULL);
1003 std::vector<DtChord>& chords)
const;
1005 void breakUpChord(
const DtChord& chord, std::vector<DtChord>& chords)
const;
1025 const std::map<DtString, DtString>& keyValueChanges,
1026 const DtVector& centerLocation,
double radius);
1036 const std::map<DtString, DtString>& keyValueChanges,
1037 const std::list<DtVector>& vertices,
double width);
1046 const std::map<DtString, DtString>& keyValueChanges,
1047 const std::list<DtVector>& vertices);
1070 virtual void dynamicTerrainFeaturesInArea(
1071 const DtVector& centerLocation,
double radius,
1072 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1073 const DtString& filterKey = DtString::nullString());
1087 virtual void dynamicTerrainFeaturesInArea(
1088 const std::list<DtVector>& vertices,
double width,
1089 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1090 const DtString& filterKey = DtString::nullString());
1103 virtual void dynamicTerrainFeaturesInArea(
1104 const std::list<DtVector>& vertices,
1105 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1106 const DtString& filterKey = DtString::nullString());
1124 bool useOriginalGeometry =
false);
1126 virtual void queryCurrentDynamicTerrainFeatures(
1129 bool useOriginalGeometry =
false);
1133 virtual void cacheTerrainArea(
int requestId,
1134 unsigned minLOD,
unsigned maxLOD,
const DtExtent& cacheArea,
1138 virtual void cancelCacheTerrainArea(
int requestId);
1147 virtual bool oceanLayerPresent()
const;
1150 virtual void setOceanLayerPresent(
bool b);
1163 virtual bool nonPolygonalWaterHeight(
1165 double& height)
const;
1168 virtual void setNonPolygonalWaterHeight(
double d);
1173 virtual double defaultWaterDepth(
const DtVector& localLocation)
const;
1176 virtual void setDefaultWaterDepth(
double);
1181 virtual double defaultSurfaceElevation(
const DtVector& localLocation)
const;
1214 virtual double landAboveWaterMinimumSeparation()
const;
1217 virtual void setLandAboveWaterMinimumSeparation(
double);
1222 void insertNonPolyWaterIntoIntersectionList(
1234 const DtVector& localLocation,
const double height)
const;
1240 virtual bool nonPolygonalWaterIntersect(
1245 typedef std::map<DtString, DtGenericTerrainRecordCallbackListPtr >
1301 #define DtRegisterTerrainImplementationFunctionName "DtRegisterTerrainImplementation"
1308 #define DtDeregisterTerrainImplementationFunctionName "DtDeregisterTerrainImplementation"
Represents a set of DtFeature objects or others which conform to the DtFeature concept.
Definition: featureSet.h:101
DtString myLoadedFilename
The last filename that was passed to loadTerrain()
Definition: terrainInterface.h:1273
tbb::tick_count myLastDebugOutputTick
Definition: terrainInterface.h:1291
boost::function< void(const makVrv::DtDynamicTerrainFeature &)> DtDynamicTerrainQueryCallback
Definition: terrainImplementation.h:135
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
Class DtTerrainInterfaceConfig is a readable-writable class holding terrain interface configuration o...
Definition: terrainInterfaceConfig.h:32
This is the abstract base class for all terrain implementations.
Definition: terrainImplementation.h:162
DtCallbackList< makArchives::DtGenericTerrainRecord * > DtGenericTerrainRecordCallbackList
Definition: terrainInterface.h:57
void(* DtDeregisterTerrainImplementationLibFcn)()
This function signature is used for terrain implementation shared libraries that deregister themselve...
Definition: terrainInterface.h:1312
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords.
Definition: vrfChordIntersectRecordList.h:31
An asynchronous job that can be added to and executed by a job server.
Definition: asyncJob.h:47
DtGenericTerrainRecords allow the VR-Forces terrainInterface library to instantiate and configure the...
Definition: DtGenericTerrainRecord.h:34
void(* DtGenericTerrainRecordCallbackFunction)(makArchives::DtGenericTerrainRecord *record, void *userData)
Definition: terrainInterface.h:54
std::list< std::pair< DtPagingMetaDataPtr, DtTerrainPagingGeometryPtr > > DtTerrainPagingGeometryList
Definition: terrainPagingGeometry.h:92
bool present
False unless there is ocean layer data in the .mtf file.
Definition: terrainInterface.h:100
double landAboveWaterMinimumSeparation
Definition: terrainInterface.h:104
Represents (possibly infinite) area of space.
Definition: DtDynamicTerrainGeometry.h:19
class DtScenarioExplorer:
Definition: scenarioExplorer.h:26
Allows manipulating a terrain object.
Definition: terrainImplementation.h:139
DtGenericTerrainRecordCallbackListMap myGenericTerrainRecordCallbacklists
Definition: terrainInterface.h:1296
This class manages a set of DtTerrainImplementation subclasses by maintaining a factory for creating ...
Definition: terrainImplementationManager.h:30
double defaultSeaDepth
Global, implicit sea surface elevation.
Definition: terrainInterface.h:102
boost::shared_ptr< DtGenericTerrainRecordCallbackList > DtGenericTerrainRecordCallbackListPtr
Definition: terrainInterface.h:58
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
This is a class which maintains a list of string command names and the callback functions that are to...
Definition: consoleCommandManager.h:48
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
MAKVRinTerra::DtAStarGraph DtAStarGraph
Definition: terrainInterface.h:93
DtTerrainImplementationManager * myTerrainImplManager
Definition: terrainInterface.h:1270
Definition: surface.h:179
Definition: aStarGraph.h:79
static double theTerrainPagingMaxHeight
Definition: terrainInterface.h:1281
DtTerrainIntersectOptions Passed to terrain intersect functions to modify how intersect acts...
Definition: terrainIntersectOptions.h:15
bool myTerrainIsLoaded
Status publisher needs to keep track of when terrain is loaded and unloaded.
Definition: terrainInterface.h:1268
DtConsoleCommandManager * myConsoleCommandManager
Definition: terrainInterface.h:1271
Definition: coordSystem.h:54
bool(* DtRegisterTerrainImplementationLibFcn)(DtTerrainInterface *)
This function signature is used for terrain implementation shared libraries that register themselves ...
Definition: terrainInterface.h:1305
Feature system config file.
Record of a VR-Vantage terrain Contains: Terrain coordinate system Terrain patches Feature layers Ter...
Definition: DtTerrainRecord.h:29
DtString myUnresolvedFilename
Definition: terrainInterface.h:1274
Represents some coordinate system.
Definition: proj.h:44
Represents a set of characeters a DtFeature object can have.
Definition: query.h:38
double seaLevel
Definition: terrainInterface.h:101
#define DT_DLL_terrainInterface
This file is used to determine how to build.
Definition: terrainInterfaceDefines.h:25
DtFilename myTerrainOptionsFilename
Default config loaded in init Loading terrains will have a copy of this and may set their own specifi...
Definition: terrainInterface.h:1258
This class holds parameters which define the capabilities of the current terrain. ...
Definition: terrainCapabilities.h:25
Definition: noArgumentCallbackList.h:91
boost::shared_ptr< const DtProj > CPtr
Definition: proj.h:48
DtTerrainInterface allows access to common terrain calls without having to know the terrain implement...
Definition: terrainInterface.h:84
DtTerrainImplementation * terrainImplementation() const
Returns the current terrain implementation.
Definition: terrainInterface.h:132
DtTerrainImplementationFactory::DtCreatorFcn DtTerrainImplementationCreatorFcn
Definition: terrainImplementation.h:376
Interface which abstracts the concept of a individually identifiable "thing" in the terrain...
Definition: DtDynamicTerrainFeature.h:83
LoadContext
Definition: terrainInterface.h:87
makArchives::DtTerrainRecord * myTerrainRecord
Definition: terrainInterface.h:1293
OceanLayer myGlobalOceanLayer
Definition: terrainInterface.h:1288
Definition: pathFeature.h:106
Definition: vrfChordIntersectionRecord.h:19
Definition: intersectionRecord.h:60
DtTerrainImplementation * myTerrainImpl
Definition: terrainInterface.h:1264
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtTerrainInterfaceConfig myFileConfig
Definition: terrainInterface.h:1259
MAKVRinTerra::DtProj::CPtr myProjObject
Definition: terrainInterface.h:1283
std::map< DtString, DtGenericTerrainRecordCallbackListPtr > DtGenericTerrainRecordCallbackListMap
Definition: terrainInterface.h:1246
void(* DtTriangleCallbackFcn)(DtTerrainTriangleStruct &triangle, void *usr)
Definition: terrainProcessPolygonsBox.h:109
boost::ptr_list< MAKVRinTerra::DtFeatureSet > FeatureSetList
Definition: terrainInterface.h:1261
DtAsyncJobServer myAsyncJobServer
Manages asynchronous path planning tasks.
Definition: terrainInterface.h:1286
Command which can be given to the dynamic terrain system to perform some change.
Definition: DtDynamicTerrainChange.h:42
DtSurface::DtMedium defaultSurfaceMedium
Default depth. Positive, m below surface.
Definition: terrainInterface.h:103
void(* DtCacheProgressCallbackFunction)(int requestId, int current, bool completed, double elapsedTime, void *usr)
Callback for terrain caching.
Definition: terrainImplementation.h:46
Resource handle for a query which has been added to the system.
Definition: terrainImplementation.h:104
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea.
Definition: terrainProcessPolygonsBox.h:113
Manages async job objects.
Definition: asyncJobServer.h:73
DtMedium
Definition: surface.h:185
std::ofstream myDebugOutputFile
Definition: terrainInterface.h:1290
Definition: featuresDebugger.h:33
Global ocean layer info; used in conjunction with the polygon data.
Definition: terrainInterface.h:96
Resource handle for a dynamic terrain change request which has been added to the system.
Definition: terrainImplementation.h:69
double myLastFileTime
Needed in case file is saved with same name and then reloaded.
Definition: terrainInterface.h:1279
Configuration object for processing areas.
Definition: areaFeature.h:45
DtTerrainIntersectStatus Contains information about result of terrain intersection.
Definition: terrainIntersectStatus.h:16
void(* DtTriangleCallbackFinalizeFcn)(int status, void *usr)
Definition: terrainProcessPolygonsBox.h:108
DtTerrainPagingGeometryList myForceLoadAreas
Definition: terrainInterface.h:1276
DtIntersectionType
Definition: intersectionRecord.h:41
Represents an area query which can be used to extract triangles from DtTerrainInterface.
Definition: terrainProcessPolygonsBox.h:39
FeatureSetList myFeatureLayers
Definition: terrainInterface.h:1262