1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-01 13:06:40 +00:00

Restart from the loop point if replaying the same animation

This commit is contained in:
Chris Robinson 2013-08-09 21:25:28 -07:00
parent 5968165de0
commit 180f0d0fe9

View file

@ -212,6 +212,10 @@ void CharacterController::refreshCurrentAnims(CharacterState idle, CharacterStat
} }
} }
/* If we're playing the same animation, restart from the loop start instead of the
* beginning. */
int mode = ((movement != mCurrentMovement) ? 1 : 2);
mAnimation->disable(mCurrentMovement); mAnimation->disable(mCurrentMovement);
mCurrentMovement = movement; mCurrentMovement = movement;
if(!mCurrentMovement.empty()) if(!mCurrentMovement.empty())
@ -220,7 +224,7 @@ void CharacterController::refreshCurrentAnims(CharacterState idle, CharacterStat
if(mMovementSpeed > 0.0f && (vel=mAnimation->getVelocity(mCurrentMovement)) > 1.0f) if(mMovementSpeed > 0.0f && (vel=mAnimation->getVelocity(mCurrentMovement)) > 1.0f)
speedmult = mMovementSpeed / vel; speedmult = mMovementSpeed / vel;
mAnimation->play(mCurrentMovement, Priority_Movement, movegroup, false, mAnimation->play(mCurrentMovement, Priority_Movement, movegroup, false,
speedmult, "start", "stop", 0.0f, ~0ul); speedmult, ((mode==2)?"loop start":"start"), "stop", 0.0f, ~0ul);
} }
} }
} }