Animation: cache getVelocity()

pull/141/head
scrawl 8 years ago
parent a2cede8f34
commit ee4073541c

@ -575,6 +575,8 @@ namespace MWRender
mAccumCtrl = NULL;
mAnimSources.clear();
mAnimVelocities.clear();
}
bool Animation::hasAnimation(const std::string &anim) const
@ -952,6 +954,10 @@ namespace MWRender
if (!mAccumRoot)
return 0.0f;
std::map<std::string, float>::const_iterator found = mAnimVelocities.find(groupname);
if (found != mAnimVelocities.end())
return found->second;
// Look in reverse; last-inserted source has priority.
AnimSourceList::const_reverse_iterator animsrc(mAnimSources.rbegin());
for(;animsrc != mAnimSources.rend();++animsrc)
@ -999,6 +1005,8 @@ namespace MWRender
}
}
mAnimVelocities.insert(std::make_pair(groupname, velocity));
return velocity;
}

@ -274,6 +274,8 @@ protected:
float mAlpha;
mutable std::map<std::string, float> mAnimVelocities;
osg::ref_ptr<SceneUtil::LightListCallback> mLightListCallback;
const NodeMap& getNodeMap() const;

Loading…
Cancel
Save