VR-Vantage API Documentation
DtTerrain.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
14 #include <vrvCore/DtForest.h>
17 
20 
21 #include <boost/signal.hpp>
22 #include <boost/shared_ptr.hpp>
23 
24 #include <string>
25 #include <map>
26 #include <list>
27 #include <vector>
28 
29 namespace makArchives
30 {
31  class DtFeatureLayerRecord;
32  class DtOceanLayerRecord;
33  class DtTerrainPatchRecord;
34 }
35 
36 namespace makVrv
37 {
38  class DtDe;
39  class DtFeature;
40  class DtFeatureLayer;
41  class DtModelAgent;
42  class DtOceanLayer;
43  class DtProp;
44  class DtTerrainPatch;
45  class DtTerrainPatchObjectAgent;
46  class DtTerrainPatchObject;
47  class DtTerrainSignaler;
48 
52  {
53 
54  public:
55 
56  typedef std::list<DtTerrainPatch*> TerrainPatches;
57  typedef std::list<DtFeatureLayer*> FeatureLayers;
58  typedef std::list<DtOceanLayer*> OceanLayers;
59 
61  typedef std::map<int, makArchives::DtTerrainOperationRecord> TerrainOperationsMap;
62 
64  DtTerrain(DtDe& de, DtAgentManagerInterface& sceneManagerInterface);
65 
67  ~DtTerrain();
68 
70  void clear();
71 
73 
74 
78  bool globalScaleTerrain() const;
79 
83  void updateGlobalScaleTerrain();
84 
86  virtual void getRecord(makArchives::DtTerrainRecord& rec);
87 
89  virtual void setFromRecord(const makArchives::DtTerrainRecord& rec);
90 
92 
94 
95 
100  virtual DtTerrainPatch& addTerrainPatch(const makArchives::DtTerrainPatchRecord& rec);
101 
106  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName);
107 
109  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
110 
112  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
113 
116  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName);
117 
120  const TerrainPatches& terrainPatches() const ;
121 
124  TerrainPatches& terrainPatches();
125 
127 
128 
130 
131  virtual const TerrainOperationsMap& terrainOperationsMap() const;
133 
135 
136 
137 
140  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
143 
148  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
151 
153  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
154 
156  virtual const FeatureLayers& featureLayers() const;
157 
159  virtual FeatureLayers& featureLayers();
160 
162  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
163 
165 
167 
168 
171  virtual DtOceanLayer& addOceanLayer( const makArchives::DtOceanLayerRecord& rec );
172 
177  virtual DtOceanLayer& addOceanLayer( const std::string& layerName );
178 
180  virtual void removeOceanLayer( const std::string& layerName );
181 
183  virtual const OceanLayers& oceanLayers() const;
184 
186  virtual OceanLayers& oceanLayers();
187 
189  virtual DtOceanLayer* findOceanLayer( const std::string& layerName );
190 
193  virtual void onOceanNodesExtracted( DtTerrainPatchObject& patchObject );
195 
197 
198 
200  std::string generatePropName(const std::string& propType);
201 
203 
205 
206 
210  virtual DtForest& forest();
211 
213 
214  bool isPropNameUsed(const std::string& propName) const;
215 
219  virtual bool getTerrainIntersection(double x, double y, double z,
220  double upX, double upY, double upZ, double& retX, double& retY,
221  double& retZ );
222 
226  virtual void clearElevationCache();
228 
230 
231 
234  virtual bool exportTerrainAndProps(const std::string&);
235 
237 
241  virtual const std::string* findOptionalParameter(const std::string& name) const;
242 
244  virtual void setOptionalParameter(const std::string& name, const std::string& value);
245 
248  virtual void setOptionalParameters(const makArchives::DtTerrainRecord::OptionalParameterMap&);
249 
251  virtual void removeOptionalParameter(const std::string& name);
252 
254  const makArchives::DtTerrainRecord::OptionalParameterMap& optionalParameters() const;
255 
256  protected:
257 
259  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
260  const makArchives::DtTerrainRecord& terrainRec);
261 
263  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
264 
266  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
267 
269  void removeTerrainOperationRecord(int id);
270 
272  void clearTerrainOperations();
273 
274  protected:
275  typedef std::map<std::string,int> PropNameMap;
276 
280 
285 
289 
291 
293 
294  };
295 
299  {
300  public:
301 
303  static DtTerrainSignaler& instance(DtDe& de);
304 
306  virtual ~DtTerrainSignaler();
307 
308  //@name Signals
310 
312  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
313 
315  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
316 
318  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
319 
321  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
322 
324  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerAdded;
325 
327  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerToBeDeleted;
328 
330  boost::signal< void (const DtOceanLayer&, double) > signal_oceanLayerSeaLevelChanged;
331 
333  boost::signal< void (const DtOceanLayer&, int) > signal_oceanLayerLodRangeChanged;
334 
336  boost::signal<void () > signal_terrainToBeCleared;
337 
339  boost::signal< void () > signal_terrainCleared;
340 
342  boost::signal< void (DtProp& prop) > signal_propCreated;
343 
345  boost::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
346 
348  boost::signal< void (const DtProp& prop, double x, double y, double z) > signal_propPositionAboutToChange;
349 
351  boost::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
352 
354  boost::signal< void (const DtFeature&) > signal_featureAdded;
355 
357  boost::signal< void (const DtFeature&) > signal_featureToBeDeleted;
358 
360  boost::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
361 
363  boost::signal< void(int id) > signal_terrainOperationRemoved;
364 
366  boost::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
367 
370  boost::signal< void() > signal_terrainGeometryLoaded;
371 
373 
374  protected:
376  };
377 
378 
382  {
383 
384  public:
387  static DtTerrainCreator& instance(DtDe& de);
388 
390  static void registerInstance(DtDe& de, DtTerrainCreator* instance);
391 
393  virtual DtTerrain* create( DtDe& de,
394  DtAgentManagerInterface& agentManager );
395  };
396 
397 }
398 
399 


Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)