VR-Vantage 3.2 API 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) 2024 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtForest.h>
14 #include <vrvCore/DtTerrainPatch.h>
17 
18 #include <matrix/vlVector.h>
19 
21 
22 #include <vrvUtil/signalslib.h>
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 DtTerrainPatchObjectAgent;
46  class DtTerrainPatchObject;
47  class DtTerrainSignaler;
48  class DtTexturedQuad;
49  class DtBuoyBeaconLayer;
50  class DtStreamedFeatureLayer;
51  class DtNavigationLightManager;
52  class DtNavigationFeatureManager;
53  class DtLightPointUpdater;
54 
58  {
59 
60  public:
61 
62  typedef std::list<DtTerrainPatch*> TerrainPatches;
63  typedef std::list<DtFeatureLayer*> FeatureLayers;
64  typedef std::list<DtOceanLayer*> OceanLayers;
65 
67  typedef std::map<int, makArchives::DtTerrainOperationRecord> TerrainOperationsMap;
68 
70  DtTerrain(DtDe& de, DtAgentManagerInterface& sceneManagerInterface);
71 
73  virtual ~DtTerrain();
74 
77  void clear(bool reload=false);
78 
80 
81 
85  bool globalScaleTerrain() const;
86 
90  void updateGlobalScaleTerrain();
91 
93  virtual void getRecord(makArchives::DtTerrainRecord& rec) const;
94 
97  virtual void setFromRecord(const makArchives::DtTerrainRecord& rec, bool clearFirst=true);
98 
100  virtual void reloadTerrain();
101 
103 
105 
106 
111  virtual DtTerrainPatch& addTerrainPatch(const makArchives::DtTerrainPatchRecord& rec);
112 
120  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName, bool minimapOnly=false,
121  const DtTerrainPatch::DtPageableTerrainPatchRecord& pageableTerrainPatchRecord=DtTerrainPatch::DtPageableTerrainPatchRecord());
122 
124  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
125 
127  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
128 
133  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName, bool minimapOnly=false);
134 
137  const TerrainPatches& terrainPatches() const;
138 
141  TerrainPatches& terrainPatches();
142 
144  size_t numberOfTerrainPatches() const;
145 
147  bool lightPointsEnabled() const;
149 
150 
152 
153  virtual const TerrainOperationsMap& terrainOperationsMap() const;
155 
157 
158 
159 
162  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
165 
170  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
173 
175  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
176 
178  virtual const FeatureLayers& featureLayers() const;
179 
181  virtual FeatureLayers& featureLayers();
182 
184  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
185 
189  virtual DtStreamedFeatureLayer& streamedFeatureLayer();
190 
192  virtual DtBuoyBeaconLayer& buoyBeaconLayer();
193 
197  virtual DtDynamicFeatureLayer& dynamicFeatureLayer();
198 
200  virtual DtNavigationLightManager& navigationLightManager();
201 
203  virtual DtNavigationFeatureManager& navigationDaymarkManager();
204 
206  virtual DtNavigationFeatureManager& navigationTopmarkManager();
207 
209 
211 
212 
215  virtual DtOceanLayer& addOceanLayer( const makArchives::DtOceanLayerRecord& rec );
216 
221  virtual DtOceanLayer& addOceanLayer( const std::string& layerName );
222 
224  virtual void removeOceanLayer( const std::string& layerName );
225 
227  virtual const OceanLayers& oceanLayers() const;
228 
230  virtual OceanLayers& oceanLayers();
231 
233  virtual DtOceanLayer* findOceanLayer( const std::string& layerName );
234 
237  virtual void onOceanNodesExtracted( DtTerrainPatchObject& patchObject );
239 
241 
242 
244  std::string generatePropName(const std::string& propType);
245 
247 
249 
250 
254  virtual DtForest& forest();
255 
257 
258  bool isPropNameUsed(const std::string& propName) const;
259 
263  virtual bool getTerrainIntersection(double x, double y, double z,
264  double upX, double upY, double upZ, double& retX, double& retY,
265  double& retZ );
266 
270  virtual void clearElevationCache();
272 
274 
275 
278  virtual bool exportTerrainAndProps(const std::string&);
279 
281 
285  virtual const std::string* findOptionalParameter(const std::string& name) const;
286 
288  virtual void setOptionalParameter(const std::string& name, const std::string& value);
289 
292  virtual void setOptionalParameters(const makArchives::DtTerrainRecord::OptionalParameterMap&);
293 
295  virtual void removeOptionalParameter(const std::string& name);
296 
298  const makArchives::DtTerrainRecord::OptionalParameterMap& optionalParameters() const;
299 
301  virtual const std::string& description();
302 
304  virtual void setDescription(const std::string& description);
305 
307  virtual bool useICO() const;
308 
310  virtual void setUseICO(bool flag);
311 
313  virtual unsigned int maxPagedLODs() const;
314 
316  virtual void setMaxPagedLODs( unsigned int maxPagedLODs );
317 
319  virtual bool reloadingTerrain() { return myReloadingTerrain;}
320 
321  protected:
322 
324  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
325  const makArchives::DtTerrainRecord& terrainRec);
326 
328  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
329 
331  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
332 
334  void removeTerrainOperationRecord(int id);
335 
337  void clearTerrainOperations();
338 
340  void slot_handleIsDayChanged(bool isDay);
341 
343  virtual bool checkIfTerrainOperationRecordsMatch
346 
347  virtual void connectForestAndOceanSignals(void);
348 
349  protected:
350  typedef std::map<std::string,int> PropNameMap;
351 
355 
366 
370 
372 
375 
376  std::string myDescription;
377 
378  bool myUseICO;
379  unsigned int myMaxPagedLODs;
380 
382 
384  };
385 
391  {
392  public:
393 
395  static DtTerrainSignaler& instance(DtDe& de);
396 
398  virtual ~DtTerrainSignaler();
399 
400  //@name Signals
402 
403  boost::signalslib::signal< void(const makArchives::DtTerrainRecord&) > signal_terrainLoaded;
404 
405  boost::signalslib::signal< void(unsigned int) > signal_terrainMaxPagedLODChanged;
406 
408  boost::signalslib::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
409 
411  boost::signalslib::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
412 
414  boost::signalslib::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
415 
417  boost::signalslib::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
418 
420  boost::signalslib::signal< void (const DtOceanLayer&) > signal_oceanLayerAdded;
421 
423  boost::signalslib::signal< void (const DtOceanLayer&) > signal_oceanLayerToBeDeleted;
424 
426  boost::signalslib::signal< void(const std::string&) > signal_oceanLayerDeleted;
427 
429  boost::signalslib::signal< void (const DtOceanLayer&, double) > signal_oceanLayerSeaLevelChanged;
430 
432  boost::signalslib::signal< void (const DtOceanLayer&, int) > signal_oceanLayerLodRangeChanged;
433 
436  boost::signalslib::signal<void (bool reload) > signal_terrainToBeCleared;
437 
439  boost::signalslib::signal< void () > signal_terrainCleared;
440 
442  boost::signalslib::signal< void (DtProp& prop) > signal_propCreated;
443 
445  boost::signalslib::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
446 
448  boost::signalslib::signal< void (DtBuoyOrBeaconFacade& buoy,
449  const DtVector& initialPosition) > signal_buoyOrBeaconCreated;
450 
452  boost::signalslib::signal< void (const DtBuoyOrBeaconFacade& buoy) >
454 
456  boost::signalslib::signal< void (const DtProp& prop, double x, double y, double z) >
458 
460  boost::signalslib::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
461 
463  boost::signalslib::signal< void (const DtFeature&) > signal_featureAdded;
464 
466  boost::signalslib::signal< void (const DtFeature&) > signal_featureToBeDeleted;
467 
469  boost::signalslib::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
470 
472  boost::signalslib::signal< void(int id) > signal_terrainOperationRemoved;
473 
475  boost::signalslib::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
476 
478 
479  protected:
481  };
482 
483 
487  {
488 
489  public:
492  static DtTerrainCreator& instance(DtDe& de);
493 
495  static void registerInstance(DtDe& de, DtTerrainCreator* instance);
496 
498  virtual DtTerrain* create( DtDe& de,
499  DtAgentManagerInterface& agentManager );
500  };
501 
502 }
503 
504 


Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)