com.wallstop-studios.dxmessaging 2.0.0-rc12 → 2.0.0-rc13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.gitattributes +63 -63
  2. package/.github/workflows/npm-publish.yml +66 -0
  3. package/CHANGELOG.md.meta +7 -7
  4. package/Editor/Analyzers/Microsoft.CodeAnalysis.CSharp.dll.meta +33 -33
  5. package/Editor/Analyzers/Microsoft.CodeAnalysis.dll.meta +33 -33
  6. package/Editor/Analyzers/System.Reflection.Metadata.dll.meta +33 -33
  7. package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll.meta +71 -71
  8. package/Editor/Analyzers.meta +8 -8
  9. package/Editor/SetupCscRsp.cs +162 -162
  10. package/Editor/SetupCscRsp.cs.meta +2 -2
  11. package/Editor/WallstopStudios.DxMessaging.Editor.asmdef +17 -17
  12. package/Editor/WallstopStudios.DxMessaging.Editor.asmdef.meta +7 -7
  13. package/Editor.meta +8 -8
  14. package/LICENSE.md +6 -6
  15. package/LICENSE.md.meta +7 -7
  16. package/README.md +387 -364
  17. package/README.md.meta +7 -7
  18. package/Runtime/Core/Attributes/DxAutoMessageTypeAttribute.cs +7 -7
  19. package/Runtime/Core/Attributes/DxAutoMessageTypeAttribute.cs.meta +2 -2
  20. package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs +7 -7
  21. package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs.meta +2 -2
  22. package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs +7 -7
  23. package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs.meta +2 -2
  24. package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs +7 -7
  25. package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs.meta +2 -2
  26. package/Runtime/Core/Attributes.meta +2 -2
  27. package/Runtime/Core/Extensions/MessageExtensions.cs +342 -342
  28. package/Runtime/Core/Extensions/MessageExtensions.cs.meta +11 -11
  29. package/Runtime/Core/Extensions.meta +8 -8
  30. package/Runtime/Core/IMessage.cs +12 -12
  31. package/Runtime/Core/IMessage.cs.meta +11 -11
  32. package/Runtime/Core/InstanceId.cs +149 -149
  33. package/Runtime/Core/InstanceId.cs.meta +11 -11
  34. package/Runtime/Core/MessageBus/IMessageBus.cs +309 -309
  35. package/Runtime/Core/MessageBus/IMessageBus.cs.meta +11 -11
  36. package/Runtime/Core/MessageBus/MessageBus.cs +2243 -2084
  37. package/Runtime/Core/MessageBus/MessageBus.cs.meta +11 -11
  38. package/Runtime/Core/MessageBus/MessagingRegistration.cs +105 -105
  39. package/Runtime/Core/MessageBus/MessagingRegistration.cs.meta +11 -11
  40. package/Runtime/Core/MessageBus/RegistrationLog.cs +111 -111
  41. package/Runtime/Core/MessageBus/RegistrationLog.cs.meta +11 -11
  42. package/Runtime/Core/MessageBus.meta +8 -8
  43. package/Runtime/Core/MessageHandler.cs +2778 -2759
  44. package/Runtime/Core/MessageHandler.cs.meta +11 -11
  45. package/Runtime/Core/MessageRegistrationHandle.cs +110 -110
  46. package/Runtime/Core/MessageRegistrationHandle.cs.meta +11 -11
  47. package/Runtime/Core/MessageRegistrationToken.cs +1234 -1234
  48. package/Runtime/Core/MessageRegistrationToken.cs.meta +11 -11
  49. package/Runtime/Core/Messages/IBroadcastMessage.cs +27 -27
  50. package/Runtime/Core/Messages/IBroadcastMessage.cs.meta +11 -11
  51. package/Runtime/Core/Messages/ITargetedMessage.cs +27 -27
  52. package/Runtime/Core/Messages/ITargetedMessage.cs.meta +11 -11
  53. package/Runtime/Core/Messages/IUntargetedMessage.cs +27 -27
  54. package/Runtime/Core/Messages/IUntargetedMessage.cs.meta +11 -11
  55. package/Runtime/Core/Messages.meta +8 -8
  56. package/Runtime/Core/MessagingDebug.cs +70 -70
  57. package/Runtime/Core/MessagingDebug.cs.meta +11 -11
  58. package/Runtime/Core.meta +8 -8
  59. package/Runtime/Unity/MessageAwareComponent.cs +77 -77
  60. package/Runtime/Unity/MessageAwareComponent.cs.meta +11 -11
  61. package/Runtime/Unity/MessagingComponent.cs +99 -99
  62. package/Runtime/Unity/MessagingComponent.cs.meta +11 -11
  63. package/Runtime/Unity.meta +8 -8
  64. package/Runtime/WallstopStudios.DxMessaging.asmdef +15 -15
  65. package/Runtime.meta +8 -8
  66. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoMessageTypeGenerator.cs +92 -92
  67. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoMessageTypeGenerator.cs.meta +11 -11
  68. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxBroadcastMessageGenerator.cs +94 -94
  69. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxBroadcastMessageGenerator.cs.meta +2 -2
  70. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxTargetedMessageGenerator.cs +94 -94
  71. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxTargetedMessageGenerator.cs.meta +2 -2
  72. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxUntargetedMessageGenerator.cs +94 -94
  73. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxUntargetedMessageGenerator.cs.meta +2 -2
  74. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.csproj +21 -21
  75. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.csproj.meta +7 -7
  76. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.meta +8 -8
  77. package/SourceGenerators.meta +8 -8
  78. package/Tests/Runtime/Benchmarks/PerformanceTests.cs +373 -310
  79. package/Tests/Runtime/Benchmarks/PerformanceTests.cs.meta +11 -11
  80. package/Tests/Runtime/Benchmarks.meta +8 -8
  81. package/Tests/Runtime/Core/BroadcastTests.cs +899 -899
  82. package/Tests/Runtime/Core/GlobalAcceptAllTests.cs +190 -190
  83. package/Tests/Runtime/Core/GlobalAcceptAllTests.cs.meta +11 -11
  84. package/Tests/Runtime/Core/MessagingTestBase.cs +185 -185
  85. package/Tests/Runtime/Core/MessagingTestBase.cs.meta +11 -11
  86. package/Tests/Runtime/Core/NominalTests.cs +1740 -1740
  87. package/Tests/Runtime/Core/PostProcessorTests.cs +1236 -1236
  88. package/Tests/Runtime/Core/PostProcessorTests.cs.meta +11 -11
  89. package/Tests/Runtime/Core/RegistrationTests.cs +1266 -1266
  90. package/Tests/Runtime/Core/RegistrationTests.cs.meta +11 -11
  91. package/Tests/Runtime/Core/TargetedTests.cs +888 -888
  92. package/Tests/Runtime/Core/TargetedTests.cs.meta +11 -11
  93. package/Tests/Runtime/Core/UntargetedTests.cs +272 -272
  94. package/Tests/Runtime/Core/UntargetedTests.cs.meta +11 -11
  95. package/Tests/Runtime/Scripts/Components/EmptyMessageAwareComponent.cs +9 -9
  96. package/Tests/Runtime/Scripts/Components/EmptyMessageAwareComponent.cs.meta +11 -11
  97. package/Tests/Runtime/Scripts/Components/SimpleMessageAwareComponent.cs +186 -186
  98. package/Tests/Runtime/Scripts/Messages/ComplexTargetedMessage.cs +30 -30
  99. package/Tests/Runtime/Scripts/Messages/SimpleBroadcastMessage.cs +8 -8
  100. package/Tests/Runtime/Scripts/Messages/SimpleTargetedMessage.cs +8 -8
  101. package/Tests/Runtime/Scripts/Messages/SimpleUntargetedMessage.cs +8 -8
  102. package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.csproj.meta +7 -7
  103. package/Tests.meta +8 -8
  104. package/Third Party Notices.md.meta +7 -7
  105. package/package.json +36 -36
  106. package/package.json.meta +7 -7
