perf!: events refactored throughout all the project to use Event<> class

All delegate events are refactored to use the Event<TSender> and Event<TSender, TArgument> for performance issues regarding delegate events creating garbage, also this gives us better control on event invocation since C# Delegates did also create unnecessary garbage during Delegate.DynamicInvoke
This commit is contained in:
2025-05-31 00:14:43 +03:00
parent 996e61d0ad
commit 61e2761580
58 changed files with 637 additions and 485 deletions

View File

@@ -1,7 +1,5 @@
using System;
using Syntriax.Engine.Core;
namespace Syntriax.Engine.Systems.Tween;
public static class TweenExtensions
@@ -11,14 +9,14 @@ public static class TweenExtensions
Tween tweenConcrete = (Tween)tween;
int counter = count;
tweenConcrete.OnCompleted += _ =>
tweenConcrete.OnCompleted.AddListener(_ =>
{
if (counter-- <= 0)
return;
tweenConcrete.Reset();
tweenConcrete.State = TweenState.Playing;
};
});
return tween;
}
@@ -26,11 +24,11 @@ public static class TweenExtensions
public static ITween LoopInfinitely(this ITween tween)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnCompleted += _ =>
tweenConcrete.OnCompleted.AddListener(_ =>
{
tweenConcrete.Reset();
tweenConcrete.State = TweenState.Playing;
};
});
return tween;
}
@@ -45,57 +43,49 @@ public static class TweenExtensions
public static ITween OnStart(this ITween tween, Action callback)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnStarted += _ => callback.Invoke();
tween.OnStarted.AddListener(_ => callback.Invoke());
return tween;
}
public static ITween OnPause(this ITween tween, Action callback)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnPaused += _ => callback.Invoke();
tween.OnPaused.AddListener(_ => callback.Invoke());
return tween;
}
public static ITween OnResume(this ITween tween, Action callback)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnResumed += _ => callback.Invoke();
tween.OnResumed.AddListener(_ => callback.Invoke());
return tween;
}
public static ITween OnCancel(this ITween tween, Action callback)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnCancelled += _ => callback.Invoke();
tween.OnCancelled.AddListener(_ => callback.Invoke());
return tween;
}
public static ITween OnComplete(this ITween tween, Action callback)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnCompleted += _ => callback.Invoke();
tween.OnCompleted.AddListener(_ => callback.Invoke());
return tween;
}
public static ITween OnEnd(this ITween tween, Action callback)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnEnded += _ => callback.Invoke();
tween.OnEnded.AddListener(_ => callback.Invoke());
return tween;
}
public static ITween OnUpdate(this ITween tween, Action callback)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnUpdated += _ => callback.Invoke();
tween.OnUpdated.AddListener(_ => callback.Invoke());
return tween;
}
public static ITween OnDeltaUpdate(this ITween tween, Action<float> callback)
{
Tween tweenConcrete = (Tween)tween;
tweenConcrete.OnDeltaUpdated += (_, delta) => callback.Invoke(delta);
tween.OnDeltaUpdated.AddListener((_, arguments) => callback.Invoke(arguments.Delta));
return tween;
}
}