VR-Vantage API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtTerrain.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 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 class DtVector;
37 
38 namespace makVrv
39 {
40  class DtBuoyOrBeaconFacade;
41  class DtDe;
42  class DtFeature;
43  class DtFeatureLayer;
44  class DtModelAgent;
45  class DtOceanLayer;
46  class DtDynamicFeatureLayer;
47  class DtProp;
48  class DtTerrainPatch;
49  class DtTerrainPatchObjectAgent;
50  class DtTerrainPatchObject;
51  class DtTerrainSignaler;
52  class DtTexturedQuad;
53  class DtBuoyLayer;
54  class DtNavigationLightManager;
55  class DtNavigationDaymarkManager;
56 
60  {
61 
62  public:
63 
64  typedef std::list<DtTerrainPatch*> TerrainPatches;
65  typedef std::list<DtFeatureLayer*> FeatureLayers;
66  typedef std::list<DtOceanLayer*> OceanLayers;
67 
69  typedef std::map<int, makArchives::DtTerrainOperationRecord> TerrainOperationsMap;
70 
72  DtTerrain(DtDe& de, DtAgentManagerInterface& sceneManagerInterface);
73 
75  ~DtTerrain();
76 
78  void clear();
79 
81 
82 
86  bool globalScaleTerrain() const;
87 
91  void updateGlobalScaleTerrain();
92 
94  virtual void getRecord(makArchives::DtTerrainRecord& rec);
95 
97  virtual void setFromRecord(const makArchives::DtTerrainRecord& rec);
98 
100 
102 
103 
108  virtual DtTerrainPatch& addTerrainPatch(const makArchives::DtTerrainPatchRecord& rec);
109 
114  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName);
115 
117  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
118 
120  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
121 
124  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName);
125 
128  const TerrainPatches& terrainPatches() const ;
129 
132  TerrainPatches& terrainPatches();
133 
135 
136 
138 
139  virtual const TerrainOperationsMap& terrainOperationsMap() const;
141 
143 
144 
145 
148  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
151 
156  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
159 
161  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
162 
164  virtual const FeatureLayers& featureLayers() const;
165 
167  virtual FeatureLayers& featureLayers();
168 
170  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
171 
173  virtual DtBuoyLayer& buoyLayer();
174 
178  virtual DtDynamicFeatureLayer& dynamicFeatureLayer();
179 
181  virtual DtNavigationLightManager& navigationLightManager();
182 
184  virtual DtNavigationDaymarkManager& navigationDaymarkManager();
185 
187 
189 
190 
193  virtual DtOceanLayer& addOceanLayer( const makArchives::DtOceanLayerRecord& rec );
194 
199  virtual DtOceanLayer& addOceanLayer( const std::string& layerName );
200 
202  virtual void removeOceanLayer( const std::string& layerName );
203 
205  virtual const OceanLayers& oceanLayers() const;
206 
208  virtual OceanLayers& oceanLayers();
209 
211  virtual DtOceanLayer* findOceanLayer( const std::string& layerName );
212 
215  virtual void onOceanNodesExtracted( DtTerrainPatchObject& patchObject );
217 
219 
220 
222  std::string generatePropName(const std::string& propType);
223 
225 
227 
228 
232  virtual DtForest& forest();
233 
235 
236  bool isPropNameUsed(const std::string& propName) const;
237 
241  virtual bool getTerrainIntersection(double x, double y, double z,
242  double upX, double upY, double upZ, double& retX, double& retY,
243  double& retZ );
244 
248  virtual void clearElevationCache();
250 
252 
253 
256  virtual bool exportTerrainAndProps(const std::string&);
257 
259 
263  virtual const std::string* findOptionalParameter(const std::string& name) const;
264 
266  virtual void setOptionalParameter(const std::string& name, const std::string& value);
267 
270  virtual void setOptionalParameters(const makArchives::DtTerrainRecord::OptionalParameterMap&);
271 
273  virtual void removeOptionalParameter(const std::string& name);
274 
276  const makArchives::DtTerrainRecord::OptionalParameterMap& optionalParameters() const;
277 
278  protected:
279 
281  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
282  const makArchives::DtTerrainRecord& terrainRec);
283 
285  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
286 
288  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
289 
291  void removeTerrainOperationRecord(int id);
292 
294  void clearTerrainOperations();
295 
296  protected:
297  typedef std::map<std::string,int> PropNameMap;
298 
302 
311 
315 
317 
319 
321  };
322 
326  {
327  public:
328 
330  static DtTerrainSignaler& instance(DtDe& de);
331 
333  virtual ~DtTerrainSignaler();
334 
335  //@name Signals
337 
339  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
340 
342  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
343 
345  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
346 
348  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
349 
351  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerAdded;
352 
354  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerToBeDeleted;
355 
357  boost::signal< void (const DtOceanLayer&, double) > signal_oceanLayerSeaLevelChanged;
358 
360  boost::signal< void (const DtOceanLayer&, int) > signal_oceanLayerLodRangeChanged;
361 
363  boost::signal<void () > signal_terrainToBeCleared;
364 
366  boost::signal< void () > signal_terrainCleared;
367 
369  boost::signal< void (DtProp& prop) > signal_propCreated;
370 
372  boost::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
373 
375  boost::signal< void (DtBuoyOrBeaconFacade& buoy, const DtVector& initialPosition) > signal_buoyCreated;
376 
378  boost::signal< void (const DtBuoyOrBeaconFacade& buoy) > signal_buoyAboutToBeDestroyed;
379 
381  boost::signal< void (const DtProp& prop, double x, double y, double z) > signal_propPositionAboutToChange;
382 
384  boost::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
385 
387  boost::signal< void (const DtFeature&) > signal_featureAdded;
388 
390  boost::signal< void (const DtFeature&) > signal_featureToBeDeleted;
391 
393  boost::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
394 
396  boost::signal< void(int id) > signal_terrainOperationRemoved;
397 
399  boost::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
400 
403  boost::signal< void(DtTerrainPatchObject*) > signal_terrainGeometryLoaded;
404 
406 
407  protected:
409  };
410 
411 
415  {
416 
417  public:
420  static DtTerrainCreator& instance(DtDe& de);
421 
423  static void registerInstance(DtDe& de, DtTerrainCreator* instance);
424 
426  virtual DtTerrain* create( DtDe& de,
427  DtAgentManagerInterface& agentManager );
428  };
429 
430 }
431 
432 


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