@@ -1,342 +1,342 @@
1
- namespace DxMessaging.Core.Extensions
2
- {
3
- using Core;
4
- using MessageBus;
5
- using Messages;
6
-
7
- /// <summary>
8
- /// Extensions to smartly go about emitting messages :^)
9
- /// </summary>
10
- public static class MessageExtensions
11
- {
12
- #if UNITY_2017_1_OR_NEWER
13
- /// <summary>
14
- /// Emits a TargetedMessage of the given type.
15
- /// </summary>
16
- /// <param name="message">TargetedMessage to emit.</param>
17
- /// <param name="target">Target that this message is intended for.</param>
18
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
19
- public static void EmitGameObjectTargeted<TMessage>(
20
- this TMessage message,
21
- UnityEngine.GameObject target,
22
- IMessageBus messageBus = null
23
- )
24
- where TMessage : class, ITargetedMessage
25
- {
26
- InstanceId targetId = target;
27
- messageBus ??= MessageHandler.MessageBus;
28
- if (typeof(TMessage) == typeof(ITargetedMessage))
29
- {
30
- messageBus.UntypedTargetedBroadcast(targetId, message);
31
- return;
32
- }
33
-
34
- messageBus.TargetedBroadcast(ref targetId, ref message);
35
- }
36
-
37
- /// <summary>
38
- /// Emits a TargetedMessage of the given type.
39
- /// </summary>
40
- /// <param name="message">TargetedMessage to emit.</param>
41
- /// <param name="target">Target that this message is intended for.</param>
42
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
43
- public static void EmitGameObjectTargeted<TMessage>(
44
- this ref TMessage message,
45
- UnityEngine.GameObject target,
46
- IMessageBus messageBus = null
47
- )
48
- where TMessage : struct, ITargetedMessage
49
- {
50
- InstanceId targetId = target;
51
- messageBus ??= MessageHandler.MessageBus;
52
- if (typeof(TMessage) == typeof(ITargetedMessage))
53
- {
54
- messageBus.UntypedTargetedBroadcast(targetId, message);
55
- return;
56
- }
57
-
58
- messageBus.TargetedBroadcast(ref targetId, ref message);
59
- }
60
-
61
- /// <summary>
62
- /// Emits a TargetedMessage of the given type.
63
- /// </summary>
64
- /// <param name="message">TargetedMessage to emit.</param>
65
- /// <param name="target">Target that this message is intended for.</param>
66
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
67
- public static void EmitComponentTargeted<TMessage>(
68
- this TMessage message,
69
- UnityEngine.Component target,
70
- IMessageBus messageBus = null
71
- )
72
- where TMessage : class, ITargetedMessage
73
- {
74
- InstanceId targetId = target;
75
- messageBus ??= MessageHandler.MessageBus;
76
- if (typeof(TMessage) == typeof(ITargetedMessage))
77
- {
78
- messageBus.UntypedTargetedBroadcast(targetId, message);
79
- return;
80
- }
81
-
82
- messageBus.TargetedBroadcast(ref targetId, ref message);
83
- }
84
-
85
- /// <summary>
86
- /// Emits a TargetedMessage of the given type.
87
- /// </summary>
88
- /// <param name="message">TargetedMessage to emit.</param>
89
- /// <param name="target">Target that this message is intended for.</param>
90
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
91
- public static void EmitComponentTargeted<TMessage>(
92
- this ref TMessage message,
93
- UnityEngine.Component target,
94
- IMessageBus messageBus = null
95
- )
96
- where TMessage : struct, ITargetedMessage
97
- {
98
- InstanceId targetId = target;
99
- messageBus ??= MessageHandler.MessageBus;
100
- if (typeof(TMessage) == typeof(ITargetedMessage))
101
- {
102
- messageBus.UntypedTargetedBroadcast(targetId, message);
103
- return;
104
- }
105
-
106
- messageBus.TargetedBroadcast(ref targetId, ref message);
107
- }
108
- #endif
109
-
110
- /// <summary>
111
- /// Emits a TargetedMessage of the given type.
112
- /// </summary>
113
- /// <param name="message">TargetedMessage to emit.</param>
114
- /// <param name="target">Target that this message is intended for.</param>
115
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
116
- public static void EmitTargeted<TMessage>(
117
- this TMessage message,
118
- InstanceId target,
119
- IMessageBus messageBus = null
120
- )
121
- where TMessage : class, ITargetedMessage
122
- {
123
- messageBus ??= MessageHandler.MessageBus;
124
- if (typeof(TMessage) == typeof(ITargetedMessage))
125
- {
126
- messageBus.UntypedTargetedBroadcast(target, message);
127
- return;
128
- }
129
-
130
- messageBus.TargetedBroadcast(ref target, ref message);
131
- }
132
-
133
- /// <summary>
134
- /// Emits a TargetedMessage of the given type.
135
- /// </summary>
136
- /// <param name="message">TargetedMessage to emit.</param>
137
- /// <param name="target">Target that this message is intended for.</param>
138
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
139
- public static void EmitTargeted<TMessage>(
140
- this ref TMessage message,
141
- InstanceId target,
142
- IMessageBus messageBus = null
143
- )
144
- where TMessage : struct, ITargetedMessage
145
- {
146
- messageBus ??= MessageHandler.MessageBus;
147
- if (typeof(TMessage) == typeof(ITargetedMessage))
148
- {
149
- messageBus.UntypedTargetedBroadcast(target, message);
150
- return;
151
- }
152
-
153
- messageBus.TargetedBroadcast(ref target, ref message);
154
- }
155
-
156
- /// <summary>
157
- /// Emits an UntargetedMessage of the given type.
158
- /// </summary>
159
- /// <param name="message">UntargetedMessage to emit.</param>
160
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
161
- public static void EmitUntargeted<TMessage>(
162
- this TMessage message,
163
- IMessageBus messageBus = null
164
- )
165
- where TMessage : class, IUntargetedMessage
166
- {
167
- messageBus ??= MessageHandler.MessageBus;
168
- if (typeof(TMessage) == typeof(IUntargetedMessage))
169
- {
170
- messageBus.UntypedUntargetedBroadcast(message);
171
- return;
172
- }
173
-
174
- messageBus.UntargetedBroadcast(ref message);
175
- }
176
-
177
- /// <summary>
178
- /// Emits an UntargetedMessage of the given type.
179
- /// </summary>
180
- /// <param name="message">UntargetedMessage to emit.</param>
181
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
182
- public static void EmitUntargeted<TMessage>(
183
- this ref TMessage message,
184
- IMessageBus messageBus = null
185
- )
186
- where TMessage : struct, IUntargetedMessage
187
- {
188
- messageBus ??= MessageHandler.MessageBus;
189
- if (typeof(TMessage) == typeof(IUntargetedMessage))
190
- {
191
- messageBus.UntypedUntargetedBroadcast(message);
192
- return;
193
- }
194
-
195
- messageBus.UntargetedBroadcast(ref message);
196
- }
197
-
198
- #if UNITY_2017_1_OR_NEWER
199
- /// <summary>
200
- /// Emits a BroadcastMessage of the given type.
201
- /// </summary>
202
- /// <param name="message">BroadcastMessage to emit.</param>
203
- /// <param name="source">Source of this message.</param>
204
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
205
- public static void EmitGameObjectBroadcast<TMessage>(
206
- this TMessage message,
207
- UnityEngine.GameObject source,
208
- IMessageBus messageBus = null
209
- )
210
- where TMessage : class, IBroadcastMessage
211
- {
212
- InstanceId sourceId = source;
213
- messageBus ??= MessageHandler.MessageBus;
214
- if (typeof(TMessage) == typeof(IBroadcastMessage))
215
- {
216
- messageBus.UntypedSourcedBroadcast(sourceId, message);
217
- return;
218
- }
219
-
220
- messageBus.SourcedBroadcast(ref sourceId, ref message);
221
- }
222
-
223
- /// <summary>
224
- /// Emits a BroadcastMessage of the given type.
225
- /// </summary>
226
- /// <param name="message">BroadcastMessage to emit.</param>
227
- /// <param name="source">Source of this message.</param>
228
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
229
- public static void EmitGameObjectBroadcast<TMessage>(
230
- this ref TMessage message,
231
- UnityEngine.GameObject source,
232
- IMessageBus messageBus = null
233
- )
234
- where TMessage : struct, IBroadcastMessage
235
- {
236
- InstanceId sourceId = source;
237
- messageBus ??= MessageHandler.MessageBus;
238
- if (typeof(TMessage) == typeof(IBroadcastMessage))
239
- {
240
- messageBus.UntypedSourcedBroadcast(sourceId, message);
241
- return;
242
- }
243
-
244
- messageBus.SourcedBroadcast(ref sourceId, ref message);
245
- }
246
-
247
- /// <summary>
248
- /// Emits a BroadcastMessage of the given type from the specified component.
249
- /// </summary>
250
- /// <param name="message">BroadcastMessage to emit.</param>
251
- /// <param name="source">Source of this message.</param>
252
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
253
- public static void EmitComponentBroadcast<TMessage>(
254
- this TMessage message,
255
- UnityEngine.Component source,
256
- IMessageBus messageBus = null
257
- )
258
- where TMessage : class, IBroadcastMessage
259
- {
260
- InstanceId sourceId = source;
261
- messageBus ??= MessageHandler.MessageBus;
262
- if (typeof(TMessage) == typeof(IBroadcastMessage))
263
- {
264
- messageBus.UntypedSourcedBroadcast(sourceId, message);
265
- return;
266
- }
267
-
268
- messageBus.SourcedBroadcast(ref sourceId, ref message);
269
- }
270
-
271
- /// <summary>
272
- /// Emits a BroadcastMessage of the given type from the specified component.
273
- /// </summary>
274
- /// <param name="message">BroadcastMessage to emit.</param>
275
- /// <param name="source">Source of this message.</param>
276
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
277
- public static void EmitComponentBroadcast<TMessage>(
278
- this ref TMessage message,
279
- UnityEngine.Component source,
280
- IMessageBus messageBus = null
281
- )
282
- where TMessage : struct, IBroadcastMessage
283
- {
284
- InstanceId sourceId = source;
285
- messageBus ??= MessageHandler.MessageBus;
286
- if (typeof(TMessage) == typeof(IBroadcastMessage))
287
- {
288
- messageBus.UntypedSourcedBroadcast(sourceId, message);
289
- return;
290
- }
291
-
292
- messageBus.SourcedBroadcast(ref sourceId, ref message);
293
- }
294
- #endif
295
-
296
- /// <summary>
297
- /// Emits a BroadcastMessage of the given type from the specified component.
298
- /// </summary>
299
- /// <param name="message">BroadcastMessage to emit.</param>
300
- /// <param name="source">Source of this message.</param>
301
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
302
- public static void EmitBroadcast<TMessage>(
303
- this TMessage message,
304
- InstanceId source,
305
- IMessageBus messageBus = null
306
- )
307
- where TMessage : class, IBroadcastMessage
308
- {
309
- messageBus ??= MessageHandler.MessageBus;
310
- if (typeof(TMessage) == typeof(IBroadcastMessage))
311
- {
312
- messageBus.UntypedSourcedBroadcast(source, message);
313
- return;
314
- }
315
-
316
- messageBus.SourcedBroadcast(ref source, ref message);
317
- }
318
-
319
- /// <summary>
320
- /// Emits a BroadcastMessage of the given type from the specified component.
321
- /// </summary>
322
- /// <param name="message">BroadcastMessage to emit.</param>
323
- /// <param name="source">Source of this message.</param>
324
- /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
325
- public static void EmitBroadcast<TMessage>(
326
- this ref TMessage message,
327
- InstanceId source,
328
- IMessageBus messageBus = null
329
- )
330
- where TMessage : struct, IBroadcastMessage
331
- {
332
- messageBus ??= MessageHandler.MessageBus;
333
- if (typeof(TMessage) == typeof(IBroadcastMessage))
334
- {
335
- messageBus.UntypedSourcedBroadcast(source, message);
336
- return;
337
- }
338
-
339
- messageBus.SourcedBroadcast(ref source, ref message);
340
- }
341
- }
342
- }
1
+ namespace DxMessaging.Core.Extensions
2
+ {
3
+ using Core;
4
+ using MessageBus;
5
+ using Messages;
6
+
7
+ /// <summary>
8
+ /// Extensions to smartly go about emitting messages :^)
9
+ /// </summary>
10
+ public static class MessageExtensions
11
+ {
12
+ #if UNITY_2017_1_OR_NEWER
13
+ /// <summary>
14
+ /// Emits a TargetedMessage of the given type.
15
+ /// </summary>
16
+ /// <param name="message">TargetedMessage to emit.</param>
17
+ /// <param name="target">Target that this message is intended for.</param>
18
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
19
+ public static void EmitGameObjectTargeted<TMessage>(
20
+ this TMessage message,
21
+ UnityEngine.GameObject target,
22
+ IMessageBus messageBus = null
23
+ )
24
+ where TMessage : class, ITargetedMessage
25
+ {
26
+ InstanceId targetId = target;
27
+ messageBus ??= MessageHandler.MessageBus;
28
+ if (typeof(TMessage) == typeof(ITargetedMessage))
29
+ {
30
+ messageBus.UntypedTargetedBroadcast(targetId, message);
31
+ return;
32
+ }
33
+
34
+ messageBus.TargetedBroadcast(ref targetId, ref message);
35
+ }
36
+
37
+ /// <summary>
38
+ /// Emits a TargetedMessage of the given type.
39
+ /// </summary>
40
+ /// <param name="message">TargetedMessage to emit.</param>
41
+ /// <param name="target">Target that this message is intended for.</param>
42
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
43
+ public static void EmitGameObjectTargeted<TMessage>(
44
+ this ref TMessage message,
45
+ UnityEngine.GameObject target,
46
+ IMessageBus messageBus = null
47
+ )
48
+ where TMessage : struct, ITargetedMessage
49
+ {
50
+ InstanceId targetId = target;
51
+ messageBus ??= MessageHandler.MessageBus;
52
+ if (typeof(TMessage) == typeof(ITargetedMessage))
53
+ {
54
+ messageBus.UntypedTargetedBroadcast(targetId, message);
55
+ return;
56
+ }
57
+
58
+ messageBus.TargetedBroadcast(ref targetId, ref message);
59
+ }
60
+
61
+ /// <summary>
62
+ /// Emits a TargetedMessage of the given type.
63
+ /// </summary>
64
+ /// <param name="message">TargetedMessage to emit.</param>
65
+ /// <param name="target">Target that this message is intended for.</param>
66
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
67
+ public static void EmitComponentTargeted<TMessage>(
68
+ this TMessage message,
69
+ UnityEngine.Component target,
70
+ IMessageBus messageBus = null
71
+ )
72
+ where TMessage : class, ITargetedMessage
73
+ {
74
+ InstanceId targetId = target;
75
+ messageBus ??= MessageHandler.MessageBus;
76
+ if (typeof(TMessage) == typeof(ITargetedMessage))
77
+ {
78
+ messageBus.UntypedTargetedBroadcast(targetId, message);
79
+ return;
80
+ }
81
+
82
+ messageBus.TargetedBroadcast(ref targetId, ref message);
83
+ }
84
+
85
+ /// <summary>
86
+ /// Emits a TargetedMessage of the given type.
87
+ /// </summary>
88
+ /// <param name="message">TargetedMessage to emit.</param>
89
+ /// <param name="target">Target that this message is intended for.</param>
90
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
91
+ public static void EmitComponentTargeted<TMessage>(
92
+ this ref TMessage message,
93
+ UnityEngine.Component target,
94
+ IMessageBus messageBus = null
95
+ )
96
+ where TMessage : struct, ITargetedMessage
97
+ {
98
+ InstanceId targetId = target;
99
+ messageBus ??= MessageHandler.MessageBus;
100
+ if (typeof(TMessage) == typeof(ITargetedMessage))
101
+ {
102
+ messageBus.UntypedTargetedBroadcast(targetId, message);
103
+ return;
104
+ }
105
+
106
+ messageBus.TargetedBroadcast(ref targetId, ref message);
107
+ }
108
+ #endif
109
+
110
+ /// <summary>
111
+ /// Emits a TargetedMessage of the given type.
112
+ /// </summary>
113
+ /// <param name="message">TargetedMessage to emit.</param>
114
+ /// <param name="target">Target that this message is intended for.</param>
115
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
116
+ public static void EmitTargeted<TMessage>(
117
+ this TMessage message,
118
+ InstanceId target,
119
+ IMessageBus messageBus = null
120
+ )
121
+ where TMessage : class, ITargetedMessage
122
+ {
123
+ messageBus ??= MessageHandler.MessageBus;
124
+ if (typeof(TMessage) == typeof(ITargetedMessage))
125
+ {
126
+ messageBus.UntypedTargetedBroadcast(target, message);
127
+ return;
128
+ }
129
+
130
+ messageBus.TargetedBroadcast(ref target, ref message);
131
+ }
132
+
133
+ /// <summary>
134
+ /// Emits a TargetedMessage of the given type.
135
+ /// </summary>
136
+ /// <param name="message">TargetedMessage to emit.</param>
137
+ /// <param name="target">Target that this message is intended for.</param>
138
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
139
+ public static void EmitTargeted<TMessage>(
140
+ this ref TMessage message,
141
+ InstanceId target,
142
+ IMessageBus messageBus = null
143
+ )
144
+ where TMessage : struct, ITargetedMessage
145
+ {
146
+ messageBus ??= MessageHandler.MessageBus;
147
+ if (typeof(TMessage) == typeof(ITargetedMessage))
148
+ {
149
+ messageBus.UntypedTargetedBroadcast(target, message);
150
+ return;
151
+ }
152
+
153
+ messageBus.TargetedBroadcast(ref target, ref message);
154
+ }
155
+
156
+ /// <summary>
157
+ /// Emits an UntargetedMessage of the given type.
158
+ /// </summary>
159
+ /// <param name="message">UntargetedMessage to emit.</param>
160
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
161
+ public static void EmitUntargeted<TMessage>(
162
+ this TMessage message,
163
+ IMessageBus messageBus = null
164
+ )
165
+ where TMessage : class, IUntargetedMessage
166
+ {
167
+ messageBus ??= MessageHandler.MessageBus;
168
+ if (typeof(TMessage) == typeof(IUntargetedMessage))
169
+ {
170
+ messageBus.UntypedUntargetedBroadcast(message);
171
+ return;
172
+ }
173
+
174
+ messageBus.UntargetedBroadcast(ref message);
175
+ }
176
+
177
+ /// <summary>
178
+ /// Emits an UntargetedMessage of the given type.
179
+ /// </summary>
180
+ /// <param name="message">UntargetedMessage to emit.</param>
181
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
182
+ public static void EmitUntargeted<TMessage>(
183
+ this ref TMessage message,
184
+ IMessageBus messageBus = null
185
+ )
186
+ where TMessage : struct, IUntargetedMessage
187
+ {
188
+ messageBus ??= MessageHandler.MessageBus;
189
+ if (typeof(TMessage) == typeof(IUntargetedMessage))
190
+ {
191
+ messageBus.UntypedUntargetedBroadcast(message);
192
+ return;
193
+ }
194
+
195
+ messageBus.UntargetedBroadcast(ref message);
196
+ }
197
+
198
+ #if UNITY_2017_1_OR_NEWER
199
+ /// <summary>
200
+ /// Emits a BroadcastMessage of the given type.
201
+ /// </summary>
202
+ /// <param name="message">BroadcastMessage to emit.</param>
203
+ /// <param name="source">Source of this message.</param>
204
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
205
+ public static void EmitGameObjectBroadcast<TMessage>(
206
+ this TMessage message,
207
+ UnityEngine.GameObject source,
208
+ IMessageBus messageBus = null
209
+ )
210
+ where TMessage : class, IBroadcastMessage
211
+ {
212
+ InstanceId sourceId = source;
213
+ messageBus ??= MessageHandler.MessageBus;
214
+ if (typeof(TMessage) == typeof(IBroadcastMessage))
215
+ {
216
+ messageBus.UntypedSourcedBroadcast(sourceId, message);
217
+ return;
218
+ }
219
+
220
+ messageBus.SourcedBroadcast(ref sourceId, ref message);
221
+ }
222
+
223
+ /// <summary>
224
+ /// Emits a BroadcastMessage of the given type.
225
+ /// </summary>
226
+ /// <param name="message">BroadcastMessage to emit.</param>
227
+ /// <param name="source">Source of this message.</param>
228
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
229
+ public static void EmitGameObjectBroadcast<TMessage>(
230
+ this ref TMessage message,
231
+ UnityEngine.GameObject source,
232
+ IMessageBus messageBus = null
233
+ )
234
+ where TMessage : struct, IBroadcastMessage
235
+ {
236
+ InstanceId sourceId = source;
237
+ messageBus ??= MessageHandler.MessageBus;
238
+ if (typeof(TMessage) == typeof(IBroadcastMessage))
239
+ {
240
+ messageBus.UntypedSourcedBroadcast(sourceId, message);
241
+ return;
242
+ }
243
+
244
+ messageBus.SourcedBroadcast(ref sourceId, ref message);
245
+ }
246
+
247
+ /// <summary>
248
+ /// Emits a BroadcastMessage of the given type from the specified component.
249
+ /// </summary>
250
+ /// <param name="message">BroadcastMessage to emit.</param>
251
+ /// <param name="source">Source of this message.</param>
252
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
253
+ public static void EmitComponentBroadcast<TMessage>(
254
+ this TMessage message,
255
+ UnityEngine.Component source,
256
+ IMessageBus messageBus = null
257
+ )
258
+ where TMessage : class, IBroadcastMessage
259
+ {
260
+ InstanceId sourceId = source;
261
+ messageBus ??= MessageHandler.MessageBus;
262
+ if (typeof(TMessage) == typeof(IBroadcastMessage))
263
+ {
264
+ messageBus.UntypedSourcedBroadcast(sourceId, message);
265
+ return;
266
+ }
267
+
268
+ messageBus.SourcedBroadcast(ref sourceId, ref message);
269
+ }
270
+
271
+ /// <summary>
272
+ /// Emits a BroadcastMessage of the given type from the specified component.
273
+ /// </summary>
274
+ /// <param name="message">BroadcastMessage to emit.</param>
275
+ /// <param name="source">Source of this message.</param>
276
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
277
+ public static void EmitComponentBroadcast<TMessage>(
278
+ this ref TMessage message,
279
+ UnityEngine.Component source,
280
+ IMessageBus messageBus = null
281
+ )
282
+ where TMessage : struct, IBroadcastMessage
283
+ {
284
+ InstanceId sourceId = source;
285
+ messageBus ??= MessageHandler.MessageBus;
286
+ if (typeof(TMessage) == typeof(IBroadcastMessage))
287
+ {
288
+ messageBus.UntypedSourcedBroadcast(sourceId, message);
289
+ return;
290
+ }
291
+
292
+ messageBus.SourcedBroadcast(ref sourceId, ref message);
293
+ }
294
+ #endif
295
+
296
+ /// <summary>
297
+ /// Emits a BroadcastMessage of the given type from the specified component.
298
+ /// </summary>
299
+ /// <param name="message">BroadcastMessage to emit.</param>
300
+ /// <param name="source">Source of this message.</param>
301
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
302
+ public static void EmitBroadcast<TMessage>(
303
+ this TMessage message,
304
+ InstanceId source,
305
+ IMessageBus messageBus = null
306
+ )
307
+ where TMessage : class, IBroadcastMessage
308
+ {
309
+ messageBus ??= MessageHandler.MessageBus;
310
+ if (typeof(TMessage) == typeof(IBroadcastMessage))
311
+ {
312
+ messageBus.UntypedSourcedBroadcast(source, message);
313
+ return;
314
+ }
315
+
316
+ messageBus.SourcedBroadcast(ref source, ref message);
317
+ }
318
+
319
+ /// <summary>
320
+ /// Emits a BroadcastMessage of the given type from the specified component.
321
+ /// </summary>
322
+ /// <param name="message">BroadcastMessage to emit.</param>
323
+ /// <param name="source">Source of this message.</param>
324
+ /// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
325
+ public static void EmitBroadcast<TMessage>(
326
+ this ref TMessage message,
327
+ InstanceId source,
328
+ IMessageBus messageBus = null
329
+ )
330
+ where TMessage : struct, IBroadcastMessage
331
+ {
332
+ messageBus ??= MessageHandler.MessageBus;
333
+ if (typeof(TMessage) == typeof(IBroadcastMessage))
334
+ {
335
+ messageBus.UntypedSourcedBroadcast(source, message);
336
+ return;
337
+ }
338
+
339
+ messageBus.SourcedBroadcast(ref source, ref message);
340
+ }
341
+ }
342
+ }