VR-Vantage 3.1 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) 2023 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 #include <boost/shared_ptr.hpp>
24 
25 #include <string>
26 #include <list>
27 #include <vector>
28 
29 namespace makArchives
30 {
31  class DtFeatureLayerRecord;
32  class DtOceanLayerRecord;
33  class DtTerrainPatchRecord;
34 }
35 
36 namespace makVrv
37 {
38  class DtBuoyOrBeaconFacade;
39  class DtDe;
40  class DtFeature;
41  class DtFeatureLayer;
42  class DtModelAgent;
43  class DtOceanLayer;
44  class DtDynamicFeatureLayer;
45  class DtProp;
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) const;
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 
121  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName, bool minimapOnly=false,
122  const DtTerrainPatch::DtPageableTerrainPatchRecord& pageableTerrainPatchRecord=DtTerrainPatch::DtPageableTerrainPatchRecord());
123 
125  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
126 
128  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
129 
134  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName, bool minimapOnly=false);
135 
138  const TerrainPatches& terrainPatches() const ;
139 
142  TerrainPatches& terrainPatches();
143 
145  bool lightPointsEnabled() const;
147 
148 
150 
151  virtual const TerrainOperationsMap& terrainOperationsMap() const;
153 
155 
156 
157 
160  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
163 
168  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
171 
173  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
174 
176  virtual const FeatureLayers& featureLayers() const;
177 
179  virtual FeatureLayers& featureLayers();
180 
182  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
183 
187  virtual DtStreamedFeatureLayer& streamedFeatureLayer();
188 
190  virtual DtBuoyBeaconLayer& buoyBeaconLayer();
191 
195  virtual DtDynamicFeatureLayer& dynamicFeatureLayer();
196 
198  virtual DtNavigationLightManager& navigationLightManager();
199 
201  virtual DtNavigationFeatureManager& navigationDaymarkManager();
202 
204  virtual DtNavigationFeatureManager& navigationTopmarkManager();
205 
207 
209 
210 
213  virtual DtOceanLayer& addOceanLayer( const makArchives::DtOceanLayerRecord& rec );
214 
219  virtual DtOceanLayer& addOceanLayer( const std::string& layerName );
220 
222  virtual void removeOceanLayer( const std::string& layerName );
223 
225  virtual const OceanLayers& oceanLayers() const;
226 
228  virtual OceanLayers& oceanLayers();
229 
231  virtual DtOceanLayer* findOceanLayer( const std::string& layerName );
232 
235  virtual void onOceanNodesExtracted( DtTerrainPatchObject& patchObject );
237 
239 
240 
242  std::string generatePropName(const std::string& propType);
243 
245 
247 
248 
252  virtual DtForest& forest();
253 
255 
256  bool isPropNameUsed(const std::string& propName) const;
257 
261  virtual bool getTerrainIntersection(double x, double y, double z,
262  double upX, double upY, double upZ, double& retX, double& retY,
263  double& retZ );
264 
268  virtual void clearElevationCache();
270 
272 
273 
276  virtual bool exportTerrainAndProps(const std::string&);
277 
279 
283  virtual const std::string* findOptionalParameter(const std::string& name) const;
284 
286  virtual void setOptionalParameter(const std::string& name, const std::string& value);
287 
290  virtual void setOptionalParameters(const makArchives::DtTerrainRecord::OptionalParameterMap&);
291 
293  virtual void removeOptionalParameter(const std::string& name);
294 
296  const makArchives::DtTerrainRecord::OptionalParameterMap& optionalParameters() const;
297 
299  virtual const std::string& description();
300 
302  virtual void setDescription(const std::string& description);
303 
305  virtual bool useICO() const;
306 
308  virtual void setUseICO(bool flag);
309 
311  virtual unsigned int maxPagedLODs() const;
312 
314  virtual void setMaxPagedLODs( unsigned int maxPagedLODs );
315 
317  virtual bool reloadingTerrain() { return myReloadingTerrain;}
318 
319  protected:
320 
322  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
323  const makArchives::DtTerrainRecord& terrainRec);
324 
326  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
327 
329  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
330 
332  void removeTerrainOperationRecord(int id);
333 
335  void clearTerrainOperations();
336 
338  void slot_handleIsDayChanged(bool isDay);
339 
341  virtual bool checkIfTerrainOperationRecordsMatch
344 
345  virtual void connectForestAndOceanSignals(void);
346 
347  protected:
348  typedef std::map<std::string,int> PropNameMap;
349 
353 
364 
368 
370 
373 
375 
376  bool myUseICO;
377  unsigned int myMaxPagedLODs;
378 
380 
382  };
383 
389  {
390  public:
391 
393  static DtTerrainSignaler& instance(DtDe& de);
394 
396  virtual ~DtTerrainSignaler();
397 
398  //@name Signals
400 
401  boost::signalslib::signal< void(const makArchives::DtTerrainRecord&) > signal_terrainLoaded;
402 
403  boost::signalslib::signal< void(unsigned int) > signal_terrainMaxPagedLODChanged;
404 
406  boost::signalslib::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
407 
409  boost::signalslib::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
410 
412  boost::signalslib::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
413 
415  boost::signalslib::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
416 
418  boost::signalslib::signal< void (const DtOceanLayer&) > signal_oceanLayerAdded;
419 
421  boost::signalslib::signal< void (const DtOceanLayer&) > signal_oceanLayerToBeDeleted;
422 
424  boost::signalslib::signal< void(const std::string&) > signal_oceanLayerDeleted;
425 
427  boost::signalslib::signal< void (const DtOceanLayer&, double) > signal_oceanLayerSeaLevelChanged;
428 
430  boost::signalslib::signal< void (const DtOceanLayer&, int) > signal_oceanLayerLodRangeChanged;
431 
434  boost::signalslib::signal<void (bool reload) > signal_terrainToBeCleared;
435 
437  boost::signalslib::signal< void () > signal_terrainCleared;
438 
440  boost::signalslib::signal< void (DtProp& prop) > signal_propCreated;
441 
443  boost::signalslib::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
444 
446  boost::signalslib::signal< void (DtBuoyOrBeaconFacade& buoy,
447  const DtVector& initialPosition) > signal_buoyOrBeaconCreated;
448 
450  boost::signalslib::signal< void (const DtBuoyOrBeaconFacade& buoy) >
452 
454  boost::signalslib::signal< void (const DtProp& prop, double x, double y, double z) >
456 
458  boost::signalslib::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
459 
461  boost::signalslib::signal< void (const DtFeature&) > signal_featureAdded;
462 
464  boost::signalslib::signal< void (const DtFeature&) > signal_featureToBeDeleted;
465 
467  boost::signalslib::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
468 
470  boost::signalslib::signal< void(int id) > signal_terrainOperationRemoved;
471 
473  boost::signalslib::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
474 
476 
477  protected:
479  };
480 
481 
485  {
486 
487  public:
490  static DtTerrainCreator& instance(DtDe& de);
491 
493  static void registerInstance(DtDe& de, DtTerrainCreator* instance);
494 
496  virtual DtTerrain* create( DtDe& de,
497  DtAgentManagerInterface& agentManager );
498  };
499 
500 }
501 
502 


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