92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
 | 
						|
namespace Engine.Systems.Tween;
 | 
						|
 | 
						|
public static class TweenExtensions
 | 
						|
{
 | 
						|
    public static ITween Loop(this ITween tween, int count)
 | 
						|
    {
 | 
						|
        Tween tweenConcrete = (Tween)tween;
 | 
						|
        int counter = count;
 | 
						|
 | 
						|
        tweenConcrete.OnCompleted.AddListener(_ =>
 | 
						|
        {
 | 
						|
            if (counter-- <= 0)
 | 
						|
                return;
 | 
						|
 | 
						|
            tweenConcrete.Reset();
 | 
						|
            tweenConcrete.State = TweenState.Playing;
 | 
						|
        });
 | 
						|
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween LoopInfinitely(this ITween tween)
 | 
						|
    {
 | 
						|
        Tween tweenConcrete = (Tween)tween;
 | 
						|
        tweenConcrete.OnCompleted.AddListener(_ =>
 | 
						|
        {
 | 
						|
            tweenConcrete.Reset();
 | 
						|
            tweenConcrete.State = TweenState.Playing;
 | 
						|
        });
 | 
						|
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween Ease(this ITween tween, IEasing easing)
 | 
						|
    {
 | 
						|
        Tween tweenConcrete = (Tween)tween;
 | 
						|
        tweenConcrete.Easing = easing;
 | 
						|
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween OnStart(this ITween tween, Action callback)
 | 
						|
    {
 | 
						|
        tween.OnStarted.AddListener(_ => callback.Invoke());
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween OnPause(this ITween tween, Action callback)
 | 
						|
    {
 | 
						|
        tween.OnPaused.AddListener(_ => callback.Invoke());
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween OnResume(this ITween tween, Action callback)
 | 
						|
    {
 | 
						|
        tween.OnResumed.AddListener(_ => callback.Invoke());
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween OnCancel(this ITween tween, Action callback)
 | 
						|
    {
 | 
						|
        tween.OnCancelled.AddListener(_ => callback.Invoke());
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween OnComplete(this ITween tween, Action callback)
 | 
						|
    {
 | 
						|
        tween.OnCompleted.AddListener(_ => callback.Invoke());
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween OnEnd(this ITween tween, Action callback)
 | 
						|
    {
 | 
						|
        tween.OnEnded.AddListener(_ => callback.Invoke());
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween OnUpdate(this ITween tween, Action callback)
 | 
						|
    {
 | 
						|
        tween.OnUpdated.AddListener(_ => callback.Invoke());
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
 | 
						|
    public static ITween OnDeltaUpdate(this ITween tween, Action<float> callback)
 | 
						|
    {
 | 
						|
        tween.OnDeltaUpdated.AddListener((_, arguments) => callback.Invoke(arguments.Delta));
 | 
						|
        return tween;
 | 
						|
    }
 | 
						|
}
 |