mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-21 07:53:53 +00:00
Make spellcasting stance transition more smooth (fixes #4358)
If a movement animation was identical to the previous one that was played, restart it from the point the previous animation ended
This commit is contained in:
parent
2ff9dc34a4
commit
faf3e9ba5a
1 changed files with 6 additions and 4 deletions
|
@ -459,9 +459,11 @@ void CharacterController::refreshMovementAnims(const WeaponInfo* weap, Character
|
|||
}
|
||||
}
|
||||
|
||||
/* If we're playing the same animation, restart from the loop start instead of the
|
||||
* beginning. */
|
||||
int mode = ((movementAnimName == mCurrentMovement) ? 2 : 1);
|
||||
// If we're playing the same animation, start it from the point it ended
|
||||
bool sameAnim = (movementAnimName == mCurrentMovement);
|
||||
float startPoint = 0.f;
|
||||
if (sameAnim)
|
||||
mAnimation->getInfo(mCurrentMovement, &startPoint);
|
||||
|
||||
mMovementAnimationControlled = true;
|
||||
|
||||
|
@ -510,7 +512,7 @@ void CharacterController::refreshMovementAnims(const WeaponInfo* weap, Character
|
|||
}
|
||||
|
||||
mAnimation->play(mCurrentMovement, Priority_Movement, movemask, false,
|
||||
1.f, ((mode!=2)?"start":"loop start"), "stop", 0.0f, ~0ul, true);
|
||||
1.f, (!sameAnim ? "start" : "loop start"), "stop", startPoint, ~0ul, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue