1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-25 03:40:40 +00:00

Avoid creating an AnimationValue per ObjectList

This commit is contained in:
Chris Robinson 2013-04-20 17:13:27 -07:00
parent ace7d647e5
commit 835ff8eb1e
2 changed files with 4 additions and 3 deletions

View File

@ -32,7 +32,8 @@ void Animation::destroyObjectList(Ogre::SceneManager *sceneMgr, NifOgre::ObjectL
}
Animation::Animation(const MWWorld::Ptr &ptr)
: mPtr(ptr)
: mAnimationBaseValuePtr(OGRE_NEW AnimationValue(this))
, mPtr(ptr)
, mController(NULL)
, mInsert(NULL)
, mSkelBase(NULL)
@ -70,7 +71,6 @@ void Animation::addObjectList(Ogre::SceneNode *node, const std::string &model, b
mInsert = node->createChildSceneNode();
assert(mInsert);
}
Ogre::SharedPtr<Ogre::ControllerValue<Ogre::Real> > ctrlval(OGRE_NEW AnimationValue(this));
mObjectLists.push_back(!baseonly ? NifOgre::Loader::createObjects(mInsert, model) :
NifOgre::Loader::createObjectBase(mInsert, model));
@ -145,7 +145,7 @@ void Animation::addObjectList(Ogre::SceneNode *node, const std::string &model, b
for(size_t i = 0;i < objlist.mControllers.size();i++)
{
if(objlist.mControllers[i].getSource().isNull())
objlist.mControllers[i].setSource(ctrlval);
objlist.mControllers[i].setSource(mAnimationBaseValuePtr);
}
if(!mCurrentControllers || (*mCurrentControllers).size() == 0)

View File

@ -38,6 +38,7 @@ protected:
mAnimation->mCurrentTime = value;
}
};
Ogre::SharedPtr<Ogre::ControllerValue<Ogre::Real> > mAnimationBaseValuePtr;
MWWorld::Ptr mPtr;
MWMechanics::CharacterController *mController;