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();
203 virtual void setTerrainTreeScaleRandomization(
bool isRandomized);
206 virtual bool isTerrainTreeScaleRandomizationEnabled()
const;
209 virtual void setTerrainTreeMinScale(
double minScale);
212 virtual double terrainTreeMinScale()
const;
215 virtual void setTerrainTreeMaxScale(
double maxScale);
218 virtual double terrainTreeMaxScale()
const;
221 virtual void setTerrainTreeOrientationRandomization(
bool isRandomized);
224 virtual bool isTerrainTreeOrientationRandomizationEnabled()
const;
227 bool isDestructing();
231 virtual void useICO(
bool enable);
234 virtual void setMaxPagedLODs(
unsigned int maxPagedLODs);
237 virtual void updateMaxPagedLODs();
240 virtual void slot_channelCreated();
243 virtual void slot_channelToBeDestroyed();
246 virtual bool alphaToCoverageEnabled();
256 void removeChildNodesAndCache();
259 void clearStateGraphForAllChannels(
void);
261 static void graphBoundingBox(
const osg::Node* node, osg::BoundingBox &bbox);
265 void removeEmptyParent(osg::Node* node);
269 virtual bool getElevation(
double lonRadians,
double latRadians,
270 double& retElevation);
272 virtual void setPerPixelLightingEnabled(
bool setting);
274 virtual void slot_perPixelLightingChanged(
bool newVal);
275 virtual void slot_usePixelShaderForOsgEarthModelsChanged();
276 virtual void slot_postUpdate();
277 virtual void setOsgEarthMaterial(
float ambient,
float diffuse,
278 float specular,
float shininess);
279 virtual void setOsgEarthMaterialOnNode(osg::Node& node,
float ambient,
float diffuse,
280 float specular,
float shininess);
281 virtual void setOsgEarthMaterialOnStateSet(osg::StateSet& ss,
float ambient,
float diffuse,
282 float specular,
float shininess);
284 virtual void slot_terrainPaged();
288 osgEarth::ElevationQuery* getOrCreateElevationQuery();
291 void installOsgEarthFeatureDataProcessors();
294 void configureOsgEarthFeatureGeometryCompiler();
300 osg::ref_ptr<DtTerrainPatchGroup>
myRoot;