26 #include <boost/unordered_map.hpp>
39 class DtTerrainPatchGroup;
40 class DtOsgNodesExtractor;
41 class DtOsgLightPointManager;
69 virtual void setTerrainDefinition(
const std::string& modelDefinitionName);
71 virtual void slot_atcGlobalTerrainEnableChanged();
74 virtual void enableOverlay(
int type,
const std::string& definition);
77 virtual void disableOverlay(
int type);
80 virtual void disableAllOverlays();
83 virtual void setOverlayScale(
int type,
double x,
double y);
86 virtual void setWrapMode(
int type,
int);
89 virtual void setBlendMode(
int type,
int);
92 virtual void setOverlayOffset(
int type,
double x,
double y);
95 virtual void setLayerEnabled(
const std::string& rule,
bool status);
98 virtual void setRasterLayerPosition(
int type,
int pos);
103 virtual std::string overlayDefinition(
int type);
105 virtual std::vector<double> overlayScale(
int type);
106 virtual std::vector<double> overlayOffset(
int type);
117 virtual DtVector getDatabaseOrigin()
const;
120 virtual void getBoundingBoxCenter(
float& x,
float& y,
float& z)
const;
123 osg::Group* terrainGroupNode();
126 virtual void extractNodes(
const std::string& ruleset,
bool isRegEx);
129 virtual void extractOceanNodes(
const std::string& ruleset,
bool isRegEx);
132 virtual void extractSpeedTreeNodes(
const std::string& rule,
bool isRegEx,
const std::string& modelDefinition);
138 virtual bool haveExtractedOcean()
const;
142 virtual int countNodes(
const std::string& rule)
const;
146 virtual bool getExtractedNodePosition(
const std::string& rule,
147 unsigned int index,
double& x,
double& y,
double& z)
const;
151 virtual bool getExtractedNodeOrientation(
const std::string& rule,
152 unsigned int index,
double& x,
double& y,
double& z,
double& w)
const;
157 DtModel* model,
const std::string& rule,
unsigned int index);
160 virtual osg::Node*
findNode(
const std::string& rule,
unsigned int index);
163 virtual bool isGlobalScaleTerrain()
const;
166 virtual bool getTerrainIntersection(
double x,
double y,
double z,
167 double vx,
double vy,
double vz,
double& retX,
double& retY,
double& retZ);
172 virtual void clearElevationCache();
176 bool isOsgEarth()
const;
179 osgEarth::MapNode *mapNode();
180 const osgEarth::MapNode *mapNode()
const;
182 void installOsgEarthFeatureDataCallback(
const std::string& featureName,
188 virtual void setOsgEarthMaterialValues(
float ambient,
float diffuse,
189 float specular,
float shininess);
190 virtual void getOsgEarthMaterialValues(
float& ambient,
float& diffuse,
191 float& specular,
float& shininess);
200 std::vector<DtVirtualBaseClass*>& terrainAttachments();
206 virtual void setTerrainTreeScaleRandomization(
bool isRandomized);
209 virtual bool isTerrainTreeScaleRandomizationEnabled()
const;
212 virtual void setTerrainTreeMinScale(
double minScale);
215 virtual double terrainTreeMinScale()
const;
218 virtual void setTerrainTreeMaxScale(
double maxScale);
221 virtual double terrainTreeMaxScale()
const;
224 virtual void setTerrainTreeOrientationRandomization(
bool isRandomized);
227 virtual bool isTerrainTreeOrientationRandomizationEnabled()
const;
230 bool isDestructing();
234 virtual void useICO(
bool enable);
237 virtual void setMaxPagedLODs(
unsigned int maxPagedLODs);
240 virtual void updateMaxPagedLODs();
243 virtual void slot_channelCreated();
246 virtual void slot_channelToBeDestroyed();
249 virtual bool alphaToCoverageEnabled();
262 void removeChildNodesAndCache();
265 void clearStateGraphForAllChannels(
void);
267 static void graphBoundingBox(
const osg::Node* node, osg::BoundingBox &bbox);
271 void removeEmptyParent(osg::Node* node);
275 virtual bool getElevation(
double lonRadians,
double latRadians,
276 double& retElevation);
278 virtual void setPerPixelLightingEnabled(
bool setting);
280 virtual void slot_perPixelLightingChanged(
bool newVal);
281 virtual void slot_usePixelShaderForOsgEarthModelsChanged();
282 virtual void slot_postUpdate();
283 virtual void setOsgEarthMaterial(
float ambient,
float diffuse,
284 float specular,
float shininess);
285 virtual void setOsgEarthMaterialOnNode(osg::Node& node,
float ambient,
float diffuse,
286 float specular,
float shininess);
287 virtual void setOsgEarthMaterialOnStateSet(osg::StateSet& ss,
float ambient,
float diffuse,
288 float specular,
float shininess);
290 virtual void slot_terrainPaged();
294 osgEarth::ElevationQuery* getOrCreateElevationQuery();
297 void installOsgEarthFeatureDataProcessors();
300 void configureOsgEarthFeatureGeometryCompiler();
306 osg::ref_ptr<DtTerrainPatchGroup>
myRoot;