100 lines
2.7 KiB
C#
100 lines
2.7 KiB
C#
using System;
|
|
|
|
namespace Syntriax.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 tweenConcrete = (Tween)tween;
|
|
tweenConcrete.OnStarted.AddListener(_ => callback.Invoke());
|
|
return tween;
|
|
}
|
|
|
|
public static ITween OnPause(this ITween tween, Action callback)
|
|
{
|
|
Tween tweenConcrete = (Tween)tween;
|
|
tweenConcrete.OnPaused.AddListener(_ => callback.Invoke());
|
|
return tween;
|
|
}
|
|
|
|
public static ITween OnResume(this ITween tween, Action callback)
|
|
{
|
|
Tween tweenConcrete = (Tween)tween;
|
|
tweenConcrete.OnResumed.AddListener(_ => callback.Invoke());
|
|
return tween;
|
|
}
|
|
|
|
public static ITween OnCancel(this ITween tween, Action callback)
|
|
{
|
|
Tween tweenConcrete = (Tween)tween;
|
|
tweenConcrete.OnCancelled.AddListener(_ => callback.Invoke());
|
|
return tween;
|
|
}
|
|
|
|
public static ITween OnComplete(this ITween tween, Action callback)
|
|
{
|
|
Tween tweenConcrete = (Tween)tween;
|
|
tweenConcrete.OnCompleted.AddListener(_ => callback.Invoke());
|
|
return tween;
|
|
}
|
|
|
|
public static ITween OnEnd(this ITween tween, Action callback)
|
|
{
|
|
Tween tweenConcrete = (Tween)tween;
|
|
tweenConcrete.OnEnded.AddListener(_ => callback.Invoke());
|
|
return tween;
|
|
}
|
|
|
|
public static ITween OnUpdate(this ITween tween, Action callback)
|
|
{
|
|
Tween tweenConcrete = (Tween)tween;
|
|
tweenConcrete.OnUpdated.AddListener(_ => callback.Invoke());
|
|
return tween;
|
|
}
|
|
|
|
public static ITween OnDeltaUpdate(this ITween tween, Action<float> callback)
|
|
{
|
|
Tween tweenConcrete = (Tween)tween;
|
|
tweenConcrete.OnDeltaUpdated.AddListener((_, arguments) => callback.Invoke(arguments.Delta));
|
|
return tween;
|
|
}
|
|
}
|