VR-Forces Development_Version Class 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>
13 #include <vrvCore/DtForest.h>
16 
17 #include <matrix/vlVector.h>
18 
20 
21 #include <boost/signal.hpp>
22 #include <boost/shared_ptr.hpp>
23 
24 #include <string>
25 #include <list>
26 #include <vector>
27 
28 namespace makArchives
29 {
30  class DtFeatureLayerRecord;
31  class DtOceanLayerRecord;
32  class DtTerrainPatchRecord;
33 }
34 
35 namespace makVrv
36 {
37  class DtBuoyOrBeaconFacade;
38  class DtDe;
39  class DtFeature;
40  class DtFeatureLayer;
41  class DtModelAgent;
42  class DtOceanLayer;
43  class DtDynamicFeatureLayer;
44  class DtProp;
45  class DtTerrainPatch;
46  class DtTerrainPatchObjectAgent;
47  class DtTerrainPatchObject;
48  class DtTerrainSignaler;
49  class DtTexturedQuad;
50  class DtBuoyBeaconLayer;
51  class DtStreamedFeatureLayer;
52  class DtNavigationLightManager;
53  class DtNavigationFeatureManager;
54  class DtLightPointUpdater;
55 
59  {
60 
61  public:
62 
63  typedef std::list<DtTerrainPatch*> TerrainPatches;
64  typedef std::list<DtFeatureLayer*> FeatureLayers;
65  typedef std::list<DtOceanLayer*> OceanLayers;
66 
68  typedef std::map<int, makArchives::DtTerrainOperationRecord> TerrainOperationsMap;
69 
71  DtTerrain(DtDe& de, DtAgentManagerInterface& sceneManagerInterface);
72 
74  ~DtTerrain();
75 
77  void clear();
78 
80 
81 
85  bool globalScaleTerrain() const;
86 
90  void updateGlobalScaleTerrain();
91 
93  virtual void getRecord(makArchives::DtTerrainRecord& rec);
94 
96  virtual void setFromRecord(const makArchives::DtTerrainRecord& rec);
97 
99 
101 
102 
107  virtual DtTerrainPatch& addTerrainPatch(const makArchives::DtTerrainPatchRecord& rec);
108 
113  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName);
114 
116  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
117 
119  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
120 
123  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName);
124 
127  const TerrainPatches& terrainPatches() const ;
128 
131  TerrainPatches& terrainPatches();
132 
134  virtual void showLightPoints(bool show);
135 
137  bool lightPointsEnabled() const;
139 
140 
142 
143  virtual const TerrainOperationsMap& terrainOperationsMap() const;
145 
147 
148 
149 
152  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
155 
160  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
163 
165  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
166 
168  virtual const FeatureLayers& featureLayers() const;
169 
171  virtual FeatureLayers& featureLayers();
172 
174  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
175 
179  virtual DtStreamedFeatureLayer& streamedFeatureLayer();
180 
182  virtual DtBuoyBeaconLayer& buoyBeaconLayer();
183 
187  virtual DtDynamicFeatureLayer& dynamicFeatureLayer();
188 
190  virtual DtNavigationLightManager& navigationLightManager();
191 
193  virtual DtNavigationFeatureManager& navigationDaymarkManager();
194 
196  virtual DtNavigationFeatureManager& navigationTopmarkManager();
197 
199 
201 
202 
205  virtual DtOceanLayer& addOceanLayer( const makArchives::DtOceanLayerRecord& rec );
206 
211  virtual DtOceanLayer& addOceanLayer( const std::string& layerName );
212 
214  virtual void removeOceanLayer( const std::string& layerName );
215 
217  virtual const OceanLayers& oceanLayers() const;
218 
220  virtual OceanLayers& oceanLayers();
221 
223  virtual DtOceanLayer* findOceanLayer( const std::string& layerName );
224 
227  virtual void onOceanNodesExtracted( DtTerrainPatchObject& patchObject );
229 
231 
232 
234  std::string generatePropName(const std::string& propType);
235 
237 
239 
240 
244  virtual DtForest& forest();
245 
247 
248  bool isPropNameUsed(const std::string& propName) const;
249 
253  virtual bool getTerrainIntersection(double x, double y, double z,
254  double upX, double upY, double upZ, double& retX, double& retY,
255  double& retZ );
256 
260  virtual void clearElevationCache();
262 
264 
265 
268  virtual bool exportTerrainAndProps(const std::string&);
269 
271 
275  virtual const std::string* findOptionalParameter(const std::string& name) const;
276 
278  virtual void setOptionalParameter(const std::string& name, const std::string& value);
279 
282  virtual void setOptionalParameters(const makArchives::DtTerrainRecord::OptionalParameterMap&);
283 
285  virtual void removeOptionalParameter(const std::string& name);
286 
288  const makArchives::DtTerrainRecord::OptionalParameterMap& optionalParameters() const;
289 
291  virtual const std::string& description();
292 
294  virtual void setDescription(const std::string& description);
295 
297  virtual bool useICO();
298 
300  virtual void setUseICO(bool flag);
301 
302  protected:
303 
305  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
306  const makArchives::DtTerrainRecord& terrainRec);
307 
309  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
310 
312  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
313 
315  void removeTerrainOperationRecord(int id);
316 
318  void clearTerrainOperations();
319 
321  void slot_handleIsDayChanged(bool isDay);
322 
323  protected:
324  typedef std::map<std::string,int> PropNameMap;
325 
329 
340 
344 
346 
348 
350 
351  std::string myDescription;
352 
353  bool myUseICO;
354 
356  };
357 
363  {
364  public:
365 
367  static DtTerrainSignaler& instance(DtDe& de);
368 
370  virtual ~DtTerrainSignaler();
371 
372  //@name Signals
374 
376  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
377 
379  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
380 
382  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
383 
385  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
386 
388  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerAdded;
389 
391  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerToBeDeleted;
392 
394  boost::signal< void (const DtOceanLayer&, double) > signal_oceanLayerSeaLevelChanged;
395 
397  boost::signal< void (const DtOceanLayer&, int) > signal_oceanLayerLodRangeChanged;
398 
400  boost::signal<void () > signal_terrainToBeCleared;
401 
403  boost::signal< void () > signal_terrainCleared;
404 
406  boost::signal< void (DtProp& prop) > signal_propCreated;
407 
409  boost::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
410 
412  boost::signal< void (DtBuoyOrBeaconFacade& buoy,
413  const DtVector& initialPosition) > signal_buoyOrBeaconCreated;
414 
416  boost::signal< void (const DtBuoyOrBeaconFacade& buoy) >
418 
420  boost::signal< void (const DtProp& prop, double x, double y, double z) >
422 
424  boost::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
425 
427  boost::signal< void (const DtFeature&) > signal_featureAdded;
428 
430  boost::signal< void (const DtFeature&) > signal_featureToBeDeleted;
431 
433  boost::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
434 
436  boost::signal< void(int id) > signal_terrainOperationRemoved;
437 
439  boost::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
440 
442 
443  protected:
445  };
446 
447 
451  {
452 
453  public:
456  static DtTerrainCreator& instance(DtDe& de);
457 
459  static void registerInstance(DtDe& de, DtTerrainCreator* instance);
460 
462  virtual DtTerrain* create( DtDe& de,
463  DtAgentManagerInterface& agentManager );
464  };
465 
466 }
467 
468 

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)