VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOsgTerrainPatchObject.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
14 #include <vrvOsg/DtFastGroup.h>
18 
20 
24 
25 
26 namespace osgEarth
27 {
28  class MapNode;
29  class Wind;
30 
31  namespace Util
32  {
33  class ElevationQuery;
34  }
35 }
36 
37 namespace makVrv
38 {
39 
40  class DtDe;
41  class DtTerrainPatchGroup;
42  class DtOsgNodesExtractor;
43  class DtOsgLightPointManager;
44  class DtPagedTilesIndirectManager;
45 
51  {
52  public:
55  {
56  USE_GLOBAL, // use the global setting
57  FORCE_OFF, // force alpha to coverage off
58  FORCE_ON //force alpha to coverage on for this model
59  };
60 
61  public:
63  DtOsgTerrainPatchObject(DtDe& de, DtUniqueID elementId);
64 
66  virtual ~DtOsgTerrainPatchObject();
67 
69  //
70 
72  virtual void setTerrainDefinition(const std::string& modelDefinitionName);
73 
74  virtual void slot_atcGlobalTerrainEnableChanged();
75 
77  virtual void enableOverlay(int type, const std::string& definition);
78 
80  virtual void disableOverlay(int type);
81 
83  virtual void disableAllOverlays();
84 
86  virtual void setOverlayScale(int type, double x, double y);
87 
89  virtual void setWrapMode(int type, int);
90 
92  virtual void setBlendMode(int type, int);
93 
95  virtual void setOverlayOffset(int type, double x, double y);
96 
98  virtual void setLayerEnabled(const std::string& rule, bool status);
99 
101  virtual void setRasterLayerPosition(int type, int pos);
102 
104  virtual void setIsMinimapOnly(bool isForMinimap);
106  virtual bool isMinimapOnly() const;
108  //
110 
111  virtual std::string overlayDefinition(int type);
112 
113  virtual std::vector<double> overlayScale(int type);
114  virtual std::vector<double> overlayOffset(int type);
115  virtual DtTerrainOverlayOperation defaultOverlay(int type);
116  virtual DtTerrainOverlayOperation currentOverlay(int type);
117 
119  virtual void getBoundingBoxMinMax(DtVector& min, DtVector& max) const;
120 
122  virtual void getTerrainExtents(DtVector& nw, DtVector& ne, DtVector& sw, DtVector& se) const;
123 
125  virtual DtVector getDatabaseOrigin() const;
126 
128  virtual void getBoundingBoxCenter(float& x, float& y, float& z) const;
129 
130  //Get the terrain group node.
131  osg::Group* terrainGroupNode();
132 
134  virtual void extractNodes(const std::string& ruleset, bool isRegEx);
135 
137  virtual void extractOceanNodes(const std::string& ruleset, bool isRegEx);
138 
140  virtual void extractSpeedTreeNodes(const std::string& rule, bool isRegEx, const std::string& modelDefinition);
141 
143  virtual void realizeExtractedSpeedTrees(const DtVectorTreeRecords& trees);
144 
146  virtual bool haveExtractedOcean() const;
147 
150  virtual int countNodes(const std::string& rule) const;
151 
154  virtual bool getExtractedNodePosition(const std::string& rule,
155  unsigned int index, double& x, double& y, double& z) const;
156 
159  virtual bool getExtractedNodeOrientation(const std::string& rule,
160  unsigned int index, double& x, double& y, double& z, double& w) const;
161 
164  virtual void moveNode(DtSceneObject* object,
165  DtModel* model, const std::string& rule, unsigned int index);
166 
168  virtual osg::Node* findNode(const std::string& rule, unsigned int index);
169 
171  virtual bool isGlobalScaleTerrain() const;
172 
174  virtual bool getTerrainIntersection(double x, double y, double z,
175  double vx, double vy, double vz, double& retX, double& retY, double& retZ);
176 
180  virtual void clearElevationCache();
181 
184  bool isOsgEarth() const;
185 
187  osgEarth::MapNode *mapNode();
188  const osgEarth::MapNode *mapNode() const;
189 
190  void installOsgEarthFeatureDataCallback(const std::string& featureName,
192 
194  virtual const DtTextureVisitor::TextureMap& foundTextures() const;
195 
196  virtual void setOsgEarthMaterialValues(float ambient, float diffuse,
197  float specular, float shininess);
198  virtual void getOsgEarthMaterialValues(float& ambient, float& diffuse,
199  float& specular, float& shininess);
200 
202  DtMetaFileManager::LinkageValueVec& terrainPatchMetaFileFeatures();
203 
205  std::vector<DtVirtualBaseClass*>& terrainAttachments();
206 
208  virtual void setTerrainTreeScaleRandomization(bool isRandomized);
209 
211  virtual bool isTerrainTreeScaleRandomizationEnabled() const;
212 
214  virtual void setTerrainTreeMinScale(double minScale);
215 
217  virtual double terrainTreeMinScale() const;
218 
220  virtual void setTerrainTreeMaxScale(double maxScale);
221 
223  virtual double terrainTreeMaxScale() const;
224 
226  virtual void setTerrainTreeOrientationRandomization(bool isRandomized);
227 
229  virtual bool isTerrainTreeOrientationRandomizationEnabled() const;
230 
232  bool isDestructing();
233 
236  virtual void useICO(bool enable);
237 
239  virtual void setMaxPagedLODs(unsigned int maxPagedLODs);
240 
242  virtual void updateMaxPagedLODs();
243 
245  virtual void slot_channelCreated();
246 
248  virtual void slot_windowCreated();
249 
250 
252  virtual void slot_channelToBeDestroyed();
253 
255  virtual bool alphaToCoverageEnabled();
256 
259  virtual void postExtractionProcessing();
260 
262  virtual bool indirectEnabled();
263 
266  virtual void toggleVisibility(bool visibility);
267 
269  virtual DtOsgEarthFeatureDataBroker* getOsgEarthFeatureDataBroker();
270 
271  private:
275 
276  protected:
277 
279  void removeChildNodesAndCache();
280 
282  void clearStateGraphForAllChannels(void);
283 
284  static void graphBoundingBox(const osg::Node* node, osg::BoundingBox &bbox);
285 
286  //Remove the node from it's parent, and if the parent has no other
287  //Children remove it from it's parent too recursively.
288  void removeEmptyParent(osg::Node* node);
289  void updateBounds();
290 
292  virtual bool getElevation(double lonRadians, double latRadians,
293  double& retElevation);
294 
295  virtual void setPerPixelLightingEnabled(bool setting);
296 
297  virtual void slot_perPixelLightingChanged(bool newVal);
298  virtual void slot_usePixelShaderForOsgEarthModelsChanged();
299  virtual void slot_postUpdate();
300  virtual void setOsgEarthMaterial(float ambient, float diffuse,
301  float specular, float shininess);
302  virtual void setOsgEarthMaterialOnNode(osg::Node& node, float ambient, float diffuse,
303  float specular, float shininess);
304  virtual void setOsgEarthMaterialOnStateSet(osg::StateSet& ss, float ambient, float diffuse,
305  float specular, float shininess);
306 
307  virtual void slot_terrainPaged();
308 
310  // demand if necessary.
311  osgEarth::Util::ElevationQuery* getOrCreateElevationQuery();
312 
313  // Installs a data broker and feature data processing callbacks.
314  void installOsgEarthFeatureDataProcessors();
315 
316  // Sets up the osgEarth GeometryCompiler with custom defaults.
317  virtual void configureOsgEarthFeatureGeometryCompiler();
318 
320  virtual void setupMapNodeIntersectFlag();
321 
322  virtual void setGlobalWindSpeed(float metersPerSecond);
323 
324  virtual void setGlobalWindDirection(float radians);
325 
326  protected:
329 
332 
334 
337 
341  volatile bool myTerrainPagedThisFrame;
349 
350  // List of node pointers that have meta data associated with them
352  // Vector of node with .meta file info associated with them
353  // on this terrain so they can be deleted on page destruction
354  std::vector<DtVirtualBaseClass*> myTerrainAttachments;
355 
357  osgEarth::Util::ElevationQuery* myElevationQuery;
358 
361 
367 
370 
372 
373  friend class DtOsgNodesExtractor;
374 
376 
378 
380 
381  unsigned int myMaxPagedLods;
382 
384 
387  std::vector<RefNode> myIndirectedNodes;
388  std::string myActualFilename;
389 
390  // This is used to implement global wind effects on procedural terrain patches
392 
394 
395  };
396 }
Declaration of the makVrv::DtLightPointVisitor class.
volatile bool myTerrainPagedThisFrame
Definition: DtOsgTerrainPatchObject.h:341
boost::unordered_map< int, std::string > TextureMap
typdef a map of textures
Definition: DtTextureVisitor.h:38
Declaration of the makVrv::DtTextureVisitor class.
DtMetaFileManager::LinkageValueVec myTerrainPatchMetaFileFeatures
Definition: DtOsgTerrainPatchObject.h:351
handles the management of paged tiles and terrain patches being added to the indirect rendering syste...
Definition: DtPagedTilesIndirectManager.h:55
osg::ref_ptr< DtFastGroup > myTerrainGroup
The myTerrainGroup node holds all the terrain polygons except for reforested trees.
Definition: DtOsgTerrainPatchObject.h:331
Definition: DtOsgTerrainPatchObject.h:56
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Definition: featureContext.h:37
osg::ref_ptr< osgEarth::MapNode > myMapNode
Definition: DtOsgTerrainPatchObject.h:333
bool myHaveExtractedOcean
Definition: DtOsgTerrainPatchObject.h:339
std::string myActualFilename
Definition: DtOsgTerrainPatchObject.h:388
Definition: DtOsgNodesExtractor.h:29
Contains makVrv::DtMetaFileManager class.
Contains makVrv::DtFastGroup class.
osg::ref_ptr< osg::Node > RefNode
Definition: DtOsgTerrainPatchObject.h:386
DtOsgTerrainOverlayManager myOverlayManager
Definition: DtOsgTerrainPatchObject.h:335
std::vector< DtTreeRecord * > DtVectorTreeRecords
Definition: DtTreeRecord.h:137
osg::ref_ptr< DtOsgEarthFeatureDataBroker > myOsgEarthFeatureDataBroker
notifies subscribers of feature data loading via an osgEarth layer.
Definition: DtOsgTerrainPatchObject.h:360
DtOsgLightPointManager & myLightPointManager
Definition: DtOsgTerrainPatchObject.h:383
AlphaToCoverageState
The possible states alpha to coverage on a terrain patch.
Definition: DtOsgTerrainPatchObject.h:54
DtOsgLightPointManager registers LightPoint nodes so their TBO can be created and updated in a single...
Definition: DtOsgLightPointManager.h:85
bool myPendingPerPixelLightingValue
Definition: DtOsgTerrainPatchObject.h:342
bool myGlobalFlag
Definition: DtOsgTerrainPatchObject.h:338
A DtTerrainPatchObject contains the methods for loading a file as a terrain.
Definition: DtTerrainPatchObject.h:37
DtOsgEarthFeatureDataBroker listens to osgEarth feature layers (i.e.
Definition: DtOsgEarthFeatureDataBroker.h:60
float myPendingOsgEarthMaterialDiffuse
Definition: DtOsgTerrainPatchObject.h:345
DT_DLL_shape DtNetworkNode * findNode(DtVectorNetwork *vecNwk, unsigned int firstNode, DtPoint &p, DtSpecificationID ID)
DtOsgNodesExtractor * myExtractedNodesLogic
Definition: DtOsgTerrainPatchObject.h:371
std::vector< RefNode > myIndirectedNodes
Definition: DtOsgTerrainPatchObject.h:387
A DtOsgTerrainPatchObject contains the methods for loading a file as a terrain.
Definition: DtOsgTerrainPatchObject.h:50
std::vector< LinkageValuePair > LinkageValueVec
ex.
Definition: DtMetaFileManager.h:52
unsigned int myMaxPagedLods
Definition: DtOsgTerrainPatchObject.h:381
float myPendingOsgEarthMaterialAmbient
Definition: DtOsgTerrainPatchObject.h:344
bool myTerrainTreeOrientationRandomizationEnabled
Definition: DtOsgTerrainPatchObject.h:366
bool myOsgEarthMaterialChanged
Definition: DtOsgTerrainPatchObject.h:343
osg::ref_ptr< DtTerrainPatchGroup > myRoot
The OSG Hierarchy starts with myRoot and has one child: myTerrainGroup.
Definition: DtOsgTerrainPatchObject.h:328
bool myPerPixelLightingChanged
Definition: DtOsgTerrainPatchObject.h:340
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
float myTerrainTreeMinScale
Definition: DtOsgTerrainPatchObject.h:364
bool myIndirectEnabled
Definition: DtOsgTerrainPatchObject.h:379
float myPendingOsgEarthMaterialShininess
Definition: DtOsgTerrainPatchObject.h:347
float myPendingOsgEarthMaterialSpecular
Definition: DtOsgTerrainPatchObject.h:346
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
bool myIsMinimapOnly
Definition: DtOsgTerrainPatchObject.h:393
bool myDestructing
keeps track of when the object is in the destructor.
Definition: DtOsgTerrainPatchObject.h:369
DtPagedTilesIndirectManager * myPagedTilesIndirectManager
Definition: DtOsgTerrainPatchObject.h:385
Manager for setting up terrain layers in an OpenSceneGraph terrain.
Definition: DtOsgTerrainOverlayManager.h:25
A class specifying a single overlay operation.
Definition: DtTerrainOverlayOperation.h:25
Base class to provide boost signal/slot management.
osg::ref_ptr< osgEarth::Wind > myGlobalWind
Definition: DtOsgTerrainPatchObject.h:391
A DtSceneObject represents an object that can be positioned in the scene by (possibly) attaching it t...
Definition: DtSceneObject.h:41
Definition: DtOsgEarthFeatureDataBroker.h:65
Contains makVrv::DtDynamicTerrainWorld class.
AlphaToCoverageState myAlphaToCoverageState
Definition: DtOsgTerrainPatchObject.h:377
A model which owns a single model instance.
Definition: DtModel.h:56
Contains DLL export macros.
float myTerrainTreeMaxScale
Definition: DtOsgTerrainPatchObject.h:365
Feature Insertion/Removal/Paging Features represent parts of the terrain which are individually ident...
Definition: DtDynamicTerrainWorld.h:99
DtDynamicTerrainWorld::FeatureHandle myDynamicTerrainHandle
Definition: DtOsgTerrainPatchObject.h:375
Contains makVrv::DtOsgEarthFeatureDataBroker class.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtSignalConnectionManager mySignals
Definition: DtOsgTerrainPatchObject.h:348
bool myTerrainTreeScaleRandomizationEnabled
Tree randomization settings.
Definition: DtOsgTerrainPatchObject.h:363
DtTextureVisitor::TextureMap myFoundTextureMap
Definition: DtOsgTerrainPatchObject.h:336
Definition: DtOsgTerrainPatchObject.h:57
osgEarth::Util::ElevationQuery * myElevationQuery
Object used to sample the elevation model at various resolutions.
Definition: DtOsgTerrainPatchObject.h:357
Contains makVrv::DtTerrainPatchObject class.
std::vector< DtVirtualBaseClass * > myTerrainAttachments
Definition: DtOsgTerrainPatchObject.h:354

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)