feat: basic tween system added
This commit is contained in:
90
Engine.Systems/Tween/TweenExtensions.cs
Normal file
90
Engine.Systems/Tween/TweenExtensions.cs
Normal file
@@ -0,0 +1,90 @@
|
||||
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 += _ =>
|
||||
{
|
||||
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 += _ =>
|
||||
{
|
||||
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 += _ => callback.Invoke();
|
||||
return tween;
|
||||
}
|
||||
public static ITween OnPause(this ITween tween, Action callback)
|
||||
{
|
||||
Tween tweenConcrete = (Tween)tween;
|
||||
tweenConcrete.OnPaused += _ => callback.Invoke();
|
||||
return tween;
|
||||
}
|
||||
public static ITween OnResume(this ITween tween, Action callback)
|
||||
{
|
||||
Tween tweenConcrete = (Tween)tween;
|
||||
tweenConcrete.OnResumed += _ => callback.Invoke();
|
||||
return tween;
|
||||
}
|
||||
public static ITween OnCancel(this ITween tween, Action callback)
|
||||
{
|
||||
Tween tweenConcrete = (Tween)tween;
|
||||
tweenConcrete.OnCancelled += _ => callback.Invoke();
|
||||
return tween;
|
||||
}
|
||||
public static ITween OnComplete(this ITween tween, Action callback)
|
||||
{
|
||||
Tween tweenConcrete = (Tween)tween;
|
||||
tweenConcrete.OnCompleted += _ => callback.Invoke();
|
||||
return tween;
|
||||
}
|
||||
public static ITween OnEnd(this ITween tween, Action callback)
|
||||
{
|
||||
Tween tweenConcrete = (Tween)tween;
|
||||
tweenConcrete.OnEnded += _ => callback.Invoke();
|
||||
return tween;
|
||||
}
|
||||
public static ITween OnUpdate(this ITween tween, Action callback)
|
||||
{
|
||||
Tween tweenConcrete = (Tween)tween;
|
||||
tweenConcrete.OnUpdated += _ => callback.Invoke();
|
||||
return tween;
|
||||
}
|
||||
public static ITween OnDeltaUpdate(this ITween tween, Action<float> callback)
|
||||
{
|
||||
Tween tweenConcrete = (Tween)tween;
|
||||
tweenConcrete.OnDeltaUpdated += (_, delta) => callback.Invoke(delta);
|
||||
return tween;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user