using Engine.Core; namespace Engine.Systems.Tween; public static class TweenCamera2DExtensions { private static readonly BoxedPool boxedFloatPool = new(2); public static ITween TweenZoom(this ICamera2D camera2D, ITweenManager tweenManager, float duration, float targetZoom) { Boxed boxedInitial = boxedFloatPool.Get(camera2D.Zoom); Boxed boxedTarget = boxedFloatPool.Get(targetZoom); ITween tween = tweenManager.StartTween(duration, t => camera2D.Zoom = boxedInitial.Value.Lerp(boxedTarget.Value, t)); tween.OnComplete(() => { boxedFloatPool.Return(boxedInitial); boxedFloatPool.Return(boxedTarget); }); return tween; } }