Utility/CameraNoise/Punch.cs
namespace Sandbox.CameraNoise;

class Punch : BaseCameraNoise
{
	float deathTime;
	float lifeTime = 0.0f;

	public Punch( Vector3 target, float time, float frequency, float damp )
	{
		damping.Current = target * GamePreferences.Screenshake;
		damping.Target = 0;
		damping.Frequency = frequency;
		damping.Damping = damp;
		deathTime = time;
	}

	public override bool IsDone => deathTime <= 0;

	Vector3.SpringDamped damping;

	public override void Update()
	{
		deathTime -= Time.Delta;
		lifeTime += Time.Delta;

		damping.Update( Time.Delta );
	}

	public override void ModifyCamera( CameraComponent cc )
	{
		var amount = lifeTime.Remap( 0, 0.3f, 0, 1 );

		cc.WorldRotation *= new Angles( damping.Current * amount );
	}
}