com.wallstop-studios.dxmessaging 2.0.0-rc11 → 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.
- package/.gitattributes +63 -63
- package/.github/workflows/npm-publish.yml +66 -0
- package/CHANGELOG.md.meta +7 -7
- package/Editor/Analyzers/Microsoft.CodeAnalysis.CSharp.dll.meta +33 -33
- package/Editor/Analyzers/Microsoft.CodeAnalysis.dll.meta +33 -33
- package/Editor/Analyzers/System.Reflection.Metadata.dll.meta +33 -33
- package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll.meta +71 -71
- package/Editor/Analyzers.meta +8 -8
- package/Editor/SetupCscRsp.cs +162 -146
- package/Editor/SetupCscRsp.cs.meta +2 -2
- package/Editor/WallstopStudios.DxMessaging.Editor.asmdef +17 -17
- package/Editor/WallstopStudios.DxMessaging.Editor.asmdef.meta +7 -7
- package/Editor.meta +8 -8
- package/LICENSE.md +6 -6
- package/LICENSE.md.meta +7 -7
- package/README.md +387 -363
- package/README.md.meta +7 -7
- package/Runtime/Core/Attributes/DxAutoMessageTypeAttribute.cs +7 -9
- package/Runtime/Core/Attributes/DxAutoMessageTypeAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs +7 -10
- package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs +7 -10
- package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs +7 -10
- package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes.meta +2 -2
- package/Runtime/Core/Extensions/MessageExtensions.cs +342 -275
- package/Runtime/Core/Extensions/MessageExtensions.cs.meta +11 -11
- package/Runtime/Core/Extensions.meta +8 -8
- package/Runtime/Core/IMessage.cs +12 -12
- package/Runtime/Core/IMessage.cs.meta +11 -11
- package/Runtime/Core/InstanceId.cs +149 -149
- package/Runtime/Core/InstanceId.cs.meta +11 -11
- package/Runtime/Core/MessageBus/IMessageBus.cs +309 -309
- package/Runtime/Core/MessageBus/IMessageBus.cs.meta +11 -11
- package/Runtime/Core/MessageBus/MessageBus.cs +2243 -2084
- package/Runtime/Core/MessageBus/MessageBus.cs.meta +11 -11
- package/Runtime/Core/MessageBus/MessagingRegistration.cs +105 -100
- package/Runtime/Core/MessageBus/MessagingRegistration.cs.meta +11 -11
- package/Runtime/Core/MessageBus/RegistrationLog.cs +111 -111
- package/Runtime/Core/MessageBus/RegistrationLog.cs.meta +11 -11
- package/Runtime/Core/MessageBus.meta +8 -8
- package/Runtime/Core/MessageHandler.cs +2778 -2759
- package/Runtime/Core/MessageHandler.cs.meta +11 -11
- package/Runtime/Core/MessageRegistrationHandle.cs +110 -110
- package/Runtime/Core/MessageRegistrationHandle.cs.meta +11 -11
- package/Runtime/Core/MessageRegistrationToken.cs +1234 -1234
- package/Runtime/Core/MessageRegistrationToken.cs.meta +11 -11
- package/Runtime/Core/Messages/IBroadcastMessage.cs +27 -27
- package/Runtime/Core/Messages/IBroadcastMessage.cs.meta +11 -11
- package/Runtime/Core/Messages/ITargetedMessage.cs +27 -26
- package/Runtime/Core/Messages/ITargetedMessage.cs.meta +11 -11
- package/Runtime/Core/Messages/IUntargetedMessage.cs +27 -26
- package/Runtime/Core/Messages/IUntargetedMessage.cs.meta +11 -11
- package/Runtime/Core/Messages.meta +8 -8
- package/Runtime/Core/MessagingDebug.cs +70 -71
- package/Runtime/Core/MessagingDebug.cs.meta +11 -11
- package/Runtime/Core.meta +8 -8
- package/Runtime/Unity/MessageAwareComponent.cs +77 -77
- package/Runtime/Unity/MessageAwareComponent.cs.meta +11 -11
- package/Runtime/Unity/MessagingComponent.cs +99 -99
- package/Runtime/Unity/MessagingComponent.cs.meta +11 -11
- package/Runtime/Unity.meta +8 -8
- package/Runtime/WallstopStudios.DxMessaging.asmdef +15 -15
- package/Runtime.meta +8 -8
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoMessageTypeGenerator.cs +92 -75
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoMessageTypeGenerator.cs.meta +11 -11
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxBroadcastMessageGenerator.cs +94 -77
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxBroadcastMessageGenerator.cs.meta +2 -2
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxTargetedMessageGenerator.cs +94 -77
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxTargetedMessageGenerator.cs.meta +2 -2
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxUntargetedMessageGenerator.cs +94 -78
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxUntargetedMessageGenerator.cs.meta +2 -2
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.csproj +21 -21
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.csproj.meta +7 -7
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.meta +8 -8
- package/SourceGenerators.meta +8 -8
- package/Tests/Runtime/Benchmarks/PerformanceTests.cs +373 -310
- package/Tests/Runtime/Benchmarks/PerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Benchmarks.meta +8 -8
- package/Tests/Runtime/Core/BroadcastTests.cs +899 -899
- package/Tests/Runtime/Core/GlobalAcceptAllTests.cs +190 -169
- package/Tests/Runtime/Core/GlobalAcceptAllTests.cs.meta +11 -11
- package/Tests/Runtime/Core/MessagingTestBase.cs +185 -164
- package/Tests/Runtime/Core/MessagingTestBase.cs.meta +11 -11
- package/Tests/Runtime/Core/NominalTests.cs +1740 -1518
- package/Tests/Runtime/Core/PostProcessorTests.cs +1236 -849
- package/Tests/Runtime/Core/PostProcessorTests.cs.meta +11 -11
- package/Tests/Runtime/Core/RegistrationTests.cs +1266 -995
- package/Tests/Runtime/Core/RegistrationTests.cs.meta +11 -11
- package/Tests/Runtime/Core/TargetedTests.cs +888 -888
- package/Tests/Runtime/Core/TargetedTests.cs.meta +11 -11
- package/Tests/Runtime/Core/UntargetedTests.cs +272 -272
- package/Tests/Runtime/Core/UntargetedTests.cs.meta +11 -11
- package/Tests/Runtime/Scripts/Components/EmptyMessageAwareComponent.cs +9 -9
- package/Tests/Runtime/Scripts/Components/EmptyMessageAwareComponent.cs.meta +11 -11
- package/Tests/Runtime/Scripts/Components/SimpleMessageAwareComponent.cs +186 -140
- package/Tests/Runtime/Scripts/Messages/ComplexTargetedMessage.cs +30 -30
- package/Tests/Runtime/Scripts/Messages/SimpleBroadcastMessage.cs +8 -8
- package/Tests/Runtime/Scripts/Messages/SimpleTargetedMessage.cs +8 -8
- package/Tests/Runtime/Scripts/Messages/SimpleUntargetedMessage.cs +8 -8
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.asmdef +22 -22
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.csproj.meta +7 -7
- package/Tests.meta +8 -8
- package/Third Party Notices.md.meta +7 -7
- package/package.json +36 -36
- package/package.json.meta +7 -7
|
@@ -1,275 +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
|
-
|
|
13
|
-
|
|
14
|
-
///
|
|
15
|
-
///
|
|
16
|
-
///
|
|
17
|
-
/// <param name="
|
|
18
|
-
/// <param name="
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/// <
|
|
38
|
-
///
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
messageBus
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
///
|
|
202
|
-
///
|
|
203
|
-
///
|
|
204
|
-
/// <param name="
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
/// <
|
|
224
|
-
///
|
|
225
|
-
///
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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
|
+
}
|