33 #include <boost/scoped_ptr.hpp>
34 #include <boost/ptr_container/ptr_list.hpp>
37 class DtTerrainImplementationDescriptor;
43 class Dt3dBoundingVolume;
44 class DtTerrainIndexParameters;
48 class DtTerrainRecord;
49 class DtGenericTerrainRecord;
87 VrfSimulationBackEnd = 1,
115 virtual bool init(
bool createConsoleManager =
true);
118 virtual void setConfigFile(
const std::string&,
bool reload=
true);
127 virtual bool isSameTerrain(
const DtFilename&)
const;
132 return myTerrainImpl;
137 virtual void addTerrainImplementation(
const DtString& implementationName,
142 virtual void addFeatureLayer(boost::shared_ptr<MAKVRinTerra::DtFeatureSet>);
144 virtual void addGenericTerrainRecordCallback(
149 virtual void removeGenericTerrainRecordCallback(
154 virtual void invokeGenericTerrainRecordCallbacks(
158 virtual bool loadTerrain(
const DtString&
filename, LoadContext context = VrfSimulationBackEnd);
161 virtual bool unloadTerrain(
bool block =
true);
167 virtual bool loadModel(
const DtFilename& f,
const DtEntityType& t = DtEntityType(),
bool hasOceanLayer =
true);
171 virtual double modelHeightDifferencesFromAppearances(
int oldApp,
int newApp)
const;
174 virtual bool terrainIsLoaded();
177 virtual DtString loadedFilename()
const;
184 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
185 const std::string& type,
186 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
190 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> areas(
192 const boost::shared_ptr<DtVrfCallbackQueue>& = boost::shared_ptr<DtVrfCallbackQueue>())
const;
195 virtual std::auto_ptr<MAKVRinTerra::DtAreaFeatureSet> LOSfeatures()
const;
197 virtual std::auto_ptr<MAKVRinTerra::DtPathFeatureSet> paths(
const std::string& type)
const;
201 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> features(
202 const std::string& queryName)
const;
205 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeatures()
const;
209 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> featuresRaw(
210 const std::string& queryName)
const;
213 virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeaturesRaw()
const;
234 virtual double terrainHeightAboveSeaLevel(
const DtPoint& databaseLocation,
235 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
238 const DtPoint& databaseLocation,
268 virtual bool terrainHeightAndIntersection(
const DtVector& localLocation,
271 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
282 virtual bool terrainHeightAndIntersectionBelow(
const DtVector& localLocation,
285 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
423 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
426 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0) ;
481 virtual bool closestIntersection(
const DtVector& localLocation,
482 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
483 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
487 bool doNotAddDefaultRecord =
false,
513 virtual bool closestIntersection(
double lat,
double lon,
514 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
515 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
518 double lat,
double lon,
520 bool doNotAddDefaultRecord =
false,
553 virtual bool closestIntersection(
const DtVector& localLocation,
556 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
557 bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
562 bool doNotAddDefaultRecord =
false,
595 virtual bool closestIntersection(
double lat,
double lon,
599 bool overrideBlockingAssert =
false,
bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
602 double lat,
double lon,
604 bool doNotAddDefaultRecord =
false,
640 virtual bool closestIntersection(
const std::list<DtVector>& localLocationList,
643 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
644 bool doNotAddDefaultRecord =
false,
int flags = 0)
const;
647 const std::list<DtVector>& localLocationList,
649 bool doNotAddDefaultRecord =
false,
683 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
684 double& intersectionTime,
bool* dataAvailable = 0,
685 bool overrideBlockingAssert =
false,
int flags = 0)
const;
689 double& intersectionTime,
727 virtual bool intersect(
const DtChord& chord,
730 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
767 virtual bool allIntersectsAlongChord(
const DtChord& chord,
770 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
782 virtual bool allIntersectsAlongChordDebug(
const DtChord& chord,
784 bool* dataAvailable = 0,
785 bool overrideBlockingAssert =
false,
int flags = 0)
const;
827 virtual bool intersectList(
const std::list<DtChord>& chordList,
830 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false,
int flags = 0)
const;
833 const std::list<DtChord>& chordList,
852 virtual void preloadTerrainAreas(
860 virtual void forceLoadTerrainAreas(
876 virtual bool addTerrainPassThroughLayer(
const DtString& layerType);
887 virtual void setAssertOnBlockingTerrainCalls(
bool assertBlock);
888 virtual bool assertOnBlockingTerrainCalls()
const;
893 virtual void setWarnOnBlockingTerrainCalls(
bool warnBlock);
894 virtual bool warnOnBlockingTerrainCalls()
const;
901 virtual void setIntersectDataLoadExpireTime(
const double& expireTime);
902 virtual void expireDataLoadRequestsBeforeTime(
const double& currentTime);
928 virtual boost::shared_ptr<DtAsyncJobMapEntry> makePathAsync(
930 const DtPoint& localDestination,
931 const std::string& type,
932 const double& maxSearchRadius,
933 const double& startProximityThreshold,
934 const DtAStarGraph::DtWeightFactorsList& weightFactors
935 = DtAStarGraph::DtWeightFactorsList());
950 virtual DtAStarGraph::Path makePath(
952 const DtPoint& localDestination,
953 const std::string& type,
954 const double& maxSearchRadius,
955 const double& startProximityThreshold,
956 boost::function<
bool ()> cancelCheck,
957 const DtAStarGraph::DtWeightFactorsList& weightFactors
958 = DtAStarGraph::DtWeightFactorsList())
const;
962 virtual bool onPathFeature(
966 virtual DtAStarGraph::Ptr pathFinder(
const std::string&)
const;
971 virtual boost::shared_ptr<DtAsyncJobMapEntry> addAsyncJob(
DtAsyncJob* job);
980 const double topoDistance(
const DtPoint& start,
const DtPoint& end,
993 const std::string& type,
const DtPoint& startingLocation,
994 const double& searchRadius,
bool* dataAvailable = NULL);
997 std::vector<DtChord>& chords)
const;
999 void breakUpChord(
const DtChord& chord, std::vector<DtChord>& chords)
const;
1012 const std::map<DtString, DtString>& keyValueChanges,
1013 const DtVector& centerLocation,
double radius);
1023 const std::map<DtString, DtString>& keyValueChanges,
1024 const std::list<DtVector>& vertices,
double width);
1033 const std::map<DtString, DtString>& keyValueChanges,
1034 const std::list<DtVector>& vertices);
1057 virtual void dynamicTerrainFeaturesInArea(
1058 const DtVector& centerLocation,
double radius,
1059 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1060 const DtString& filterKey = DtString::nullString());
1074 virtual void dynamicTerrainFeaturesInArea(
1075 const std::list<DtVector>& vertices,
double width,
1076 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1077 const DtString& filterKey = DtString::nullString());
1090 virtual void dynamicTerrainFeaturesInArea(
1091 const std::list<DtVector>& vertices,
1092 std::list<DtRwDynamicTerrainInformation>& dynamicTerrainInfo,
bool* dataAvailable = NULL,
1093 const DtString& filterKey = DtString::nullString());
1111 bool useOriginalGeometry =
false);
1113 virtual void queryCurrentDynamicTerrainFeatures(
1116 bool useOriginalGeometry =
false);
1119 virtual void cacheInformationForTerrainArea(
1120 unsigned minLOD,
unsigned maxLOD,
const DtExtent& cacheArea,
1121 double& estimatedTime,
double& estimatedSize,
1122 std::vector<std::string>& elevationLayers,
1123 std::vector<std::string>& modelLayers,
1124 std::vector<std::string>& featureLayers)
const;
1128 virtual void cacheTerrainArea(
int requestId,
1129 unsigned minLOD,
unsigned maxLOD,
const DtExtent& cacheArea,
1133 virtual void cancelCacheTerrainArea(
int requestId);
1142 virtual bool oceanLayerPresent()
const;
1145 virtual void setOceanLayerPresent(
bool b);
1158 virtual bool nonPolygonalWaterHeight(
1160 double& height)
const;
1163 virtual void setNonPolygonalWaterHeight(
double d);
1168 virtual double defaultWaterDepth(
const DtVector& localLocation)
const;
1171 virtual void setDefaultWaterDepth(
double);
1176 virtual double defaultSurfaceElevation(
const DtVector& localLocation)
const;
1209 virtual double landAboveWaterMinimumSeparation()
const;
1212 virtual void setLandAboveWaterMinimumSeparation(
double);
1217 void insertNonPolyWaterIntoIntersectionList(
1229 const DtVector& localLocation,
const double height)
const;
1235 virtual bool nonPolygonalWaterIntersect(
1240 typedef std::map<DtString, DtGenericTerrainRecordCallbackListPtr >
1296 #define DtRegisterTerrainImplementationFunctionName "DtRegisterTerrainImplementation"
1303 #define DtDeregisterTerrainImplementationFunctionName "DtDeregisterTerrainImplementation"