22 #include <osg/ref_ptr>
24 #include <boost/unordered_map.hpp>
36 class DtTerrainPatchGroup;
55 virtual void setTerrainDefinition(
const std::string& modelDefinitionName);
58 virtual void enableOverlay(
int type,
const std::string& definition);
61 virtual void disableOverlay(
int type);
64 virtual void disableAllOverlays();
67 virtual void setOverlayScale(
int type,
double x,
double y);
70 virtual void setWrapMode(
int type,
int);
73 virtual void setBlendMode(
int type,
int);
76 virtual void setOverlayOffset(
int type,
double x,
double y);
79 virtual void setLayerEnabled(
const std::string& rule,
bool status);
82 virtual void setRasterLayerPosition(
int type,
int pos);
86 virtual std::string overlayDefinition(
int type);
88 virtual std::vector<double> overlayScale(
int type);
89 virtual std::vector<double> overlayOffset(
int type);
100 virtual DtVector getDatabaseOrigin()
const;
103 virtual void getBoundingBoxCenter(
float& x,
float& y,
float& z)
const;
106 osg::Group* terrainGroupNode();
109 virtual void extractNodes(
const std::string& ruleset,
bool isRegEx);
112 virtual void extractOceanNodes(
const std::string& ruleset,
bool isRegEx);
115 virtual bool haveExtractedOcean()
const;
119 virtual int countNodes(
const std::string& rule)
const;
123 virtual bool getExtractedNodePosition(
const std::string& rule,
124 unsigned int index,
double& x,
double& y,
double& z)
const;
128 virtual bool getExtractedNodeOrientation(
const std::string& rule,
129 unsigned int index,
double& x,
double& y,
double& z,
double& w)
const;
134 DtModel* model,
const std::string& rule,
unsigned int index);
137 virtual osg::Node* findNode(
const std::string& rule,
unsigned int index);
140 virtual bool isGlobalScaleTerrain()
const;
143 virtual bool getTerrainIntersection(
double x,
double y,
double z,
144 double vx,
double vy,
double vz,
double& retX,
double& retY,
double& retZ );
149 virtual void clearElevationCache();
153 bool isOsgEarth()
const;
156 osgEarth::MapNode *mapNode();
157 const osgEarth::MapNode *mapNode()
const;
164 virtual void setOsgEarthMaterialValues(
float ambient,
float diffuse,
165 float specular,
float shininess );
166 virtual void getOsgEarthMaterialValues(
float& ambient,
float& diffuse,
167 float& specular,
float& shininess );
176 std::vector<DtVirtualBaseClass*>& terrainAttachments();
186 void removeChildNodesAndCache();
188 static void graphBoundingBox(
const osg::Node* node, osg::BoundingBox &bbox);
192 void removeEmptyParent(osg::Node* node);
196 virtual bool getElevation(
double lonRadians,
double latRadians,
197 double& retElevation );
199 virtual void setPerPixelLightingEnabled(
bool setting );
201 virtual void slot_perPixelLightingChanged(
bool newVal );
202 virtual void slot_usePixelShaderForOsgEarthModelsChanged();
203 virtual void slot_postUpdate();
204 virtual void setOsgEarthMaterial(
float ambient,
float diffuse,
205 float specular,
float shininess );
206 virtual void setOsgEarthMaterialOnNode( osg::Node& node,
float ambient,
float diffuse,
207 float specular,
float shininess );
208 virtual void setOsgEarthMaterialOnStateSet( osg::StateSet& ss,
float ambient,
float diffuse,
209 float specular,
float shininess );
211 virtual void slot_terrainPaged();
215 osgEarth::ElevationQuery* getOrCreateElevationQuery();
218 void installOsgEarthFeatureDataProcessors();
221 void configureOsgEarthFeatureGeometryCompiler();
237 osg::ref_ptr<DtTerrainPatchGroup>
myRoot;