diff --git a/src/game/shared/Multiplayer/multiplayer_animstate.cpp b/src/game/shared/Multiplayer/multiplayer_animstate.cpp index fcadc0b19..167c105a8 100644 --- a/src/game/shared/Multiplayer/multiplayer_animstate.cpp +++ b/src/game/shared/Multiplayer/multiplayer_animstate.cpp @@ -1287,6 +1287,11 @@ void CMultiPlayerAnimState::UpdateGestureLayer( CStudioHdr *pStudioHdr, GestureS // Get the current cycle. float flCycle = pGesture->m_pAnimLayer->m_flCycle; flCycle += pPlayer->GetSequenceCycleRate( pStudioHdr, pGesture->m_pAnimLayer->m_nSequence ) * gpGlobals->frametime * GetGesturePlaybackRate() * pGesture->m_pAnimLayer->m_flPlaybackRate; + if ( flCycle < 0.0f ) + { + // if playback rate is negative, allow the animation to loop backwards + flCycle = 1.0f; + } pGesture->m_pAnimLayer->m_flPrevCycle = pGesture->m_pAnimLayer->m_flCycle; pGesture->m_pAnimLayer->m_flCycle = flCycle;