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,
109 virtual bool init(
bool createConsoleManager =
true);
112 virtual void setConfigFile(
const std::string&,
bool reload=
true);
121 virtual bool isSameTerrain(
const DtFilename&)
const;
126 return myTerrainImpl;
131 virtual void addTerrainImplementation(
const DtString& implementationName,
136 virtual void addFeatureLayer(boost::shared_ptr<MAKVRinTerra::DtFeatureSet>);
138 virtual void addGenericTerrainRecordCallback(
143 virtual void removeGenericTerrainRecordCallback(
148 virtual void invokeGenericTerrainRecordCallbacks(
152 virtual bool loadTerrain(
const DtString&
filename, LoadContext context = VrfSimulationBackEnd);
155 virtual bool unloadTerrain(
bool block =
true);
161 virtual bool loadModel(
const DtFilename& f,
const DtEntityType& t = DtEntityType(),
bool hasOceanLayer =
true);
165 virtual double modelHeightDifferencesFromAppearances(
int oldApp,
int newApp)
const;
168 virtual bool terrainIsLoaded();
171 virtual DtString loadedFilename()
const;
178 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
179 const std::string& type,
180 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
184 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
186 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
189 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> LOSfeatures()
const;
191 virtual std::auto_ptr<MAKVRinTerra::DtPathFeatureSet> paths(
const std::string& type)
const;
195 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> features(
196 const std::string& queryName)
const;
199 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeatures()
const;
203 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> featuresRaw(
204 const std::string& queryName)
const;
207 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeaturesRaw()
const;
225 virtual double terrainHeightAboveSeaLevel(
const DtPoint& databaseLocation,
226 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
251 virtual bool terrainHeightAndIntersection(
const DtVector& localLocation,
255 bool overrideBlockingAssert =
false,
int flags = 0)
const;
259 virtual bool terrainHeightAndIntersectionBelow(
const DtVector& localLocation,
263 bool overrideBlockingAssert =
false,
int flags = 0)
const;
393 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
396 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0) ;
401 virtual bool terrainHeightUnderWaterDebug(
const DtVector& databaseLocation,
405 bool* dataAvailable =0,
bool overrideBlockingAssert =
false,
int flags = 0) ;
451 virtual bool closestIntersection(
const DtVector& localLocation,
452 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
453 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
475 virtual bool closestIntersection(
double lat,
double lon,
476 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
477 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
505 virtual bool closestIntersection(
const DtVector& localLocation,
509 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
537 virtual bool closestIntersection(
double lat,
double lon,
541 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
572 virtual bool closestIntersection(
const std::list<DtVector>& localLocationList,
576 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
605 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
606 double& intersectionTime,
bool* dataAvailable = 0,
607 bool overrideBlockingAssert =
false,
int flags = 0)
const;
640 virtual bool intersect(
const DtChord& chord,
644 bool overrideBlockingAssert =
false,
int flags = 0)
const;
672 virtual bool allIntersectsAlongChord(
const DtChord& chord,
676 bool overrideBlockingAssert =
false,
int flags = 0)
const;
681 virtual bool allIntersectsAlongChordDebug(
const DtChord& chord,
683 bool* dataAvailable = 0,
684 bool overrideBlockingAssert =
false,
int flags = 0)
const;
717 virtual bool intersectList(
const std::list<DtChord>& chordList,
721 bool overrideBlockingAssert =
false,
int flags = 0)
const;
737 virtual void preloadTerrainAreas(
745 virtual void forceLoadTerrainAreas(
761 virtual bool addTerrainPassThroughLayer(
const DtString& layerType);
772 virtual void setAssertOnBlockingTerrainCalls(
bool assertBlock);
773 virtual bool assertOnBlockingTerrainCalls()
const;
778 virtual void setWarnOnBlockingTerrainCalls(
bool warnBlock);
779 virtual bool warnOnBlockingTerrainCalls()
const;
786 virtual void setIntersectDataLoadExpireTime(
const double& expireTime);
787 virtual void expireDataLoadRequestsBeforeTime(
const double& currentTime);
813 virtual boost::shared_ptr<DtAsyncJobMapEntry> makePathAsync(
815 const DtPoint& localDestination,
816 const std::string& type,
817 const double& maxSearchRadius,
818 const double& startProximityThreshold,
819 const DtAStarGraph::DtWeightFactorsList& weightFactors
820 = DtAStarGraph::DtWeightFactorsList());
835 virtual DtAStarGraph::Path makePath(
837 const DtPoint& localDestination,
838 const std::string& type,
839 const double& maxSearchRadius,
840 const double& startProximityThreshold,
841 boost::function<
bool ()> cancelCheck,
842 const DtAStarGraph::DtWeightFactorsList& weightFactors
843 = DtAStarGraph::DtWeightFactorsList())
const;
847 virtual bool onPathFeature(
851 virtual DtAStarGraph::Ptr pathFinder(
const std::string&)
const;
856 virtual boost::shared_ptr<DtAsyncJobMapEntry> addAsyncJob(
DtAsyncJob* job);
865 const double topoDistance(
const DtPoint& start,
const DtPoint& end,
878 const std::string& type,
const DtPoint& startingLocation,
879 const double& searchRadius,
bool* dataAvailable = NULL);
882 std::vector<DtChord>& chords)
const;
884 void breakUpChord(
const DtChord& chord, std::vector<DtChord>& chords)
const;
897 const std::map<DtString, DtString>& keyValueChanges,
898 const DtVector& centerLocation,
double radius);
908 const std::map<DtString, DtString>& keyValueChanges,
909 const std::list<DtVector>& vertices,
double width);
918 const std::map<DtString, DtString>& keyValueChanges,
919 const std::list<DtVector>& vertices);
942 virtual void dynamicTerrainFeaturesInArea(
943 const DtVector& centerLocation,
double radius,
944 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
945 const DtString& filterKey = DtString::nullString());
959 virtual void dynamicTerrainFeaturesInArea(
960 const std::list<DtVector>& vertices,
double width,
961 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
962 const DtString& filterKey = DtString::nullString());
975 virtual void dynamicTerrainFeaturesInArea(
976 const std::list<DtVector>& vertices,
977 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
978 const DtString& filterKey = DtString::nullString());
996 bool useOriginalGeometry =
false);
998 virtual void queryCurrentDynamicTerrainFeatures(
1001 bool useOriginalGeometry =
false);
1004 virtual void cacheInformationForTerrainArea(
1005 unsigned minLOD,
unsigned maxLOD,
const DtExtent& cacheArea,
1006 double& estimatedTime,
double& estimatedSize,
1007 std::vector<std::string>& elevationLayers,
1008 std::vector<std::string>& modelLayers,
1009 std::vector<std::string>& featureLayers)
const;
1013 virtual void cacheTerrainArea(
int requestId,
1014 unsigned minLOD,
unsigned maxLOD,
const DtExtent& cacheArea,
1018 virtual void cancelCacheTerrainArea(
int requestId);
1021 virtual bool oceanLayerPresent()
const;
1024 virtual void setOceanLayerPresent(
bool b);
1037 virtual bool nonPolygonalWaterHeight(
1039 double& height)
const;
1042 virtual void setNonPolygonalWaterHeight(
double d);
1047 virtual double defaultWaterDepth(
const DtVector& localLocation)
const;
1050 virtual void setDefaultWaterDepth(
double);
1055 virtual double defaultSurfaceElevation(
const DtVector& localLocation)
const;
1088 virtual double landAboveWaterMinimumSeparation()
const;
1091 virtual void setLandAboveWaterMinimumSeparation(
double);
1096 void insertNonPolyWaterIntoIntersectionList(
1108 const DtVector& localLocation,
const double height)
const;
1114 virtual bool nonPolygonalWaterIntersect(
1160 typedef std::map<DtString, DtGenericTerrainRecordCallbackList>
1165 #define DtRegisterTerrainImplementationFunctionName "DtRegisterTerrainImplementation"
1172 #define DtDeregisterTerrainImplementationFunctionName "DtDeregisterTerrainImplementation"