VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
terrainImplementation.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
15 #include <geometry/chord.h>
22 #include "features/feature.h"
23 #include "features/featureSet.h"
26 
27 #include <string>
28 #include <boost/noncopyable.hpp>
29 
32 class DtString;
33 class Coordinate_System;
36 
38 typedef void (*DtCacheProgressCallbackFunction)(int requestId, int mapNodeId, int current, const DtString& layerName, double elapsedTime, void* usr);
39 
40 namespace makArchives
41 {
42  class DtGenericTerrainRecord;
43 }
44 
45 namespace MAKVRinTerra
46 {
47  class DtProj;
48 }
49 
50 namespace makVrv
51 {
52  class DtDynamicTerrainGeometry;
53  class DtDynamicTerrainChange;
54  class DtDynamicTerrainFeature;
55  class DtDynamicTerrainChanges;
56 }
57 
62 {
63 public:
64 
66  {
67  public:
69  virtual void removeTerrainChange() = 0;
70  virtual void releaseOwnership() = 0;
71  };
72 
75 
77  DtDynamicTerrainRequestHandle(const boost::shared_ptr<RequestHandleImpl>&);
78 
82  void removeTerrainChange();
83 
86  void releaseOwnership();
87 
88 private:
89 
90  boost::shared_ptr<RequestHandleImpl> myImpl;
91 };
92 
97 {
98 public:
99 
101  {
102  public:
104  virtual void removeQuery() = 0;
105  virtual void releaseOwnership() = 0;
106  };
107 
110 
112  DtDynamicTerrainQueryHandle(const boost::shared_ptr<QueryHandleImpl>&);
113 
115  void removeQuery();
116 
119  void releaseOwnership();
120 
121 private:
122 
123  boost::shared_ptr<QueryHandleImpl> myImpl;
124 };
125 
126 typedef boost::function<void (const makVrv::DtDynamicTerrainFeature&)>
128 
133  : boost::noncopyable
134 {
135 public:
137  virtual ~DtTerrainImplementation();
138 
140  virtual MAKVRinTerra::DtFeatureDatabase& featureDatabase();
141  virtual const MAKVRinTerra::DtFeatureDatabase& featureDatabase() const;
142 
144  virtual MAKVRinTerra::DtFeatureContext& featureContext();
145  virtual const MAKVRinTerra::DtFeatureContext& featureContext() const;
146 
148  virtual void init();
149 
152  virtual void finishedLoading(const MAKVRinTerra::DtProj& proj);
153 
155  virtual bool loadTerrain(const makArchives::DtGenericTerrainRecord& rec) = 0;
156 
158  virtual void shutdown(bool block=true);
159 
160  virtual const Coordinate_System* coordinateSystem() const = 0;
161 
164  virtual double modelHeightDifferencesFromAppearances(int oldApp, int newApp) const;
165 
167  virtual bool createFromExtent(const Dt3dBoundingVolume&);
168 
171  virtual bool loadModel(const DtFilename&, const DtEntityType& t = DtEntityType());
172 
173  virtual DtTerrainInterfaceConfig& configurationOptions();
174  virtual const DtTerrainInterfaceConfig& configurationOptions() const;
175 
196  virtual bool chordIntersect(const DtChord& chord,
199  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
200  bool overrideBlockingAssert = false, int flags = 0) const = 0;
201 
222  virtual bool allIntersectsAlongChord(const DtChord& chord,
225  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
226  bool overrideBlockingAssert = false, int flags = 0) const = 0;
227 
242  virtual void preloadTerrainAreas(
243  const DtTerrainPagingGeometryList& preloadGeometry) {};
244 
247  virtual const DtTerrainCapabilities* terrainCapabilities() const = 0;
248 
259  virtual void setAssertOnBlockingTerrainCalls(bool assertBlock);
260  virtual bool assertOnBlockingTerrainCalls() const;
262 
265  virtual void setWarnOnBlockingTerrainCalls(bool warnBlock);
266  virtual bool warnOnBlockingTerrainCalls() const;
268 
274  virtual void setIntersectDataLoadExpireTime(const double& expireTime) {};
275 
280  virtual void expireDataLoadRequestsBeforeTime(const double& currentTime) {};
281 
282  virtual void processTrianglesInArea(DtTriangleCallbackFcn func, DtTriangleCallbackFinalizeFcn finalize, DtTerrainProcessPolygonsBox& box, void* usr) const;
283 
284  virtual void breakUpChords(const MAKVRinTerra::DtProj&, const DtChord& chord,
285  std::vector<DtChord>& chords);
286 
288  virtual bool hasFeatureContext() const;
289 
295  virtual DtDynamicTerrainRequestHandle addDynamicTerrainChangeRequest(
296  double time,
298 
299  typedef boost::function<void (const makVrv::DtDynamicTerrainFeature&)>
301 
305  virtual DtDynamicTerrainQueryHandle queryDynamicTerrainFeatures(
306  const DtDynamicTerrainQueryCallback& callback,
308 
309  virtual void queryCurrentDynamicTerrainFeatures(
310  const DtDynamicTerrainQueryCallback& callback,
311  makVrv::DtDynamicTerrainGeometry* geometry = 0) { };
312 
314  virtual void cacheInformationForTerrainArea(int requestId, int lowestLOD, int highestLOD, const DtExtent& cacheArea,
315  double& estimatedTime, double& estimatedSize, std::vector<std::string>& elevationLayers, std::vector<std::string>& modelLayers) const = 0;
316 
319  virtual void cacheTerrainArea(int requestId, int lowestLOD, int highestLOD, const DtExtent& cacheArea, DtCacheProgressCallbackFunction fcn = 0, void* usr = 0) = 0;
320 
322  virtual void cancelCacheTerrainArea(int requestId) = 0;
323 
324 protected:
326 
332 
333  boost::scoped_ptr<MAKVRinTerra::DtFeatureDatabase> myFeatureDatabase;
334  boost::scoped_ptr<MAKVRinTerra::DtFeatureContext> myFeatureContext;
335 };
336 

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)