14 #ifndef OSGTERRAIN_TERRAINTILE
15 #define OSGTERRAIN_TERRAINTILE 1
18 #include <osg/CoordinateSystemNode>
20 #include <osgDB/ReaderWriter>
22 #include <osgTerrain/TerrainTechnique>
23 #include <osgTerrain/Layer>
24 #include <osgTerrain/Locator>
36 TileID(
int in_level,
int in_x,
int in_y);
38 bool operator == (
const TileID& rhs)
const
43 bool operator != (
const TileID& rhs)
const
48 bool operator < (
const TileID& rhs)
const
52 if (x<rhs.
x)
return true;
53 if (x>rhs.
x)
return false;
81 void init(
int dirtyMask,
bool assumeMultiThreaded);
96 void setTileID(
const TileID& tileID);
123 void setElevationLayer(
Layer* layer);
133 void setColorLayer(
unsigned int i,
Layer* layer);
139 const Layer*
getColorLayer(
unsigned int i)
const {
return i<_colorLayers.size() ? _colorLayers[i].get() : 0; }
142 unsigned int getNumColorLayers()
const {
return static_cast<unsigned int>(_colorLayers.size()); }
164 ENABLE_BLENDING_WHEN_ALPHA_PRESENT
177 IMAGERY_DIRTY = 1<<0,
178 ELEVATION_DIRTY = 1<<1,
179 LEFT_EDGE_DIRTY = 1<<2,
180 RIGHT_EDGE_DIRTY = 1<<3,
181 TOP_EDGE_DIRTY = 1<<4,
182 TOP_LEFT_CORNER_DIRTY = 1<<5,
183 TOP_RIGHT_CORNER_DIRTY = 1<<6,
184 BOTTOM_EDGE_DIRTY = 1<<7,
185 BOTTOM_LEFT_CORNER_DIRTY = 1<<8,
186 BOTTOM_RIGHT_CORNER_DIRTY = 1<<9,
187 EDGES_DIRTY = LEFT_EDGE_DIRTY | RIGHT_EDGE_DIRTY | TOP_EDGE_DIRTY | BOTTOM_EDGE_DIRTY |
188 TOP_LEFT_CORNER_DIRTY | TOP_RIGHT_CORNER_DIRTY | BOTTOM_LEFT_CORNER_DIRTY | BOTTOM_RIGHT_CORNER_DIRTY,
189 ALL_DIRTY = IMAGERY_DIRTY | ELEVATION_DIRTY | EDGES_DIRTY
193 void setDirty(
bool dirty) { setDirtyMask(dirty ? ALL_DIRTY : NOT_DIRTY); }
196 int getDirty()
const {
return _dirtyMask!=NOT_DIRTY; }
200 void setDirtyMask(
int dirtyMask);
212 virtual bool deferExternalLayerLoading()
const = 0;
222 virtual void releaseGLObjects(
osg::State* = 0)
const;
229 typedef std::vector< osg::ref_ptr<Layer> >
Layers;
261 void allow(
const std::string& setname) { _setWhiteList.insert(setname); }
272 bool layerAcceptable(
const std::string& setname)
const;
275 virtual bool deferExternalLayerLoading()
const;
bool getTreatBoundariesToValidDataAsDefaultValue() const
TerrainTechnique * getTerrainTechnique()
SetWhiteList _setWhiteList
Layer * getColorLayer(unsigned int i)
std::vector< osg::ref_ptr< Layer > > Layers
BlendingPolicy _blendingPolicy
unsigned int getMinimumNumOfLayers() const
#define META_Node(library, name)
osg::ref_ptr< Layer > _elevationLayer
const Layer * getElevationLayer() const
std::set< std::string > SetWhiteList
#define OSGTERRAIN_EXPORT
void setDirty(bool dirty)
const Layer * getColorLayer(unsigned int i) const
osg::ref_ptr< Locator > _locator
void setReplaceSwitchLayer(bool replaceSwitchLayer)
Layer * getElevationLayer()
void setLocator(Locator *locator)
unsigned int _minumumNumberOfLayers
BlendingPolicy getBlendingPolicy() const
bool getRequiresNormals() const
osg::ref_ptr< TerrainTechnique > _terrainTechnique
const TerrainTechnique * getTerrainTechnique() const
void allow(const std::string &setname)
bool getReplaceSwitchLayer() const
const Locator * getLocator() const
void setAllowAll(bool allowAll)
unsigned int getNumColorLayers() const
void setBlendingPolicy(BlendingPolicy policy)
bool _treatBoundariesToValidDataAsDefaultValue
void setMinimumNumOfLayers(unsigned int numLayers)
void setTreatBoundariesToValidDataAsDefaultValue(bool flag)
void setRequiresNormals(bool flag)
const Terrain * getTerrain() const
const TileID & getTileID() const