VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTerrain.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2018 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  virtual ~DtTerrain();
75 
78  void clear(bool reload=false);
79 
81 
82 
86  bool globalScaleTerrain() const;
87 
91  void updateGlobalScaleTerrain();
92 
94  virtual void getRecord(makArchives::DtTerrainRecord& rec);
95 
98  virtual void setFromRecord(const makArchives::DtTerrainRecord& rec, bool clearFirst=true);
99 
101  virtual void reloadTerrain();
102 
104 
106 
107 
112  virtual DtTerrainPatch& addTerrainPatch(const makArchives::DtTerrainPatchRecord& rec);
113 
118  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName);
119 
121  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
122 
124  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
125 
128  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName);
129 
132  const TerrainPatches& terrainPatches() const ;
133 
136  TerrainPatches& terrainPatches();
137 
139  bool lightPointsEnabled() const;
141 
142 
144 
145  virtual const TerrainOperationsMap& terrainOperationsMap() const;
147 
149 
150 
151 
154  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
157 
162  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
165 
167  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
168 
170  virtual const FeatureLayers& featureLayers() const;
171 
173  virtual FeatureLayers& featureLayers();
174 
176  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
177 
181  virtual DtStreamedFeatureLayer& streamedFeatureLayer();
182 
184  virtual DtBuoyBeaconLayer& buoyBeaconLayer();
185 
189  virtual DtDynamicFeatureLayer& dynamicFeatureLayer();
190 
192  virtual DtNavigationLightManager& navigationLightManager();
193 
195  virtual DtNavigationFeatureManager& navigationDaymarkManager();
196 
198  virtual DtNavigationFeatureManager& navigationTopmarkManager();
199 
201 
203 
204 
207  virtual DtOceanLayer& addOceanLayer( const makArchives::DtOceanLayerRecord& rec );
208 
213  virtual DtOceanLayer& addOceanLayer( const std::string& layerName );
214 
216  virtual void removeOceanLayer( const std::string& layerName );
217 
219  virtual const OceanLayers& oceanLayers() const;
220 
222  virtual OceanLayers& oceanLayers();
223 
225  virtual DtOceanLayer* findOceanLayer( const std::string& layerName );
226 
229  virtual void onOceanNodesExtracted( DtTerrainPatchObject& patchObject );
231 
233 
234 
236  std::string generatePropName(const std::string& propType);
237 
239 
241 
242 
246  virtual DtForest& forest();
247 
249 
250  bool isPropNameUsed(const std::string& propName) const;
251 
255  virtual bool getTerrainIntersection(double x, double y, double z,
256  double upX, double upY, double upZ, double& retX, double& retY,
257  double& retZ );
258 
262  virtual void clearElevationCache();
264 
266 
267 
270  virtual bool exportTerrainAndProps(const std::string&);
271 
273 
277  virtual const std::string* findOptionalParameter(const std::string& name) const;
278 
280  virtual void setOptionalParameter(const std::string& name, const std::string& value);
281 
284  virtual void setOptionalParameters(const makArchives::DtTerrainRecord::OptionalParameterMap&);
285 
287  virtual void removeOptionalParameter(const std::string& name);
288 
290  const makArchives::DtTerrainRecord::OptionalParameterMap& optionalParameters() const;
291 
293  virtual const std::string& description();
294 
296  virtual void setDescription(const std::string& description);
297 
299  virtual bool useICO() const;
300 
302  virtual void setUseICO(bool flag);
303 
305  virtual unsigned int maxPagedLODs() const;
306 
308  virtual void setMaxPagedLODs( unsigned int maxPagedLODs );
309 
311  virtual bool reloadingTerrain() { return myReloadingTerrain;}
312 
313  protected:
314 
316  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
317  const makArchives::DtTerrainRecord& terrainRec);
318 
320  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
321 
323  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
324 
326  void removeTerrainOperationRecord(int id);
327 
329  void clearTerrainOperations();
330 
332  void slot_handleIsDayChanged(bool isDay);
333 
335  virtual bool checkIfTerrainOperationRecordsMatch
338 
339  protected:
340  typedef std::map<std::string,int> PropNameMap;
341 
345 
356 
360 
362 
365 
366  std::string myDescription;
367 
368  bool myUseICO;
369  unsigned int myMaxPagedLODs;
370 
372 
374  };
375 
381  {
382  public:
383 
385  static DtTerrainSignaler& instance(DtDe& de);
386 
388  virtual ~DtTerrainSignaler();
389 
390  //@name Signals
392 
394  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
395 
397  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
398 
400  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
401 
403  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
404 
406  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerAdded;
407 
409  boost::signal< void (const DtOceanLayer&) > signal_oceanLayerToBeDeleted;
410 
412  boost::signal< void(const std::string&) > signal_oceanLayerDeleted;
413 
415  boost::signal< void (const DtOceanLayer&, double) > signal_oceanLayerSeaLevelChanged;
416 
418  boost::signal< void (const DtOceanLayer&, int) > signal_oceanLayerLodRangeChanged;
419 
422  boost::signal<void (bool reload) > signal_terrainToBeCleared;
423 
425  boost::signal< void () > signal_terrainCleared;
426 
428  boost::signal< void (DtProp& prop) > signal_propCreated;
429 
431  boost::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
432 
434  boost::signal< void (DtBuoyOrBeaconFacade& buoy,
435  const DtVector& initialPosition) > signal_buoyOrBeaconCreated;
436 
438  boost::signal< void (const DtBuoyOrBeaconFacade& buoy) >
440 
442  boost::signal< void (const DtProp& prop, double x, double y, double z) >
444 
446  boost::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
447 
449  boost::signal< void (const DtFeature&) > signal_featureAdded;
450 
452  boost::signal< void (const DtFeature&) > signal_featureToBeDeleted;
453 
455  boost::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
456 
458  boost::signal< void(int id) > signal_terrainOperationRemoved;
459 
461  boost::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
462 
464 
465  protected:
467  };
468 
469 
473  {
474 
475  public:
478  static DtTerrainCreator& instance(DtDe& de);
479 
481  static void registerInstance(DtDe& de, DtTerrainCreator* instance);
482 
484  virtual DtTerrain* create( DtDe& de,
485  DtAgentManagerInterface& agentManager );
486  };
487 
488 }
489 
490 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)