Camera/DeathCameraEffect.cs
using Sandbox.Utility;
namespace Opium;
public partial class DeathCameraEffect : WeaponEffect
{
public TimeUntil TimeUntilHitFloor { get; set; } = 0.5f;
public TimeUntil TimeUntilRotated { get; set; } = 1.5f;
[Property] public Curve HitFloorCurve { get; set; }
[Property] public Curve RotationCurve { get; set; }
[Property] public Vector3 PositionOffset { get; set; }
[Property] public Angles Angles { get; set; }
protected override void OnEnabled()
{
TimeUntilHitFloor = 0.5f;
TimeUntilRotated = 1.5f;
}
public override bool TickEffect()
{
if ( Player is not null )
{
Player.CameraPositionOffset = PositionOffset * HitFloorCurve.Evaluate( TimeUntilHitFloor.Fraction.Clamp( 0, 1 ) );
Player.CameraRotationOffset *= Rotation.From( Angles * RotationCurve.Evaluate( TimeUntilRotated.Fraction.Clamp( 0, 1 ) ) );
}
return false;
}
}