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}