public partial struct Vector3 { /// /// Everything you need to smooth damp a Vector3. Just call Update every frame. /// public record struct SmoothDamped( Vector3 Current, Vector3 Target, float SmoothTime ) { public Vector3 Velocity; public void Update( float timeDelta ) { Current = SmoothDamp( Current, Target, ref Velocity, SmoothTime, timeDelta ); } } /// /// Everything you need to create a springy Vector3 /// public record struct SpringDamped { public Vector3 Current; public Vector3 Target; public float Frequency; public float Damping; public Vector3 Velocity; [Obsolete] public float SmoothTime; public SpringDamped( Vector3 current, Vector3 target, float frequency = 2.0f, float damping = 0.5f ) { Current = current; Target = target; Frequency = frequency; Damping = damping; } [Obsolete( "SmoothTime is deprecated and no longer used. Use the constructor without SmoothTime instead." )] public SpringDamped( Vector3 current, Vector3 target, float smoothTime, float frequency = 2.0f, float damping = 0.5f ) { Current = current; Target = target; Frequency = frequency; Damping = damping; } public void Update( float timeDelta ) { Current = SpringDamp( Current, Target, ref Velocity, timeDelta, Frequency, Damping ); } } }