From 30d37e22c88a36535368ec1fbf5527270bf02104 Mon Sep 17 00:00:00 2001 From: Ilya Rastrorguev Date: Fri, 8 Mar 2024 22:18:31 +0500 Subject: [PATCH 1/4] First Public Release of Event Framework Introducing the first release of Event Framework - including Messenger for managing subscribers, publishing Payloads (events) and getting current statuses. --- DevsDaddy/Shared/EventFramework/Core.meta | 3 + .../EventFramework/Core/Extensions.meta | 3 + .../Core/Extensions/CollectionExtensions.cs | 46 +++ .../Extensions/CollectionExtensions.cs.meta | 3 + .../Shared/EventFramework/Core/Messenger.meta | 3 + .../Core/Messenger/EventSubscriber.cs | 164 ++++++++ .../Core/Messenger/EventSubscriber.cs.meta | 3 + .../Core/Messenger/IEventMessenger.cs | 7 + .../Core/Messenger/IEventMessenger.cs.meta | 3 + .../Core/Messenger/IEventMessengerPublish.cs | 25 ++ .../Messenger/IEventMessengerPublish.cs.meta | 3 + .../Messenger/IEventMessengerSubscribe.cs | 20 + .../IEventMessengerSubscribe.cs.meta | 3 + .../Messenger/IEventMessengerUnsubscribe.cs | 19 + .../IEventMessengerUnsubscribe.cs.meta | 3 + .../Shared/EventFramework/Core/Objects.meta | 3 + .../Core/Objects/MonoSingleton.cs | 57 +++ .../Core/Objects/MonoSingleton.cs.meta | 3 + .../EventFramework/Core/Objects/Singleton.cs | 12 + .../Core/Objects/Singleton.cs.meta | 3 + .../Shared/EventFramework/Core/Payloads.meta | 3 + .../EventFramework/Core/Payloads/IPayload.cs | 7 + .../Core/Payloads/IPayload.cs.meta | 3 + .../Shared/EventFramework/Core/Threading.meta | 3 + .../Core/Threading/DispatcherTask.cs | 43 +++ .../Core/Threading/DispatcherTask.cs.meta | 3 + .../Core/Threading/IThreadDispatcher.cs | 13 + .../Core/Threading/IThreadDispatcher.cs.meta | 3 + .../Core/Threading/MainThreadDispatcher.cs | 47 +++ .../Threading/MainThreadDispatcher.cs.meta | 3 + .../Core/Threading/WeakRefDelegate.cs | 81 ++++ .../Core/Threading/WeakRefDelegate.cs.meta | 3 + .../Core/Threading/WeakRefWrapper.cs | 53 +++ .../Core/Threading/WeakRefWrapper.cs.meta | 3 + .../EventFramework/EventFramework.asmdef | 3 + .../EventFramework/EventFramework.asmdef.meta | 7 + .../Shared/EventFramework/EventMessenger.cs | 356 ++++++++++++++++++ .../EventFramework/EventMessenger.cs.meta | 3 + DevsDaddy/Shared/EventFramework/Preview.png | Bin 0 -> 191697 bytes .../Shared/EventFramework/Preview.png.meta | 114 ++++++ DevsDaddy/Shared/EventFramework/Test.cs | 25 ++ DevsDaddy/Shared/EventFramework/Test.cs.meta | 3 + README.md | 59 ++- 43 files changed, 1222 insertions(+), 2 deletions(-) create mode 100644 DevsDaddy/Shared/EventFramework/Core.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Extensions.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Extensions/CollectionExtensions.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Extensions/CollectionExtensions.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/EventSubscriber.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/EventSubscriber.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessenger.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessenger.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerPublish.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerPublish.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerSubscribe.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerSubscribe.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerUnsubscribe.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerUnsubscribe.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Objects.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Objects/MonoSingleton.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Objects/MonoSingleton.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Objects/Singleton.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Objects/Singleton.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Payloads.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Payloads/IPayload.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Payloads/IPayload.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/DispatcherTask.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/DispatcherTask.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/IThreadDispatcher.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/IThreadDispatcher.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/MainThreadDispatcher.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/MainThreadDispatcher.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefDelegate.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefDelegate.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefWrapper.cs create mode 100644 DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefWrapper.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/EventFramework.asmdef create mode 100644 DevsDaddy/Shared/EventFramework/EventFramework.asmdef.meta create mode 100644 DevsDaddy/Shared/EventFramework/EventMessenger.cs create mode 100644 DevsDaddy/Shared/EventFramework/EventMessenger.cs.meta create mode 100644 DevsDaddy/Shared/EventFramework/Preview.png create mode 100644 DevsDaddy/Shared/EventFramework/Preview.png.meta create mode 100644 DevsDaddy/Shared/EventFramework/Test.cs create mode 100644 DevsDaddy/Shared/EventFramework/Test.cs.meta diff --git a/DevsDaddy/Shared/EventFramework/Core.meta b/DevsDaddy/Shared/EventFramework/Core.meta new file mode 100644 index 0000000..286dd67 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d12fd6a46d46479297ce2953ae2fd4d8 +timeCreated: 1709907914 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Extensions.meta b/DevsDaddy/Shared/EventFramework/Core/Extensions.meta new file mode 100644 index 0000000..63efabb --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Extensions.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 00986101bb37441889fc367b31e30c54 +timeCreated: 1709907934 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Extensions/CollectionExtensions.cs b/DevsDaddy/Shared/EventFramework/Core/Extensions/CollectionExtensions.cs new file mode 100644 index 0000000..1d0b518 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Extensions/CollectionExtensions.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; + +namespace DevsDaddy.Shared.EventFramework.Core.Extensions +{ + public static class CollectionExtensions + { + public static object[] ToObjectArray(this T[] source) + { + if(source.IsNullOrEmpty()) + { + return null; + } + var copy = new object[source.Length]; + Array.Copy(source, copy, source.Length); + return copy; + } + + public static bool IsNullOrEmpty(this ICollection source) + { + if(source == null) + { + return true; + } + if(source.Count < 1) + { + return true; + } + return false; + } + + public static void ForEach(this IEnumerable collection, Action action) + { + foreach (var item in collection) + { + action(item); + } + } + + public static bool IsNullOrEmpty(this string source) + { + var isEmpty = string.IsNullOrEmpty(source); + return isEmpty; + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Extensions/CollectionExtensions.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Extensions/CollectionExtensions.cs.meta new file mode 100644 index 0000000..5cb3a76 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Extensions/CollectionExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d3fbd7a03f204ae9be879f9f91d1e8b7 +timeCreated: 1709907949 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger.meta b/DevsDaddy/Shared/EventFramework/Core/Messenger.meta new file mode 100644 index 0000000..954df48 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a529d3773c3a4c079cb6deb5aec78c83 +timeCreated: 1709908056 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/EventSubscriber.cs b/DevsDaddy/Shared/EventFramework/Core/Messenger/EventSubscriber.cs new file mode 100644 index 0000000..deab110 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/EventSubscriber.cs @@ -0,0 +1,164 @@ +using System; +using System.Reflection; +using UnityEngine; + +namespace DevsDaddy.Shared.EventFramework.Core.Messenger +{ + /// + /// Event Subscriber Class + /// + internal class EventSubscriber : IDisposable + { + private WeakReference _callbackTarget; + private MethodInfo _callbackMethod; + + private WeakReference _predicateTarget; + private MethodInfo _predicateMethod; + + public bool IsAlive + { + get + { + if(_callbackMethod == null) + { + return false; + } + if(_callbackMethod.IsStatic) + { + return true; + } + if(_callbackTarget == null || + !_callbackTarget.IsAlive || + _callbackTarget.Target == null) + { + return false; + } + return true; + } + } + + public Type PayloadType + { + get; + } + + public int Id + { + get; + } + + public override int GetHashCode() + { + return Id; + } + + public EventSubscriber(Type payloadType, Delegate callback, Delegate predicate = null) + { + // validate params + if(payloadType == null) + { + throw new ArgumentNullException(nameof(payloadType)); + } + if(callback == null) + { + throw new ArgumentNullException(nameof(callback)); + } + + // assign values to vars + PayloadType = payloadType; + Id = callback.GetHashCode(); + _callbackMethod = callback.Method; + + // check if callback method is not a static method + if(!_callbackMethod.IsStatic && + callback.Target != null) + { + // init weak reference to callback owner + _callbackTarget = new WeakReference(callback.Target); + } + + // --- init predicate --- + if(predicate == null) + { + return; + } + _predicateMethod = predicate.Method; + + if(!_predicateMethod.IsStatic && + !Equals(predicate.Target, callback.Target)) + { + _predicateTarget = new WeakReference(predicate.Target); + } + } + + public void Invoke(T payload) + { + // validate callback method info + if(_callbackMethod == null) + { + Debug.LogError($"{nameof(_callbackMethod)} is null."); + return; + } + if(!_callbackMethod.IsStatic && + (_callbackTarget == null || + !_callbackTarget.IsAlive)) + { + Debug.LogWarning($"{nameof(_callbackMethod)} is not alive."); + return; + } + + // get reference to the predicate function owner + if(_predicateMethod != null) + { + object predicateTarget = null; + if(!_predicateMethod.IsStatic) + { + if(_predicateTarget != null && + _predicateTarget.IsAlive) + { + predicateTarget = _predicateTarget.Target; + } + else if(_callbackTarget != null && + _callbackTarget.IsAlive) + { + predicateTarget = _callbackTarget.Target; + } + } + + // check if predicate returned 'true' + var isAccepted = (bool)_predicateMethod.Invoke(predicateTarget, new object[] {payload}); + if(!isAccepted) + { + // TODO log ? + return; + } + } + + // invoke callback method + object callbackTarget = null; + if(!_callbackMethod.IsStatic && + _callbackTarget != null && _callbackTarget.IsAlive) + { + callbackTarget = _callbackTarget.Target; + } + _callbackMethod.Invoke(callbackTarget, new object[] {payload}); + } + + public void Dispose() + { + _callbackMethod = null; + if(_callbackTarget != null) + { + _callbackTarget.Target = null; + _callbackTarget = null; + } + + _predicateMethod = null; + if(_predicateTarget != null) + { + _predicateTarget.Target = null; + _predicateTarget = null; + } + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/EventSubscriber.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Messenger/EventSubscriber.cs.meta new file mode 100644 index 0000000..63e0a7d --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/EventSubscriber.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 159809fba4d643b4b5a48bf76d03fee0 +timeCreated: 1709908344 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessenger.cs b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessenger.cs new file mode 100644 index 0000000..6e20595 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessenger.cs @@ -0,0 +1,7 @@ +namespace DevsDaddy.Shared.EventFramework.Core.Messenger +{ + /// + /// Event Messenger Interface + /// + public interface IEventMessenger : IEventMessengerPublish, IEventMessengerSubscribe, IEventMessengerUnsubscribe { } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessenger.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessenger.cs.meta new file mode 100644 index 0000000..67a0994 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessenger.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 839409adb47840e9815050e158c5ae2b +timeCreated: 1709908063 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerPublish.cs b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerPublish.cs new file mode 100644 index 0000000..02f57a0 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerPublish.cs @@ -0,0 +1,25 @@ +using DevsDaddy.Shared.EventFramework.Core.Payloads; + +namespace DevsDaddy.Shared.EventFramework.Core.Messenger +{ + /// + /// Event Messenger Publish Interface + /// + public interface IEventMessengerPublish + { + /// + /// Publish Payload + /// + /// + /// + /// + IEventMessengerPublish Publish(T payload) where T : IPayload; + + /// + /// Get Current Payload State or Null + /// + /// + /// + T GetState() where T : class, IPayload; + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerPublish.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerPublish.cs.meta new file mode 100644 index 0000000..3e6f5c7 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerPublish.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b08fc7fb9da9403faae63d3d185b3244 +timeCreated: 1709908097 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerSubscribe.cs b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerSubscribe.cs new file mode 100644 index 0000000..a8fa1bb --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerSubscribe.cs @@ -0,0 +1,20 @@ +using System; +using DevsDaddy.Shared.EventFramework.Core.Payloads; + +namespace DevsDaddy.Shared.EventFramework.Core.Messenger +{ + /// + /// Event Messenger Subscribe Interface + /// + public interface IEventMessengerSubscribe + { + /// + /// Subscribe Listener to Payload + /// + /// + /// + /// + /// + IEventMessengerSubscribe Subscribe(Action callback, Predicate predicate = null) where T : IPayload; + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerSubscribe.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerSubscribe.cs.meta new file mode 100644 index 0000000..874fa0b --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerSubscribe.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 08a5957f355341e999b24f3a31d70ead +timeCreated: 1709908173 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerUnsubscribe.cs b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerUnsubscribe.cs new file mode 100644 index 0000000..49d6de9 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerUnsubscribe.cs @@ -0,0 +1,19 @@ +using System; +using DevsDaddy.Shared.EventFramework.Core.Payloads; + +namespace DevsDaddy.Shared.EventFramework.Core.Messenger +{ + /// + /// Event Messenger Unsubscribe Interface + /// + public interface IEventMessengerUnsubscribe + { + /// + /// Unsubscribe Listener from Payload + /// + /// + /// + /// + IEventMessengerUnsubscribe Unsubscribe(Action callback) where T : IPayload; + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerUnsubscribe.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerUnsubscribe.cs.meta new file mode 100644 index 0000000..eeb811e --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Messenger/IEventMessengerUnsubscribe.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2cb648b65a7d403b852deae7c357ba17 +timeCreated: 1709908220 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Objects.meta b/DevsDaddy/Shared/EventFramework/Core/Objects.meta new file mode 100644 index 0000000..0089733 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Objects.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 40e14a4be7b74fcaa144747f26cb6d61 +timeCreated: 1709915276 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Objects/MonoSingleton.cs b/DevsDaddy/Shared/EventFramework/Core/Objects/MonoSingleton.cs new file mode 100644 index 0000000..42292c0 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Objects/MonoSingleton.cs @@ -0,0 +1,57 @@ +using DevsDaddy.Shared.EventFramework.Core.Extensions; +using UnityEngine; + +namespace DevsDaddy.Shared.EventFramework.Core.Objects +{ + public class MonoSingleton : MonoBehaviour where TImplementation : MonoBehaviour, TInterface + { + private static TInterface _main; + + public static TInterface Main + { + get + { + var res = InvalidateInstance(); + return res; + } + } + + private void Awake() + { + InvalidateInstance(); + } + + private static TInterface InvalidateInstance() + { + if(!Equals(_main, default(TImplementation))) + { + return _main; + } + + var typeInterface = typeof(TInterface); + var objects = FindObjectsOfType(); + if(!objects.IsNullOrEmpty()) + { + foreach (var obj in objects) + { + if(typeInterface.IsAssignableFrom(obj.GetType())) + { + _main = obj; + } + } + } + + if (!Equals(_main, default(TImplementation))) + { + return _main; + } + + var typeImplementation = typeof(TImplementation); + var go = new GameObject($"[{typeImplementation.Name}]"); + go.transform.SetParent(null); + + _main = go.AddComponent(); + return _main; + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Objects/MonoSingleton.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Objects/MonoSingleton.cs.meta new file mode 100644 index 0000000..f8d9008 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Objects/MonoSingleton.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e57d2676d9d346e9a3d7c2151fe05a9f +timeCreated: 1709915290 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Objects/Singleton.cs b/DevsDaddy/Shared/EventFramework/Core/Objects/Singleton.cs new file mode 100644 index 0000000..0b98aa9 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Objects/Singleton.cs @@ -0,0 +1,12 @@ +namespace DevsDaddy.Shared.EventFramework.Core.Objects +{ + public abstract class Singleton + where TImplementation : TInterface, new() + { + public static TInterface Main { get; } = new TImplementation(); + + protected Singleton() + { + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Objects/Singleton.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Objects/Singleton.cs.meta new file mode 100644 index 0000000..fa3775d --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Objects/Singleton.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a8062424bdd743b6aa1b3e73b62ce5c9 +timeCreated: 1709915383 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Payloads.meta b/DevsDaddy/Shared/EventFramework/Core/Payloads.meta new file mode 100644 index 0000000..4b5b26d --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Payloads.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0b89c307c8b04b62b2fb657737d7f4ec +timeCreated: 1709908134 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Payloads/IPayload.cs b/DevsDaddy/Shared/EventFramework/Core/Payloads/IPayload.cs new file mode 100644 index 0000000..a6337c0 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Payloads/IPayload.cs @@ -0,0 +1,7 @@ +namespace DevsDaddy.Shared.EventFramework.Core.Payloads +{ + /// + /// Payload + /// + public interface IPayload { } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Payloads/IPayload.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Payloads/IPayload.cs.meta new file mode 100644 index 0000000..7a513d2 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Payloads/IPayload.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0afffdf99c7d44468a1a482cc5769a2e +timeCreated: 1709908140 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading.meta b/DevsDaddy/Shared/EventFramework/Core/Threading.meta new file mode 100644 index 0000000..e64009a --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fb7b7428eea74614825d8dadf35538e6 +timeCreated: 1709908759 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/DispatcherTask.cs b/DevsDaddy/Shared/EventFramework/Core/Threading/DispatcherTask.cs new file mode 100644 index 0000000..95c37db --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/DispatcherTask.cs @@ -0,0 +1,43 @@ +using System; + +namespace DevsDaddy.Shared.EventFramework.Core.Threading +{ + public class DispatcherTask : IDisposable + { + public WeakRefDelegate Action + { + get; private set; + } + + private object[] Payload + { + get; + set; + } + + public DispatcherTask(Delegate action, object[] payload) + { + Action = new WeakRefDelegate(action); + Payload = payload; + } + + public void Invoke() + { + if(Action == null || !Action.IsAlive) + { + return; + } + Action.Invoke(Payload); + } + + public void Dispose() + { + if(Action != null) + { + Action.Dispose(); + Action = null; + } + Payload = null; + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/DispatcherTask.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Threading/DispatcherTask.cs.meta new file mode 100644 index 0000000..ab5f330 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/DispatcherTask.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a89d39c53f104fc2b275ccdfb9985f14 +timeCreated: 1709908762 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/IThreadDispatcher.cs b/DevsDaddy/Shared/EventFramework/Core/Threading/IThreadDispatcher.cs new file mode 100644 index 0000000..187b300 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/IThreadDispatcher.cs @@ -0,0 +1,13 @@ +using System; + +namespace DevsDaddy.Shared.EventFramework.Core.Threading +{ + /// + /// Thread Dispatcher Interface + /// + public interface IThreadDispatcher + { + int ThreadId { get; } + void Dispatch(Delegate action, object[] payload); + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/IThreadDispatcher.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Threading/IThreadDispatcher.cs.meta new file mode 100644 index 0000000..cbda899 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/IThreadDispatcher.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 359c553056b1489e9f2efecd9c470a18 +timeCreated: 1709908774 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/MainThreadDispatcher.cs b/DevsDaddy/Shared/EventFramework/Core/Threading/MainThreadDispatcher.cs new file mode 100644 index 0000000..4a4901e --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/MainThreadDispatcher.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Concurrent; +using System.Threading; +using DevsDaddy.Shared.EventFramework.Core.Objects; +using UnityEngine; + +namespace DevsDaddy.Shared.EventFramework.Core.Threading +{ + public class MainThreadDispatcher : MonoSingleton + , IThreadDispatcher + { + private readonly ConcurrentQueue _tasks = new ConcurrentQueue(); + + public int ThreadId + { + get; + private set; + } + + public int TasksCount => _tasks.Count; + + private void Awake() + { + ThreadId = Thread.CurrentThread.ManagedThreadId; + } + + public void Dispatch(Delegate action, object[] payload) + { + _tasks.Enqueue(new DispatcherTask(action, payload)); + } + + private void Update() + { + while(_tasks.Count > 0) + { + if (!_tasks.TryDequeue(out var task)) + { + continue; + } + Debug.Log($"(Queue.Count: {_tasks.Count}) Dispatching task {task.Action}"); + + task.Invoke(); + task.Dispose(); + } + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/MainThreadDispatcher.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Threading/MainThreadDispatcher.cs.meta new file mode 100644 index 0000000..1a45c77 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/MainThreadDispatcher.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a3729f2a81f14f098e44bbb17557d7b3 +timeCreated: 1709908959 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefDelegate.cs b/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefDelegate.cs new file mode 100644 index 0000000..0346487 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefDelegate.cs @@ -0,0 +1,81 @@ +using System; +using System.Reflection; + +namespace DevsDaddy.Shared.EventFramework.Core.Threading +{ + public class WeakRefDelegate : WeakRefWrapper, IEquatable, IComparable + { + private int Id { get; } + private MethodInfo Method { get; set; } + + public override int GetHashCode() + { + return Id; + } + + public WeakRefDelegate(Delegate method) : base(method.Target) + { + Method = method.Method; + Id = method.GetHashCode(); + } + + public object Invoke(object[] args) + { + if (IsDisposed || !IsAlive) + { + return null; + } + + var result = Method.Invoke(Target, args); + return result; + } + + public bool Contains(Delegate method) + { + if(method == null || !IsAlive) + { + return false; + } + + var contains = Equals(Target, method.Target) && Equals(Method, method.Method); + return contains; + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + if (disposing) + { + Method = null; + } + } + + public bool Equals(Delegate other) + { + if(other == null) return false; + var otherId = other.GetHashCode(); + var equals = Id == otherId; + return equals; + } + + public int CompareTo(object obj) + { + if (!(obj is Delegate @delegate)) + { + return -1; + } + + if (Equals(@delegate)) + { + return 0; + } + return -1; + } + + public override string ToString() + { + return $"{GetType().Name}: {Id}, {Method}, {IsAlive}"; + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefDelegate.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefDelegate.cs.meta new file mode 100644 index 0000000..d92c4e4 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefDelegate.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0c419da5e8534fa2a812339defecd056 +timeCreated: 1709908829 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefWrapper.cs b/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefWrapper.cs new file mode 100644 index 0000000..0a7b247 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefWrapper.cs @@ -0,0 +1,53 @@ +using System; + +namespace DevsDaddy.Shared.EventFramework.Core.Threading +{ + public abstract class WeakRefWrapper : IDisposable + { + private WeakReference _ref; + + protected object Target + { + get + { + var target = IsAlive ? _ref.Target : null; + return target; + } + } + + public bool IsAlive + { + get + { + var isAlive = _ref == null || (_ref.IsAlive && _ref.Target != null); + return isAlive; + } + } + + protected WeakRefWrapper(object target) + { + _ref = new WeakReference(target, false); + } + + protected bool IsDisposed; + + protected virtual void Dispose(bool disposing) + { + if (IsDisposed) return; + if (disposing) + { + if(_ref != null) + { + _ref.Target = null; + _ref = null; + } + } + IsDisposed = true; + } + + public void Dispose() + { + Dispose(true); + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefWrapper.cs.meta b/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefWrapper.cs.meta new file mode 100644 index 0000000..74d52d2 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Core/Threading/WeakRefWrapper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6316ba9f33ba40bd9657be195028246e +timeCreated: 1709908838 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/EventFramework.asmdef b/DevsDaddy/Shared/EventFramework/EventFramework.asmdef new file mode 100644 index 0000000..a919a13 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/EventFramework.asmdef @@ -0,0 +1,3 @@ +{ + "name": "EventFramework" +} diff --git a/DevsDaddy/Shared/EventFramework/EventFramework.asmdef.meta b/DevsDaddy/Shared/EventFramework/EventFramework.asmdef.meta new file mode 100644 index 0000000..eb772b3 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/EventFramework.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9e94c900901bded428fa7bec1dab4d89 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/DevsDaddy/Shared/EventFramework/EventMessenger.cs b/DevsDaddy/Shared/EventFramework/EventMessenger.cs new file mode 100644 index 0000000..0c6842f --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/EventMessenger.cs @@ -0,0 +1,356 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using DevsDaddy.Shared.EventFramework.Core.Extensions; +using DevsDaddy.Shared.EventFramework.Core.Messenger; +using DevsDaddy.Shared.EventFramework.Core.Objects; +using DevsDaddy.Shared.EventFramework.Core.Payloads; +using DevsDaddy.Shared.EventFramework.Core.Threading; +using UnityEngine; + +namespace DevsDaddy.Shared.EventFramework +{ + /// + /// Event Messenger + /// + public class EventMessenger : Singleton, IEventMessenger + { + // Subscribers Collection + private readonly Dictionary> _subscribersSet = + new Dictionary>(); + + // List of subscribers to optimize iteration during subscribers processing + private readonly List _subscribers = new List(); + private readonly Dictionary _payloadStates = new Dictionary(); + + // List of subscribers to optimize add (subscribe) operation + private readonly List _add = new List(); + private bool _isPublishing; + + /// + /// Event Messenger Controller + /// + static EventMessenger() + { + Debug.Log($"Main Thread ID: {MainThreadDispatcher.Main.ThreadId}"); + } + + /// + /// Publish given payload to relevant subscribers + /// + /// Instance of payload to publish + /// The type of payload to publish + /// Instance of the Messenger + public IEventMessengerPublish Publish(T payload) where T : IPayload + { + // if calling thread is same as main thread, call "PublishInternal" directly + if(Thread.CurrentThread.ManagedThreadId == MainThreadDispatcher.Main.ThreadId) + { + PublishInternal(payload); + return this; + } + + // capture "PublishInternal" in local action var. + Action act = PublishInternal; + // add "act" into "MainThreadDispatcher" queue + MainThreadDispatcher.Main.Dispatch(act, new object[] { payload }); + return this; + } + + /// + /// Publish Payload + /// + /// + /// Internal function that is used with "MainThreadDispatcher" + /// + /// The payload + /// The type of the payload + private void PublishInternal(T payload) where T : IPayload + { + try + { + // turn on the flag + _isPublishing = true; + + var key = typeof(T); // capture the type of the payload in local var. + + if (!_payloadStates.ContainsKey(key)) + _payloadStates.Add(key, payload); + else + _payloadStates[key] = payload; + + if (!_subscribersSet.ContainsKey(key)) + { + return; + } + + // get subscriber's dic. for the payload type + _subscribersSet.TryGetValue(key, out var callbacks); + // check if "callbacks" dic. is null or empty + if (callbacks.IsNullOrEmpty()) + { + // remove payload type key is "callbacks" dic is empty + _subscribersSet.Remove(key); + return; + } + + // iterate thru dic and invoke callbacks + foreach (var callback in callbacks.Values) + { + callback?.Invoke(payload); + } + } + finally + { + // turn off the flag + _isPublishing = false; + // process pending tasks + Process(); + } + } + + /// + /// Subscribe the callback to specified payload type + /// + /// Callback delegate + /// Callback's predicate + /// The type of the payload + /// Messenger instance + public IEventMessengerSubscribe Subscribe(Action callback, Predicate predicate = null) where T : IPayload + { + // check if current thread ID == main thread ID + if(Thread.CurrentThread.ManagedThreadId == MainThreadDispatcher.Main.ThreadId) + { + // execute subscribe method on main thread + SubscribeInternal(callback, predicate); + return this; + } + + // capture delegate reference + Action, Predicate> act = SubscribeInternal; + // add delegate and payload into main thread dispatcher queue + MainThreadDispatcher.Main.Dispatch(act, new object[] { callback, predicate }); + return this; + } + + /// + /// Subscribe the callback to specified payload type + /// + /// + /// Used internally by messenger to sync threads + /// + /// Callback delegate + /// Predicate delegate (optional) + /// The type of the payload + private void SubscribeInternal(Action callback, Predicate predicate = null) + { + // capture the type of the payload + var key = typeof(T); + // init new subscriber instance + var sub = new EventSubscriber(key, callback, predicate); + + // check if messenger is busy with publishing payloads + if(_isPublishing) + { + // add subscriber into "Add" queue if messenger is busy with publishing + _add.Add(sub); + return; + } + // if messenger is not busy with publishing, add into subscribers list + SubscribeInternal(sub); + } + + /// + /// Adds subscriber into subscribers list + /// + /// + private void SubscribeInternal(EventSubscriber subscriber) + { + // check is subscriber is valid + if(!(subscriber is {IsAlive: true})) + { + Debug.LogError($"The {nameof(subscriber)} is null or not alive."); + return; + } + + // capture payload type into local var 'key' + var key = subscriber.PayloadType; + // capture subscribers dic into local var 'dic' + Dictionary callbacks; + if (_subscribersSet.ContainsKey(key)) + { + // fetch list of callbacks for this payload type + _subscribersSet.TryGetValue(key, out callbacks); + } + else + { + // init list of callbacks/subscribers + callbacks = new Dictionary(); + _subscribersSet.Add(key, callbacks); + } + + if (callbacks == null) + { + Debug.LogError("Callbacks container is null!"); + return; + } + + // check if subscriber is already registered + if(callbacks.ContainsKey(subscriber.Id)) + { + return; + } + // register new subscriber + callbacks.Add(subscriber.Id, subscriber); + + // add new list of callbacks/subscribers into flat list for fast access + if (!_subscribers.Contains(subscriber)) + { + _subscribers.Add(subscriber); + } + } + + /// + /// Unsubscribe given callback by payload type + /// + /// The callback to unsubscribe + /// The type of the payload + /// Instance of + public IEventMessengerUnsubscribe Unsubscribe(Action callback) where T : IPayload + { + // check if method called on main thread + if(Thread.CurrentThread.ManagedThreadId == MainThreadDispatcher.Main.ThreadId) + { + // call internal method + UnsubscribeInternal(callback); + return this; + } + + // capture delegate in 'act' var + Action> act = UnsubscribeInternal; + // add 'act' delegate into main thread dispatcher queue + MainThreadDispatcher.Main.Dispatch(act, new object[] { callback }); + return this; + } + + /// + /// Unsubscribe given callback by payload type + /// + /// Internal method + /// The callback delegate + /// The type of the payload + private void UnsubscribeInternal(Action callback) + { + // capture payload type into 'key' var + var key = typeof(T); + // capture subscribers dic into 'dic' var + var dic = _subscribersSet; + // check if payload is registered + if (!dic.ContainsKey(key)) + { + return; + } + + // get list of callbacks for the payload + dic.TryGetValue(key, out var callbacks); + // check if callbacks list is null or empty and if messenger is publishing payloads + if(!_isPublishing && callbacks.IsNullOrEmpty()) + { + // remove payload from subscribers dic + dic.Remove(key); + return; + } + + // get callback ID + var id = callback.GetHashCode(); + // check if callback is registered + if(callbacks.ContainsKey(id)) + { + // get subscriber instance and dispose it + var subscriber = callbacks[id]; + subscriber.Dispose(); + + // check if messenger is busy with publishing + if(!_isPublishing) + { + // remove the subscriber from the callbacks dic + callbacks.Remove(id); + // remove the subscriber from the subscribers dic + if (_subscribers.Contains(subscriber)) + { + _subscribers.Remove(subscriber); + } + } + } + + // check is messenger is busy with publishing or if callbacks are NOT empty + if(_isPublishing || !callbacks.IsNullOrEmpty()) + { + return; + } + // remove callbacks from the _subscribersSet + dic.Remove(key); + } + + /// + /// Get Current Payload State + /// + /// + /// + public T GetState() where T : class, IPayload { + var key = typeof(T); + if (!_payloadStates.ContainsKey(key)) { + return null; + } + + return (T)_payloadStates[key]; + } + + /// + /// Process collections. + /// Cleanup "dead" subscribers and add from waiting list. + /// + private void Process() + { + // cleanup "dead" subscribers + for(var i = 0; i < _subscribers.Count; i++) + { + var subscriber = _subscribers[i]; + if(subscriber == null) + { + _subscribers.RemoveAt(i); + i--; + continue; + } + if(subscriber.IsAlive) + { + continue; + } + + _subscribers.Remove(subscriber); + i--; + + if(!_subscribersSet.ContainsKey(subscriber.PayloadType)) + { + continue; + } + + var callbacks = _subscribersSet[subscriber.PayloadType]; + callbacks.Remove(subscriber.Id); + + if(callbacks.Count > 0) + { + continue; + } + _subscribersSet.Remove(subscriber.PayloadType); + } + + // add waiting subscribers + foreach (var subscriber in _add) + { + SubscribeInternal(subscriber); + } + _add.Clear(); + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/EventMessenger.cs.meta b/DevsDaddy/Shared/EventFramework/EventMessenger.cs.meta new file mode 100644 index 0000000..961e306 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/EventMessenger.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2e366d8630ca41ceba75040078f2783f +timeCreated: 1709842285 \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Preview.png b/DevsDaddy/Shared/EventFramework/Preview.png new file mode 100644 index 0000000000000000000000000000000000000000..70da1d651d266cfd71de0847e318f5fdcf36577c GIT binary patch literal 191697 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

IEN4F#2AUmQ;tR;j}TfhpDLtGM{!dCO!7 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С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%0A#dVRDZTYK+E5eYzv>5Q?~2xZc~zoa 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 literal 0 HcmV?d00001 diff --git a/DevsDaddy/Shared/EventFramework/Preview.png.meta b/DevsDaddy/Shared/EventFramework/Preview.png.meta new file mode 100644 index 0000000..5353aa6 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Preview.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: ad25d73d75d3adc45869b4c8515d736e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/DevsDaddy/Shared/EventFramework/Test.cs b/DevsDaddy/Shared/EventFramework/Test.cs new file mode 100644 index 0000000..db9ac99 --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Test.cs @@ -0,0 +1,25 @@ +using DevsDaddy.Shared.EventFramework.Core.Payloads; + +namespace DevsDaddy.Shared.EventFramework +{ + public class Test + { + public class TestPayload : IPayload + { + + } + + public void TestMe() { + EventMessenger.Main.Subscribe(payload => { + + }); + EventMessenger.Main.Publish(new TestPayload()); + EventMessenger.Main.Unsubscribe(OnPayloadTested); + TestPayload currentPayload = EventMessenger.Main.GetState(); + } + + private void OnPayloadTested(TestPayload payload) { + + } + } +} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Test.cs.meta b/DevsDaddy/Shared/EventFramework/Test.cs.meta new file mode 100644 index 0000000..0bca3de --- /dev/null +++ b/DevsDaddy/Shared/EventFramework/Test.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b56781b3405d493f9745fc1d076a7cbb +timeCreated: 1709915840 \ No newline at end of file diff --git a/README.md b/README.md index dd33125..b37318e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,57 @@ -# UnityEventFramework -Unity Event Framework - a simple solution to manage your in-game events and fields using PubSub Pattern and Reactive Programming Principles +# Unity Events Framework +Unity Event Framework
+**Unity Event Framework** is a simple and elegant way to handle events between your objects in Unity. +The framework uses the PubSub pattern with current Payload states for easy access to previously sent events. + +
Inspired by the work of SuperMaxim + +## Why is that necessary? +There are several advantages to this approach, ranging from reducing cohesion in your project by not directly referencing objects to resolving asynchronous events within the project. You can also retrieve the state of an event at any time if it has been previously sent. + +## Get Started +**Installation process:** +- Download and import latest release from this page; +- See usage examples below; + +## Usage +**Create Payload (Event Model) for your Events:** +```csharp +public class TestPayload : IPayload +{ + public string Message = ""; +} +``` + +**To Subscribe for Payload (event) you can add listener via EventMessenger Class:** +```csharp +EventMessenger.Main.Subscribe(payload => { + Debug.Log(payload.Message); +}); +``` + +**To Publish New Payload (Event) you can:*** +```csharp +EventMessenger.Main.Publish(new TestPayload { + Message = "Hello world!" +}); +``` + +**Also you can get latest state for any early published payload (or null if not published yet):*** +```csharp +TestPayload currentPayload = EventMessenger.Main.GetState(); +Debug.Log(currentPayload.Message); +``` + +## Examples +See framework usage examples in other projects: +* Game Shield - Unity Game Security and Anti-Cheat Toolkit; +* Simple UI Framework for management of your UI; +* OneUI Kit - Full-featured UI Kit for your applications and Games. Ready for MVC/MVP/MVVM; + +## Coming Soon (TO-DO) +**I plan to add the following functionality in the near future:** +- Reactive Fields with Auto-Resolving via EventMessenger Class; + +## Support Me +Like my libraries or assets? +Buy me a coffee. \ No newline at end of file From c1a71039201b116c04149dcfa6586f06c438f77c Mon Sep 17 00:00:00 2001 From: Elijah Brown <147835900+DevsDaddy@users.noreply.github.com> Date: Fri, 8 Mar 2024 22:21:06 +0500 Subject: [PATCH 2/4] Create FUNDING.yml --- .github/FUNDING.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..538e054 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +polar: # Replace with a single Polar username +custom: https://boosty.to/devsdaddy From 988889bfbd474ed6f56ac07a1de31430fdb85e61 Mon Sep 17 00:00:00 2001 From: Ilya Rastrorguev Date: Fri, 8 Mar 2024 22:41:48 +0500 Subject: [PATCH 3/4] Remove Testing File --- DevsDaddy/Shared/EventFramework/Test.cs | 25 -------------------- DevsDaddy/Shared/EventFramework/Test.cs.meta | 3 --- 2 files changed, 28 deletions(-) delete mode 100644 DevsDaddy/Shared/EventFramework/Test.cs delete mode 100644 DevsDaddy/Shared/EventFramework/Test.cs.meta diff --git a/DevsDaddy/Shared/EventFramework/Test.cs b/DevsDaddy/Shared/EventFramework/Test.cs deleted file mode 100644 index db9ac99..0000000 --- a/DevsDaddy/Shared/EventFramework/Test.cs +++ /dev/null @@ -1,25 +0,0 @@ -using DevsDaddy.Shared.EventFramework.Core.Payloads; - -namespace DevsDaddy.Shared.EventFramework -{ - public class Test - { - public class TestPayload : IPayload - { - - } - - public void TestMe() { - EventMessenger.Main.Subscribe(payload => { - - }); - EventMessenger.Main.Publish(new TestPayload()); - EventMessenger.Main.Unsubscribe(OnPayloadTested); - TestPayload currentPayload = EventMessenger.Main.GetState(); - } - - private void OnPayloadTested(TestPayload payload) { - - } - } -} \ No newline at end of file diff --git a/DevsDaddy/Shared/EventFramework/Test.cs.meta b/DevsDaddy/Shared/EventFramework/Test.cs.meta deleted file mode 100644 index 0bca3de..0000000 --- a/DevsDaddy/Shared/EventFramework/Test.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: b56781b3405d493f9745fc1d076a7cbb -timeCreated: 1709915840 \ No newline at end of file From e5b7cee061a345632825310504a4fe31b15d351e Mon Sep 17 00:00:00 2001 From: Elijah Brown <147835900+DevsDaddy@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:53:59 +0500 Subject: [PATCH 4/4] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b37318e..3ca83ab 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,6 @@ See framework usage examples in other projects: **I plan to add the following functionality in the near future:** - Reactive Fields with Auto-Resolving via EventMessenger Class; -## Support Me -Like my libraries or assets? -Buy me a coffee. \ No newline at end of file +## Join Community +- Discord Community +- Buy me a Beer (Boosty)