VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 
16 #include <geometry/chord.h>
23 #include "features/feature.h"
24 #include "features/featureSet.h"
27 
28 #include <string>
29 #include <boost/noncopyable.hpp>
30 
33 class DtString;
34 class Coordinate_System;
37 class DtTaitBryan;
40 
42 typedef void (*DtCacheProgressCallbackFunction)(int requestId, int current, bool completed, const DtString& layerName, double elapsedTime, void* usr);
43 
44 namespace makArchives
45 {
46  class DtGenericTerrainRecord;
47 }
48 
49 namespace MAKVRinTerra
50 {
51  class DtProj;
52 }
53 
54 namespace makVrv
55 {
56  class DtDynamicTerrainGeometry;
57  class DtDynamicTerrainChange;
58  class DtDynamicTerrainFeature;
59  class DtDynamicTerrainChanges;
60 }
61 
66 {
67 public:
68 
70  {
71  public:
73  virtual void removeTerrainChange() = 0;
74  virtual void releaseOwnership() = 0;
75  };
76 
79 
81  DtDynamicTerrainRequestHandle(const boost::shared_ptr<RequestHandleImpl>&);
82 
86  void removeTerrainChange();
87 
90  void releaseOwnership();
91 
92 private:
93 
94  boost::shared_ptr<RequestHandleImpl> myImpl;
95 };
96 
101 {
102 public:
103 
105  {
106  public:
108  virtual void removeQuery() = 0;
109  virtual void releaseOwnership() = 0;
110  };
111 
114 
116  DtDynamicTerrainQueryHandle(const boost::shared_ptr<QueryHandleImpl>&);
117 
119  void removeQuery();
120 
123  void releaseOwnership();
124 
125 private:
126 
127  boost::shared_ptr<QueryHandleImpl> myImpl;
128 };
129 
130 typedef boost::function<void (const makVrv::DtDynamicTerrainFeature&)>
132 
136 {
137 public:
139  virtual ~DtTerrainGeometryHandle();
140 
142  virtual bool isDisabled() const = 0;
143 
146  virtual void disable() = 0;
147 
149  virtual void setAppearance(DtAppearance app) = 0;
150 
152  virtual void setPosition(const DtPoint& location, const DtDcm& orientation) = 0;
153 };
154 
159  : boost::noncopyable
160 {
161 public:
163  virtual ~DtTerrainImplementation();
164 
166  virtual MAKVRinTerra::DtFeatureDatabase& featureDatabase();
167  virtual const MAKVRinTerra::DtFeatureDatabase& featureDatabase() const;
168 
170  virtual MAKVRinTerra::DtFeatureContext& featureContext();
171  virtual const MAKVRinTerra::DtFeatureContext& featureContext() const;
172 
174  virtual void init();
175 
178  virtual void finishedLoading(const MAKVRinTerra::DtProj& proj);
179 
181  virtual bool loadTerrain(const makArchives::DtGenericTerrainRecord& rec) = 0;
182 
184  virtual void shutdown(bool block=true);
185 
186  virtual const Coordinate_System* coordinateSystem() const = 0;
187 
190  virtual double modelHeightDifferencesFromAppearances(int oldApp, int newApp) const;
191 
193  virtual bool createFromExtent(const Dt3dBoundingVolume&);
194 
197  virtual bool loadModel(const DtFilename&, const DtEntityType& t = DtEntityType());
198 
199  virtual DtTerrainInterfaceConfig& configurationOptions();
200  virtual const DtTerrainInterfaceConfig& configurationOptions() const;
201 
209  virtual bool chordIntersect(
210  DtTerrainIntersectStatus& status,
211  const DtChord& chord,
213  const DtTerrainIntersectOptions& options) const = 0;
214 
222  virtual bool allIntersectsAlongChord(DtTerrainIntersectStatus& status,
223  const DtChord& chord,
225  const DtTerrainIntersectOptions& options) const = 0;
226 
241  virtual void preloadTerrainAreas(
242  const DtTerrainPagingGeometryList& preloadGeometry) {};
243 
245  virtual bool dataAvailable(
246  const DtTerrainPagingGeometryList& geometry,
248 
251  virtual const DtTerrainCapabilities* terrainCapabilities() const = 0;
252 
263  virtual void setAssertOnBlockingTerrainCalls(bool assertBlock);
264  virtual bool assertOnBlockingTerrainCalls() const;
266 
269  virtual void setWarnOnBlockingTerrainCalls(bool warnBlock);
270  virtual bool warnOnBlockingTerrainCalls() const;
272 
278  virtual void setIntersectDataLoadExpireTime(const double& expireTime) {};
279 
284  virtual void expireDataLoadRequestsBeforeTime(const double& currentTime) {};
285 
286  virtual void processTrianglesInArea(DtTriangleOutputInterface&, const DtTerrainProcessPolygonsBox&) const = 0;
287 
288  virtual void breakUpChords(const MAKVRinTerra::DtProj&, const DtChord& chord,
289  std::vector<DtChord>& chords);
290 
292  virtual bool hasFeatureContext() const;
293 
295  virtual DtTerrainGeometryHandle* createEntityGeometry(const DtFilename& file) { return 0; }
296 
302  virtual DtDynamicTerrainRequestHandle addDynamicTerrainChangeRequest(
303  double time,
305 
306  typedef boost::function<void (const makVrv::DtDynamicTerrainFeature&)>
308 
312  virtual DtDynamicTerrainQueryHandle queryDynamicTerrainFeatures(
313  const DtDynamicTerrainQueryCallback& callback,
314  makVrv::DtDynamicTerrainGeometry* geometry = 0,
315  bool useOriginalGeometry = false) {
317  };
318 
319  virtual void queryCurrentDynamicTerrainFeatures(
320  const DtDynamicTerrainQueryCallback& callback,
321  makVrv::DtDynamicTerrainGeometry* geometry = 0,
322  bool useOriginalGeometry = false) { };
323 
325  virtual void cacheInformationForTerrainArea(
326  unsigned minLOD, unsigned maxLOD, const DtExtent& cacheArea,
327  double& estimatedTime, double& estimatedSize,
328  std::vector<std::string>& elevationLayers,
329  std::vector<std::string>& modelLayers,
330  std::vector<std::string>& featureLayers) const;
331 
334  virtual void cacheTerrainArea(int requestId,
335  unsigned minLOD, unsigned maxLOD, const DtExtent& cacheArea,
336  DtCacheProgressCallbackFunction fcn = 0, void* usr = 0);
337 
339  virtual void cancelCacheTerrainArea(int requestId);
340 
342  virtual void writeTerrainIndex(const DtString& name);
343 
344 protected:
346 
352 
353  boost::scoped_ptr<MAKVRinTerra::DtFeatureDatabase> myFeatureDatabase;
354  boost::scoped_ptr<MAKVRinTerra::DtFeatureContext> myFeatureContext;
355 };
356 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)