VR-Forces Developer's Guide
 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 #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,
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  size_t numberOfTerrainPatches() const;
146 
148  bool lightPointsEnabled() const;
150 
151 
153 
154  virtual const TerrainOperationsMap& terrainOperationsMap() const;
156 
158 
159 
160 
163  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec,
166 
171  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename,
174 
176  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
177 
179  virtual const FeatureLayers& featureLayers() const;
180 
182  virtual FeatureLayers& featureLayers();
183 
185  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
186 
190  virtual DtStreamedFeatureLayer& streamedFeatureLayer();
191 
193  virtual DtBuoyBeaconLayer& buoyBeaconLayer();
194 
198  virtual DtDynamicFeatureLayer& dynamicFeatureLayer();
199 
201  virtual DtNavigationLightManager& navigationLightManager();
202 
204  virtual DtNavigationFeatureManager& navigationDaymarkManager();
205 
207  virtual DtNavigationFeatureManager& navigationTopmarkManager();
208 
210 
212 
213 
216  virtual DtOceanLayer& addOceanLayer( const makArchives::DtOceanLayerRecord& rec );
217 
222  virtual DtOceanLayer& addOceanLayer( const std::string& layerName );
223 
225  virtual void removeOceanLayer( const std::string& layerName );
226 
228  virtual const OceanLayers& oceanLayers() const;
229 
231  virtual OceanLayers& oceanLayers();
232 
234  virtual DtOceanLayer* findOceanLayer( const std::string& layerName );
235 
238  virtual void onOceanNodesExtracted( DtTerrainPatchObject& patchObject );
240 
242 
243 
245  std::string generatePropName(const std::string& propType);
246 
248 
250 
251 
255  virtual DtForest& forest();
256 
258  bool isPropNameUsed(const std::string& propName) const;
260 
264  virtual bool getTerrainIntersection(double x, double y, double z,
265  double upX, double upY, double upZ, double& retX, double& retY,
266  double& retZ );
267 
271  virtual void clearElevationCache();
273 
275 
276 
279  virtual bool exportTerrainAndProps(const std::string&);
280 
282 
286  virtual const std::string* findOptionalParameter(const std::string& name) const;
287 
289  virtual void setOptionalParameter(const std::string& name, const std::string& value);
290 
293  virtual void setOptionalParameters(const makArchives::DtTerrainRecord::OptionalParameterMap&);
294 
296  virtual void removeOptionalParameter(const std::string& name);
297 
299  const makArchives::DtTerrainRecord::OptionalParameterMap& optionalParameters() const;
300 
302  virtual const std::string& description();
303 
305  virtual void setDescription(const std::string& description);
306 
308  virtual bool useICO() const;
309 
311  virtual void setUseICO(bool flag);
312 
314  virtual unsigned int maxPagedLODs() const;
315 
317  virtual void setMaxPagedLODs( unsigned int maxPagedLODs );
318 
320  virtual bool reloadingTerrain() { return myReloadingTerrain;}
321 
322  protected:
323 
325  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
326  const makArchives::DtTerrainRecord& terrainRec);
327 
329  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
330 
332  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
333 
335  void removeTerrainOperationRecord(int id);
336 
338  void clearTerrainOperations();
339 
341  void slot_handleIsDayChanged(bool isDay);
342 
344  virtual bool checkIfTerrainOperationRecordsMatch
347 
348  virtual void connectForestAndOceanSignals(void);
349 
350  protected:
351  typedef std::map<std::string,int> PropNameMap;
352 
356 
367 
371 
373 
376 
377  std::string myDescription;
378 
379  bool myUseICO;
380  unsigned int myMaxPagedLODs;
381 
383 
385  };
386 
392  {
393  public:
394 
396  static DtTerrainSignaler& instance(DtDe& de);
397 
399  virtual ~DtTerrainSignaler();
400 
401  //@name Signals
403 
404  boost::signalslib::signal< void(const makArchives::DtTerrainRecord&) > signal_terrainLoaded;
405 
406  boost::signalslib::signal< void(unsigned int) > signal_terrainMaxPagedLODChanged;
407 
409  boost::signalslib::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
410 
412  boost::signalslib::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
413 
415  boost::signalslib::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
416 
418  boost::signalslib::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
419 
421  boost::signalslib::signal< void (const DtOceanLayer&) > signal_oceanLayerAdded;
422 
424  boost::signalslib::signal< void (const DtOceanLayer&) > signal_oceanLayerToBeDeleted;
425 
427  boost::signalslib::signal< void(const std::string&) > signal_oceanLayerDeleted;
428 
430  boost::signalslib::signal< void (const DtOceanLayer&, double) > signal_oceanLayerSeaLevelChanged;
431 
433  boost::signalslib::signal< void (const DtOceanLayer&, int) > signal_oceanLayerLodRangeChanged;
434 
437  boost::signalslib::signal<void (bool reload) > signal_terrainToBeCleared;
438 
440  boost::signalslib::signal< void () > signal_terrainCleared;
441 
443  boost::signalslib::signal< void (DtProp& prop) > signal_propCreated;
444 
446  boost::signalslib::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
447 
449  boost::signalslib::signal< void (DtBuoyOrBeaconFacade& buoy,
450  const DtVector& initialPosition) > signal_buoyOrBeaconCreated;
451 
453  boost::signalslib::signal< void (const DtBuoyOrBeaconFacade& buoy) >
455 
457  boost::signalslib::signal< void (const DtProp& prop, double x, double y, double z) >
459 
461  boost::signalslib::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
462 
464  boost::signalslib::signal< void (const DtFeature&) > signal_featureAdded;
465 
467  boost::signalslib::signal< void (const DtFeature&) > signal_featureToBeDeleted;
468 
470  boost::signalslib::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
471 
473  boost::signalslib::signal< void(int id) > signal_terrainOperationRemoved;
474 
476  boost::signalslib::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
477 
479 
480  protected:
482  };
483 
484 
488  {
489 
490  public:
493  static DtTerrainCreator& instance(DtDe& de);
494 
496  static void registerInstance(DtDe& de, DtTerrainCreator* instance);
497 
499  virtual DtTerrain* create( DtDe& de,
500  DtAgentManagerInterface& agentManager );
501  };
502 
503 }
504 
505 
DtDe & myDe
Definition: DtTerrain.h:353
std::list< DtFeatureLayer * > FeatureLayers
Definition: DtTerrain.h:64
The feature layer is a type of terrain layer which contains features, such as points, lines, areas, and props created from them.
Definition: DtFeatureLayer.h:25
boost::signalslib::signal< void(int id) > signal_terrainOperationRemoved
Emitted when an operation is removed.
Definition: DtTerrain.h:473
int myNextTerrainOperationId
Definition: DtTerrain.h:369
A wrapper around the forest driver and some local state of the forest.
Definition: DtForest.h:35
A DtOceanLayerRecord contains the information to add dynamic water.
Definition: DtOceanLayerRecord.h:21
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
std::map< int, makArchives::DtTerrainOperationRecord > TerrainOperationsMap
Map of terrain operation ids, to terrain operations.
Definition: DtTerrain.h:68
DtNavigationFeatureManager * myNavigationDaymarkManager
Definition: DtTerrain.h:365
A global signaler object for the DtTerrain class. These signals are raised on the master by DtTerrain...
Definition: DtTerrain.h:391
OceanLayers myOceanLayers
Definition: DtTerrain.h:359
DtStreamedFeatureLayer * myStreamedFeatureLayer
Definition: DtTerrain.h:362
A DtFeatureLayerRecord contains the information to add features from a single source file and ruleset...
Definition: DtFeatureLayerRecord.h:22
The DtStreamedFeatureLayer is the base implementation of a layer of data which contains buoys and bea...
Definition: DtStreamedFeatureLayer.h:34
boost::signalslib::signal< void(const DtFeature &) > signal_featureToBeDeleted
Emitted when a DtFeature is about to be removed.
Definition: DtTerrain.h:467
DtNavigationFeatureManager * myNavigationTopmarkManager
Definition: DtTerrain.h:366
boost::signalslib::signal< void(const makArchives::DtTerrainRecord &) > signal_terrainLoaded
Emitted when a DtTerrainPatch is added.
Definition: DtTerrain.h:404
DtTerrainSignaler & mySignaler
Definition: DtTerrain.h:354
boost::signalslib::signal< void(const DtFeatureLayer &) > signal_featureLayerToBeDeleted
Emitted when a DtFeatureLayer is about to be removed.
Definition: DtTerrain.h:418
FeatureLayers myFeatureLayers
Definition: DtTerrain.h:358
The DtBuoyBeaconLayer is the base implementation of a layer of data which contains buoys and beacons ...
Definition: DtBuoyBeaconLayer.h:35
boost::signalslib::signal< void(bool) > signal_terrainIsGlobalScaleChanged
Emitted when an terrain is global changes.
Definition: DtTerrain.h:476
virtual bool reloadingTerrain()
is the terrain currently reloading
Definition: DtTerrain.h:320
bool myGlobalScaleFlag
Definition: DtTerrain.h:370
boost::signalslib::signal< void(const DtFeature &) > signal_featureAdded
Emitted when a DtFeature is added.
Definition: DtTerrain.h:464
A container for a single piece of terrain, containing settings needed to recreate it...
Definition: DtTerrainPatch.h:42
boost::signalslib::signal< void(const std::string &) > signal_oceanLayerDeleted
Emitted when a ocean layer is removed.
Definition: DtTerrain.h:427
std::list< DtOceanLayer * > OceanLayers
Definition: DtTerrain.h:65
boost::signalslib::signal< void(const DtBuoyOrBeaconFacade &buoy) > signal_buoyOrBeaconAboutToBeDestroyed
Emitted when a buoy is destroyed.
Definition: DtTerrain.h:454
The DtDynamicFeatureLayer is the base implementation of a layer of data which contains features that ...
Definition: DtDynamicFeatureLayer.h:34
boost::signalslib::signal< void() > signal_terrainCleared
Emitted when the terrain is cleared.
Definition: DtTerrain.h:440
The DtNavigationFeatureManager matches streamed features to other streamed features (buoys and beacon...
Definition: DtNavigationFeatureManager.h:38
A DtTerrainPatchObject contains the methods for loading a file as a terrain. When loading a file as a...
Definition: DtTerrainPatchObject.h:35
DtBuoyBeaconLayer * myBuoyLayer
Definition: DtTerrain.h:361
std::list< DtGenericTerrainRecord > GenericRecords
Definition: DtTerrainRecord.h:36
Record of pageable terrain patch settings.
Definition: DtTerrainPatchRecord.h:33
Definition: feature.h:26
Contains makVrv::DtVirtualBaseClass class.
Record of a VR-Vantage terrain Contains: Terrain coordinate system Terrain patches Feature layers Ter...
Definition: DtTerrainRecord.h:29
A DtTerrainOperationRecord contains information about a single terrain operation. ...
Definition: DtTerrainOperationRecord.h:19
DtNavigationLightManager * myNavigationLightManager
Definition: DtTerrain.h:364
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
boost::signalslib::signal< void(DtBuoyOrBeaconFacade &buoy, const DtVector &initialPosition) > signal_buoyOrBeaconCreated
Emitted when a buoy is created.
Definition: DtTerrain.h:450
boost::signalslib::signal< void(const DtOceanLayer &) > signal_oceanLayerAdded
Emitted when a DtFeatureLayer is added.
Definition: DtTerrain.h:421
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
boost::signalslib::signal< void(unsigned int) > signal_terrainMaxPagedLODChanged
Emitted when a DtTerrainPatch is added.
Definition: DtTerrain.h:406
The terrain creator for the DtTerrain class.
Definition: DtTerrain.h:487
std::string myDescription
Definition: DtTerrain.h:377
boost::signalslib::signal< void(DtProp &prop) > signal_propCreated
Emitted when a prop is created.
Definition: DtTerrain.h:443
TerrainPatches myTerrainPatches
Definition: DtTerrain.h:357
unsigned int myMaxPagedLODs
Definition: DtTerrain.h:380
bool myReloadingTerrain
Definition: DtTerrain.h:382
std::map< std::string, int > PropNameMap
Definition: DtTerrain.h:351
Definition: DtTexturedQuad.h:24
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
boost::signalslib::signal< void(const DtTerrainPatch &) > signal_terrainPatchToBeDeleted
Emitted when a DtTerrainPatch is about to be removed.
Definition: DtTerrain.h:412
The DtNavigationLightManager matches streamed light controllers to other streamed features (buoys and...
Definition: DtNavigationLightManager.h:56
boost::signalslib::signal< void(bool reload) > signal_terrainToBeCleared
Emitted when the terrain is about to be cleared. If the terrain is being cleared due to a reloadTerra...
Definition: DtTerrain.h:437
DtDynamicFeatureLayer * myDynamicFeatureLayer
Definition: DtTerrain.h:363
The ocean layer is a type of terrain layer which contains information about an area that should be re...
Definition: DtOceanLayer.h:25
boost::signalslib::signal< void(const DtProp &prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange
Emitted when a prop orientation is about to be changed.
Definition: DtTerrain.h:461
Base class to provide boost signal/slot management.
makArchives::DtTerrainRecord::OptionalParameterMap myOptionalParameters
Definition: DtTerrain.h:374
PropNameMap myPropNameMap
Definition: DtTerrain.h:372
std::list< DtTerrainPatch * > TerrainPatches
Definition: DtTerrain.h:63
makArchives::DtTerrainRecord::GenericRecords myGenericRecords
Definition: DtTerrain.h:375
Contains makVrv::DtTerrainPatch class.
boost::signalslib::signal< void(const DtTerrainPatch &) > signal_terrainPatchAdded
Emitted when a DtTerrainPatch is added.
Definition: DtTerrain.h:409
boost::signalslib::signal< void(int id, const makArchives::DtTerrainOperationRecord &rec) > signal_terrainOperationAdded
Emitted when an operation is added.
Definition: DtTerrain.h:470
TargetApplication
Definition: DtTerrainOperationRecord.h:26
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:33
DtTexturedQuad * myLogo
Definition: DtTerrain.h:384
boost::signalslib::signal< void(const DtOceanLayer &, double) > signal_oceanLayerSeaLevelChanged
Emitted when an ocean layer changes its sea level.
Definition: DtTerrain.h:430
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
std::map< std::string, std::string > OptionalParameterMap
Definition: DtTerrainRecord.h:38
DtForest * myForest
Definition: DtTerrain.h:360
bool myUseICO
Definition: DtTerrain.h:379
A DtTerrainPatchRecord contains the information to construct a single DtTerrainPatch.
Definition: DtTerrainPatchRecord.h:27
Contains makVrv::DtForest class.
TerrainOperationsMap myTerrainOperationsMap
Definition: DtTerrain.h:368
boost::signalslib::signal< void(const DtOceanLayer &) > signal_oceanLayerToBeDeleted
Emitted when a ocean layer is about to be removed.
Definition: DtTerrain.h:424
boost::signalslib::signal< void(const DtProp &prop) > signal_propAboutToBeDestroyed
Emitted when a prop is destroyed.
Definition: DtTerrain.h:446
DtTerrain is a facade around terrain functionality.
Definition: DtTerrain.h:58
The DtEntityFacade is a facade around agents that make up an entity. This entity facade represents a ...
Definition: DtBuoyOrBeaconFacade.h:24
Contains makArchives::DtTerrainRecord class.
boost::signalslib::signal< void(const DtFeatureLayer &) > signal_featureLayerAdded
Emitted when a DtFeatureLayer is added.
Definition: DtTerrain.h:415
boost::signalslib::signal< void(const DtOceanLayer &, int) > signal_oceanLayerLodRangeChanged
Emitted when an ocean layer changes its lod range.
Definition: DtTerrain.h:433
DtAgentManagerInterface & myAgentManagerInterface
Definition: DtTerrain.h:355
boost::signalslib::signal< void(const DtProp &prop, double x, double y, double z) > signal_propPositionAboutToChange
Emitted when a prop position is about to be changed.
Definition: DtTerrain.h:458
Contains DLL export macros.

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)