VR-Forces 4.1.1 Class Documentation
terrainInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 
10 
11 #pragma once
12 
16 
17 #include "vrfutil/asyncJobServer.h"
19 
20 #include <boost/scoped_ptr.hpp>
21 
22 #include <features/feature.h>
24 #include <features/pathFeature.h>
25 #include <features/pathFinder.h>
29 
31 class DtTerrainImplementationDescriptor;
34 class DtConsoleCommand;
35 class DtGenericTerrainRecord;
38 
63 {
64 public:
65  typedef std::map<std::string, std::string> TerrainSettings;
67 
68 public:
71 
73  virtual ~DtTerrainInterface();
74 
78  virtual bool init();
79 
81  virtual void tick();
82 
85  virtual void addTerrainImplementation(const DtString& implementationName,
87 
89  virtual bool loadTerrain(const DtString& filename, const TerrainSettings& settings = TerrainSettings());
90 
92  virtual bool loadTerrain(const DtString& filename,
93  MAKVRinTerra::DtFeatureLoader& featureLoader, const TerrainSettings& settings = TerrainSettings());
94 
95  virtual bool unloadTerrain();
96  virtual bool terrainIsLoaded();
99  virtual DtString loadedFilename() const;
100 
101  virtual const Coordinate_System* coordinateSystem() const;
102  virtual Coordinate_System* coordinateSystem();
103 
106  virtual std::auto_ptr<MAKVRinTerra::DtObstacleFeatureSet> obstacles(const std::string& type) const;
107 
108  virtual std::auto_ptr<MAKVRinTerra::DtPathFeatureSet> paths(const std::string& type) const;
109 
110  virtual std::auto_ptr<MAKVRinTerra::DtFeatureSet> allFeatures() const;
111 
128  virtual double terrainHeightAboveSeaLevel(const DtPoint& databaseLocation,
129  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
130 
154  virtual bool terrainHeightAndIntersection(const DtVector& localLocation,
155  double& height, DtChordIntersectionRecord& record,
157  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
158  bool overrideBlockingAssert = false) const;
159 
201  virtual bool closestIntersection(const DtVector& localLocation,
202  DtPoint& intersectionPoint, bool* dataAvailable = 0,
203  bool overrideBlockingAssert = false) const;
204 
226  virtual bool closestIntersection(double lat, double lon,
227  DtPoint& intersectionPoint, bool* dataAvailable = 0,
228  bool overrideBlockingAssert = false) const;
229 
254  virtual bool closestIntersection(const DtVector& localLocation,
257  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
258  bool overrideBlockingAssert = false) const;
259 
284  virtual bool closestIntersection(double lat, double lon,
287  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
288  bool overrideBlockingAssert = false) const;
289 
317  virtual bool closestIntersection(const std::list<DtVector>& localLocationList,
318  DtChordIntersectRecordList& recordList, int& numIntersections,
320  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
321  bool overrideBlockingAssert = false) const;
322 
350  virtual bool intersect(const DtChord& chord, DtPoint& intersectionPoint,
351  double& intersectionTime, bool* dataAvailable = 0,
352  bool overrideBlockingAssert = false) const;
353 
380  virtual bool intersect(const DtChord& chord,
383  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
384  bool overrideBlockingAssert = false) const;
385 
409  virtual bool intersect(const DtSphere& sphere,
412  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
413  bool overrideBlockingAssert = false) const;
414 
441  virtual bool allIntersectsAlongChord(const DtChord& chord,
444  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
445  bool overrideBlockingAssert = false) const;
446 
478  virtual bool intersectList(const std::list<DtChord>& chordList,
479  DtChordIntersectRecordList& recordList, int& numTerrainIntersections,
481  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
482  bool overrideBlockingAssert = false) const;
483 
498  virtual void preloadTerrainAreas(
499  const DtTerrainPagingGeometryList& preloadGeometry);
500 
506  virtual const DtTerrainCapabilities* terrainCapabilities() const;
507 
511  virtual bool addTerrainPassThroughLayer(const DtString& layerType);
512 
522  virtual void setAssertOnBlockingTerrainCalls(bool assertBlock);
523  virtual bool assertOnBlockingTerrainCalls() const;
525 
530  virtual void setIntersectDataLoadExpireTime(const double& expireTime);
531  virtual void expireDataLoadRequestsBeforeTime(const double& currentTime);
532 
536  virtual void setDataPath(const std::string&);
537  virtual std::string dataPath() const;
538 
542  virtual void setUserDataPath(const std::string&);
543  virtual std::string userDataPath() const;
544 
552  virtual void trianglesInArea(DtTriangleCallbackFcn func,
553  DtTriangleCallbackFinalizeFcn finalize, DtTerrainProcessPolygonsBox& box, void* usr) const;
554 
555  static void setModelDefinitionFilePath(const DtString& fullFilePath);
556  static DtString modelDefinitionFilePath();
557 
561  virtual DtAsyncJobToken* makePathAsync(const DtPoint& localStart,
562  const DtPoint& localDestination, const std::string& type,
563  const double& maxSearchRadius, const double& startProximityThreshold,
564  DtPathFinder::DtWeightFactorsListPtr weightFactors =
566 
569  virtual bool onPathFeature(
570  const DtPoint& location, const DtString& type, double buffer = 0.5);
571 
573  MAKVRinTerra::DtProj::CPtr localProj() const;
574 
575  MAKVRinTerra::DtFeaturesDebugger& debugger() const;
576 
577  MAKVRinTerra::DtQuery findQuery(const std::string& name) const;
578 
579  const double topoDistance(const DtPoint& start, const DtPoint& end,
580  const MAKVRinTerra::DtProj& localProj);
581 
591  MAKVRinTerra::DtClosestPathFeatureFinder closestFeatureOnNetwork(
592  const std::string& type, const DtPoint& startingLocation,
593  const double& searchRadius, bool* dataAvailable = NULL);
594 
595  void breakUpChord(const MAKVRinTerra::DtProj&, const DtChord& chord,
596  std::vector<DtChord>& chords) const;
597 
598  void breakUpChord(const DtChord& chord, std::vector<DtChord>& chords) const;
599 
600  virtual boost::shared_ptr<DtTerrainInterfaceConfig> config() const;
601 
602 protected:
603 
616  virtual DtPathFinder::Path makePath(
617  const DtPoint& localStart, const DtPoint& localDestination,
618  const std::string& type, const double& maxSearchRadius,
619  const double& startProximityThreshold,
620  boost::function<bool ()> cancelCheck,
621  DtPathFinder::ReturnCode& result,
622  DtPathFinder::DtWeightFactorsListPtr weightFactors =
624 
625  virtual void loadConfigurationFile(const DtFilename& filename);
626 
627 protected:
628 
630 
634 
637  std::list<DtConsoleCommand*> myCommandList;
640 
642 
645 
646  boost::scoped_ptr<MAKVRinTerra::DtFeatureContext> myFeatureContext;
647 
649 
652 
653  boost::shared_ptr<DtTerrainInterfaceConfig> myConfig;
654  DtFilename myConfigFilename;
655 };
656 
657 #define DtRegisterTerrainImplementationFunctionName "DtRegisterTerrainImplementation"
658 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)