33 #include <boost/scoped_ptr.hpp>
34 #include <boost/ptr_container/ptr_list.hpp>
35 #include <boost/signals2.hpp>
40 class DtTerrainImplementationDescriptor;
46 class Dt3dBoundingVolume;
47 class DtTerrainIndexParameters;
53 class DtTerrainRecord;
54 class DtGenericTerrainRecord;
104 VrfSimulationBackEnd = 1,
105 NavGenerationTool = 2
132 virtual bool init(
bool createConsoleManager =
true);
135 virtual void setConfigFile(
const std::string&,
bool reload=
true);
144 virtual bool isSameTerrain(
const DtFilename&)
const;
149 return myTerrainImpl;
154 virtual void addTerrainImplementation(
const DtString& implementationName,
159 virtual void addFeatureLayer(boost::shared_ptr<MAKVRinTerra::DtFeatureSet>);
161 virtual void addGenericTerrainRecordCallback(
166 virtual void removeGenericTerrainRecordCallback(
171 virtual void invokeGenericTerrainRecordCallbacks(
183 virtual bool loadTerrain(
const DtString&
filename, LoadContext context = VrfSimulationBackEnd);
186 virtual bool unloadTerrain(
bool block =
true);
192 virtual bool loadModel(
const DtFilename& f,
const DtEntityType& t = DtEntityType(),
bool hasOceanLayer =
true);
196 virtual double modelHeightDifferencesFromAppearances(
int oldApp,
int newApp)
const;
199 virtual bool terrainIsLoaded();
202 virtual DtString loadedFilename()
const;
210 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
211 const std::string& type,
212 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
216 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
218 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
220 virtual std::auto_ptr<MAKVRinTerra::DtPathFeatureSet> paths(
const std::string& type)
const;
224 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> features(
225 const std::string& queryName)
const;
228 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeatures()
const;
232 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> featuresRaw(
233 const std::string& queryName)
const;
236 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeaturesRaw()
const;
257 virtual double terrainHeightAboveSeaLevel(
const DtPoint& databaseLocation,
258 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
261 const DtPoint& databaseLocation,
291 virtual bool terrainHeightAndIntersection(
const DtVector& localLocation,
294 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
305 virtual bool terrainHeightAndIntersectionBelow(
const DtVector& localLocation,
308 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
446 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
449 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0) ;
504 virtual bool closestIntersection(
const DtVector& localLocation,
505 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
506 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
510 bool doNotAddDefaultRecord =
false,
536 virtual bool closestIntersection(
double lat,
double lon,
537 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
538 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
541 double lat,
double lon,
543 bool doNotAddDefaultRecord =
false,
576 virtual bool closestIntersection(
const DtVector& localLocation,
579 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
580 bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
585 bool doNotAddDefaultRecord =
false,
618 virtual bool closestIntersection(
double lat,
double lon,
622 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
625 double lat,
double lon,
627 bool doNotAddDefaultRecord =
false,
663 virtual bool closestIntersection(
const std::list<DtVector>& localLocationList,
666 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
667 bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
670 const std::list<DtVector>& localLocationList,
672 bool doNotAddDefaultRecord =
false,
706 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
707 double& intersectionTime,
bool* dataAvailable = 0,
708 bool overrideBlockingAssert =
false,
int flags = 0)
const;
712 double& intersectionTime,
750 virtual bool intersect(
const DtChord& chord,
753 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
790 virtual bool allIntersectsAlongChord(
const DtChord& chord,
793 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
805 virtual bool allIntersectsAlongChordDebug(
const DtChord& chord,
807 bool* dataAvailable = 0,
808 bool overrideBlockingAssert =
false,
int flags = 0)
const;
850 virtual bool intersectList(
const std::list<DtChord>& chordList,
853 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
856 const std::list<DtChord>& chordList,
875 virtual void preloadTerrainAreas(
883 virtual void forceLoadTerrainAreas(
899 virtual bool addTerrainPassThroughLayer(
const DtString& layerType);
910 virtual void setAssertOnBlockingTerrainCalls(
bool assertBlock);
911 virtual bool assertOnBlockingTerrainCalls()
const;
916 virtual void setWarnOnBlockingTerrainCalls(
bool warnBlock);
917 virtual bool warnOnBlockingTerrainCalls()
const;
924 virtual void setIntersectDataLoadExpireTime(
const double& expireTime);
925 virtual void expireDataLoadRequestsBeforeTime(
const double& currentTime);
955 virtual boost::shared_ptr<DtAsyncJobMapEntry> makePathAsync(
957 const DtPoint& localDestination,
958 const std::string& type,
959 const double& maxSearchRadius,
960 const double& startProximityThreshold,
961 const DtAStarGraph::DtWeightFactorsList& weightFactors
962 = DtAStarGraph::DtWeightFactorsList());
977 virtual DtAStarGraph::Path makePath(
979 const DtPoint& localDestination,
980 const std::string& type,
981 const double& maxSearchRadius,
982 const double& startProximityThreshold,
983 boost::function<
bool ()> cancelCheck,
984 const DtAStarGraph::DtWeightFactorsList& weightFactors
985 = DtAStarGraph::DtWeightFactorsList())
const;
989 virtual bool onPathFeature(
993 virtual DtAStarGraph::Ptr pathFinder(
const std::string&)
const;
998 virtual boost::shared_ptr<DtAsyncJobMapEntry> addAsyncJob(
DtAsyncJob* job);
1007 const double topoDistance(
const DtPoint& start,
const DtPoint& end,
1020 const std::string& type,
const DtPoint& startingLocation,
1021 const double& searchRadius,
bool* dataAvailable = NULL);
1024 std::vector<DtChord>& chords)
const;
1026 void breakUpChord(
const DtChord& chord, std::vector<DtChord>& chords)
const;
1039 virtual void clearCache();
1049 const std::map<DtString, DtString>& keyValueChanges,
1050 const DtVector& centerLocation,
double radius);
1060 const std::map<DtString, DtString>& keyValueChanges,
1061 const std::list<DtVector>& vertices,
double width);
1070 const std::map<DtString, DtString>& keyValueChanges,
1071 const std::list<DtVector>& vertices);
1094 virtual void dynamicTerrainFeaturesInArea(
1095 const DtVector& centerLocation,
double radius,
1096 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1097 const DtString& filterKey = DtString::nullString());
1111 virtual void dynamicTerrainFeaturesInArea(
1112 const std::list<DtVector>& vertices,
double width,
1113 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1114 const DtString& filterKey = DtString::nullString());
1127 virtual void dynamicTerrainFeaturesInArea(
1128 const std::list<DtVector>& vertices,
1129 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1130 const DtString& filterKey = DtString::nullString());
1148 bool useOriginalGeometry =
false);
1150 virtual void queryCurrentDynamicTerrainFeatures(
1153 bool useOriginalGeometry =
false);
1157 virtual void cacheTerrainArea(
int requestId,
1158 unsigned minLOD,
unsigned maxLOD,
const DtExtent& cacheArea,
1162 virtual void cancelCacheTerrainArea(
int requestId);
1171 virtual bool oceanLayerPresent()
const;
1174 virtual void setOceanLayerPresent(
bool b);
1187 virtual bool nonPolygonalWaterHeight(
1189 double& height)
const;
1192 virtual void setNonPolygonalWaterHeight(
double d);
1197 virtual double defaultWaterDepth(
const DtVector& localLocation)
const;
1200 virtual void setDefaultWaterDepth(
double);
1205 virtual double defaultSurfaceElevation(
const DtVector& localLocation)
const;
1238 virtual double landAboveWaterMinimumSeparation()
const;
1241 virtual void setLandAboveWaterMinimumSeparation(
double);
1244 virtual void setAccumulateIntersections(
bool value);
1247 virtual bool accumulateIntersections()
const;
1250 virtual void getIntersections(std::vector<DtChord>& accumulatedChords, std::vector<DtPoint>& accumulatedIntersections)
const;
1252 virtual boost::signals2::connection connectToUnloadTerrain(
const DtTerrainUnloadSignalType::slot_type & slotIn);
1257 void insertNonPolyWaterIntoIntersectionList(
1269 const DtVector& localLocation,
const double height)
const;
1275 virtual bool nonPolygonalWaterIntersect(
1280 typedef std::map<DtString, DtGenericTerrainRecordCallbackListPtr >
1349 #define DtRegisterTerrainImplementationFunctionName "DtRegisterTerrainImplementation"
1356 #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:1313
tbb::tick_count myLastDebugOutputTick
Definition: terrainInterface.h:1331
std::vector< DtPoint > myAccumulatedIntersectionPoints
Definition: terrainInterface.h:1344
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. A terrain implementation is used by ...
Definition: terrainImplementation.h:170
DtCallbackList< makArchives::DtGenericTerrainRecord * > DtGenericTerrainRecordCallbackList
Definition: terrainInterface.h:60
void(* DtDeregisterTerrainImplementationLibFcn)()
This function signature is used for terrain implementation shared libraries that deregister themselve...
Definition: terrainInterface.h:1360
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords. This is useful for followi...
Definition: vrfChordIntersectRecordList.h:31
An asynchronous job that can be added to and executed by a job server. Since this class derives from ...
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:57
std::list< std::pair< DtPagingMetaDataPtr, DtTerrainPagingGeometryPtr > > DtTerrainPagingGeometryList
Definition: terrainPagingGeometry.h:104
bool present
False unless there is ocean layer data in the .mtf file. If false, the sea level and depth should not...
Definition: terrainInterface.h:115
double landAboveWaterMinimumSeparation
Definition: terrainInterface.h:119
Represents (possibly infinite) area of space.
Definition: DtDynamicTerrainGeometry.h:20
std::vector< DtChord > myAccumulatedChords
Definition: terrainInterface.h:1343
class DtScenarioExplorer:
Definition: scenarioExplorer.h:26
Allows manipulating a terrain object. Returned by functions which create terrain objects.
Definition: terrainImplementation.h:141
DtGenericTerrainRecordCallbackListMap myGenericTerrainRecordCallbacklists
Definition: terrainInterface.h:1336
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:117
boost::shared_ptr< DtGenericTerrainRecordCallbackList > DtGenericTerrainRecordCallbackListPtr
Definition: terrainInterface.h:61
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:56
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
MAKVRinTerra::DtAStarGraph DtAStarGraph
Definition: terrainInterface.h:108
DtTerrainImplementationManager * myTerrainImplManager
Definition: terrainInterface.h:1310
Definition: surface.h:179
Definition: aStarGraph.h:79
static double theTerrainPagingMaxHeight
Definition: terrainInterface.h:1321
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:1308
DtConsoleCommandManager * myConsoleCommandManager
Definition: terrainInterface.h:1311
Definition: coordSystem.h:54
bool(* DtRegisterTerrainImplementationLibFcn)(DtTerrainInterface *)
This function signature is used for terrain implementation shared libraries that register themselves ...
Definition: terrainInterface.h:1353
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:1314
Represents some coordinate system. The terms "coordinate system", "projection", "spatial reference"...
Definition: proj.h:44
Represents a set of characeters a DtFeature object can have. DtQuery objects are the way to communica...
Definition: query.h:38
void(* DtTerrainChangeNotificationCallbackFcn)(const DtExtent &spatExtent, void *userData)
Definition: terrainImplementation.h:48
double seaLevel
Definition: terrainInterface.h:116
#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:1298
This class holds parameters which define the capabilities of the current terrain. The terrain impleme...
Definition: terrainCapabilities.h:28
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:99
DtTerrainImplementation * terrainImplementation() const
Returns the current terrain implementation.
Definition: terrainInterface.h:147
DtTerrainImplementationFactory::DtCreatorFcn DtTerrainImplementationCreatorFcn
Definition: terrainImplementation.h:398
DtTerrainUnloadSignalType myUnloadTerrainSignal
Definition: terrainInterface.h:1346
Interface which abstracts the concept of a individually identifiable "thing" in the terrain...
Definition: DtDynamicTerrainFeature.h:83
LoadContext
Definition: terrainInterface.h:102
makArchives::DtTerrainRecord * myTerrainRecord
Definition: terrainInterface.h:1333
OceanLayer myGlobalOceanLayer
Definition: terrainInterface.h:1328
Class DtLogFileInfo; Holds Logging information for windows minidump and log file generation.
Definition: pathFeature.h:106
Definition: vrfChordIntersectionRecord.h:19
Definition: intersectionRecord.h:60
DtTerrainImplementation * myTerrainImpl
Definition: terrainInterface.h:1304
bool myAccumulateIntersections
check if we need to accumulate terrain intersections results for debug purpose
Definition: terrainInterface.h:1341
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtTerrainInterfaceConfig myFileConfig
Definition: terrainInterface.h:1299
MAKVRinTerra::DtProj::CPtr myProjObject
Definition: terrainInterface.h:1323
std::map< DtString, DtGenericTerrainRecordCallbackListPtr > DtGenericTerrainRecordCallbackListMap
Definition: terrainInterface.h:1281
void(* DtTriangleCallbackFcn)(DtTerrainTriangleStruct &triangle, void *usr)
Definition: terrainProcessPolygonsBox.h:109
boost::ptr_list< MAKVRinTerra::DtFeatureSet > FeatureSetList
Definition: terrainInterface.h:1301
DtAsyncJobServer myAsyncJobServer
Manages asynchronous path planning tasks.
Definition: terrainInterface.h:1326
Command which can be given to the dynamic terrain system to perform some change. This class is a simp...
Definition: DtDynamicTerrainChange.h:42
DtSurface::DtMedium defaultSurfaceMedium
Default depth. Positive, m below surface.
Definition: terrainInterface.h:118
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. Returned from DtTerrainImplementation...
Definition: terrainImplementation.h:106
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea. This object should always be created on the stack.
Definition: terrainProcessPolygonsBox.h:113
Manages async job objects.
Definition: asyncJobServer.h:75
DtMedium
Definition: surface.h:185
std::ofstream myDebugOutputFile
Definition: terrainInterface.h:1330
boost::signals2::signal< void()> DtTerrainUnloadSignalType
Definition: terrainInterface.h:67
Definition: featuresDebugger.h:33
Global ocean layer info; used in conjunction with the polygon data.
Definition: terrainInterface.h:111
Resource handle for a dynamic terrain change request which has been added to the system. Returned from DtTerrainImplementation::addDynamicTerrainChangeRequest(). Allows caller to manage request.
Definition: terrainImplementation.h:71
double myLastFileTime
Needed in case file is saved with same name and then reloaded.
Definition: terrainInterface.h:1319
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:1316
DtIntersectionType
Definition: intersectionRecord.h:41
Represents an area query which can be used to extract triangles from DtTerrainInterface. The box points are in local but the box is always projected against the local topo at the center point of the box.
Definition: terrainProcessPolygonsBox.h:39
FeatureSetList myFeatureLayers
Definition: terrainInterface.h:1302