diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index 2466b8a864..df0d6a5e85 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -169,7 +169,7 @@ namespace MWMechanics if(!MWWorld::Class::get(ptr).getCreatureStats(ptr).isDead()) mActors.insert(std::make_pair(ptr, CharacterController(ptr, anim, CharState_Idle, true))); else - mActors.insert(std::make_pair(ptr, CharacterController(ptr, anim, CharState_Dead, false))); + mActors.insert(std::make_pair(ptr, CharacterController(ptr, anim, CharState_Death1, false))); } void Actors::removeActor (const MWWorld::Ptr& ptr) @@ -215,7 +215,7 @@ namespace MWMechanics { if(!MWWorld::Class::get(iter->first).getCreatureStats(iter->first).isDead()) { - if(iter->second.getState() == CharState_Dead) + if(iter->second.getState() >= CharState_Death1) iter->second.setState(CharState_Idle, true); updateActor(iter->first, totalDuration); @@ -243,11 +243,11 @@ namespace MWMechanics continue; } - if(iter->second.getState() == CharState_Dead) + if(iter->second.getState() >= CharState_Death1) continue; iter->second.setMovementVector(Ogre::Vector3::ZERO); - iter->second.setState(CharState_Dead, false); + iter->second.setState(CharState_Death1, false); ++mDeathCount[MWWorld::Class::get(iter->first).getId(iter->first)]; @@ -261,7 +261,7 @@ namespace MWMechanics { for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter) { - if(iter->second.getState() == CharState_Dead) + if(iter->second.getState() >= CharState_Death1) continue; Ogre::Vector3 movement = MWWorld::Class::get(iter->first).getMovementVector(iter->first); diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 677ffcf239..4f8525eca2 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -37,13 +37,25 @@ static const struct { Ogre::Vector3 accumulate; } sStateList[] = { { CharState_Idle, "idle", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Idle2, "idle2", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Idle3, "idle3", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Idle4, "idle4", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Idle5, "idle5", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Idle6, "idle6", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Idle7, "idle7", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Idle8, "idle8", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Idle9, "idle9", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, { CharState_WalkForward, "walkforward", Ogre::Vector3(0.0f, 1.0f, 0.0f) }, { CharState_WalkBack, "walkback", Ogre::Vector3(0.0f, 1.0f, 0.0f) }, { CharState_WalkLeft, "walkleft", Ogre::Vector3(1.0f, 0.0f, 0.0f) }, { CharState_WalkRight, "walkright", Ogre::Vector3(1.0f, 0.0f, 0.0f) }, - { CharState_Dead, "death1", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Death1, "death1", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Death2, "death2", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Death3, "death3", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Death4, "death4", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, + { CharState_Death5, "death5", Ogre::Vector3(1.0f, 1.0f, 0.0f) }, }; static const size_t sStateListSize = sizeof(sStateList)/sizeof(sStateList[0]); @@ -162,7 +174,7 @@ Ogre::Vector3 CharacterController::update(float duration) movement += mAnimation->runAnimation(duration); mSkipAnim = false; - if(!(getState() == CharState_Idle || getState() == CharState_Dead)) + if(!(getState() == CharState_Idle || getState() >= CharState_Death1)) { movement = mDirection * movement.length(); } diff --git a/apps/openmw/mwmechanics/character.hpp b/apps/openmw/mwmechanics/character.hpp index e5c7a4b8c0..c8e92f7a92 100644 --- a/apps/openmw/mwmechanics/character.hpp +++ b/apps/openmw/mwmechanics/character.hpp @@ -15,13 +15,26 @@ namespace MWMechanics enum CharacterState { CharState_Idle, + CharState_Idle2, + CharState_Idle3, + CharState_Idle4, + CharState_Idle5, + CharState_Idle6, + CharState_Idle7, + CharState_Idle8, + CharState_Idle9, CharState_WalkForward, CharState_WalkBack, CharState_WalkLeft, CharState_WalkRight, - CharState_Dead + /* Must be last! */ + CharState_Death1, + CharState_Death2, + CharState_Death3, + CharState_Death4, + CharState_Death5 }; class CharacterController