1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-01 07:36:41 +00:00

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

This commit is contained in:
scrawl 2017-02-03 23:10:14 +01:00
parent c58fc6d276
commit a76d693627
2 changed files with 35 additions and 31 deletions

View file

@ -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;
}

View file

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