Moved across to using more flexible dirtyMark when dirtying tiles

This commit is contained in:
Robert Osfield
2010-05-27 13:58:46 +00:00
parent 2c77b3d637
commit 72663ec3df
2 changed files with 28 additions and 22 deletions

View File

@@ -50,11 +50,32 @@ Terrain::~Terrain()
{
const_cast<TerrainTile*>(*itr)->_terrain = 0;
}
_terrainTileSet.clear();
_terrainTileMap.clear();
}
void Terrain::setSampleRatio(float ratio)
{
if (_sampleRatio == ratio) return;
_sampleRatio = ratio;
dirtyRegisteredTiles();
}
void Terrain::setVerticalScale(float scale)
{
if (_verticalScale == scale) return;
_verticalScale = scale;
dirtyRegisteredTiles();
}
void Terrain::setBlendingPolicy(TerrainTile::BlendingPolicy policy)
{
if (_blendingPolicy == policy) return;
_blendingPolicy = policy;
dirtyRegisteredTiles();
}
void Terrain::traverse(osg::NodeVisitor& nv)
{
if (nv.getVisitorType()==osg::NodeVisitor::UPDATE_VISITOR)
@@ -107,7 +128,7 @@ const TerrainTile* Terrain::getTile(const TileID& tileID) const
return itr->second;
}
void Terrain::dirtyRegisteredTiles()
void Terrain::dirtyRegisteredTiles(int dirtyMask)
{
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
@@ -115,7 +136,7 @@ void Terrain::dirtyRegisteredTiles()
itr != _terrainTileSet.end();
++itr)
{
(const_cast<TerrainTile*>(*itr))->setDirty(true);
(const_cast<TerrainTile*>(*itr))->setDirtyMask(dirtyMask);
}
}