Rearranged the traversal and initialization of TerrainTechnique

This commit is contained in:
Robert Osfield
2007-03-27 16:01:01 +00:00
parent e76e4e82db
commit 4688d5ae8e
6 changed files with 69 additions and 34 deletions

View File

@@ -38,29 +38,14 @@ TerrainNode::~TerrainNode()
void TerrainNode::traverse(osg::NodeVisitor& nv)
{
// if app traversal update the frame count.
if (nv.getVisitorType()==osg::NodeVisitor::UPDATE_VISITOR)
if (_terrainTechnique.valid())
{
osgUtil::UpdateVisitor* uv = dynamic_cast<osgUtil::UpdateVisitor*>(&nv);
if (getTerrainTechnique() && uv)
{
getTerrainTechnique()->update(uv);
return;
}
_terrainTechnique->traverse(nv);
}
else if (nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR)
else
{
osgUtil::CullVisitor* cv = dynamic_cast<osgUtil::CullVisitor*>(&nv);
if (getTerrainTechnique() && cv)
{
getTerrainTechnique()->cull(cv);
return;
}
osg::Group::traverse(nv);
}
// otherwise fallback to the Group::traverse()
Group::traverse(nv);
}
void TerrainNode::setTerrainTechnique(osgTerrain::TerrainTechnique* terrainTechnique)