Speed up ControllerVisitor by skipping sub graphs that have no ChildrenRequiringUpdateTraversal()

coverity_scan^2
scrawl 8 years ago
parent c58fc6d276
commit a76d693627

@ -770,12 +770,14 @@ bool NpcAnimation::addOrReplaceIndividualPart(ESM::PartReferenceType type, int g
}
}
osg::Node* node = mObjectParts[type]->getNode();
if (node->getNumChildrenRequiringUpdateTraversal() > 0)
{
boost::shared_ptr<SceneUtil::ControllerSource> src;
if (type == ESM::PRT_Head)
{
src = mHeadAnimationTime;
osg::Node* node = mObjectParts[type]->getNode();
if (node->getUserDataContainer())
{
for (unsigned int i=0; i<node->getUserDataContainer()->getNumUserObjects(); ++i)
@ -806,7 +808,8 @@ bool NpcAnimation::addOrReplaceIndividualPart(ESM::PartReferenceType type, int g
src.reset(new NullAnimationTime);
SceneUtil::AssignControllerSourcesVisitor assignVisitor(src);
mObjectParts[type]->getNode()->accept(assignVisitor);
node->accept(assignVisitor);
}
return true;
}

@ -81,6 +81,7 @@ namespace SceneUtil
callback = callback->getNestedCallback();
}
if (node.getNumChildrenRequiringUpdateTraversal() > 0)
traverse(node);
}

Loading…
Cancel
Save