1using System.Collections.Generic;
2using System.Reflection;
4using UnityEngine.Events;
5using UnityEngine.Assertions;
13 private Dictionary<string, UnityEventBase>
events =
new Dictionary<string, UnityEventBase>();
34 private UnityEventBase
GetEvent(
string eventName) {
35 UnityEventBase result =
null;
36 if (
events.TryGetValue(eventName, out result)) {
44 Assert.IsFalse(
events.ContainsKey(eventName), MethodBase.GetCurrentMethod().Name +
" - An event with this name already exist!");
46 UnityEvent unityEvent =
new UnityEvent();
47 events.Add(eventName, unityEvent);
51 Assert.IsFalse(
events.ContainsKey(eventName), MethodBase.GetCurrentMethod().Name +
" - An event with this name already exist!");
53 UnityEvent<T> unityEvent =
new UnityEvent<T>();
54 events.Add(eventName, unityEvent);
58 Assert.IsFalse(
events.ContainsKey(eventName), MethodBase.GetCurrentMethod().Name +
" - An event with this name already exist!");
60 UnityEvent<T1, T2> unityEvent =
new UnityEvent<T1, T2>();
61 events.Add(eventName, unityEvent);
65 Assert.IsFalse(
events.ContainsKey(eventName), MethodBase.GetCurrentMethod().Name +
" - An event with this name already exist!");
67 UnityEvent<T1, T2, T3> unityEvent =
new UnityEvent<T1, T2, T3>();
68 events.Add(eventName, unityEvent);
72 Assert.IsFalse(
events.ContainsKey(eventName), MethodBase.GetCurrentMethod().Name +
" - An event with this name already exist!");
74 UnityEvent<T1, T2, T3, T4> unityEvent =
new UnityEvent<T1, T2, T3, T4>();
75 events.Add(eventName, unityEvent);
80 return events.ContainsKey(eventName);
84 UnityEventBase unityEventBase =
GetEvent(eventName);
85 if (unityEventBase ==
null) {
87 unityEventBase =
GetEvent(eventName);
90 UnityEvent unityEvent = (UnityEvent)unityEventBase;
91 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
93 unityEvent.AddListener(unityAction);
97 UnityEventBase unityEventBase =
GetEvent(eventName);
98 if (unityEventBase ==
null) {
100 unityEventBase =
GetEvent(eventName);
103 UnityEvent<T> unityEvent = (UnityEvent<T>)unityEventBase;
104 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
106 unityEvent.AddListener(unityAction);
110 UnityEventBase unityEventBase =
GetEvent(eventName);
111 if (unityEventBase ==
null) {
113 unityEventBase =
GetEvent(eventName);
116 UnityEvent<T1, T2> unityEvent = (UnityEvent<T1, T2>)unityEventBase;
117 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
119 unityEvent.AddListener(unityAction);
123 UnityEventBase unityEventBase =
GetEvent(eventName);
124 if (unityEventBase ==
null) {
126 unityEventBase =
GetEvent(eventName);
129 UnityEvent<T1, T2, T3> unityEvent = (UnityEvent<T1, T2, T3>)unityEventBase;
130 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
132 unityEvent.AddListener(unityAction);
136 UnityEventBase unityEventBase =
GetEvent(eventName);
137 if (unityEventBase ==
null) {
139 unityEventBase =
GetEvent(eventName);
142 UnityEvent<T1, T2, T3, T4> unityEvent = (UnityEvent<T1, T2, T3, T4>)unityEventBase;
143 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
145 unityEvent.AddListener(unityAction);
149 UnityEventBase unityEventBase =
GetEvent(eventName);
150 Assert.IsFalse(unityEventBase ==
null, MethodBase.GetCurrentMethod().Name +
" - Event(" + eventName +
") not found!");
152 UnityEvent unityEvent = (UnityEvent)unityEventBase;
153 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
155 unityEvent.RemoveListener(unityAction);
159 UnityEventBase unityEventBase =
GetEvent(eventName);
160 Assert.IsFalse(unityEventBase ==
null, MethodBase.GetCurrentMethod().Name +
" - Event(" + eventName +
") not found!");
162 UnityEvent<T> unityEvent = (UnityEvent<T>)unityEventBase;
163 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
165 unityEvent.RemoveListener(unityAction);
169 UnityEventBase unityEventBase =
GetEvent(eventName);
170 Assert.IsFalse(unityEventBase ==
null, MethodBase.GetCurrentMethod().Name +
" - Event(" + eventName +
") not found!");
172 UnityEvent<T1, T2> unityEvent = (UnityEvent<T1, T2>)unityEventBase;
173 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
175 unityEvent.RemoveListener(unityAction);
179 UnityEventBase unityEventBase =
GetEvent(eventName);
180 Assert.IsFalse(unityEventBase ==
null, MethodBase.GetCurrentMethod().Name +
" - Event(" + eventName +
") not found!");
182 UnityEvent<T1, T2, T3> unityEvent = (UnityEvent<T1, T2, T3>)unityEventBase;
183 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
185 unityEvent.RemoveListener(unityAction);
189 UnityEventBase unityEventBase =
GetEvent(eventName);
190 Assert.IsFalse(unityEventBase ==
null, MethodBase.GetCurrentMethod().Name +
" - Event(" + eventName +
") not found!");
192 UnityEvent<T1, T2, T3, T4> unityEvent = (UnityEvent<T1, T2, T3, T4>)unityEventBase;
193 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
195 unityEvent.RemoveListener(unityAction);
201 UnityEventBase unityEventBase =
GetEvent(eventName);
202 if (unityEventBase ==
null) {
204 unityEventBase =
GetEvent(eventName);
207 UnityEvent unityEvent = (UnityEvent)unityEventBase;
208 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
216 UnityEventBase unityEventBase =
GetEvent(eventName);
217 if (unityEventBase ==
null) {
219 unityEventBase =
GetEvent(eventName);
222 UnityEvent<T> unityEvent = (UnityEvent<T>)unityEventBase;
223 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
225 unityEvent.Invoke(parameter);
231 UnityEventBase unityEventBase =
GetEvent(eventName);
232 if (unityEventBase ==
null) {
234 unityEventBase =
GetEvent(eventName);
237 UnityEvent<T1, T2> unityEvent = (UnityEvent<T1, T2>)unityEventBase;
238 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
240 unityEvent.Invoke(parameter1, parameter2);
246 UnityEventBase unityEventBase =
GetEvent(eventName);
247 if (unityEventBase ==
null) {
249 unityEventBase =
GetEvent(eventName);
252 UnityEvent<T1, T2, T3> unityEvent = (UnityEvent<T1, T2, T3>)unityEventBase;
253 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
255 unityEvent.Invoke(parameter1, parameter2, parameter3);
261 UnityEventBase unityEventBase =
GetEvent(eventName);
262 if (unityEventBase ==
null) {
264 unityEventBase =
GetEvent(eventName);
267 UnityEvent<T1, T2, T3, T4> unityEvent = (UnityEvent<T1, T2, T3, T4>)unityEventBase;
268 Assert.IsFalse(unityEvent ==
null, MethodBase.GetCurrentMethod().Name +
" - The event " + eventName +
" already exists with different arguments defined!");
270 unityEvent.Invoke(parameter1, parameter2, parameter3, parameter4);
void UnsubscribeFromEvent< T >(string eventName, UnityAction< T > unityAction)
bool HasEvent(string eventName)
void TriggerEvent< T1, T2, T3, T4 >(string eventName, T1 parameter1, T2 parameter2, T3 parameter3, T4 parameter4)
void UnsubscribeFromEvent(string eventName, UnityAction unityAction)
void UnsubscribeFromEvent< T1, T2, T3 >(string eventName, UnityAction< T1, T2, T3 > unityAction)
static GameEventSystem instance
void TriggerEvent(string eventName)
void AddEvent< T1, T2, T3 >(string eventName)
void TriggerEvent< T >(string eventName, T parameter)
void UnsubscribeFromEvent< T1, T2, T3, T4 >(string eventName, UnityAction< T1, T2, T3, T4 > unityAction)
void SubscribeToEvent(string eventName, UnityAction unityAction)
void SubscribeToEvent< T >(string eventName, UnityAction< T > unityAction)
Dictionary< string, UnityEventBase > events
void AddEvent(string eventName)
void AddEvent< T1, T2, T3, T4 >(string eventName)
void SubscribeToEvent< T1, T2 >(string eventName, UnityAction< T1, T2 > unityAction)
void WriteToConsole(string str)
void SubscribeToEvent< T1, T2, T3 >(string eventName, UnityAction< T1, T2, T3 > unityAction)
void SubscribeToEvent< T1, T2, T3, T4 >(string eventName, UnityAction< T1, T2, T3, T4 > unityAction)
void AddEvent< T >(string eventName)
static GameEventSystem GetInstance()
void UnsubscribeFromEvent< T1, T2 >(string eventName, UnityAction< T1, T2 > unityAction)
UnityEventBase GetEvent(string eventName)
void TriggerEvent< T1, T2, T3 >(string eventName, T1 parameter1, T2 parameter2, T3 parameter3)
void TriggerEvent< T1, T2 >(string eventName, T1 parameter1, T2 parameter2)
void AddEvent< T1, T2 >(string eventName)