25 #include <boost/unordered_map.hpp>
37 class DtTerrainPatchGroup;
38 class DtOsgExtractedNodesLogic;
57 virtual void setTerrainDefinition(
const std::string& modelDefinitionName);
60 virtual void enableOverlay(
int type,
const std::string& definition);
63 virtual void disableOverlay(
int type);
66 virtual void disableAllOverlays();
69 virtual void showLightPoints(
bool show);
72 virtual void setOverlayScale(
int type,
double x,
double y);
75 virtual void setWrapMode(
int type,
int);
78 virtual void setBlendMode(
int type,
int);
81 virtual void setOverlayOffset(
int type,
double x,
double y);
84 virtual void setLayerEnabled(
const std::string& rule,
bool status);
87 virtual void setRasterLayerPosition(
int type,
int pos);
92 virtual std::string overlayDefinition(
int type);
94 virtual std::vector<double> overlayScale(
int type);
95 virtual std::vector<double> overlayOffset(
int type);
106 virtual DtVector getDatabaseOrigin()
const;
109 virtual void getBoundingBoxCenter(
float& x,
float& y,
float& z)
const;
112 osg::Group* terrainGroupNode();
115 virtual void extractNodes(
const std::string& ruleset,
bool isRegEx);
118 virtual void extractOceanNodes(
const std::string& ruleset,
bool isRegEx);
121 virtual bool haveExtractedOcean()
const;
125 virtual int countNodes(
const std::string& rule)
const;
129 virtual bool getExtractedNodePosition(
const std::string& rule,
130 unsigned int index,
double& x,
double& y,
double& z)
const;
134 virtual bool getExtractedNodeOrientation(
const std::string& rule,
135 unsigned int index,
double& x,
double& y,
double& z,
double& w)
const;
140 DtModel* model,
const std::string& rule,
unsigned int index);
143 virtual osg::Node*
findNode(
const std::string& rule,
unsigned int index);
146 virtual bool isGlobalScaleTerrain()
const;
149 virtual bool getTerrainIntersection(
double x,
double y,
double z,
150 double vx,
double vy,
double vz,
double& retX,
double& retY,
double& retZ );
155 virtual void clearElevationCache();
159 bool isOsgEarth()
const;
162 osgEarth::MapNode *mapNode();
163 const osgEarth::MapNode *mapNode()
const;
165 void installOsgEarthFeatureDataCallback(
const std::string& featureName,
171 virtual void setOsgEarthMaterialValues(
float ambient,
float diffuse,
172 float specular,
float shininess );
173 virtual void getOsgEarthMaterialValues(
float& ambient,
float& diffuse,
174 float& specular,
float& shininess );
183 std::vector<DtVirtualBaseClass*>& terrainAttachments();
189 virtual void setTerrainTreeScaleRandomization(
bool isRandomized );
192 virtual bool isTerrainTreeScaleRandomizationEnabled()
const;
195 virtual void setTerrainTreeMinScale(
double minScale);
198 virtual double terrainTreeMinScale()
const;
201 virtual void setTerrainTreeMaxScale(
double maxScale);
204 virtual double terrainTreeMaxScale()
const;
207 virtual void setTerrainTreeOrientationRandomization(
bool isRandomized );
210 virtual bool isTerrainTreeOrientationRandomizationEnabled()
const;
213 bool isDestructing();
217 virtual void useICO(
bool enable);
220 virtual void setMaxPagedLODs(
unsigned int maxPagedLODs );
230 void removeChildNodesAndCache();
233 void clearStateGraphForAllChannels(
void);
235 static void graphBoundingBox(
const osg::Node* node, osg::BoundingBox &bbox);
239 void removeEmptyParent(osg::Node* node);
243 virtual bool getElevation(
double lonRadians,
double latRadians,
244 double& retElevation );
246 virtual void setPerPixelLightingEnabled(
bool setting );
248 virtual void slot_perPixelLightingChanged(
bool newVal );
249 virtual void slot_usePixelShaderForOsgEarthModelsChanged();
250 virtual void slot_postUpdate();
251 virtual void setOsgEarthMaterial(
float ambient,
float diffuse,
252 float specular,
float shininess );
253 virtual void setOsgEarthMaterialOnNode( osg::Node& node,
float ambient,
float diffuse,
254 float specular,
float shininess );
255 virtual void setOsgEarthMaterialOnStateSet( osg::StateSet& ss,
float ambient,
float diffuse,
256 float specular,
float shininess );
258 virtual void slot_terrainPaged();
262 osgEarth::ElevationQuery* getOrCreateElevationQuery();
265 void installOsgEarthFeatureDataProcessors();
268 void configureOsgEarthFeatureGeometryCompiler();
274 osg::ref_ptr<DtTerrainPatchGroup>
myRoot;