Hi all,
(That's not really a "true" submission but I guess this is more appropriate
than in osg-users)
Optimizer::StateVisitor::apply() methods always check it statesets datavariance
is static (ss->getDataVariance()==osg::Object::STATIC) whatever the _optimize[]
parameters are. However, in optimize(), the test is always "if
(optimize(.....->getDataVariance()))".
Is this intended? Should apply() methods be modified?
Just for future reference, here is the code I guess to be good:
"
void Optimizer::StateVisitor::apply(osg::Node& node)
{
osg::StateSet* ss = node.getStateSet();
if (ss && optimize(ss->getDataVariance()))
{
if (isOperationPermissibleForObject(&node) &&
isOperationPermissibleForObject(ss))
{
addStateSet(ss,&node);
}
}
traverse(node);
}
void Optimizer::StateVisitor::apply(osg::Geode& geode)
{
if (!isOperationPermissibleForObject(&geode)) return;
osg::StateSet* ss = geode.getStateSet();
if (ss && optimize(ss->getDataVariance()))
{
if (isOperationPermissibleForObject(ss))
{
addStateSet(ss,&geode);
}
}
for(unsigned int i=0;i<geode.getNumDrawables();++i)
{
osg::Drawable* drawable = geode.getDrawable(i);
if (drawable)
{
ss = drawable->getStateSet();
if (ss && optimize(ss->getDataVariance()))
{
if (isOperationPermissibleForObject(drawable) &&
isOperationPermissibleForObject(ss))
{
addStateSet(ss,drawable);
}
}
}
}
}
"
Cheers,
Sukender
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org