VR-Forces 4.6.1 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 
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 class DtTaitBryan;
37 
39 typedef void (*DtCacheProgressCallbackFunction)(int requestId, int current, bool completed, const DtString& layerName, double elapsedTime, void* usr);
40 
41 namespace makArchives
42 {
43  class DtGenericTerrainRecord;
44 }
45 
46 namespace MAKVRinTerra
47 {
48  class DtProj;
49 }
50 
51 namespace makVrv
52 {
53  class DtDynamicTerrainGeometry;
54  class DtDynamicTerrainChange;
55  class DtDynamicTerrainFeature;
56  class DtDynamicTerrainChanges;
57 }
58 
63 {
64 public:
65 
67  {
68  public:
70  virtual void removeTerrainChange() = 0;
71  virtual void releaseOwnership() = 0;
72  };
73 
76 
78  DtDynamicTerrainRequestHandle(const boost::shared_ptr<RequestHandleImpl>&);
79 
83  void removeTerrainChange();
84 
87  void releaseOwnership();
88 
89 private:
90 
91  boost::shared_ptr<RequestHandleImpl> myImpl;
92 };
93 
98 {
99 public:
100 
102  {
103  public:
105  virtual void removeQuery() = 0;
106  virtual void releaseOwnership() = 0;
107  };
108 
111 
113  DtDynamicTerrainQueryHandle(const boost::shared_ptr<QueryHandleImpl>&);
114 
116  void removeQuery();
117 
120  void releaseOwnership();
121 
122 private:
123 
124  boost::shared_ptr<QueryHandleImpl> myImpl;
125 };
126 
127 typedef boost::function<void (const makVrv::DtDynamicTerrainFeature&)>
129 
133 {
134 public:
136  virtual ~DtTerrainGeometryHandle();
137 
139  virtual bool isDisabled() const = 0;
140 
143  virtual void disable() = 0;
144 
146  virtual void setAppearance(DtAppearance app) = 0;
147 
149  virtual void setPosition(const DtPoint& location, const DtDcm& orientation) = 0;
150 };
151 
156  : boost::noncopyable
157 {
158 public:
160  virtual ~DtTerrainImplementation();
161 
163  virtual MAKVRinTerra::DtFeatureDatabase& featureDatabase();
164  virtual const MAKVRinTerra::DtFeatureDatabase& featureDatabase() const;
165 
167  virtual MAKVRinTerra::DtFeatureContext& featureContext();
168  virtual const MAKVRinTerra::DtFeatureContext& featureContext() const;
169 
171  virtual void init();
172 
175  virtual void finishedLoading(const MAKVRinTerra::DtProj& proj);
176 
178  virtual bool loadTerrain(const makArchives::DtGenericTerrainRecord& rec) = 0;
179 
181  virtual void shutdown(bool block=true);
182 
183  virtual const Coordinate_System* coordinateSystem() const = 0;
184 
187  virtual double modelHeightDifferencesFromAppearances(int oldApp, int newApp) const;
188 
190  virtual bool createFromExtent(const Dt3dBoundingVolume&);
191 
194  virtual bool loadModel(const DtFilename&, const DtEntityType& t = DtEntityType());
195 
196  virtual DtTerrainInterfaceConfig& configurationOptions();
197  virtual const DtTerrainInterfaceConfig& configurationOptions() const;
198 
219  virtual bool chordIntersect(const DtChord& chord,
222  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
223  bool overrideBlockingAssert = false, int flags = 0) const = 0;
224 
245  virtual bool allIntersectsAlongChord(const DtChord& chord,
248  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
249  bool overrideBlockingAssert = false, int flags = 0) const = 0;
250 
265  virtual void preloadTerrainAreas(
266  const DtTerrainPagingGeometryList& preloadGeometry) {};
267 
269  virtual bool dataAvailable(const DtTerrainPagingGeometryList& geometry) { return true; }
270 
273  virtual const DtTerrainCapabilities* terrainCapabilities() const = 0;
274 
285  virtual void setAssertOnBlockingTerrainCalls(bool assertBlock);
286  virtual bool assertOnBlockingTerrainCalls() const;
288 
291  virtual void setWarnOnBlockingTerrainCalls(bool warnBlock);
292  virtual bool warnOnBlockingTerrainCalls() const;
294 
300  virtual void setIntersectDataLoadExpireTime(const double& expireTime) {};
301 
306  virtual void expireDataLoadRequestsBeforeTime(const double& currentTime) {};
307 
308  virtual void processTrianglesInArea(DtTriangleOutputInterface&, const DtTerrainProcessPolygonsBox&) const = 0;
309 
310  virtual void breakUpChords(const MAKVRinTerra::DtProj&, const DtChord& chord,
311  std::vector<DtChord>& chords);
312 
314  virtual bool hasFeatureContext() const;
315 
317  virtual DtTerrainGeometryHandle* createEntityGeometry(const DtFilename& file) { return 0; }
318 
324  virtual DtDynamicTerrainRequestHandle addDynamicTerrainChangeRequest(
325  double time,
327 
328  typedef boost::function<void (const makVrv::DtDynamicTerrainFeature&)>
330 
334  virtual DtDynamicTerrainQueryHandle queryDynamicTerrainFeatures(
335  const DtDynamicTerrainQueryCallback& callback,
336  makVrv::DtDynamicTerrainGeometry* geometry = 0,
337  bool useOriginalGeometry = false) {
339  };
340 
341  virtual void queryCurrentDynamicTerrainFeatures(
342  const DtDynamicTerrainQueryCallback& callback,
343  makVrv::DtDynamicTerrainGeometry* geometry = 0,
344  bool useOriginalGeometry = false) { };
345 
347  virtual void cacheInformationForTerrainArea(
348  unsigned minLOD, unsigned maxLOD, const DtExtent& cacheArea,
349  double& estimatedTime, double& estimatedSize,
350  std::vector<std::string>& elevationLayers,
351  std::vector<std::string>& modelLayers,
352  std::vector<std::string>& featureLayers) const;
353 
356  virtual void cacheTerrainArea(int requestId,
357  unsigned minLOD, unsigned maxLOD, const DtExtent& cacheArea,
358  DtCacheProgressCallbackFunction fcn = 0, void* usr = 0);
359 
361  virtual void cancelCacheTerrainArea(int requestId);
362 
363 protected:
365 
371 
372  boost::scoped_ptr<MAKVRinTerra::DtFeatureDatabase> myFeatureDatabase;
373  boost::scoped_ptr<MAKVRinTerra::DtFeatureContext> myFeatureContext;
374 };
375 

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)