From a94947029e41e0337c5163dc1d1fd7d1496fde1d Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 18 Jan 2013 00:59:48 -0800 Subject: [PATCH] Check the marker name before deciding what to do with it Also, don't force 'idle' after a playgroup --- apps/openmw/mwmechanics/character.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 4e861f35c7..0767df130d 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -87,17 +87,24 @@ void CharacterController::markerEvent(const std::string &evt) return; } - if(mAnimQueue.size() >= 2 && mAnimQueue[0] == mAnimQueue[1]) + if(evt.compare(ms, evt.length()-ms, "loop stop") == 0) { - if(evt.compare(ms, evt.length()-ms, "loop stop") == 0 || evt.compare(ms, evt.length()-ms, "stop") == 0) + if(mAnimQueue.size() >= 2 && mAnimQueue[0] == mAnimQueue[1]) { mAnimQueue.pop_front(); mAnimation->play(mCurrentGroup, "loop start"); } + return; } - else if(mAnimQueue.size() > 0) + + if(evt.compare(ms, evt.length()-ms, "stop") == 0) { - if(evt.compare(ms, evt.length()-ms, "stop") == 0) + if(mAnimQueue.size() >= 2 && mAnimQueue[0] == mAnimQueue[1]) + { + mAnimQueue.pop_front(); + mAnimation->play(mCurrentGroup, "loop start"); + } + else if(mAnimQueue.size() > 0) { mAnimQueue.pop_front(); if(mAnimQueue.size() > 0) @@ -106,6 +113,7 @@ void CharacterController::markerEvent(const std::string &evt) mAnimation->play(mCurrentGroup, "start"); } } + return; } } @@ -129,7 +137,6 @@ void CharacterController::playGroup(const std::string &groupname, int mode, int mAnimQueue.clear(); while(count-- > 0) mAnimQueue.push_back(groupname); - mAnimQueue.push_back("idle"); mCurrentGroup = groupname; mAnimation->play(mCurrentGroup, ((mode==2) ? "loop start" : "start")); } @@ -138,7 +145,6 @@ void CharacterController::playGroup(const std::string &groupname, int mode, int mAnimQueue.resize(1); while(count-- > 0) mAnimQueue.push_back(groupname); - mAnimQueue.push_back("idle"); } } }