VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOsgEarthDynamicTerrainFeature.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 #pragma once
10 
11 #include <vrvOsg/vrvOsg.h>
13 #include <vrvOsg/DtOsgUtils.h>
14 
19 
20 #include <osgEarth/DecalLayer>
21 #include <osgEarth/FeatureSource>
22 #include <osgEarth/VirtualProgram>
23 #include <osgEarthSplat/RoadSurfaceLayer>
24 #include <osgEarth/FeatureImageLayer>
25 #include <osgEarth/Geometry>
26 #include <osgEarth/Feature>
27 #include <osgEarth/Threading>
28 #include <osgEarthProcedural/LifeMapLayer>
29 
30 namespace osgEarth
31 {
32  class LandCoverDictionary;
33  class Style;
34  class MapNode;
35 }
36 
37 namespace makVrv
38 {
39  class DtDynamicTerrainGeometry;
40  class DtDynamicTerrainChange;
41  class DtDynamicTerrainSwitch;
42  class DtDynamicTerrainRasterLibrary;
43  class DtObserverObject;
44  class DtProp;
46 
47  typedef std::map<std::string, osgEarth::Style> TrackTypeToStyleMap;
48 
55  {
56  public:
57 
59  explicit DtOsgEarthDynamicTerrainFeature(osgEarth::MapNode* mapNode, DtDe& de);
60 
63 
68 
70  DtOsgEarthDynamicTerrainFeature &operator=(const DtOsgEarthDynamicTerrainFeature &other) = delete;
71 
72  //Description for this feature
73  virtual DtString description() const override;
74 
76  virtual const DtDynamicTerrainGeometry* geometry() const override;
77 
79  virtual bool matches(const DtDynamicTerrainChange& command, bool useOriginalGeometry) const override;
81  virtual bool matches(const DtDynamicTerrainGeometry& geometry, bool useOriginalGeometry) const override;
82 
84  virtual void changeState(const DtDynamicTerrainChanges& changes) override;
85 
87  virtual void addCraterState(const DtDynamicTerrainChange& command);
88 
90  virtual void addPersistentTrackState(const DtDynamicTerrainChange& command);
91 
93  virtual void addLinearStateDeformation(const DtDynamicTerrainChange& command);
94 
96  virtual void addTankScrapeStateDeformation(const DtDynamicTerrainChange& command);
97 
99  virtual bool isInDefaultState() const;
100 
102  virtual bool lastStateWasDefaultState() const;
103 
107  virtual void iterateCommands(const boost::function<void(const DtDynamicTerrainChange&)>& callback) const override;
108 
110  virtual void reloadShaders();
111 
113  virtual void buildTrackStyleMap();
114 
120  virtual const osgEarth::Style* findPersistentTrackStyle(const std::string& trackType, const std::string& soilType, const std::string& trackDepth) const;
121 
123  /*
124  static void dynamicTerrainLineToFeature(const DtDynamicTerrainLine* line, osgEarth::Feature* feature,
125  osg::ref_ptr<const osgEarth::SpatialReference> srs);
126  */
127 
128  protected:
129 
131  virtual void processChanges(const DtDynamicTerrainChange& command);
132 
134  virtual void removeTerrainChange(const DtDynamicTerrainChange& change) override;
136  virtual void removeTerrainPersistentTrackChange(const DtDynamicTerrainChange& change);
138  virtual void removeTerrainDeformationChange(const DtDynamicTerrainChange& change);
139 
143  virtual void sendTrackUpdates();
144 
146  virtual bool parseTrackParameters(const DtDynamicTerrainChange &change, std::string& trackId, std::string& trackType, std::string& soilType, std::string& trackDepth) const;
147 
150  virtual void slot_observerSettingRemoved(DtObserverObject* observer, int setting);
151 
154  virtual void slot_observerSettingChanged(DtObserverObject* observer, int setting, bool value);
155 
158  virtual void setupTrackUpdatesEnabled();
159 
161  bool destroyDynamicProp(const std::string& id);
162 
164  void destroyAllDynamicProp();
165 
167  DtProp* addDynamicPropModel(const std::string& modelDefinition, const DtVector& center, double orientation);
168 
172 
174 
176 
177  // decal layer providing dynamic imagery overlays (like burn marks)
179 
180  // decal layer providing terrain deformation (craters, ditches, berms)
182 
183  // layer containing decals of lifemap data.
185 
187 
189 
190 
191  // Supports osgEarth::Splat only:
193 
194  //Member variables for the tracks rendering
197  std::map<std::string, osg::ref_ptr<osgEarth::Feature> > myGeometryRefs;
199 
203  osgEarth::LandCoverDictionary* myLandCoverDictionary;
206 
207  //if the observer setting for tracks is turned off in every observer then don't update them
209 
211 
213  typedef std::multimap<std::string, DtProp*> DynamicPropMap;
215 
217 
218 
219  };
220 }
osg::ref_ptr< osgEarth::Contrib::DecalLandCoverLayer > myDecalLandCoverLayer
Definition: DtOsgEarthDynamicTerrainFeature.h:192
std::map< std::string, osg::ref_ptr< osgEarth::Feature > > myGeometryRefs
Definition: DtOsgEarthDynamicTerrainFeature.h:197
Contains makVrv::DtDynamicTerrainLine class.
std::multimap< std::string, DtProp * > DynamicPropMap
List of props added for craters on runway or debris around OSM buildings.
Definition: DtOsgEarthDynamicTerrainFeature.h:213
bool myTrackUpdatesEnabled
Definition: DtOsgEarthDynamicTerrainFeature.h:208
Definition: DtDynamicTerrainFeature.h:316
osg::ref_ptr< osgEarth::Contrib::DecalImageLayer > myDecalLifeMapLayer
Definition: DtOsgEarthDynamicTerrainFeature.h:184
TrackTypeToStyleMap myTrackTypeToStyleMap
Definition: DtOsgEarthDynamicTerrainFeature.h:205
DtDynamicTerrainRasterLibrary This class is used to managed rasters and out-the-window images appl...
Definition: DtDynamicTerrainRasterLibrary.h:95
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
std::map< std::string, osgEarth::Style > TrackTypeToStyleMap
Definition: DtOsgEarthDynamicTerrainFeature.h:45
Represents (possibly infinite) area of space.
Definition: DtDynamicTerrainGeometry.h:20
DtDe & myDe
Definition: DtOsgEarthDynamicTerrainFeature.h:201
Definition: DtOsgEarthDynamicFidManager.h:35
osg::ref_ptr< osgEarth::CoverageLayer > myDecalCoverageLayer
Definition: DtOsgEarthDynamicTerrainFeature.h:188
osg::ref_ptr< osgEarth::MapNode > myMapNode
Definition: DtOsgEarthDynamicTerrainFeature.h:173
DtOsgEarthDynamicTerrainFeature is a special DtDynamicTerrainFeature which listens to all the dynamic...
Definition: DtOsgEarthDynamicTerrainFeature.h:54
osg::ref_ptr< osgEarth::Splat::RoadSurfaceLayer > myTracksLayer
Definition: DtOsgEarthDynamicTerrainFeature.h:195
Contains makVrv::DtDynamicTerrainGeometry class.
DtOsgEarthDynamicFidManager * myDynamicFidManager
Definition: DtOsgEarthDynamicTerrainFeature.h:216
Facade object for a scene prop.
Definition: DtProp.h:34
osg::ref_ptr< osg::Image > ImageRef
Definition: DtOsgEarthDynamicTerrainFeature.h:200
DtSignalConnectionManager myConnections
Definition: DtOsgEarthDynamicTerrainFeature.h:204
DynamicPropMap myDynamicProps
Definition: DtOsgEarthDynamicTerrainFeature.h:214
DtDynamicTerrainRasterLibrary * myRasterLibrary
Definition: DtOsgEarthDynamicTerrainFeature.h:202
const DtString myTerrainDeformationStateName
Definition: DtOsgEarthDynamicTerrainFeature.h:171
const DtString myTracksStateName
Definition: DtOsgEarthDynamicTerrainFeature.h:170
osgEarth::LandCoverDictionary * myLandCoverDictionary
Definition: DtOsgEarthDynamicTerrainFeature.h:203
int myChangeCount
Definition: DtOsgEarthDynamicTerrainFeature.h:175
osg::ref_ptr< osgEarth::FeatureImageLayer > myTracksDebugLayer
Definition: DtOsgEarthDynamicTerrainFeature.h:210
osg::ref_ptr< DtOsgEarthMemoryFeatureSource > myFeatureSource
Definition: DtOsgEarthDynamicTerrainFeature.h:196
This abstract base class defines the interface for OS-specific keyboard and mouse event listeners...
Definition: DtObserverObject.h:32
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
const DtString myCraterStateName
Definition: DtOsgEarthDynamicTerrainFeature.h:169
Interface which abstracts the concept of a individually identifiable &quot;thing&quot; in the terrain...
Definition: DtDynamicTerrainFeature.h:83
osg::ref_ptr< osgEarth::Contrib::DecalImageLayer > myDecalCoverageRasterLayer
Definition: DtOsgEarthDynamicTerrainFeature.h:186
osg::ref_ptr< osgEarth::Contrib::DecalImageLayer > myDecalImageLayer
Definition: DtOsgEarthDynamicTerrainFeature.h:178
Contains OSG related utility functions.
Contains makVrv::DtDynamicTerrainFeature class.
Base class to provide boost signal/slot management.
osg::ref_ptr< osgEarth::Contrib::DecalElevationLayer > myDecalElevLayer
Definition: DtOsgEarthDynamicTerrainFeature.h:181
Command which can be given to the dynamic terrain system to perform some change. This class is a simp...
Definition: DtDynamicTerrainChange.h:42
Contains DLL export macros.
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
Contains makVrv::DtOsgEarthMemoryFeatureSource class.
osg::ref_ptr< osgEarth::VirtualProgram > myTerrainEngineVirtualProgram
Definition: DtOsgEarthDynamicTerrainFeature.h:198

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)