diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index 35bca441a..396f34eab 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -262,6 +262,12 @@ namespace MWMechanics if(!paused) { + for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter) + { + Ogre::Vector3 dir = MWWorld::Class::get(iter->first).getMovementVector(iter->first); + iter->second.setDirection(dir); + } + std::vector > movement; for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter) { diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 73a6f2c9c..ff400b9d1 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -123,7 +123,7 @@ Ogre::Vector3 CharacterController::update(float duration) if(mAnimation && !mSkipAnim) mAnimation->runAnimation(duration); mSkipAnim = false; - return MWWorld::Class::get(mPtr).getMovementVector(mPtr); + return mDirection; } diff --git a/apps/openmw/mwmechanics/character.hpp b/apps/openmw/mwmechanics/character.hpp index 47bb27e83..c151b3b9f 100644 --- a/apps/openmw/mwmechanics/character.hpp +++ b/apps/openmw/mwmechanics/character.hpp @@ -1,6 +1,8 @@ #ifndef GAME_MWMECHANICS_CHARACTER_HPP #define GAME_MWMECHANICS_CHARACTER_HPP +#include + #include "../mwworld/ptr.hpp" namespace MWRender @@ -27,6 +29,8 @@ class CharacterController typedef std::deque AnimationQueue; AnimationQueue mAnimQueue; + Ogre::Vector3 mDirection; + std::string mCurrentGroup; CharacterState mState; bool mSkipAnim; @@ -46,6 +50,9 @@ public: void playGroup(const std::string &groupname, int mode, int count); void skipAnim(); + void setDirection(const Ogre::Vector3 &dir) + { mDirection = dir; } + void setState(CharacterState state); CharacterState getState() const { return mState; }