A game about forced loneliness, made by TACStudios
1using UnityEngine; 2 3namespace Unity.VisualScripting 4{ 5 public abstract class EventMachine<TGraph, TMacro> : Machine<TGraph, TMacro>, IEventMachine 6 where TGraph : class, IGraph, new() 7 where TMacro : Macro<TGraph>, new() 8 { 9 protected void TriggerEvent(string name) 10 { 11 if (hasGraph) 12 { 13 TriggerRegisteredEvent(new EventHook(name, this), new EmptyEventArgs()); 14 } 15 } 16 17 protected void TriggerEvent<TArgs>(string name, TArgs args) 18 { 19 if (hasGraph) 20 { 21 TriggerRegisteredEvent(new EventHook(name, this), args); 22 } 23 } 24 25 protected void TriggerUnregisteredEvent(string name) 26 { 27 if (hasGraph) 28 { 29 TriggerUnregisteredEvent(name, new EmptyEventArgs()); 30 } 31 } 32 33 protected virtual void TriggerRegisteredEvent<TArgs>(EventHook hook, TArgs args) 34 { 35 EventBus.Trigger(hook, args); 36 } 37 38 protected virtual void TriggerUnregisteredEvent<TArgs>(EventHook hook, TArgs args) 39 { 40 using (var stack = reference.ToStackPooled()) 41 { 42 stack.TriggerEventHandler(_hook => _hook == hook, args, parent => true, true); 43 44 stack.ClearReference(); 45 } 46 } 47 48 protected override void Awake() 49 { 50 base.Awake(); 51 52 GlobalMessageListener.Require(); 53 } 54 55 protected override void OnEnable() 56 { 57 base.OnEnable(); 58 59 TriggerEvent(EventHooks.OnEnable); 60 } 61 62 protected virtual void Start() 63 { 64 TriggerEvent(EventHooks.Start); 65 } 66 67 protected override void OnInstantiateWhileEnabled() 68 { 69 base.OnInstantiateWhileEnabled(); 70 71 TriggerEvent(EventHooks.OnEnable); 72 } 73 74 protected virtual void Update() 75 { 76 TriggerEvent(EventHooks.Update); 77 } 78 79 protected virtual void FixedUpdate() 80 { 81 TriggerEvent(EventHooks.FixedUpdate); 82 } 83 84 protected virtual void LateUpdate() 85 { 86 TriggerEvent(EventHooks.LateUpdate); 87 } 88 89 protected override void OnUninstantiateWhileEnabled() 90 { 91 TriggerEvent(EventHooks.OnDisable); 92 93 base.OnUninstantiateWhileEnabled(); 94 } 95 96 protected override void OnDisable() 97 { 98 TriggerEvent(EventHooks.OnDisable); 99 100 base.OnDisable(); 101 } 102 103 protected override void OnDestroy() 104 { 105 try 106 { 107 TriggerEvent(EventHooks.OnDestroy); 108 } 109 finally 110 { 111 base.OnDestroy(); 112 } 113 } 114 115#if MODULE_ANIMATION_EXISTS 116 public override void TriggerAnimationEvent(AnimationEvent animationEvent) 117 { 118 TriggerEvent(EventHooks.AnimationEvent, animationEvent); 119 } 120#endif 121 122 public override void TriggerUnityEvent(string name) 123 { 124 TriggerEvent(EventHooks.UnityEvent, name); 125 } 126 127 protected virtual void OnDrawGizmos() 128 { 129 TriggerUnregisteredEvent(EventHooks.OnDrawGizmos); 130 } 131 132 protected virtual void OnDrawGizmosSelected() 133 { 134 TriggerUnregisteredEvent(EventHooks.OnDrawGizmosSelected); 135 } 136 } 137}