VR-Forces 4.10 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) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
17 #include <geometry/chord.h>
24 #include "features/feature.h"
25 #include "features/featureSet.h"
28 #include <vlpi/appearance.h>
29 
30 #include <string>
31 #include <boost/noncopyable.hpp>
32 
35 class DtScenarioExplorer;
36 class DtString;
37 class Coordinate_System;
40 class DtTaitBryan;
43 class DtEntityType;
44 
46 typedef void (*DtCacheProgressCallbackFunction)(int requestId, int current, bool completed, double elapsedTime, void* usr);
47 
48 typedef void(*DtTerrainChangeNotificationCallbackFcn)(const DtExtent& spatExtent, void* userData);
49 
50 namespace makArchives
51 {
52  class DtGenericTerrainRecord;
53 }
54 
55 namespace MAKVRinTerra
56 {
57  class DtProj;
58 }
59 
60 namespace makVrv
61 {
62  class DtDynamicTerrainGeometry;
63  class DtDynamicTerrainChange;
64  class DtDynamicTerrainFeature;
65  class DtDynamicTerrainChanges;
66 }
67 
72 {
73 public:
74 
76  {
77  public:
79  virtual void removeTerrainChange() = 0;
80  virtual void releaseOwnership() = 0;
81  };
82 
85 
87  DtDynamicTerrainRequestHandle(const boost::shared_ptr<RequestHandleImpl>&);
88 
92  void removeTerrainChange();
93 
96  void releaseOwnership();
97 
98 private:
99 
100  boost::shared_ptr<RequestHandleImpl> myImpl;
101 };
102 
107 {
108 public:
109 
111  {
112  public:
114  virtual void removeQuery() = 0;
115  virtual void releaseOwnership() = 0;
116  };
117 
120 
122  DtDynamicTerrainQueryHandle(const boost::shared_ptr<QueryHandleImpl>&);
123 
125  void removeQuery();
126 
129  void releaseOwnership();
130 
131 private:
132 
133  boost::shared_ptr<QueryHandleImpl> myImpl;
134 };
135 
136 typedef boost::function<void (const makVrv::DtDynamicTerrainFeature&)>
138 
142 {
143 public:
145  virtual ~DtTerrainGeometryHandle();
146 
148  virtual bool isDisabled() const = 0;
149 
152  virtual void disable() = 0;
153 
155  virtual void setAppearance(DtAppearance app) = 0;
156 
158  virtual void setPosition(const DtPoint& location, const DtDcm& orientation) = 0;
159 };
160 
165  : boost::noncopyable
166 {
167 public:
169  virtual ~DtTerrainImplementation();
170 
172  virtual MAKVRinTerra::DtFeatureDatabase& featureDatabase();
173  virtual const MAKVRinTerra::DtFeatureDatabase& featureDatabase() const;
174 
176  virtual MAKVRinTerra::DtFeatureContext& featureContext();
177  virtual const MAKVRinTerra::DtFeatureContext& featureContext() const;
178 
180  virtual void init();
181 
184  virtual void finishedLoading(const MAKVRinTerra::DtProj& proj);
185 
187  virtual bool loadTerrain(const makArchives::DtGenericTerrainRecord& rec) = 0;
188 
190  virtual void clearCache();
191 
193  virtual void shutdown(bool block=true);
194 
195  virtual const Coordinate_System* coordinateSystem() const = 0;
196 
199  virtual double modelHeightDifferencesFromAppearances(int oldApp, int newApp) const;
200 
202  virtual bool createFromExtent(const Dt3dBoundingVolume&);
203 
206  virtual bool loadModel(const DtFilename&, const DtEntityType& t = DtEntityType());
207 
208  virtual DtTerrainInterfaceConfig& configurationOptions();
209  virtual const DtTerrainInterfaceConfig& configurationOptions() const;
210 
218  virtual bool chordIntersect(
219  DtTerrainIntersectStatus& status,
220  const DtChord& chord,
222  const DtTerrainIntersectOptions& options) const = 0;
223 
231  virtual bool allIntersectsAlongChord(DtTerrainIntersectStatus& status,
232  const DtChord& chord,
234  const DtTerrainIntersectOptions& options) const = 0;
235 
250  virtual void preloadTerrainAreas(
251  const DtTerrainPagingGeometryList& preloadGeometry) {};
252 
254  virtual bool dataAvailable(
255  const DtTerrainPagingGeometryList& geometry,
257 
260  virtual const DtTerrainCapabilities* terrainCapabilities() const = 0;
261 
272  virtual void setAssertOnBlockingTerrainCalls(bool assertBlock);
273  virtual bool assertOnBlockingTerrainCalls() const;
275 
278  virtual void setWarnOnBlockingTerrainCalls(bool warnBlock);
279  virtual bool warnOnBlockingTerrainCalls() const;
281 
287  virtual void setIntersectDataLoadExpireTime(const double& expireTime) {};
288 
293  virtual void expireDataLoadRequestsBeforeTime(const double& currentTime) {};
294 
295  virtual void processTrianglesInArea(DtTriangleOutputInterface&, const DtTerrainProcessPolygonsBox&) const = 0;
296 
299  virtual DtTerrainInformation* terrainInformation() { return NULL; };
300 
301  virtual void breakUpChords(const MAKVRinTerra::DtProj&, const DtChord& chord,
302  std::vector<DtChord>& chords);
303 
305  virtual bool hasFeatureContext() const;
306 
308  virtual DtTerrainGeometryHandle* createEntityGeometry(const DtFilename& file) { return 0; }
309 
311  virtual DtTerrainGeometryHandle* createEntityGeometry(const DtEntityType& file) { return 0; }
312 
314  virtual void loadVisuals(const DtScenarioExplorer&) {};
315 
322  double time,
324 
325  typedef boost::function<void (const makVrv::DtDynamicTerrainFeature&)>
327 
328  /*
329  virtual DtDynamicTerrainRequestHandle addDynamicTerrainCraterRequest(
330  double time,
331  makVrv::DtDynamicTerrainChange* command,
332  const std::map<DtString, DtString>& keyValueChanges,
333  const DtVector& centerLocation,
334  double radius) {
335  return DtDynamicTerrainRequestHandle(); }
336  */
337 
342  const DtDynamicTerrainQueryCallback& callback,
343  makVrv::DtDynamicTerrainGeometry* geometry = 0,
344  bool useOriginalGeometry = false) {
346  };
347 
349  const DtDynamicTerrainQueryCallback& callback,
350  makVrv::DtDynamicTerrainGeometry* geometry = 0,
351  bool useOriginalGeometry = false) { };
352 
355  virtual void cacheTerrainArea(int requestId,
356  unsigned minLOD, unsigned maxLOD, const DtExtent& cacheArea,
357  DtCacheProgressCallbackFunction fcn = 0, void* usr = 0);
358 
360  virtual void cancelCacheTerrainArea(int requestId);
361 
363  virtual void writeTerrainIndex(const DtString& name);
364 
366  virtual void addTerrainChangeNotificationCallback(DtTerrainChangeNotificationCallbackFcn fcn,
367  void* user);
368 
370  virtual void removeTerrainChangeNotificationCallback(DtTerrainChangeNotificationCallbackFcn fcn,
371  void* user);
372 
374  virtual void invokeTerrainChangeNotificationCallBacks();
375 
376 protected:
378 
384 
385  boost::scoped_ptr<MAKVRinTerra::DtFeatureDatabase> myFeatureDatabase;
386  boost::scoped_ptr<MAKVRinTerra::DtFeatureContext> myFeatureContext;
387 };
388 
boost::scoped_ptr< MAKVRinTerra::DtFeatureDatabase > myFeatureDatabase
Definition: terrainImplementation.h:385
boost::function< void(const makVrv::DtDynamicTerrainFeature &)> DtDynamicTerrainQueryCallback
Definition: terrainImplementation.h:137
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
Definition: stringKeyFactory.h:80
Class DtTerrainInterfaceConfig is a readable-writable class holding terrain interface configuration o...
Definition: terrainInterfaceConfig.h:32
This is the abstract base class for all terrain implementations.
Definition: terrainImplementation.h:164
boost::function< void(const makVrv::DtDynamicTerrainFeature &)> DtDynamicTerrainQueryCallback
Definition: terrainImplementation.h:326
Definition: terrainIntersectOptions.h:78
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords.
Definition: vrfChordIntersectRecordList.h:31
virtual DtTerrainGeometryHandle * createEntityGeometry(const DtFilename &file)
Create geometry in the terrain which represents the entity.
Definition: terrainImplementation.h:308
virtual void queryCurrentDynamicTerrainFeatures(const DtDynamicTerrainQueryCallback &callback, makVrv::DtDynamicTerrainGeometry *geometry=0, bool useOriginalGeometry=false)
Definition: terrainImplementation.h:348
DtGenericTerrainRecords allow the VR-Forces terrainInterface library to instantiate and configure the...
Definition: DtGenericTerrainRecord.h:34
DtTerrainImplementation *(* DtCreatorFcn)(DtConsoleCommandManager *)
Definition: stringKeyFactory.h:84
std::list< std::pair< DtPagingMetaDataPtr, DtTerrainPagingGeometryPtr > > DtTerrainPagingGeometryList
Definition: terrainPagingGeometry.h:104
Represents (possibly infinite) area of space.
Definition: DtDynamicTerrainGeometry.h:20
class DtScenarioExplorer:
Definition: scenarioExplorer.h:26
Allows manipulating a terrain object.
Definition: terrainImplementation.h:141
bool myAssertOnBlockingTerrainCalls
Determines if an exception should be thrown if a blocking terrain call is made.
Definition: terrainImplementation.h:382
DtTerrainInterfaceConfig myConfig
Definition: terrainImplementation.h:377
Definition: terrainImplementation.h:75
This is a class which maintains a list of string command names and the callback functions that are to...
Definition: consoleCommandManager.h:48
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
boost::shared_ptr< RequestHandleImpl > myImpl
Definition: terrainImplementation.h:100
bool myWarnOnBlockingTerrainCalls
Definition: terrainImplementation.h:383
DtTerrainIntersectOptions Passed to terrain intersect functions to modify how intersect acts...
Definition: terrainIntersectOptions.h:15
virtual bool dataAvailable(const DtTerrainPagingGeometryList &geometry, DtTerrainIntersectOptions::Fidelity=DtTerrainIntersectOptions::MAX_FIDELITY)
Returns true if all of the terrain which intersects the geometry list is paged in.
Definition: terrainImplementation.h:254
Definition: coordSystem.h:54
Represents some coordinate system.
Definition: proj.h:44
void(* DtTerrainChangeNotificationCallbackFcn)(const DtExtent &spatExtent, void *userData)
Definition: terrainImplementation.h:48
#define DT_DLL_terrainInterface
This file is used to determine how to build.
Definition: terrainInterfaceDefines.h:25
Factory templates DtStringKeyFactory and DtStringKeyFactoryWithParam.
virtual DtTerrainGeometryHandle * createEntityGeometry(const DtEntityType &file)
Create geometry in the terrain which represents the entity by the given type, looking up visuals...
Definition: terrainImplementation.h:311
This class holds parameters which define the capabilities of the current terrain. ...
Definition: terrainCapabilities.h:25
virtual void preloadTerrainAreas(const DtTerrainPagingGeometryList &preloadGeometry)
Specifies a list of terrain areas that should be preloaded by the terrain implementation, in the case of a paging or streaming terrain source.
Definition: terrainImplementation.h:250
RequestHandleImpl()
Definition: terrainImplementation.h:78
Definition: featureContext.h:51
DtTerrainImplementationFactory::DtCreatorFcn DtTerrainImplementationCreatorFcn
Definition: terrainImplementation.h:392
virtual DtTerrainInformation * terrainInformation()
Return the terrain information pointer of the terrain implementation (null if none exist) this is a d...
Definition: terrainImplementation.h:299
virtual DtDynamicTerrainRequestHandle addDynamicTerrainChangeRequest(double time, makVrv::DtDynamicTerrainChange *command)
Add a dynamic terrain change request to the system.
Definition: terrainImplementation.h:321
Definition: terrainImplementation.h:110
boost::shared_ptr< QueryHandleImpl > myImpl
Definition: terrainImplementation.h:133
Definition: vrfChordIntersectionRecord.h:19
virtual void loadVisuals(const DtScenarioExplorer &)
Tells the terrain implementation (if it cares) to load visuals to support terrain/model usage...
Definition: terrainImplementation.h:314
A DtChord is a finite line segment in 3-space, represented by two points.
Fidelity
Allows the system to use differently fidelity data for intersecting against.
Definition: terrainIntersectOptions.h:76
virtual void setIntersectDataLoadExpireTime(const double &expireTime)
No-op.
Definition: terrainImplementation.h:287
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtStringKeyFactoryWithParam< DtTerrainImplementation, DtConsoleCommandManager * > DtTerrainImplementationFactory
Definition: terrainImplementation.h:390
Command which can be given to the dynamic terrain system to perform some change.
Definition: DtDynamicTerrainChange.h:42
void(* DtCacheProgressCallbackFunction)(int requestId, int current, bool completed, double elapsedTime, void *usr)
Callback for terrain caching.
Definition: terrainImplementation.h:46
Resource handle for a query which has been added to the system.
Definition: terrainImplementation.h:106
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea.
Definition: terrainProcessPolygonsBox.h:113
Definition: featureContext.h:223
Resource handle for a dynamic terrain change request which has been added to the system.
Definition: terrainImplementation.h:71
boost::scoped_ptr< MAKVRinTerra::DtFeatureContext > myFeatureContext
Definition: terrainImplementation.h:386
virtual DtDynamicTerrainQueryHandle queryDynamicTerrainFeatures(const DtDynamicTerrainQueryCallback &callback, makVrv::DtDynamicTerrainGeometry *geometry=0, bool useOriginalGeometry=false)
Install a query which will call the supplied callback on matching dynamic terrain features as they ar...
Definition: terrainImplementation.h:341
virtual void expireDataLoadRequestsBeforeTime(const double &currentTime)
No-op.
Definition: terrainImplementation.h:293
TODO Put this in the makTerrainLib.
Definition: terrainInformation.h:17
Definition: point.h:34
DtTerrainIntersectStatus Contains information about result of terrain intersection.
Definition: terrainIntersectStatus.h:16
QueryHandleImpl()
Definition: terrainImplementation.h:113
Represents an area query which can be used to extract triangles from DtTerrainInterface.
Definition: terrainProcessPolygonsBox.h:39

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)