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) 2015 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 DtBuoyBeaconLayer;
54  class DtStreamedFeatureLayer;
55  class DtNavigationLightManager;
56  class DtNavigationFeatureManager;
57  class DtLightPointUpdater;
58 
62  {
63 
64  public:
65 
66  typedef std::list<DtTerrainPatch*> TerrainPatches;
67  typedef std::list<DtFeatureLayer*> FeatureLayers;
68  typedef std::list<DtOceanLayer*> OceanLayers;
69 
71  typedef std::map<int, makArchives::DtTerrainOperationRecord> TerrainOperationsMap;
72 
74  DtTerrain(DtDe& de, DtAgentManagerInterface& sceneManagerInterface);
75 
77  ~DtTerrain();
78 
80  void clear();
81 
83 
84 
88  bool globalScaleTerrain() const;
89 
93  void updateGlobalScaleTerrain();
94 
96  virtual void getRecord(makArchives::DtTerrainRecord& rec);
97 
99  virtual void setFromRecord(const makArchives::DtTerrainRecord& rec);
100 
102 
104 
105 
110  virtual DtTerrainPatch& addTerrainPatch(const makArchives::DtTerrainPatchRecord& rec);
111 
116  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName);
117 
119  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
120 
122  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
123 
126  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName);
127 
130  const TerrainPatches& terrainPatches() const ;
131 
134  TerrainPatches& terrainPatches();
135 
137  virtual void showLightPoints(bool show);
138 
140  bool lightPointsEnabled() const;
142 
143 
145 
146  virtual const TerrainOperationsMap& terrainOperationsMap() const;
148 
150 
151 
152 
155  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
158 
163  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
166 
168  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
169 
171  virtual const FeatureLayers& featureLayers() const;
172 
174  virtual FeatureLayers& featureLayers();
175 
177  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
178 
182  virtual DtStreamedFeatureLayer& streamedFeatureLayer();
183 
185  virtual DtBuoyBeaconLayer& buoyBeaconLayer();
186 
190  virtual DtDynamicFeatureLayer& dynamicFeatureLayer();
191 
193  virtual DtNavigationLightManager& navigationLightManager();
194 
196  virtual DtNavigationFeatureManager& navigationDaymarkManager();
197 
199  virtual DtNavigationFeatureManager& navigationTopmarkManager();
200 
202 
204 
205 
208  virtual DtOceanLayer& addOceanLayer( const makArchives::DtOceanLayerRecord& rec );
209 
214  virtual DtOceanLayer& addOceanLayer( const std::string& layerName );
215 
217  virtual void removeOceanLayer( const std::string& layerName );
218 
220  virtual const OceanLayers& oceanLayers() const;
221 
223  virtual OceanLayers& oceanLayers();
224 
226  virtual DtOceanLayer* findOceanLayer( const std::string& layerName );
227 
230  virtual void onOceanNodesExtracted( DtTerrainPatchObject& patchObject );
232 
234 
235 
237  std::string generatePropName(const std::string& propType);
238 
240 
242 
243 
247  virtual DtForest& forest();
248 
250 
251  bool isPropNameUsed(const std::string& propName) const;
252 
256  virtual bool getTerrainIntersection(double x, double y, double z,
257  double upX, double upY, double upZ, double& retX, double& retY,
258  double& retZ );
259 
263  virtual void clearElevationCache();
265 
267 
268 
271  virtual bool exportTerrainAndProps(const std::string&);
272 
274 
278  virtual const std::string* findOptionalParameter(const std::string& name) const;
279 
281  virtual void setOptionalParameter(const std::string& name, const std::string& value);
282 
285  virtual void setOptionalParameters(const makArchives::DtTerrainRecord::OptionalParameterMap&);
286 
288  virtual void removeOptionalParameter(const std::string& name);
289 
291  const makArchives::DtTerrainRecord::OptionalParameterMap& optionalParameters() const;
292 
293  protected:
294 
296  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
297  const makArchives::DtTerrainRecord& terrainRec);
298 
300  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
301 
303  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
304 
306  void removeTerrainOperationRecord(int id);
307 
309  void clearTerrainOperations();
310 
312  void slot_handleIsDayChanged(bool isDay);
313 
314  protected:
315  typedef std::map<std::string,int> PropNameMap;
316 
320 
331 
335 
337 
339 
341 
343  };
344 
350  {
351  public:
352 
354  static DtTerrainSignaler& instance(DtDe& de);
355 
357  virtual ~DtTerrainSignaler();
358 
359  //@name Signals
361 
363  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
364 
366  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
367 
369  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
370 
372  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
373 
375  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerAdded;
376 
378  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerToBeDeleted;
379 
381  boost::signal< void (const DtOceanLayer&, double) > signal_oceanLayerSeaLevelChanged;
382 
384  boost::signal< void (const DtOceanLayer&, int) > signal_oceanLayerLodRangeChanged;
385 
387  boost::signal<void () > signal_terrainToBeCleared;
388 
390  boost::signal< void () > signal_terrainCleared;
391 
393  boost::signal< void (DtProp& prop) > signal_propCreated;
394 
396  boost::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
397 
399  boost::signal< void (DtBuoyOrBeaconFacade& buoy,
400  const DtVector& initialPosition) > signal_buoyOrBeaconCreated;
401 
403  boost::signal< void (const DtBuoyOrBeaconFacade& buoy) >
405 
407  boost::signal< void (const DtProp& prop, double x, double y, double z) >
409 
411  boost::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
412 
414  boost::signal< void (const DtFeature&) > signal_featureAdded;
415 
417  boost::signal< void (const DtFeature&) > signal_featureToBeDeleted;
418 
420  boost::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
421 
423  boost::signal< void(int id) > signal_terrainOperationRemoved;
424 
426  boost::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
427 
429 
430  protected:
432  };
433 
434 
438  {
439 
440  public:
443  static DtTerrainCreator& instance(DtDe& de);
444 
446  static void registerInstance(DtDe& de, DtTerrainCreator* instance);
447 
449  virtual DtTerrain* create( DtDe& de,
450  DtAgentManagerInterface& agentManager );
451  };
452 
453 }
454 
455 


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