From a0d0e5d2db5ef49d803213c37bd39d09be4ebd6d Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Wed, 8 Aug 2018 16:52:09 +0400 Subject: [PATCH] Give jumping animations higher priority than movement ones --- apps/openmw/mwmechanics/character.cpp | 8 +------- apps/openmw/mwmechanics/character.hpp | 4 +++- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 054f0b64d..c101c2a05 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -1980,15 +1980,9 @@ void CharacterController::update(float duration) else if(rot.z() != 0.0f && !sneak && !(mPtr == getPlayer() && MWBase::Environment::get().getWorld()->isFirstPerson())) { if(rot.z() > 0.0f) - { movestate = inwater ? CharState_SwimTurnRight : CharState_TurnRight; - mAnimation->disable(mCurrentJump); - } else if(rot.z() < 0.0f) - { movestate = inwater ? CharState_SwimTurnLeft : CharState_TurnLeft; - mAnimation->disable(mCurrentJump); - } } } @@ -2000,7 +1994,7 @@ void CharacterController::update(float duration) bool animPlaying = mAnimation->getInfo(mCurrentMovement, &complete); if (movestate == CharState_None && isTurning()) { - if ((animPlaying && complete < threshold) || mJumpState != jumpstate) + if (animPlaying && complete < threshold) movestate = mMovementState; } } diff --git a/apps/openmw/mwmechanics/character.hpp b/apps/openmw/mwmechanics/character.hpp index 84630a479..754f551f9 100644 --- a/apps/openmw/mwmechanics/character.hpp +++ b/apps/openmw/mwmechanics/character.hpp @@ -31,8 +31,10 @@ enum Priority { Priority_WeaponLowerBody, Priority_SneakIdleLowerBody, Priority_SwimIdle, - Priority_Jump, Priority_Movement, + // Note: in vanilla movement anims have higher priority than jump ones. + // It causes issues with landing animations during movement. + Priority_Jump, Priority_Hit, Priority_Weapon, Priority_Block,