optimizer: consider a Group with more than one child redundant as well

While there could be some value in this hierarchy (i.e. improved culling), we don't know if this is being used sensibly; and using a 'flat' hierarchy helps other optimizations.
coverity_scan^2
scrawl 8 years ago
parent 75677f03e7
commit 330e5fefd1

@ -840,18 +840,20 @@ void Optimizer::RemoveRedundantNodesVisitor::removeRedundantNodes()
// take a copy of parents list since subsequent removes will modify the original one. // take a copy of parents list since subsequent removes will modify the original one.
osg::Node::ParentList parents = group->getParents(); osg::Node::ParentList parents = group->getParents();
if (group->getNumChildren()==1) for(osg::Node::ParentList::iterator pitr=parents.begin();
pitr!=parents.end();
++pitr)
{ {
osg::Node* child = group->getChild(0); for (unsigned int i=0; i<group->getNumChildren(); ++i)
for(osg::Node::ParentList::iterator pitr=parents.begin();
pitr!=parents.end();
++pitr)
{ {
(*pitr)->replaceChild(group.get(),child); osg::Node* child = group->getChild(i);
(*pitr)->addChild(child);
} }
(*pitr)->removeChild(group);
} }
group->removeChildren(0, group->getNumChildren());
} }
else else
{ {

Loading…
Cancel
Save