Effects/Shrinker.cs
using Sandbox.Utility;

namespace PlanetMeat;

[Group( "Planet Meat - Effects" ), Title( "Shrinker" ), Icon( "compress" )]
public sealed class Shrinker : Component
{
	IEnumerable<ModelRenderer> models;

	[Property] public Vector3 StartingScale = Vector3.One;
	[Property] public Vector3 EndingScale = Vector3.Zero;

	[RequireComponent] public DelayedStages Stages { get; set; }

	protected override void OnStart()
	{
		base.OnStart();
		models = GetComponents<ModelRenderer>();
	}

	protected override void OnUpdate()
	{
		base.OnUpdate();
		if ( !Stages.IsEnding )
		{
			var f = Easing.QuadraticIn( Stages.Fraction );
			foreach ( var m in models )
				m.WorldScale = StartingScale.LerpTo( EndingScale, f );
		}
	}
}