swb_player/PlayerBase.Flinch.cs
namespace SWB.Player;
public partial class PlayerBase
{
bool isLoweringFlinch;
float currFlinch;
float targetFlinch;
float flinchSpeed;
public virtual void DoHitFlinch( float amount )
{
isLoweringFlinch = false;
flinchSpeed = amount / 4f;
targetFlinch = amount;
}
public virtual void HandleFlinch()
{
if ( !IsAlive )
{
targetFlinch = 0;
isLoweringFlinch = false;
return;
}
if ( currFlinch == targetFlinch )
{
targetFlinch = 0;
isLoweringFlinch = true;
}
else
{
currFlinch = currFlinch.Approach( targetFlinch, flinchSpeed );
}
if ( currFlinch > 0 )
{
var flinchAngles = new Angles( isLoweringFlinch ? currFlinch : -currFlinch, 0, 0 );
ApplyEyeAnglesOffset( flinchAngles );
if ( IsUsingController )
Input.TriggerHaptics( HapticEffect.HardImpact, 0.1f, currFlinch, currFlinch );
}
}
}