32 #include <boost/scoped_ptr.hpp>
33 #include <boost/ptr_container/ptr_list.hpp>
36 class DtTerrainImplementationDescriptor;
42 class Dt3dBoundingVolume;
46 class DtTerrainRecord;
47 class DtGenericTerrainRecord;
81 VrfSimulationBackEnd = 1,
107 virtual bool init(
bool createConsoleManager =
true);
110 virtual void setConfigFile(
const std::string&,
bool reload=
true);
119 virtual bool isSameTerrain(
const DtFilename&)
const;
122 virtual bool isHighFidelityTerrain()
const;
127 return myTerrainImpl;
132 virtual void addTerrainImplementation(
const DtString& implementationName,
137 virtual void addFeatureLayer(boost::shared_ptr<MAKVRinTerra::DtFeatureSet>);
139 virtual void addGenericTerrainRecordCallback(
144 virtual void removeGenericTerrainRecordCallback(
149 virtual void invokeGenericTerrainRecordCallbacks(
153 virtual bool loadTerrain(
const DtString&
filename, LoadContext context = VrfSimulationBackEnd);
156 virtual bool unloadTerrain(
bool block =
true);
162 virtual bool loadModel(
const DtFilename& f,
const DtEntityType& t = DtEntityType(),
bool hasOceanLayer =
true);
166 virtual double modelHeightDifferencesFromAppearances(
int oldApp,
int newApp)
const;
169 virtual bool createFromExtent(
const Dt3dBoundingVolume&);
172 virtual bool terrainIsLoaded();
175 virtual DtString loadedFilename()
const;
182 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
183 const std::string& type,
184 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
188 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
190 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
193 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> LOSfeatures()
const;
195 virtual std::auto_ptr<MAKVRinTerra::DtPathFeatureSet> paths(
const std::string& type)
const;
199 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> features(
200 const std::string& queryName)
const;
203 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeatures()
const;
207 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> featuresRaw(
208 const std::string& queryName)
const;
211 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeaturesRaw()
const;
229 virtual double terrainHeightAboveSeaLevel(
const DtPoint& databaseLocation,
230 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
255 virtual bool terrainHeightAndIntersection(
const DtVector& localLocation,
259 bool overrideBlockingAssert =
false,
int flags = 0)
const;
263 virtual bool terrainHeightAndIntersectionBelow(
const DtVector& localLocation,
267 bool overrideBlockingAssert =
false,
int flags = 0)
const;
397 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
400 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0) ;
405 virtual bool terrainHeightUnderWaterDebug(
const DtVector& databaseLocation,
409 bool* dataAvailable =0,
bool overrideBlockingAssert =
false,
int flags = 0) ;
455 virtual bool closestIntersection(
const DtVector& localLocation,
456 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
457 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
479 virtual bool closestIntersection(
double lat,
double lon,
480 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
481 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
509 virtual bool closestIntersection(
const DtVector& localLocation,
513 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
541 virtual bool closestIntersection(
double lat,
double lon,
545 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
576 virtual bool closestIntersection(
const std::list<DtVector>& localLocationList,
580 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
609 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
610 double& intersectionTime,
bool* dataAvailable = 0,
611 bool overrideBlockingAssert =
false,
int flags = 0)
const;
644 virtual bool intersect(
const DtChord& chord,
648 bool overrideBlockingAssert =
false,
int flags = 0)
const;
676 virtual bool allIntersectsAlongChord(
const DtChord& chord,
680 bool overrideBlockingAssert =
false,
int flags = 0)
const;
685 virtual bool allIntersectsAlongChordDebug(
const DtChord& chord,
687 bool* dataAvailable = 0,
688 bool overrideBlockingAssert =
false,
int flags = 0)
const;
721 virtual bool intersectList(
const std::list<DtChord>& chordList,
725 bool overrideBlockingAssert =
false,
int flags = 0)
const;
741 virtual void preloadTerrainAreas(
749 virtual void forceLoadTerrainAreas(
762 virtual bool addTerrainPassThroughLayer(
const DtString& layerType);
773 virtual void setAssertOnBlockingTerrainCalls(
bool assertBlock);
774 virtual bool assertOnBlockingTerrainCalls()
const;
779 virtual void setWarnOnBlockingTerrainCalls(
bool warnBlock);
780 virtual bool warnOnBlockingTerrainCalls()
const;
787 virtual void setIntersectDataLoadExpireTime(
const double& expireTime);
788 virtual void expireDataLoadRequestsBeforeTime(
const double& currentTime);
806 virtual boost::shared_ptr<DtAsyncJobMapEntry> makePathAsync(
808 const DtPoint& localDestination,
809 const std::string& type,
810 const double& maxSearchRadius,
811 const double& startProximityThreshold,
812 const DtAStarGraph::DtWeightFactorsList& weightFactors
813 = DtAStarGraph::DtWeightFactorsList());
828 virtual DtAStarGraph::Path makePath(
830 const DtPoint& localDestination,
831 const std::string& type,
832 const double& maxSearchRadius,
833 const double& startProximityThreshold,
834 boost::function<
bool ()> cancelCheck,
835 const DtAStarGraph::DtWeightFactorsList& weightFactors
836 = DtAStarGraph::DtWeightFactorsList())
const;
840 virtual bool onPathFeature(
844 virtual DtAStarGraph::Ptr pathFinder(
const std::string&)
const;
849 virtual boost::shared_ptr<DtAsyncJobMapEntry> addAsyncJob(
DtAsyncJob* job);
858 const double topoDistance(
const DtPoint& start,
const DtPoint& end,
871 const std::string& type,
const DtPoint& startingLocation,
872 const double& searchRadius,
bool* dataAvailable = NULL);
875 std::vector<DtChord>& chords)
const;
877 void breakUpChord(
const DtChord& chord, std::vector<DtChord>& chords)
const;
887 const std::map<DtString, DtString>& keyValueChanges,
888 const DtVector& centerLocation,
double radius);
898 const std::map<DtString, DtString>& keyValueChanges,
899 const std::list<DtVector>& vertices,
double width);
908 const std::map<DtString, DtString>& keyValueChanges,
909 const std::list<DtVector>& vertices);
932 virtual void dynamicTerrainFeaturesInArea(
933 const DtVector& centerLocation,
double radius,
934 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
935 const DtString& filterKey = DtString::nullString());
949 virtual void dynamicTerrainFeaturesInArea(
950 const std::list<DtVector>& vertices,
double width,
951 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
952 const DtString& filterKey = DtString::nullString());
965 virtual void dynamicTerrainFeaturesInArea(
966 const std::list<DtVector>& vertices,
967 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
968 const DtString& filterKey = DtString::nullString());
987 virtual void queryCurrentDynamicTerrainFeatures(
992 virtual void cacheInformationForTerrainArea(
int requestId,
int lowestLOD,
int highestLOD,
const DtExtent& cacheArea,
993 double& estimatedTime,
double& estimatedSize, std::vector<std::string>& elevationLayers, std::vector<std::string>& modelLayers)
const;
1000 virtual void cancelCacheTerrainArea(
int requestId);
1014 virtual bool nonPolygonalWaterHeight(
const DtVector& localLocation,
1015 double& height)
const;
1020 virtual double defaultWaterDepth(
const DtVector& localLocation)
const;
1024 virtual double defaultSurfaceElevation(
const DtVector& localLocation)
const;
1054 virtual double landAboveWaterMinimumSeparation()
const;
1058 void insertNonPolyWaterIntoIntersectionList(
1070 const DtVector& localLocation,
const double height)
const;
1076 virtual bool nonPolygonalWaterIntersect(
const DtChord& chord,
1123 typedef std::map<DtString, DtGenericTerrainRecordCallbackList>
1128 #define DtRegisterTerrainImplementationFunctionName "DtRegisterTerrainImplementation"
1135 #define DtDeregisterTerrainImplementationFunctionName "DtDeregisterTerrainImplementation"