![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00032 00033 #pragma once 00034 00035 #include "terrainInterface/terrainInterfaceDefines.h" 00036 #include <terrainInterface/terrainImplementation.h> 00037 #include <gdb/gdbNode.h> 00038 #include "terrainInterface/terrainPagingGeometry.h" 00039 00040 class DtTerrainImplementation; 00041 class DtTerrainImplementationDescriptor; 00042 class DtTerrainImplementationManager; 00043 class DtConsoleCommandManager; 00044 class DtConsoleCommand; 00045 class DtVectorNetwork; 00046 class DtGenericTerrainRecord; 00047 class DtTerrainCapabilities; 00048 00049 00050 00051 class DT_DLL_terrainInterface DtTerrainInterface 00052 { 00053 public: 00054 typedef std::map<std::string, std::string> TerrainSettings; 00055 00056 public: 00058 DtTerrainInterface(); 00059 00061 virtual ~DtTerrainInterface(); 00062 00066 virtual bool init(); 00067 00070 virtual void addTerrainImplementation(const DtString& implementationName, 00071 DtTerrainImplementationCreatorFcn creatorFcn); 00072 00074 virtual bool loadTerrain(const DtString& filename, const TerrainSettings& settings = TerrainSettings()); 00075 00076 virtual bool unloadTerrain(); 00077 virtual bool terrainIsLoaded(); 00080 virtual DtString loadedFilename() const; 00081 00082 virtual const Coordinate_System* coordinateSystem() const; 00083 virtual Coordinate_System* coordinateSystem(); 00084 00101 virtual double terrainHeightAboveSeaLevel(const DtPoint& databaseLocation, 00102 bool* dataAvailable = 0, bool overrideBlockingAssert = false) const; 00103 00127 virtual bool terrainHeightAndIntersection(const DtVector& localLocation, 00128 double& height, DtChordIntersectionRecord& record, 00129 DtIntersectionRecord::DtIntersectionType irtFlag = 00130 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00131 bool overrideBlockingAssert = false) const; 00132 00174 virtual bool closestIntersection(const DtVector& localLocation, 00175 DtPoint& intersectionPoint, bool* dataAvailable = 0, 00176 bool overrideBlockingAssert = false) const; 00177 00199 virtual bool closestIntersection(double lat, double lon, 00200 DtPoint& intersectionPoint, bool* dataAvailable = 0, 00201 bool overrideBlockingAssert = false) const; 00202 00227 virtual bool closestIntersection(const DtVector& localLocation, 00228 DtChordIntersectionRecord& record, 00229 DtIntersectionRecord::DtIntersectionType irtFlag = 00230 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00231 bool overrideBlockingAssert = false) const; 00232 00257 virtual bool closestIntersection(double lat, double lon, 00258 DtChordIntersectionRecord& record, 00259 DtIntersectionRecord::DtIntersectionType irtFlag = 00260 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00261 bool overrideBlockingAssert = false) const; 00262 00290 virtual bool closestIntersection(const std::list<DtVector>& localLocationList, 00291 DtChordIntersectRecordList& recordList, int& numIntersections, 00292 DtIntersectionRecord::DtIntersectionType irtFlag = 00293 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00294 bool overrideBlockingAssert = false) const; 00295 00323 virtual bool intersect(const DtChord& chord, DtPoint& intersectionPoint, 00324 double& intersectionTime, bool* dataAvailable = 0, 00325 bool overrideBlockingAssert = false) const; 00326 00353 virtual bool intersect(const DtChord& chord, 00354 DtChordIntersectionRecord& record, 00355 DtIntersectionRecord::DtIntersectionType irtFlag = 00356 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00357 bool overrideBlockingAssert = false) const; 00358 00382 virtual bool intersect(const DtSphere& sphere, 00383 DtSphereIntersectionRecord& record, 00384 DtIntersectionRecord::DtIntersectionType irtFlag = 00385 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00386 bool overrideBlockingAssert = false) const; 00387 00414 virtual bool allIntersectsAlongChord(const DtChord& chord, 00415 DtChordIntersectRecordList& intList, 00416 DtIntersectionRecord::DtIntersectionType irtFlag = 00417 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00418 bool overrideBlockingAssert = false) const; 00419 00451 virtual bool intersectList(const std::list<DtChord>& chordList, 00452 DtChordIntersectRecordList& recordList, int& numTerrainIntersections, 00453 int& numVectorNetworkIntersections, 00454 DtIntersectionRecord::DtIntersectionType irtFlag = 00455 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00456 bool overrideBlockingAssert = false) const; 00457 00459 virtual const DtVectorNetwork* vectorNetwork() const; 00460 00475 virtual void preloadTerrainAreas( 00476 const DtTerrainPagingGeometryList& preloadGeometry); 00477 00483 virtual const DtTerrainCapabilities* terrainCapabilities() const; 00484 00489 virtual bool intersectVectorNetwork(const DtChord& chord, 00490 DtVectorNetworkRecord* vectorRecord, 00491 DtVectorNetworkIntersectionRecord* vectorIntersectionRecord) const; 00492 00498 virtual bool intersectVectorNetwork(const DtVector& localLocation, 00499 DtVectorNetworkRecord* vectorRecord, 00500 DtVectorNetworkIntersectionRecord* vectorIntersectionRecord) const; 00501 00505 virtual bool addTerrainPassThroughLayer(const DtString& layerType); 00506 00516 virtual void setAssertOnBlockingTerrainCalls(bool assertBlock); 00517 virtual bool assertOnBlockingTerrainCalls() const; 00519 00524 virtual void setIntersectDataLoadExpireTime(const double& expireTime); 00525 virtual void expireDataLoadRequestsBeforeTime(const double& currentTime); 00526 00530 virtual void setDataPath(const std::string&); 00531 virtual std::string dataPath() const; 00532 00536 virtual void setUserDataPath(const std::string&); 00537 virtual std::string userDataPath() const; 00538 00546 virtual void trianglesInArea(DtTriangleCallbackFcn func, 00547 DtTriangleCallbackFinalizeFcn finalize, DtTerrainProcessPolygonsBox& box, void* usr) const; 00548 00549 static void setModelDefinitionFilePath(const DtString& fullFilePath); 00550 static DtString modelDefinitionFilePath(); 00551 00552 protected: 00553 DtTerrainImplementation* myTerrainImpl; 00554 00557 bool myTerrainIsLoaded; 00558 00559 DtTerrainImplementationManager* myTerrainImplManager; 00560 DtConsoleCommandManager* myConsoleCommandManager; 00561 std::list<DtConsoleCommand*> myCommandList; 00563 DtString myLoadedFilename; 00564 00565 TerrainSettings mySettings; 00566 00567 static DtString theModelDefinitionFilePath; 00568 static double theTerrainPagingMaxHeight; 00569 }; 00570 00571 #define DtRegisterTerrainImplementationFunctionName "DtRegisterTerrainImplementation" 00572 00575 typedef bool (*DtRegisterTerrainImplementationLibFcn)(DtTerrainInterface*);