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;
93 VrfSimulationBackEnd = 1,
121 virtual bool init(
bool createConsoleManager =
true);
124 virtual void setConfigFile(
const std::string&,
bool reload=
true);
133 virtual bool isSameTerrain(
const DtFilename&)
const;
138 return myTerrainImpl;
143 virtual void addTerrainImplementation(
const DtString& implementationName,
148 virtual void addFeatureLayer(boost::shared_ptr<MAKVRinTerra::DtFeatureSet>);
150 virtual void addGenericTerrainRecordCallback(
155 virtual void removeGenericTerrainRecordCallback(
160 virtual void invokeGenericTerrainRecordCallbacks(
172 virtual bool loadTerrain(
const DtString&
filename, LoadContext context = VrfSimulationBackEnd);
175 virtual bool unloadTerrain(
bool block =
true);
181 virtual bool loadModel(
const DtFilename& f,
const DtEntityType& t = DtEntityType(),
bool hasOceanLayer =
true);
185 virtual double modelHeightDifferencesFromAppearances(
int oldApp,
int newApp)
const;
188 virtual bool terrainIsLoaded();
191 virtual DtString loadedFilename()
const;
198 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
199 const std::string& type,
200 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
204 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
206 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
209 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> LOSfeatures()
const;
211 virtual std::auto_ptr<MAKVRinTerra::DtPathFeatureSet> paths(
const std::string& type)
const;
215 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> features(
216 const std::string& queryName)
const;
219 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeatures()
const;
223 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> featuresRaw(
224 const std::string& queryName)
const;
227 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeaturesRaw()
const;
248 virtual double terrainHeightAboveSeaLevel(
const DtPoint& databaseLocation,
249 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
252 const DtPoint& databaseLocation,
282 virtual bool terrainHeightAndIntersection(
const DtVector& localLocation,
285 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
296 virtual bool terrainHeightAndIntersectionBelow(
const DtVector& localLocation,
299 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
437 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
440 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0) ;
495 virtual bool closestIntersection(
const DtVector& localLocation,
496 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
497 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
501 bool doNotAddDefaultRecord =
false,
527 virtual bool closestIntersection(
double lat,
double lon,
528 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
529 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
532 double lat,
double lon,
534 bool doNotAddDefaultRecord =
false,
567 virtual bool closestIntersection(
const DtVector& localLocation,
570 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
571 bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
576 bool doNotAddDefaultRecord =
false,
609 virtual bool closestIntersection(
double lat,
double lon,
613 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
616 double lat,
double lon,
618 bool doNotAddDefaultRecord =
false,
654 virtual bool closestIntersection(
const std::list<DtVector>& localLocationList,
657 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
658 bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
661 const std::list<DtVector>& localLocationList,
663 bool doNotAddDefaultRecord =
false,
697 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
698 double& intersectionTime,
bool* dataAvailable = 0,
699 bool overrideBlockingAssert =
false,
int flags = 0)
const;
703 double& intersectionTime,
741 virtual bool intersect(
const DtChord& chord,
744 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
781 virtual bool allIntersectsAlongChord(
const DtChord& chord,
784 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
796 virtual bool allIntersectsAlongChordDebug(
const DtChord& chord,
798 bool* dataAvailable = 0,
799 bool overrideBlockingAssert =
false,
int flags = 0)
const;
841 virtual bool intersectList(
const std::list<DtChord>& chordList,
844 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
847 const std::list<DtChord>& chordList,
866 virtual void preloadTerrainAreas(
874 virtual void forceLoadTerrainAreas(
890 virtual bool addTerrainPassThroughLayer(
const DtString& layerType);
901 virtual void setAssertOnBlockingTerrainCalls(
bool assertBlock);
902 virtual bool assertOnBlockingTerrainCalls()
const;
907 virtual void setWarnOnBlockingTerrainCalls(
bool warnBlock);
908 virtual bool warnOnBlockingTerrainCalls()
const;
915 virtual void setIntersectDataLoadExpireTime(
const double& expireTime);
916 virtual void expireDataLoadRequestsBeforeTime(
const double& currentTime);
946 virtual boost::shared_ptr<DtAsyncJobMapEntry> makePathAsync(
948 const DtPoint& localDestination,
949 const std::string& type,
950 const double& maxSearchRadius,
951 const double& startProximityThreshold,
952 const DtAStarGraph::DtWeightFactorsList& weightFactors
953 = DtAStarGraph::DtWeightFactorsList());
968 virtual DtAStarGraph::Path makePath(
970 const DtPoint& localDestination,
971 const std::string& type,
972 const double& maxSearchRadius,
973 const double& startProximityThreshold,
974 boost::function<
bool ()> cancelCheck,
975 const DtAStarGraph::DtWeightFactorsList& weightFactors
976 = DtAStarGraph::DtWeightFactorsList())
const;
980 virtual bool onPathFeature(
984 virtual DtAStarGraph::Ptr pathFinder(
const std::string&)
const;
989 virtual boost::shared_ptr<DtAsyncJobMapEntry> addAsyncJob(
DtAsyncJob* job);
998 const double topoDistance(
const DtPoint& start,
const DtPoint& end,
1011 const std::string& type,
const DtPoint& startingLocation,
1012 const double& searchRadius,
bool* dataAvailable = NULL);
1015 std::vector<DtChord>& chords)
const;
1017 void breakUpChord(
const DtChord& chord, std::vector<DtChord>& chords)
const;
1030 virtual void clearCache();
1040 const std::map<DtString, DtString>& keyValueChanges,
1041 const DtVector& centerLocation,
double radius);
1051 const std::map<DtString, DtString>& keyValueChanges,
1052 const std::list<DtVector>& vertices,
double width);
1061 const std::map<DtString, DtString>& keyValueChanges,
1062 const std::list<DtVector>& vertices);
1085 virtual void dynamicTerrainFeaturesInArea(
1086 const DtVector& centerLocation,
double radius,
1087 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1088 const DtString& filterKey = DtString::nullString());
1102 virtual void dynamicTerrainFeaturesInArea(
1103 const std::list<DtVector>& vertices,
double width,
1104 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1105 const DtString& filterKey = DtString::nullString());
1118 virtual void dynamicTerrainFeaturesInArea(
1119 const std::list<DtVector>& vertices,
1120 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1121 const DtString& filterKey = DtString::nullString());
1139 bool useOriginalGeometry =
false);
1141 virtual void queryCurrentDynamicTerrainFeatures(
1144 bool useOriginalGeometry =
false);
1148 virtual void cacheTerrainArea(
int requestId,
1149 unsigned minLOD,
unsigned maxLOD,
const DtExtent& cacheArea,
1153 virtual void cancelCacheTerrainArea(
int requestId);
1162 virtual bool oceanLayerPresent()
const;
1165 virtual void setOceanLayerPresent(
bool b);
1178 virtual bool nonPolygonalWaterHeight(
1180 double& height)
const;
1183 virtual void setNonPolygonalWaterHeight(
double d);
1188 virtual double defaultWaterDepth(
const DtVector& localLocation)
const;
1191 virtual void setDefaultWaterDepth(
double);
1196 virtual double defaultSurfaceElevation(
const DtVector& localLocation)
const;
1229 virtual double landAboveWaterMinimumSeparation()
const;
1232 virtual void setLandAboveWaterMinimumSeparation(
double);
1237 void insertNonPolyWaterIntoIntersectionList(
1249 const DtVector& localLocation,
const double height)
const;
1255 virtual bool nonPolygonalWaterIntersect(
1260 typedef std::map<DtString, DtGenericTerrainRecordCallbackListPtr >
1317 #define DtRegisterTerrainImplementationFunctionName "DtRegisterTerrainImplementation"
1324 #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:1288
tbb::tick_count myLastDebugOutputTick
Definition: terrainInterface.h:1306
boost::function< void(const makVrv::DtDynamicTerrainFeature &)> DtDynamicTerrainQueryCallback
Definition: terrainImplementation.h:137
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:164
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:1328
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:48
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:104
bool present
False unless there is ocean layer data in the .mtf file.
Definition: terrainInterface.h:104
double landAboveWaterMinimumSeparation
Definition: terrainInterface.h:108
Represents (possibly infinite) area of space.
Definition: DtDynamicTerrainGeometry.h:20
class DtScenarioExplorer:
Definition: scenarioExplorer.h:26
Allows manipulating a terrain object.
Definition: terrainImplementation.h:141
DtGenericTerrainRecordCallbackListMap myGenericTerrainRecordCallbacklists
Definition: terrainInterface.h:1311
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:106
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:97
DtTerrainImplementationManager * myTerrainImplManager
Definition: terrainInterface.h:1285
Definition: surface.h:179
Definition: aStarGraph.h:79
static double theTerrainPagingMaxHeight
Definition: terrainInterface.h:1296
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:1283
DtConsoleCommandManager * myConsoleCommandManager
Definition: terrainInterface.h:1286
Definition: coordSystem.h:54
bool(* DtRegisterTerrainImplementationLibFcn)(DtTerrainInterface *)
This function signature is used for terrain implementation shared libraries that register themselves ...
Definition: terrainInterface.h:1321
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:1289
Represents some coordinate system.
Definition: proj.h:44
Represents a set of characeters a DtFeature object can have.
Definition: query.h:38
void(* DtTerrainChangeNotificationCallbackFcn)(const DtExtent &spatExtent, void *userData)
Definition: terrainImplementation.h:48
double seaLevel
Definition: terrainInterface.h:105
#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:1273
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:88
DtTerrainImplementation * terrainImplementation() const
Returns the current terrain implementation.
Definition: terrainInterface.h:136
DtTerrainImplementationFactory::DtCreatorFcn DtTerrainImplementationCreatorFcn
Definition: terrainImplementation.h:392
Interface which abstracts the concept of a individually identifiable "thing" in the terrain...
Definition: DtDynamicTerrainFeature.h:83
LoadContext
Definition: terrainInterface.h:91
makArchives::DtTerrainRecord * myTerrainRecord
Definition: terrainInterface.h:1308
OceanLayer myGlobalOceanLayer
Definition: terrainInterface.h:1303
Definition: pathFeature.h:106
Definition: vrfChordIntersectionRecord.h:19
Definition: intersectionRecord.h:60
DtTerrainImplementation * myTerrainImpl
Definition: terrainInterface.h:1279
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtTerrainInterfaceConfig myFileConfig
Definition: terrainInterface.h:1274
MAKVRinTerra::DtProj::CPtr myProjObject
Definition: terrainInterface.h:1298
std::map< DtString, DtGenericTerrainRecordCallbackListPtr > DtGenericTerrainRecordCallbackListMap
Definition: terrainInterface.h:1261
void(* DtTriangleCallbackFcn)(DtTerrainTriangleStruct &triangle, void *usr)
Definition: terrainProcessPolygonsBox.h:109
boost::ptr_list< MAKVRinTerra::DtFeatureSet > FeatureSetList
Definition: terrainInterface.h:1276
DtAsyncJobServer myAsyncJobServer
Manages asynchronous path planning tasks.
Definition: terrainInterface.h:1301
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:107
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:106
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea.
Definition: terrainProcessPolygonsBox.h:113
Manages async job objects.
Definition: asyncJobServer.h:75
DtMedium
Definition: surface.h:185
std::ofstream myDebugOutputFile
Definition: terrainInterface.h:1305
Definition: featuresDebugger.h:33
Global ocean layer info; used in conjunction with the polygon data.
Definition: terrainInterface.h:100
Resource handle for a dynamic terrain change request which has been added to the system.
Definition: terrainImplementation.h:71
double myLastFileTime
Needed in case file is saved with same name and then reloaded.
Definition: terrainInterface.h:1294
Configuration object for processing areas.
Definition: areaFeature.h:47
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:1291
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:1277