23 #include <osg/ref_ptr>
25 #include <boost/unordered_map.hpp>
37 class DtTerrainPatchGroup;
56 virtual void setTerrainDefinition(
const std::string& modelDefinitionName);
59 virtual void enableOverlay(
int type,
const std::string& definition);
62 virtual void disableOverlay(
int type);
65 virtual void disableAllOverlays();
68 virtual void showLightPoints(
bool show);
71 virtual void setOverlayScale(
int type,
double x,
double y);
74 virtual void setWrapMode(
int type,
int);
77 virtual void setBlendMode(
int type,
int);
80 virtual void setOverlayOffset(
int type,
double x,
double y);
83 virtual void setLayerEnabled(
const std::string& rule,
bool status);
86 virtual void setRasterLayerPosition(
int type,
int pos);
90 virtual std::string overlayDefinition(
int type);
92 virtual std::vector<double> overlayScale(
int type);
93 virtual std::vector<double> overlayOffset(
int type);
104 virtual DtVector getDatabaseOrigin()
const;
107 virtual void getBoundingBoxCenter(
float& x,
float& y,
float& z)
const;
110 osg::Group* terrainGroupNode();
113 virtual void extractNodes(
const std::string& ruleset,
bool isRegEx);
116 virtual void extractOceanNodes(
const std::string& ruleset,
bool isRegEx);
119 virtual bool haveExtractedOcean()
const;
123 virtual int countNodes(
const std::string& rule)
const;
127 virtual bool getExtractedNodePosition(
const std::string& rule,
128 unsigned int index,
double& x,
double& y,
double& z)
const;
132 virtual bool getExtractedNodeOrientation(
const std::string& rule,
133 unsigned int index,
double& x,
double& y,
double& z,
double& w)
const;
138 DtModel* model,
const std::string& rule,
unsigned int index);
141 virtual osg::Node* findNode(
const std::string& rule,
unsigned int index);
144 virtual bool isGlobalScaleTerrain()
const;
147 virtual bool getTerrainIntersection(
double x,
double y,
double z,
148 double vx,
double vy,
double vz,
double& retX,
double& retY,
double& retZ );
153 virtual void clearElevationCache();
157 bool isOsgEarth()
const;
160 osgEarth::MapNode *mapNode();
161 const osgEarth::MapNode *mapNode()
const;
163 void installOsgEarthFeatureDataCallback(
const std::string& featureName,
169 virtual void setOsgEarthMaterialValues(
float ambient,
float diffuse,
170 float specular,
float shininess );
171 virtual void getOsgEarthMaterialValues(
float& ambient,
float& diffuse,
172 float& specular,
float& shininess );
181 std::vector<DtVirtualBaseClass*>& terrainAttachments();
187 virtual void setTerrainTreeScaleRandomization(
bool isRandomized );
190 virtual bool isTerrainTreeScaleRandomizationEnabled()
const;
193 virtual void setTerrainTreeMinScale(
double minScale);
196 virtual double terrainTreeMinScale()
const;
199 virtual void setTerrainTreeMaxScale(
double maxScale);
202 virtual double terrainTreeMaxScale()
const;
205 virtual void setTerrainTreeOrientationRandomization(
bool isRandomized );
208 virtual bool isTerrainTreeOrientationRandomizationEnabled()
const;
211 bool isDestructing();
221 void removeChildNodesAndCache();
223 static void graphBoundingBox(
const osg::Node* node, osg::BoundingBox &bbox);
227 void removeEmptyParent(osg::Node* node);
231 virtual bool getElevation(
double lonRadians,
double latRadians,
232 double& retElevation );
234 virtual void setPerPixelLightingEnabled(
bool setting );
236 virtual void slot_perPixelLightingChanged(
bool newVal );
237 virtual void slot_usePixelShaderForOsgEarthModelsChanged();
238 virtual void slot_postUpdate();
239 virtual void setOsgEarthMaterial(
float ambient,
float diffuse,
240 float specular,
float shininess );
241 virtual void setOsgEarthMaterialOnNode( osg::Node& node,
float ambient,
float diffuse,
242 float specular,
float shininess );
243 virtual void setOsgEarthMaterialOnStateSet( osg::StateSet& ss,
float ambient,
float diffuse,
244 float specular,
float shininess );
246 virtual void slot_terrainPaged();
250 osgEarth::ElevationQuery* getOrCreateElevationQuery();
253 void installOsgEarthFeatureDataProcessors();
256 void configureOsgEarthFeatureGeometryCompiler();
272 osg::ref_ptr<DtTerrainPatchGroup>
myRoot;