![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00010 00011 #pragma once 00012 00013 #include "terrainInterface/terrainInterfaceDefines.h" 00014 #include <geometry/intersectionRecord.h> 00015 #include <geometry/chord.h> 00016 #include <gdb/vecNetwrkRecord.h> 00017 #include <gdb/vecNwrkIntRec.h> 00018 #include <geometry/intRecLst.h> 00019 #include "tdbutil/stringKeyFactory.h" 00020 #include "terrainInterface/terrainPagingGeometry.h" 00021 #include "terrainInterface/terrainProcessPolygonsBox.h" 00022 00023 class DtChordIntersectionRecord; 00024 class DtSphereIntersectionRecord; 00025 class DtString; 00026 class Coordinate_System; 00027 class DtVectorNetwork; 00028 class DtConsoleCommandManager; 00029 class DtTerrainCapabilities; 00030 00031 namespace makArchives 00032 { 00033 class DtGenericTerrainRecord; 00034 } 00035 00039 class DT_DLL_terrainInterface DtTerrainImplementation 00040 { 00041 public: 00042 typedef std::map<std::string, std::string> TerrainSettings; 00043 00044 private: 00046 00047 DtTerrainImplementation(); 00048 DtTerrainImplementation(const DtTerrainImplementation& orig); 00049 DtTerrainImplementation& operator=(const DtTerrainImplementation& orig); 00051 public: 00052 DtTerrainImplementation(DtConsoleCommandManager* cmdManager); 00053 virtual ~DtTerrainImplementation(); 00054 00057 virtual bool loadTerrain(const makArchives::DtGenericTerrainRecord& rec, 00058 const TerrainSettings& settings = TerrainSettings()) = 0; 00059 00060 virtual const Coordinate_System* coordinateSystem() const = 0; 00061 00081 virtual bool chordIntersect(const DtChord& chord, 00082 DtChordIntersectionRecord& record, 00083 DtIntersectionRecord::DtIntersectionType irtFlag = 00084 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00085 bool overrideBlockingAssert = false) const = 0; 00086 00106 virtual bool allIntersectsAlongChord(const DtChord& chord, 00107 DtChordIntersectRecordList& intList, 00108 DtIntersectionRecord::DtIntersectionType irtFlag = 00109 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00110 bool overrideBlockingAssert = false) const = 0; 00111 00131 virtual bool sphereIntersect(const DtSphere& sphere, 00132 DtSphereIntersectionRecord& record, 00133 DtIntersectionRecord::DtIntersectionType irtFlag = 00134 DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0, 00135 bool overrideBlockingAssert = false) const = 0; 00136 00142 virtual bool intersectVectorNetwork(const DtChord& chord, 00143 DtVectorNetworkRecord* vectorRecord, 00144 DtVectorNetworkIntersectionRecord* vectorIntersectionRecord) const = 0; 00145 00146 virtual const DtVectorNetwork* vectorNetwork() const = 0; 00147 00162 virtual void preloadTerrainAreas( 00163 const DtTerrainPagingGeometryList& preloadGeometry) {}; 00164 00167 virtual const DtTerrainCapabilities* terrainCapabilities() const = 0; 00168 00179 virtual void setAssertOnBlockingTerrainCalls(bool assertBlock); 00180 virtual bool assertOnBlockingTerrainCalls() const; 00182 00188 virtual void setIntersectDataLoadExpireTime(const double& expireTime) {}; 00189 00194 virtual void expireDataLoadRequestsBeforeTime(const double& currentTime) {}; 00195 00196 virtual void processTrianglesInArea(DtTriangleCallbackFcn func, DtTriangleCallbackFinalizeFcn finalize, DtTerrainProcessPolygonsBox& box, void* usr) const; 00197 00198 protected: 00202 bool myAssertOnBlockingTerrainCalls; 00203 00205 TerrainSettings mySettings; 00206 }; 00207 00208 typedef DtStringKeyFactoryWithParam<DtTerrainImplementation, 00209 DtConsoleCommandManager*> DtTerrainImplementationFactory; 00210 typedef DtTerrainImplementationFactory::DtCreatorFcn 00211 DtTerrainImplementationCreatorFcn;