VR-Forces 4.0.4 Class Documentation
include/terrainInterface/terrainInterface.h
Go to the documentation of this file.
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*);

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)