1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-06 17:45:34 +00:00

Landing animation playback fixes

Cancel landing animation immediately after moving during the first frame of landing and due to turning animation
This commit is contained in:
Alexei Kotov 2022-07-24 17:24:17 +03:00
parent 6a30897d63
commit 819101144d

View file

@ -2047,13 +2047,14 @@ void CharacterController::update(float duration)
}
}
}
else if(mJumpState == JumpState_InAir && !inwater && !flying && solid)
else
{
if (mJumpState == JumpState_InAir && !flying && solid)
{
jumpstate = JumpState_Landing;
vec.z() = 0.0f;
float height = cls.getCreatureStats(mPtr).land(isPlayer);
float healthLost = getFallDamage(mPtr, height);
float healthLost = 0.f;
if (!inwater)
healthLost = getFallDamage(mPtr, height);
if (healthLost > 0.0f)
{
@ -2083,12 +2084,9 @@ void CharacterController::update(float duration)
if (mPtr.getClass().isNpc())
playLandingSound = true;
}
else
{
if(mPtr.getClass().isNpc() && mJumpState == JumpState_InAir && !flying && solid)
playLandingSound = true;
jumpstate = mAnimation->isPlaying(mCurrentJump) ? JumpState_Landing : JumpState_None;
if (mAnimation->isPlaying(mCurrentJump))
jumpstate = JumpState_Landing;
vec.x() *= scale;
vec.y() *= scale;
@ -2126,7 +2124,7 @@ void CharacterController::update(float duration)
// It seems only bipedal actors use turning animations.
// Also do not use turning animations in the first-person view and when sneaking.
if (!sneak && jumpstate == JumpState_None && !isFirstPersonPlayer && mPtr.getClass().isBipedal(mPtr))
if (!sneak && !isFirstPersonPlayer && mPtr.getClass().isBipedal(mPtr))
{
if(effectiveRotation > rotationThreshold)
movestate = inwater ? CharState_SwimTurnRight : CharState_TurnRight;