forked from mirror/openmw-tes3mp
Add a couple more character states
This commit is contained in:
parent
007a5963de
commit
7fe877d8ea
3 changed files with 33 additions and 8 deletions
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue