26 #include <unordered_map>
43 class DtCoordinateSystem;
45 class DtTerrainPatchGroup;
46 class DtOsgNodesExtractor;
47 class DtOsgLightPointManager;
48 class DtPagedTilesIndirectManager;
76 virtual void setTerrainDefinition(
const std::string& modelDefinitionName);
79 virtual void slot_atcGlobalTerrainEnableChanged();
86 virtual void enableOverlay(
int type,
const std::string& definition);
89 virtual void disableOverlay(
int type);
92 virtual void disableAllOverlays();
95 virtual void setOverlayScale(
int type,
double x,
double y);
98 virtual void setWrapMode(
int type,
int);
101 virtual void setBlendMode(
int type,
int);
104 virtual void setOverlayOffset(
int type,
double x,
double y);
107 virtual void setLayerEnabled(
const std::string& rule,
bool status);
110 virtual void setRasterLayerPosition(
int type,
int pos);
113 virtual void setIsMinimapOnly(
bool isForMinimap);
115 virtual bool isMinimapOnly()
const;
119 virtual void setIsPageable(
bool isPageable);
122 virtual bool isPageable()
const;
126 virtual void setPageableCenterPosition(
const DtVector& pageableCenter);
130 virtual DtVector pageableCenterPosition()
const;
134 virtual void setPageableRadius(
double radius);
138 virtual double pageableRadius()
const;
142 virtual void setPageOutDistance(
double pageOutDistance);
146 virtual double pageOutDistance()
const;
151 virtual std::string overlayDefinition(
int type);
153 virtual std::vector<double> overlayScale(
int type);
154 virtual std::vector<double> overlayOffset(
int type);
165 virtual DtVector getDatabaseOrigin()
const;
168 virtual void getBoundingBoxCenter(
float& x,
float& y,
float& z)
const;
171 osg::Group* terrainGroupNode();
174 virtual void extractNodes(
const std::string& ruleset,
bool isRegEx)
override;
177 virtual void extractOceanNodes(
const std::string& ruleset,
bool isRegEx)
override;
180 virtual void extractSpeedTreeNodes(
const std::string& rule,
bool isRegEx,
const std::string& modelDefinition)
override;
186 virtual bool haveExtractedOcean()
const;
188 virtual bool canExtractOceanInIndirect(
void)
const;
192 virtual int countNodes(
const std::string& rule)
const;
196 virtual bool getExtractedNodePosition(
const std::string& rule,
197 unsigned int index,
double& x,
double& y,
double& z)
const;
201 virtual bool getExtractedNodeOrientation(
const std::string& rule,
202 unsigned int index,
double& x,
double& y,
double& z,
double& w)
const;
207 DtModel* model,
const std::string& rule,
unsigned int index);
210 virtual osg::Node*
findNode(
const std::string& rule,
unsigned int index);
213 virtual bool isGlobalScaleTerrain()
const;
216 virtual bool getTerrainIntersection(
double x,
double y,
double z,
217 double vx,
double vy,
double vz,
double& retX,
double& retY,
double& retZ);
222 virtual void clearElevationCache();
226 bool isOsgEarth()
const;
229 osgEarth::MapNode *mapNode();
230 const osgEarth::MapNode *mapNode()
const;
232 void installOsgEarthFeatureDataCallback(
const std::string& featureName,
238 virtual void setOsgEarthMaterialValues(
float ambient,
float diffuse,
239 float specular,
float shininess);
240 virtual void getOsgEarthMaterialValues(
float& ambient,
float& diffuse,
241 float& specular,
float& shininess);
247 std::vector<DtVirtualBaseClass*>& terrainAttachments();
250 virtual void setTerrainTreeScaleRandomization(
bool isRandomized);
253 virtual bool isTerrainTreeScaleRandomizationEnabled()
const;
256 virtual void setTerrainTreeMinScale(
double minScale);
259 virtual double terrainTreeMinScale()
const;
262 virtual void setTerrainTreeMaxScale(
double maxScale);
265 virtual double terrainTreeMaxScale()
const;
268 virtual void setTerrainTreeOrientationRandomization(
bool isRandomized);
271 virtual bool isTerrainTreeOrientationRandomizationEnabled()
const;
274 bool isDestructing();
278 virtual void useICO(
bool enable);
281 virtual void setMaxPagedLODs(
unsigned int maxPagedLODs);
284 virtual void updateMaxPagedLODs();
287 virtual void slot_channelCreated();
290 virtual void slot_windowCreated();
294 virtual void slot_channelToBeDestroyed();
297 virtual bool alphaToCoverageEnabled();
301 virtual void postExtractionProcessing();
304 virtual bool indirectEnabled();
308 virtual void toggleVisibility(
bool visibility);
316 static void authorizeBingImageryLayer(osgEarth::BingImageLayer* bingImageLayer,
bool openLayer =
true);
322 virtual bool isMetaFlight(
void)
const;
332 void removeChildNodesAndCache();
335 void clearStateGraphForAllChannels(
void);
337 static void graphBoundingBox(
const osg::Node* node, osg::BoundingBox &bbox);
341 void removeEmptyParent(osg::Node* node);
345 virtual void updatePageablePropertiesBasedOnNode(osg::Node* node);
348 virtual bool getElevation(
double lonRadians,
double latRadians,
349 double& retElevation);
351 virtual void slot_perPixelLightingChanged(
bool newVal);
352 virtual void slot_usePixelShaderForOsgEarthModelsChanged();
353 virtual void slot_postUpdate();
354 virtual void setOsgEarthMaterial(
float ambient,
float diffuse,
355 float specular,
float shininess);
356 virtual void setOsgEarthMaterialOnNode(osg::Node& node,
float ambient,
float diffuse,
357 float specular,
float shininess);
358 virtual void setOsgEarthMaterialOnStateSet(osg::StateSet& ss,
float ambient,
float diffuse,
359 float specular,
float shininess);
361 virtual void slot_terrainPaged();
365 osgEarth::Util::ElevationQuery* getOrCreateElevationQuery();
368 void installOsgEarthFeatureDataProcessors();
371 virtual void configureOsgEarthFeatureGeometryCompiler();
374 virtual void setupMapNodeIntersectFlag();
376 virtual void setGlobalWindSpeed(
float metersPerSecond);
378 virtual void setGlobalWindDirection(
float radians);
381 virtual void setupMapNode(
void);
384 virtual void setupOsgEarthBlendingForHbao(osgEarth::Map* map);
387 virtual void setupOsgEarthLayersForHeightmapRendering(osgEarth::Map* map);
393 virtual void slot_coordinateSystemChanged();
396 virtual void extractNodesExecute(osg::Node* node,
const std::string& ruleset,
bool isRegEx);
399 virtual void extractOceanNodesExecute(osg::Node* node,
const std::string& ruleset,
bool isRegEx);
402 virtual void extractSpeedTreeNodesExecute(osg::Node* node,
const std::string& rule,
bool isRegEx,
const std::string& modelDefinition);
405 virtual void postExtractionProcessingExecute(
void);
408 virtual void parseDynamicTerrain(
void);
413 virtual void executeExtractionOperationsDeferred(osg::Node* node);
417 virtual void setupOsgEarthTextureLimits();
503 const osg::Node* myMetaflightGroupNode =
nullptr;
505 osg::Node* myPagedLod =
nullptr;
double myPageableRadius
Definition: DtOsgTerrainPatchObject.h:496
Declaration of the makVrv::DtLightPointVisitor class.
DtSignalConnectionManager myConnections
Definition: DtOsgTerrainPatchObject.h:441
std::unordered_map< std::string, bool > myExtractOceanNodesOps
used to defer extraction of ocean (only for paged osgs)
Definition: DtOsgTerrainPatchObject.h:520
volatile bool myTerrainPagedThisFrame
Definition: DtOsgTerrainPatchObject.h:434
Declaration of the makVrv::DtTextureVisitor class.
boost::signalslib::connection myPagedTilesIndirectManagerConnection
connection to listen in on when instances were added to the terrain skin only for non-metaflight ...
Definition: DtOsgTerrainPatchObject.h:483
DtMetaFileManager::LinkageValueVec myTerrainPatchMetaFileFeatures
Definition: DtOsgTerrainPatchObject.h:444
handles the management of paged tiles and terrain patches being added to the indirect rendering syste...
Definition: DtPagedTilesIndirectManager.h:69
osg::ref_ptr< DtFastGroup > myTerrainGroup
The myTerrainGroup node holds all the terrain polygons except for reforested trees.
Definition: DtOsgTerrainPatchObject.h:424
Definition: DtOsgTerrainPatchObject.h:60
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
osg::ref_ptr< osgEarth::MapNode > myMapNode
Definition: DtOsgTerrainPatchObject.h:426
bool myHaveExtractedOcean
Definition: DtOsgTerrainPatchObject.h:432
std::string myActualFilename
Definition: DtOsgTerrainPatchObject.h:487
Contains makVrv::DtFastGroup class.
osg::ref_ptr< osg::Node > RefNode
Definition: DtOsgTerrainPatchObject.h:485
DtOsgTerrainOverlayManager myOverlayManager
Definition: DtOsgTerrainPatchObject.h:428
std::vector< DtTreeRecord * > DtVectorTreeRecords
Definition: DtTreeRecord.h:139
osg::ref_ptr< DtOsgEarthFeatureDataBroker > myOsgEarthFeatureDataBroker
notifies subscribers of feature data loading via an osgEarth layer.
Definition: DtOsgTerrainPatchObject.h:453
std::vector< ExtractSpeedTreeOp > myExtractSpeedTreeOps
Definition: DtOsgTerrainPatchObject.h:517
DtOsgLightPointManager & myLightPointManager
Definition: DtOsgTerrainPatchObject.h:476
AlphaToCoverageState
The possible states alpha to coverage on a terrain patch.
Definition: DtOsgTerrainPatchObject.h:58
DtOsgLightPointManager registers LightPoint nodes so their TBO can be created and updated in a single...
Definition: DtOsgLightPointManager.h:128
std::unordered_map< int, std::string > TextureMap
typdef a map of textures
Definition: DtTextureVisitor.h:36
bool myPendingPerPixelLightingValue
Definition: DtOsgTerrainPatchObject.h:435
bool myGlobalFlag
Definition: DtOsgTerrainPatchObject.h:431
A DtTerrainPatchObject contains the methods for loading a file as a terrain. When loading a file as a...
Definition: DtTerrainPatchObject.h:35
std::unordered_map< std::string, bool > myExtractNodesOps
used to defer extraction of nodes (only for paged osgs)
Definition: DtOsgTerrainPatchObject.h:508
DtOsgEarthFeatureDataBroker listens to osgEarth feature layers (i.e. model layers with a feature sour...
Definition: DtOsgEarthFeatureDataBroker.h:60
float myPendingOsgEarthMaterialDiffuse
Definition: DtOsgTerrainPatchObject.h:438
DT_DLL_shape DtNetworkNode * findNode(DtVectorNetwork *vecNwk, unsigned int firstNode, DtPoint &p, DtSpecificationID ID)
DtOsgNodesExtractor * myExtractedNodesLogic
Definition: DtOsgTerrainPatchObject.h:464
std::vector< RefNode > myIndirectedNodes
Definition: DtOsgTerrainPatchObject.h:486
A DtOsgTerrainPatchObject contains the methods for loading a file as a terrain. When loading a file a...
Definition: DtOsgTerrainPatchObject.h:54
unsigned int myMaxPagedLods
Definition: DtOsgTerrainPatchObject.h:474
float myPendingOsgEarthMaterialAmbient
Definition: DtOsgTerrainPatchObject.h:437
bool myTerrainTreeOrientationRandomizationEnabled
Definition: DtOsgTerrainPatchObject.h:459
bool myOsgEarthMaterialChanged
Definition: DtOsgTerrainPatchObject.h:436
DtVector myPageableCenterPosition
Definition: DtOsgTerrainPatchObject.h:495
osg::ref_ptr< DtTerrainPatchGroup > myRoot
The OSG Hierarchy starts with myRoot and has one child: myTerrainGroup.
Definition: DtOsgTerrainPatchObject.h:421
bool myPerPixelLightingChanged
Definition: DtOsgTerrainPatchObject.h:433
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
float myTerrainTreeMinScale
Definition: DtOsgTerrainPatchObject.h:457
bool myIndirectEnabled
Definition: DtOsgTerrainPatchObject.h:472
float myPendingOsgEarthMaterialShininess
Definition: DtOsgTerrainPatchObject.h:440
float myPendingOsgEarthMaterialSpecular
Definition: DtOsgTerrainPatchObject.h:439
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
bool myIsMinimapOnly
Definition: DtOsgTerrainPatchObject.h:492
bool myDestructing
keeps track of when the object is in the destructor.
Definition: DtOsgTerrainPatchObject.h:462
DtPagedTilesIndirectManager * myPagedTilesIndirectManager
Definition: DtOsgTerrainPatchObject.h:479
Manager for setting up terrain layers in an OpenSceneGraph terrain.
Definition: DtOsgTerrainOverlayManager.h:25
A class specifying a single overlay operation.
Definition: DtTerrainOverlayOperation.h:22
Base class to provide boost signal/slot management.
osg::ref_ptr< osgEarth::Wind > myGlobalWind
Definition: DtOsgTerrainPatchObject.h:490
A DtSceneObject represents an object that can be positioned in the scene by (possibly) attaching it t...
Definition: DtSceneObject.h:44
Definition: DtOsgEarthFeatureDataBroker.h:65
Contains makVrv::DtDynamicTerrainWorld class.
AlphaToCoverageState myAlphaToCoverageState
Definition: DtOsgTerrainPatchObject.h:470
A model which owns a single model instance. A DtModel is a managing container for a single DtModelIns...
Definition: DtModel.h:56
Contains DLL export macros.
float myTerrainTreeMaxScale
Definition: DtOsgTerrainPatchObject.h:458
Feature Insertion/Removal/Paging Features represent parts of the terrain which are individually ident...
Definition: DtDynamicTerrainWorld.h:99
DtDynamicTerrainWorld::FeatureHandle myDynamicTerrainHandle
Definition: DtOsgTerrainPatchObject.h:468
Contains makVrv::DtOsgEarthFeatureDataBroker class.
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
double myPageOutDistance
Definition: DtOsgTerrainPatchObject.h:497
bool myIsPageable
Definition: DtOsgTerrainPatchObject.h:494
bool myTerrainTreeScaleRandomizationEnabled
Tree randomization settings.
Definition: DtOsgTerrainPatchObject.h:456
DtTextureVisitor::TextureMap myFoundTextureMap
Definition: DtOsgTerrainPatchObject.h:429
Definition: DtOsgTerrainPatchObject.h:61
osgEarth::Util::ElevationQuery * myElevationQuery
Object used to sample the elevation model at various resolutions.
Definition: DtOsgTerrainPatchObject.h:450
Contains makVrv::DtTerrainPatchObject class.
std::vector< DtVirtualBaseClass * > myTerrainAttachments
Definition: DtOsgTerrainPatchObject.h:447