CardBreakPiece.cs
using Sandbox;

public sealed class CardBreakPiece : Component
{
	[Property] public ModelRenderer Renderer { get; set; }

	private TimeSince _timeSinceSpawn;
	private float _lifetime;

	//private TimeSince _timeSinceToggleRender;
	//private float _nextToggleTime;
	//private bool _isVisible;

	protected override void OnStart()
	{
		base.OnStart();

		_timeSinceSpawn = 0f;
		_lifetime = Game.Random.Float( 3f, 8.5f );
		//_timeSinceToggleRender = 0;
		//_isVisible = true;
	}

	protected override void OnUpdate()
	{
		//if ( _timeSinceSpawn > _lifetime * 0.5f && _timeSinceToggleRender > (_isVisible ? Utils.Map( _timeSinceSpawn, 0f, _lifetime * 0.5f, 1f, 0.05f, EasingType.ExpoIn) : 0.05f) )
		//{
		//	_timeSinceToggleRender = 0f;
		//	_isVisible = !_isVisible;
		//	Renderer.Enabled = _isVisible;
		//}

		if(_timeSinceSpawn > _lifetime * 0.5f)
			Renderer.Tint = Color.White.WithAlpha( Utils.Map( _timeSinceSpawn, _lifetime * 0.5f, _lifetime, 1f, 0f, EasingType.ExpoIn ) );

		if ( _timeSinceSpawn > _lifetime )
			GameObject.Destroy();
	}
}