com.wallstop-studios.dxmessaging 2.0.0-rc27.3.1 → 2.1.0
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/.github/workflows/format-on-demand.yml +2 -2
- package/.github/workflows/json-format-check.yml +1 -1
- package/.github/workflows/markdown-json.yml +1 -1
- package/.github/workflows/markdownlint.yml +1 -1
- package/.github/workflows/npm-publish.yml +1 -1
- package/.github/workflows/prettier-autofix.yml +2 -2
- package/.github/workflows/yaml-format-lint.yml +1 -1
- package/Docs/Advanced.md +26 -1
- package/Docs/Comparisons.md +1352 -141
- package/Docs/Compatibility.md +27 -0
- package/Docs/DesignAndArchitecture.md +41 -34
- package/Docs/EmitShorthands.md +34 -0
- package/Docs/GettingStarted.md +84 -17
- package/Docs/Helpers.md +1 -1
- package/Docs/Index.md +28 -25
- package/Docs/Install.md +29 -6
- package/Docs/Integrations/Reflex.md +292 -0
- package/Docs/Integrations/Reflex.md.meta +7 -0
- package/Docs/Integrations/VContainer.md +324 -0
- package/Docs/Integrations/VContainer.md.meta +7 -0
- package/Docs/Integrations/Zenject.md +333 -0
- package/Docs/Integrations/Zenject.md.meta +7 -0
- package/{Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.pdb.meta → Docs/Integrations.meta} +2 -1
- package/Docs/InterceptorsAndOrdering.md +371 -17
- package/Docs/ListeningPatterns.md +206 -0
- package/Docs/MessageBusProviders.md +496 -0
- package/Docs/MessageBusProviders.md.meta +7 -0
- package/Docs/MessageTypes.md +27 -0
- package/Docs/MigrationGuide.md +45 -0
- package/Docs/Overview.md +114 -20
- package/Docs/Patterns.md +327 -2
- package/Docs/Performance.md +9 -9
- package/Docs/QuickReference.md +31 -0
- package/Docs/RuntimeConfiguration.md +407 -0
- package/Docs/RuntimeConfiguration.md.meta +7 -0
- package/Docs/UnityIntegration.md +3 -1
- package/Docs/VisualGuide.md +281 -167
- package/Editor/Analyzers/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/Editor/Analyzers/Microsoft.CodeAnalysis.CSharp.dll.meta +3 -3
- package/Editor/Analyzers/Microsoft.CodeAnalysis.dll +0 -0
- package/Editor/Analyzers/Microsoft.CodeAnalysis.dll.meta +2 -2
- package/Editor/Analyzers/System.Collections.Immutable.dll +0 -0
- package/Editor/Analyzers/System.Reflection.Metadata.dll +0 -0
- package/Editor/Analyzers/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/Editor/CustomEditors/MessagingComponentEditor.cs +15 -6
- package/README.md +388 -67
- package/Runtime/AssemblyInfo.cs +4 -0
- package/Runtime/Core/Extensions/MessageBusExtensions.cs +253 -0
- package/Runtime/Core/Extensions/MessageBusExtensions.cs.meta +12 -0
- package/Runtime/Core/Extensions/MessageExtensions.cs +137 -89
- package/Runtime/Core/MessageBus/GlobalMessageBusProvider.cs +23 -0
- package/Runtime/Core/MessageBus/GlobalMessageBusProvider.cs.meta +11 -0
- package/Runtime/Core/MessageBus/IMessageBusProvider.cs +14 -0
- package/Runtime/Core/MessageBus/IMessageBusProvider.cs.meta +11 -0
- package/Runtime/Core/MessageBus/IMessageRegistrationBuilder.cs +18 -0
- package/Runtime/Core/MessageBus/IMessageRegistrationBuilder.cs.meta +11 -0
- package/Runtime/Core/MessageBus/MessageBusRebindMode.cs +26 -0
- package/Runtime/Core/MessageBus/MessageBusRebindMode.cs.meta +11 -0
- package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs +383 -0
- package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs.meta +11 -0
- package/Runtime/Core/MessageHandler.cs +198 -27
- package/Runtime/Core/MessageRegistrationToken.cs +67 -25
- package/Runtime/Unity/CurrentGlobalMessageBusProvider.cs +31 -0
- package/Runtime/Unity/CurrentGlobalMessageBusProvider.cs.meta +12 -0
- package/Runtime/Unity/InitialGlobalMessageBusProvider.cs +38 -0
- package/Runtime/Unity/InitialGlobalMessageBusProvider.cs.meta +12 -0
- package/Runtime/Unity/Integrations/Reflex/AssemblyInfo.cs +11 -0
- package/Runtime/Unity/Integrations/Reflex/AssemblyInfo.cs.meta +3 -0
- package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs +73 -0
- package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs.meta +11 -0
- package/Runtime/Unity/Integrations/Reflex/WallstopStudios.DxMessaging.Reflex.asmdef +20 -0
- package/Runtime/Unity/Integrations/Reflex/WallstopStudios.DxMessaging.Reflex.asmdef.meta +7 -0
- package/Runtime/Unity/Integrations/Reflex.meta +8 -0
- package/Runtime/Unity/Integrations/VContainer/AssemblyInfo.cs +11 -0
- package/Runtime/Unity/Integrations/VContainer/AssemblyInfo.cs.meta +3 -0
- package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs +46 -0
- package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs.meta +11 -0
- package/Runtime/Unity/Integrations/VContainer/WallstopStudios.DxMessaging.VContainer.asmdef +30 -0
- package/Runtime/Unity/Integrations/VContainer/WallstopStudios.DxMessaging.VContainer.asmdef.meta +7 -0
- package/Runtime/Unity/Integrations/VContainer.meta +8 -0
- package/Runtime/Unity/Integrations/Zenject/AssemblyInfo.cs +11 -0
- package/Runtime/Unity/Integrations/Zenject/AssemblyInfo.cs.meta +3 -0
- package/Runtime/Unity/Integrations/Zenject/WallstopStudios.DxMessaging.Zenject.asmdef +30 -0
- package/Runtime/Unity/Integrations/Zenject/WallstopStudios.DxMessaging.Zenject.asmdef.meta +7 -0
- package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs +55 -0
- package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs.meta +11 -0
- package/Runtime/Unity/Integrations/Zenject.meta +8 -0
- package/Runtime/Unity/Integrations.meta +8 -0
- package/Runtime/Unity/MessageAwareComponent.cs +102 -0
- package/Runtime/Unity/MessageBusProviderHandle.cs +97 -0
- package/Runtime/Unity/MessageBusProviderHandle.cs.meta +12 -0
- package/Runtime/Unity/MessagingComponent.cs +164 -2
- package/Runtime/Unity/MessagingComponentInstaller.cs +120 -0
- package/Runtime/Unity/MessagingComponentInstaller.cs.meta +12 -0
- package/Runtime/Unity/ScriptableMessageBusProvider.cs +14 -0
- package/Runtime/Unity/ScriptableMessageBusProvider.cs.meta +12 -0
- package/Samples~/DI/Prefabs/MessagingInstallerSample.prefab +98 -0
- package/Samples~/DI/Prefabs/MessagingInstallerSample.prefab.meta +7 -0
- package/Samples~/DI/Prefabs.meta +8 -0
- package/Samples~/DI/Providers/GlobalMessageBusProvider.asset +14 -0
- package/Samples~/DI/Providers/GlobalMessageBusProvider.asset.meta +8 -0
- package/Samples~/DI/Providers/InitialGlobalMessageBusProvider.asset +14 -0
- package/Samples~/DI/Providers/InitialGlobalMessageBusProvider.asset.meta +8 -0
- package/Samples~/DI/Providers.meta +8 -0
- package/Samples~/DI/README.md +51 -0
- package/Samples~/DI/README.md.meta +7 -0
- package/Samples~/DI/Reflex/SampleInstaller.cs +75 -0
- package/Samples~/DI/Reflex/SampleInstaller.cs.meta +11 -0
- package/Samples~/DI/Reflex.meta +8 -0
- package/Samples~/DI/VContainer/SampleLifetimeScope.cs +81 -0
- package/Samples~/DI/VContainer/SampleLifetimeScope.cs.meta +11 -0
- package/Samples~/DI/VContainer.meta +8 -0
- package/Samples~/DI/Zenject/SampleInstaller.cs +67 -0
- package/Samples~/DI/Zenject/SampleInstaller.cs.meta +11 -0
- package/Samples~/DI/Zenject.meta +8 -0
- package/Samples~/DI.meta +8 -0
- package/Samples~/Mini Combat/README.md +86 -28
- package/Samples~/Mini Combat/Walkthrough.md +41 -25
- package/Samples~/UI Buttons + Inspector/DiagnosticsEnabler.cs +12 -2
- package/Samples~/UI Buttons + Inspector/README.md +55 -12
- package/Samples~/UI Buttons + Inspector/README.md.meta +7 -0
- package/Tests/Runtime/Benchmarks/BenchmarkSession.cs +444 -0
- package/Tests/Runtime/Benchmarks/BenchmarkSession.cs.meta +11 -0
- package/Tests/Runtime/Benchmarks/BenchmarkTestBase.cs +94 -0
- package/Tests/Runtime/Benchmarks/BenchmarkTestBase.cs.meta +11 -0
- package/Tests/Runtime/Benchmarks/ComparisonPerformanceTests.cs +395 -0
- package/Tests/Runtime/Benchmarks/ComparisonPerformanceTests.cs.meta +11 -0
- package/Tests/Runtime/Benchmarks/PerformanceTests.cs +77 -429
- package/Tests/Runtime/Benchmarks/ProviderResolutionBenchmarks.cs +142 -0
- package/Tests/Runtime/Benchmarks/ProviderResolutionBenchmarks.cs.meta +12 -0
- package/Tests/Runtime/Benchmarks/WallstopStudios.DxMessaging.Tests.Runtime.Benchmarks.asmdef +50 -0
- package/Tests/Runtime/Benchmarks/WallstopStudios.DxMessaging.Tests.Runtime.Benchmarks.asmdef.meta +7 -0
- package/Tests/Runtime/Core/DefaultBusFallbackTests.cs +333 -0
- package/Tests/Runtime/Core/DefaultBusFallbackTests.cs.meta +11 -0
- package/Tests/Runtime/Core/Extensions/MessageBusExtensionsTests.cs +278 -0
- package/Tests/Runtime/Core/Extensions/MessageBusExtensionsTests.cs.meta +11 -0
- package/Tests/Runtime/Core/Extensions/MessageExtensionsProviderTests.cs +289 -0
- package/Tests/Runtime/Core/Extensions/MessageExtensionsProviderTests.cs.meta +11 -0
- package/Tests/Runtime/Core/Extensions.meta +8 -0
- package/Tests/Runtime/Core/IntegrationShimSmokeTests.cs +57 -0
- package/Tests/Runtime/Core/IntegrationShimSmokeTests.cs.meta +11 -0
- package/Tests/Runtime/Core/MessageHandlerGlobalBusTests.cs +219 -0
- package/Tests/Runtime/Core/MessageHandlerGlobalBusTests.cs.meta +11 -0
- package/Tests/Runtime/Core/MessageRegistrationBuilderTests.cs +204 -0
- package/Tests/Runtime/Core/MessageRegistrationBuilderTests.cs.meta +11 -0
- package/Tests/Runtime/Core/MessagingTestBase.cs +4 -4
- package/Tests/Runtime/Core/NominalTests.cs +2 -2
- package/Tests/Runtime/Core/SourceGeneratorNestedTests.cs +1 -1
- package/Tests/Runtime/Core/TypedShorthandTests.cs +2 -2
- package/Tests/Runtime/Core/UntargetedEquivalenceTests.cs +1 -1
- package/Tests/Runtime/Core/UntargetedPrefreezeTests.cs +2 -4
- package/Tests/Runtime/Integrations/Reflex/ReflexIntegrationTests.cs +162 -0
- package/Tests/Runtime/Integrations/Reflex/ReflexIntegrationTests.cs.meta +11 -0
- package/Tests/Runtime/Integrations/Reflex/Resources/ReflexSettings.asset +16 -0
- package/Tests/Runtime/Integrations/Reflex/Resources/ReflexSettings.asset.meta +8 -0
- package/Tests/Runtime/Integrations/Reflex/Resources.meta +8 -0
- package/Tests/Runtime/Integrations/Reflex/WallstopStudios.DxMessaging.Tests.Runtime.Reflex.asmdef +27 -0
- package/Tests/Runtime/Integrations/Reflex/WallstopStudios.DxMessaging.Tests.Runtime.Reflex.asmdef.meta +7 -0
- package/Tests/Runtime/Integrations/Reflex.meta +8 -0
- package/Tests/Runtime/Integrations/VContainer/VContainerIntegrationTests.cs +140 -0
- package/Tests/Runtime/Integrations/VContainer/VContainerIntegrationTests.cs.meta +11 -0
- package/Tests/Runtime/Integrations/VContainer/WallstopStudios.DxMessaging.Tests.Runtime.VContainer.asmdef +37 -0
- package/Tests/Runtime/Integrations/VContainer/WallstopStudios.DxMessaging.Tests.Runtime.VContainer.asmdef.meta +7 -0
- package/Tests/Runtime/Integrations/VContainer.meta +8 -0
- package/Tests/Runtime/Integrations/Zenject/WallstopStudios.DxMessaging.Tests.Runtime.Zenject.asmdef +37 -0
- package/Tests/Runtime/Integrations/Zenject/WallstopStudios.DxMessaging.Tests.Runtime.Zenject.asmdef.meta +7 -0
- package/Tests/Runtime/Integrations/Zenject/ZenjectIntegrationTests.cs +140 -0
- package/Tests/Runtime/Integrations/Zenject/ZenjectIntegrationTests.cs.meta +11 -0
- package/Tests/Runtime/Integrations/Zenject.meta +8 -0
- package/Tests/Runtime/Integrations.meta +8 -0
- package/Tests/Runtime/Scripts/Components/EmptyMessageAwareComponent.cs +1 -1
- package/Tests/Runtime/Scripts/Components/GenericMessageAwareComponent.cs +1 -1
- package/Tests/Runtime/Scripts/Components/SimpleMessageAwareComponent.cs +1 -1
- package/Tests/Runtime/TestUtilities/UnityFixtureBase.cs +64 -0
- package/Tests/Runtime/TestUtilities/UnityFixtureBase.cs.meta +12 -0
- package/Tests/Runtime/TestUtilities.meta +9 -0
- package/Tests/Runtime/Unity/MessageBusProviderAssetTests.cs +57 -0
- package/Tests/Runtime/Unity/MessageBusProviderAssetTests.cs.meta +11 -0
- package/Tests/Runtime/Unity/MessageBusProviderHandleTests.cs +107 -0
- package/Tests/Runtime/Unity/MessageBusProviderHandleTests.cs.meta +12 -0
- package/Tests/Runtime/Unity/MessagingComponentProviderIntegrationTests.cs +210 -0
- package/Tests/Runtime/Unity/MessagingComponentProviderIntegrationTests.cs.meta +12 -0
- package/Tests/Runtime/Unity.meta +9 -0
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.asmdef +3 -1
- package/package.json +1 -1
|
@@ -47,19 +47,20 @@ namespace DxMessaging.Core.Extensions
|
|
|
47
47
|
public static void EmitGameObjectTargeted<TMessage>(
|
|
48
48
|
this TMessage message,
|
|
49
49
|
UnityEngine.GameObject target,
|
|
50
|
-
IMessageBus messageBus = null
|
|
50
|
+
IMessageBus messageBus = null,
|
|
51
|
+
IMessageBusProvider messageBusProvider = null
|
|
51
52
|
)
|
|
52
53
|
where TMessage : class, ITargetedMessage
|
|
53
54
|
{
|
|
54
55
|
InstanceId targetId = target;
|
|
55
|
-
messageBus
|
|
56
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
56
57
|
if (typeof(TMessage) == typeof(ITargetedMessage))
|
|
57
58
|
{
|
|
58
|
-
|
|
59
|
+
resolvedBus.UntypedTargetedBroadcast(targetId, message);
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
resolvedBus.TargetedBroadcast(ref targetId, ref message);
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
/// <summary>
|
|
@@ -71,19 +72,20 @@ namespace DxMessaging.Core.Extensions
|
|
|
71
72
|
public static void EmitGameObjectTargeted<TMessage>(
|
|
72
73
|
this ref TMessage message,
|
|
73
74
|
UnityEngine.GameObject target,
|
|
74
|
-
IMessageBus messageBus = null
|
|
75
|
+
IMessageBus messageBus = null,
|
|
76
|
+
IMessageBusProvider messageBusProvider = null
|
|
75
77
|
)
|
|
76
78
|
where TMessage : struct, ITargetedMessage
|
|
77
79
|
{
|
|
78
80
|
InstanceId targetId = target;
|
|
79
|
-
messageBus
|
|
81
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
80
82
|
if (typeof(TMessage) == typeof(ITargetedMessage))
|
|
81
83
|
{
|
|
82
|
-
|
|
84
|
+
resolvedBus.UntypedTargetedBroadcast(targetId, message);
|
|
83
85
|
return;
|
|
84
86
|
}
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
resolvedBus.TargetedBroadcast(ref targetId, ref message);
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
/// <summary>
|
|
@@ -95,19 +97,20 @@ namespace DxMessaging.Core.Extensions
|
|
|
95
97
|
public static void EmitComponentTargeted<TMessage>(
|
|
96
98
|
this TMessage message,
|
|
97
99
|
UnityEngine.Component target,
|
|
98
|
-
IMessageBus messageBus = null
|
|
100
|
+
IMessageBus messageBus = null,
|
|
101
|
+
IMessageBusProvider messageBusProvider = null
|
|
99
102
|
)
|
|
100
103
|
where TMessage : class, ITargetedMessage
|
|
101
104
|
{
|
|
102
105
|
InstanceId targetId = target;
|
|
103
|
-
messageBus
|
|
106
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
104
107
|
if (typeof(TMessage) == typeof(ITargetedMessage))
|
|
105
108
|
{
|
|
106
|
-
|
|
109
|
+
resolvedBus.UntypedTargetedBroadcast(targetId, message);
|
|
107
110
|
return;
|
|
108
111
|
}
|
|
109
112
|
|
|
110
|
-
|
|
113
|
+
resolvedBus.TargetedBroadcast(ref targetId, ref message);
|
|
111
114
|
}
|
|
112
115
|
|
|
113
116
|
/// <summary>
|
|
@@ -119,19 +122,20 @@ namespace DxMessaging.Core.Extensions
|
|
|
119
122
|
public static void EmitComponentTargeted<TMessage>(
|
|
120
123
|
this ref TMessage message,
|
|
121
124
|
UnityEngine.Component target,
|
|
122
|
-
IMessageBus messageBus = null
|
|
125
|
+
IMessageBus messageBus = null,
|
|
126
|
+
IMessageBusProvider messageBusProvider = null
|
|
123
127
|
)
|
|
124
128
|
where TMessage : struct, ITargetedMessage
|
|
125
129
|
{
|
|
126
130
|
InstanceId targetId = target;
|
|
127
|
-
messageBus
|
|
131
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
128
132
|
if (typeof(TMessage) == typeof(ITargetedMessage))
|
|
129
133
|
{
|
|
130
|
-
|
|
134
|
+
resolvedBus.UntypedTargetedBroadcast(targetId, message);
|
|
131
135
|
return;
|
|
132
136
|
}
|
|
133
137
|
|
|
134
|
-
|
|
138
|
+
resolvedBus.TargetedBroadcast(ref targetId, ref message);
|
|
135
139
|
}
|
|
136
140
|
#endif
|
|
137
141
|
|
|
@@ -144,18 +148,19 @@ namespace DxMessaging.Core.Extensions
|
|
|
144
148
|
public static void EmitTargeted<TMessage>(
|
|
145
149
|
this TMessage message,
|
|
146
150
|
InstanceId target,
|
|
147
|
-
IMessageBus messageBus = null
|
|
151
|
+
IMessageBus messageBus = null,
|
|
152
|
+
IMessageBusProvider messageBusProvider = null
|
|
148
153
|
)
|
|
149
154
|
where TMessage : class, ITargetedMessage
|
|
150
155
|
{
|
|
151
|
-
messageBus
|
|
156
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
152
157
|
if (typeof(TMessage) == typeof(ITargetedMessage))
|
|
153
158
|
{
|
|
154
|
-
|
|
159
|
+
resolvedBus.UntypedTargetedBroadcast(target, message);
|
|
155
160
|
return;
|
|
156
161
|
}
|
|
157
162
|
|
|
158
|
-
|
|
163
|
+
resolvedBus.TargetedBroadcast(ref target, ref message);
|
|
159
164
|
}
|
|
160
165
|
|
|
161
166
|
/// <summary>
|
|
@@ -167,18 +172,19 @@ namespace DxMessaging.Core.Extensions
|
|
|
167
172
|
public static void EmitTargeted<TMessage>(
|
|
168
173
|
this ref TMessage message,
|
|
169
174
|
InstanceId target,
|
|
170
|
-
IMessageBus messageBus = null
|
|
175
|
+
IMessageBus messageBus = null,
|
|
176
|
+
IMessageBusProvider messageBusProvider = null
|
|
171
177
|
)
|
|
172
178
|
where TMessage : struct, ITargetedMessage
|
|
173
179
|
{
|
|
174
|
-
messageBus
|
|
180
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
175
181
|
if (typeof(TMessage) == typeof(ITargetedMessage))
|
|
176
182
|
{
|
|
177
|
-
|
|
183
|
+
resolvedBus.UntypedTargetedBroadcast(target, message);
|
|
178
184
|
return;
|
|
179
185
|
}
|
|
180
186
|
|
|
181
|
-
|
|
187
|
+
resolvedBus.TargetedBroadcast(ref target, ref message);
|
|
182
188
|
}
|
|
183
189
|
|
|
184
190
|
/// <summary>
|
|
@@ -188,18 +194,19 @@ namespace DxMessaging.Core.Extensions
|
|
|
188
194
|
/// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
|
|
189
195
|
public static void EmitUntargeted<TMessage>(
|
|
190
196
|
this TMessage message,
|
|
191
|
-
IMessageBus messageBus = null
|
|
197
|
+
IMessageBus messageBus = null,
|
|
198
|
+
IMessageBusProvider messageBusProvider = null
|
|
192
199
|
)
|
|
193
200
|
where TMessage : class, IUntargetedMessage
|
|
194
201
|
{
|
|
195
|
-
messageBus
|
|
202
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
196
203
|
if (typeof(TMessage) == typeof(IUntargetedMessage))
|
|
197
204
|
{
|
|
198
|
-
|
|
205
|
+
resolvedBus.UntypedUntargetedBroadcast(message);
|
|
199
206
|
return;
|
|
200
207
|
}
|
|
201
208
|
|
|
202
|
-
|
|
209
|
+
resolvedBus.UntargetedBroadcast(ref message);
|
|
203
210
|
}
|
|
204
211
|
|
|
205
212
|
/// <summary>
|
|
@@ -222,17 +229,21 @@ namespace DxMessaging.Core.Extensions
|
|
|
222
229
|
/// </example>
|
|
223
230
|
/// <param name="message">Untargeted message to emit.</param>
|
|
224
231
|
/// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
|
|
225
|
-
public static void Emit<TMessage>(
|
|
232
|
+
public static void Emit<TMessage>(
|
|
233
|
+
this TMessage message,
|
|
234
|
+
IMessageBus messageBus = null,
|
|
235
|
+
IMessageBusProvider messageBusProvider = null
|
|
236
|
+
)
|
|
226
237
|
where TMessage : class, IUntargetedMessage
|
|
227
238
|
{
|
|
228
|
-
messageBus
|
|
239
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
229
240
|
if (typeof(TMessage) == typeof(IUntargetedMessage))
|
|
230
241
|
{
|
|
231
|
-
|
|
242
|
+
resolvedBus.UntypedUntargetedBroadcast(message);
|
|
232
243
|
return;
|
|
233
244
|
}
|
|
234
245
|
|
|
235
|
-
|
|
246
|
+
resolvedBus.UntargetedBroadcast(ref message);
|
|
236
247
|
}
|
|
237
248
|
|
|
238
249
|
/// <summary>
|
|
@@ -242,18 +253,19 @@ namespace DxMessaging.Core.Extensions
|
|
|
242
253
|
/// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
|
|
243
254
|
public static void EmitUntargeted<TMessage>(
|
|
244
255
|
this ref TMessage message,
|
|
245
|
-
IMessageBus messageBus = null
|
|
256
|
+
IMessageBus messageBus = null,
|
|
257
|
+
IMessageBusProvider messageBusProvider = null
|
|
246
258
|
)
|
|
247
259
|
where TMessage : struct, IUntargetedMessage
|
|
248
260
|
{
|
|
249
|
-
messageBus
|
|
261
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
250
262
|
if (typeof(TMessage) == typeof(IUntargetedMessage))
|
|
251
263
|
{
|
|
252
|
-
|
|
264
|
+
resolvedBus.UntypedUntargetedBroadcast(message);
|
|
253
265
|
return;
|
|
254
266
|
}
|
|
255
267
|
|
|
256
|
-
|
|
268
|
+
resolvedBus.UntargetedBroadcast(ref message);
|
|
257
269
|
}
|
|
258
270
|
|
|
259
271
|
/// <summary>
|
|
@@ -276,17 +288,21 @@ namespace DxMessaging.Core.Extensions
|
|
|
276
288
|
/// </example>
|
|
277
289
|
/// <param name="message">Untargeted message to emit.</param>
|
|
278
290
|
/// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
|
|
279
|
-
public static void Emit<TMessage>(
|
|
291
|
+
public static void Emit<TMessage>(
|
|
292
|
+
this ref TMessage message,
|
|
293
|
+
IMessageBus messageBus = null,
|
|
294
|
+
IMessageBusProvider messageBusProvider = null
|
|
295
|
+
)
|
|
280
296
|
where TMessage : struct, IUntargetedMessage
|
|
281
297
|
{
|
|
282
|
-
messageBus
|
|
298
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
283
299
|
if (typeof(TMessage) == typeof(IUntargetedMessage))
|
|
284
300
|
{
|
|
285
|
-
|
|
301
|
+
resolvedBus.UntypedUntargetedBroadcast(message);
|
|
286
302
|
return;
|
|
287
303
|
}
|
|
288
304
|
|
|
289
|
-
|
|
305
|
+
resolvedBus.UntargetedBroadcast(ref message);
|
|
290
306
|
}
|
|
291
307
|
|
|
292
308
|
/// <summary>
|
|
@@ -319,18 +335,19 @@ namespace DxMessaging.Core.Extensions
|
|
|
319
335
|
public static void EmitAt<TMessage>(
|
|
320
336
|
this ref TMessage message,
|
|
321
337
|
InstanceId target,
|
|
322
|
-
IMessageBus messageBus = null
|
|
338
|
+
IMessageBus messageBus = null,
|
|
339
|
+
IMessageBusProvider messageBusProvider = null
|
|
323
340
|
)
|
|
324
341
|
where TMessage : struct, ITargetedMessage
|
|
325
342
|
{
|
|
326
|
-
messageBus
|
|
343
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
327
344
|
if (typeof(TMessage) == typeof(ITargetedMessage))
|
|
328
345
|
{
|
|
329
|
-
|
|
346
|
+
resolvedBus.UntypedTargetedBroadcast(target, message);
|
|
330
347
|
return;
|
|
331
348
|
}
|
|
332
349
|
|
|
333
|
-
|
|
350
|
+
resolvedBus.TargetedBroadcast(ref target, ref message);
|
|
334
351
|
}
|
|
335
352
|
|
|
336
353
|
/// <summary>
|
|
@@ -363,18 +380,19 @@ namespace DxMessaging.Core.Extensions
|
|
|
363
380
|
public static void EmitFrom<TMessage>(
|
|
364
381
|
this ref TMessage message,
|
|
365
382
|
InstanceId source,
|
|
366
|
-
IMessageBus messageBus = null
|
|
383
|
+
IMessageBus messageBus = null,
|
|
384
|
+
IMessageBusProvider messageBusProvider = null
|
|
367
385
|
)
|
|
368
386
|
where TMessage : struct, IBroadcastMessage
|
|
369
387
|
{
|
|
370
|
-
messageBus
|
|
388
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
371
389
|
if (typeof(TMessage) == typeof(ITargetedMessage))
|
|
372
390
|
{
|
|
373
|
-
|
|
391
|
+
resolvedBus.UntypedSourcedBroadcast(source, message);
|
|
374
392
|
return;
|
|
375
393
|
}
|
|
376
394
|
|
|
377
|
-
|
|
395
|
+
resolvedBus.SourcedBroadcast(ref source, ref message);
|
|
378
396
|
}
|
|
379
397
|
|
|
380
398
|
#if UNITY_2017_1_OR_NEWER
|
|
@@ -387,19 +405,20 @@ namespace DxMessaging.Core.Extensions
|
|
|
387
405
|
public static void EmitGameObjectBroadcast<TMessage>(
|
|
388
406
|
this TMessage message,
|
|
389
407
|
UnityEngine.GameObject source,
|
|
390
|
-
IMessageBus messageBus = null
|
|
408
|
+
IMessageBus messageBus = null,
|
|
409
|
+
IMessageBusProvider messageBusProvider = null
|
|
391
410
|
)
|
|
392
411
|
where TMessage : class, IBroadcastMessage
|
|
393
412
|
{
|
|
394
413
|
InstanceId sourceId = source;
|
|
395
|
-
messageBus
|
|
414
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
396
415
|
if (typeof(TMessage) == typeof(IBroadcastMessage))
|
|
397
416
|
{
|
|
398
|
-
|
|
417
|
+
resolvedBus.UntypedSourcedBroadcast(sourceId, message);
|
|
399
418
|
return;
|
|
400
419
|
}
|
|
401
420
|
|
|
402
|
-
|
|
421
|
+
resolvedBus.SourcedBroadcast(ref sourceId, ref message);
|
|
403
422
|
}
|
|
404
423
|
|
|
405
424
|
/// <summary>
|
|
@@ -411,19 +430,20 @@ namespace DxMessaging.Core.Extensions
|
|
|
411
430
|
public static void EmitGameObjectBroadcast<TMessage>(
|
|
412
431
|
this ref TMessage message,
|
|
413
432
|
UnityEngine.GameObject source,
|
|
414
|
-
IMessageBus messageBus = null
|
|
433
|
+
IMessageBus messageBus = null,
|
|
434
|
+
IMessageBusProvider messageBusProvider = null
|
|
415
435
|
)
|
|
416
436
|
where TMessage : struct, IBroadcastMessage
|
|
417
437
|
{
|
|
418
438
|
InstanceId sourceId = source;
|
|
419
|
-
messageBus
|
|
439
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
420
440
|
if (typeof(TMessage) == typeof(IBroadcastMessage))
|
|
421
441
|
{
|
|
422
|
-
|
|
442
|
+
resolvedBus.UntypedSourcedBroadcast(sourceId, message);
|
|
423
443
|
return;
|
|
424
444
|
}
|
|
425
445
|
|
|
426
|
-
|
|
446
|
+
resolvedBus.SourcedBroadcast(ref sourceId, ref message);
|
|
427
447
|
}
|
|
428
448
|
|
|
429
449
|
/// <summary>
|
|
@@ -435,19 +455,20 @@ namespace DxMessaging.Core.Extensions
|
|
|
435
455
|
public static void EmitComponentBroadcast<TMessage>(
|
|
436
456
|
this TMessage message,
|
|
437
457
|
UnityEngine.Component source,
|
|
438
|
-
IMessageBus messageBus = null
|
|
458
|
+
IMessageBus messageBus = null,
|
|
459
|
+
IMessageBusProvider messageBusProvider = null
|
|
439
460
|
)
|
|
440
461
|
where TMessage : class, IBroadcastMessage
|
|
441
462
|
{
|
|
442
463
|
InstanceId sourceId = source;
|
|
443
|
-
messageBus
|
|
464
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
444
465
|
if (typeof(TMessage) == typeof(IBroadcastMessage))
|
|
445
466
|
{
|
|
446
|
-
|
|
467
|
+
resolvedBus.UntypedSourcedBroadcast(sourceId, message);
|
|
447
468
|
return;
|
|
448
469
|
}
|
|
449
470
|
|
|
450
|
-
|
|
471
|
+
resolvedBus.SourcedBroadcast(ref sourceId, ref message);
|
|
451
472
|
}
|
|
452
473
|
|
|
453
474
|
/// <summary>
|
|
@@ -459,19 +480,20 @@ namespace DxMessaging.Core.Extensions
|
|
|
459
480
|
public static void EmitComponentBroadcast<TMessage>(
|
|
460
481
|
this ref TMessage message,
|
|
461
482
|
UnityEngine.Component source,
|
|
462
|
-
IMessageBus messageBus = null
|
|
483
|
+
IMessageBus messageBus = null,
|
|
484
|
+
IMessageBusProvider messageBusProvider = null
|
|
463
485
|
)
|
|
464
486
|
where TMessage : struct, IBroadcastMessage
|
|
465
487
|
{
|
|
466
488
|
InstanceId sourceId = source;
|
|
467
|
-
messageBus
|
|
489
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
468
490
|
if (typeof(TMessage) == typeof(IBroadcastMessage))
|
|
469
491
|
{
|
|
470
|
-
|
|
492
|
+
resolvedBus.UntypedSourcedBroadcast(sourceId, message);
|
|
471
493
|
return;
|
|
472
494
|
}
|
|
473
495
|
|
|
474
|
-
|
|
496
|
+
resolvedBus.SourcedBroadcast(ref sourceId, ref message);
|
|
475
497
|
}
|
|
476
498
|
#endif
|
|
477
499
|
|
|
@@ -484,18 +506,19 @@ namespace DxMessaging.Core.Extensions
|
|
|
484
506
|
public static void EmitBroadcast<TMessage>(
|
|
485
507
|
this TMessage message,
|
|
486
508
|
InstanceId source,
|
|
487
|
-
IMessageBus messageBus = null
|
|
509
|
+
IMessageBus messageBus = null,
|
|
510
|
+
IMessageBusProvider messageBusProvider = null
|
|
488
511
|
)
|
|
489
512
|
where TMessage : class, IBroadcastMessage
|
|
490
513
|
{
|
|
491
|
-
messageBus
|
|
514
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
492
515
|
if (typeof(TMessage) == typeof(IBroadcastMessage))
|
|
493
516
|
{
|
|
494
|
-
|
|
517
|
+
resolvedBus.UntypedSourcedBroadcast(source, message);
|
|
495
518
|
return;
|
|
496
519
|
}
|
|
497
520
|
|
|
498
|
-
|
|
521
|
+
resolvedBus.SourcedBroadcast(ref source, ref message);
|
|
499
522
|
}
|
|
500
523
|
|
|
501
524
|
/// <summary>
|
|
@@ -507,18 +530,19 @@ namespace DxMessaging.Core.Extensions
|
|
|
507
530
|
public static void EmitBroadcast<TMessage>(
|
|
508
531
|
this ref TMessage message,
|
|
509
532
|
InstanceId source,
|
|
510
|
-
IMessageBus messageBus = null
|
|
533
|
+
IMessageBus messageBus = null,
|
|
534
|
+
IMessageBusProvider messageBusProvider = null
|
|
511
535
|
)
|
|
512
536
|
where TMessage : struct, IBroadcastMessage
|
|
513
537
|
{
|
|
514
|
-
messageBus
|
|
538
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
515
539
|
if (typeof(TMessage) == typeof(IBroadcastMessage))
|
|
516
540
|
{
|
|
517
|
-
|
|
541
|
+
resolvedBus.UntypedSourcedBroadcast(source, message);
|
|
518
542
|
return;
|
|
519
543
|
}
|
|
520
544
|
|
|
521
|
-
|
|
545
|
+
resolvedBus.SourcedBroadcast(ref source, ref message);
|
|
522
546
|
}
|
|
523
547
|
|
|
524
548
|
/// <summary>
|
|
@@ -535,14 +559,13 @@ namespace DxMessaging.Core.Extensions
|
|
|
535
559
|
public static void Emit(
|
|
536
560
|
this string message,
|
|
537
561
|
InstanceId target,
|
|
538
|
-
IMessageBus messageBus = null
|
|
562
|
+
IMessageBus messageBus = null,
|
|
563
|
+
IMessageBusProvider messageBusProvider = null
|
|
539
564
|
)
|
|
540
565
|
{
|
|
541
566
|
StringMessage stringMessage = new(message);
|
|
542
|
-
(messageBus
|
|
543
|
-
|
|
544
|
-
ref stringMessage
|
|
545
|
-
);
|
|
567
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
568
|
+
resolvedBus.TargetedBroadcast(ref target, ref stringMessage);
|
|
546
569
|
}
|
|
547
570
|
|
|
548
571
|
/// <summary>
|
|
@@ -560,14 +583,13 @@ namespace DxMessaging.Core.Extensions
|
|
|
560
583
|
public static void EmitAt(
|
|
561
584
|
this string message,
|
|
562
585
|
InstanceId target,
|
|
563
|
-
IMessageBus messageBus = null
|
|
586
|
+
IMessageBus messageBus = null,
|
|
587
|
+
IMessageBusProvider messageBusProvider = null
|
|
564
588
|
)
|
|
565
589
|
{
|
|
566
590
|
StringMessage stringMessage = new(message);
|
|
567
|
-
(messageBus
|
|
568
|
-
|
|
569
|
-
ref stringMessage
|
|
570
|
-
);
|
|
591
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
592
|
+
resolvedBus.TargetedBroadcast(ref target, ref stringMessage);
|
|
571
593
|
}
|
|
572
594
|
|
|
573
595
|
/// <summary>
|
|
@@ -579,10 +601,15 @@ namespace DxMessaging.Core.Extensions
|
|
|
579
601
|
/// </remarks>
|
|
580
602
|
/// <param name="message">Message to send globally.</param>
|
|
581
603
|
/// <param name="messageBus">MessageBus to emit to. If null, uses the GlobalMessageBus.</param>
|
|
582
|
-
public static void Emit(
|
|
604
|
+
public static void Emit(
|
|
605
|
+
this string message,
|
|
606
|
+
IMessageBus messageBus = null,
|
|
607
|
+
IMessageBusProvider messageBusProvider = null
|
|
608
|
+
)
|
|
583
609
|
{
|
|
584
610
|
GlobalStringMessage stringMessage = new(message);
|
|
585
|
-
|
|
611
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
612
|
+
resolvedBus.UntargetedBroadcast(ref stringMessage);
|
|
586
613
|
}
|
|
587
614
|
|
|
588
615
|
/// <summary>
|
|
@@ -602,14 +629,35 @@ namespace DxMessaging.Core.Extensions
|
|
|
602
629
|
public static void EmitFrom(
|
|
603
630
|
this string message,
|
|
604
631
|
InstanceId source,
|
|
605
|
-
IMessageBus messageBus = null
|
|
632
|
+
IMessageBus messageBus = null,
|
|
633
|
+
IMessageBusProvider messageBusProvider = null
|
|
606
634
|
)
|
|
607
635
|
{
|
|
608
636
|
SourcedStringMessage stringMessage = new(message);
|
|
609
|
-
(messageBus
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
637
|
+
IMessageBus resolvedBus = ResolveMessageBus(messageBus, messageBusProvider);
|
|
638
|
+
resolvedBus.SourcedBroadcast(ref source, ref stringMessage);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
private static IMessageBus ResolveMessageBus(
|
|
642
|
+
IMessageBus explicitBus,
|
|
643
|
+
IMessageBusProvider messageBusProvider
|
|
644
|
+
)
|
|
645
|
+
{
|
|
646
|
+
if (explicitBus != null)
|
|
647
|
+
{
|
|
648
|
+
return explicitBus;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
if (messageBusProvider != null)
|
|
652
|
+
{
|
|
653
|
+
IMessageBus providedBus = messageBusProvider.Resolve();
|
|
654
|
+
if (providedBus != null)
|
|
655
|
+
{
|
|
656
|
+
return providedBus;
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
return MessageHandler.MessageBus;
|
|
613
661
|
}
|
|
614
662
|
}
|
|
615
663
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
namespace DxMessaging.Core.MessageBus
|
|
2
|
+
{
|
|
3
|
+
using DxMessaging.Core;
|
|
4
|
+
|
|
5
|
+
/// <summary>
|
|
6
|
+
/// Default provider that returns the process-wide <see cref="MessageHandler.MessageBus"/>.
|
|
7
|
+
/// </summary>
|
|
8
|
+
public sealed class GlobalMessageBusProvider : IMessageBusProvider
|
|
9
|
+
{
|
|
10
|
+
/// <summary>
|
|
11
|
+
/// Shared instance to avoid repeated allocations when consumers need a provider.
|
|
12
|
+
/// </summary>
|
|
13
|
+
public static GlobalMessageBusProvider Instance { get; } = new();
|
|
14
|
+
|
|
15
|
+
private GlobalMessageBusProvider() { }
|
|
16
|
+
|
|
17
|
+
/// <inheritdoc />
|
|
18
|
+
public IMessageBus Resolve()
|
|
19
|
+
{
|
|
20
|
+
return MessageHandler.MessageBus;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
namespace DxMessaging.Core.MessageBus
|
|
2
|
+
{
|
|
3
|
+
/// <summary>
|
|
4
|
+
/// Provides an <see cref="IMessageBus"/> instance for DI-friendly scenarios.
|
|
5
|
+
/// </summary>
|
|
6
|
+
public interface IMessageBusProvider
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
/// Resolves the <see cref="IMessageBus"/> that should be used for the current context.
|
|
10
|
+
/// </summary>
|
|
11
|
+
/// <returns>The resolved message bus, or <see langword="null"/> to defer to fallbacks.</returns>
|
|
12
|
+
IMessageBus Resolve();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
namespace DxMessaging.Core.MessageBus
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
|
|
5
|
+
/// <summary>
|
|
6
|
+
/// Factory abstraction that creates <see cref="MessageRegistrationToken"/> lifetimes bound to a resolved message bus.
|
|
7
|
+
/// </summary>
|
|
8
|
+
public interface IMessageRegistrationBuilder
|
|
9
|
+
{
|
|
10
|
+
/// <summary>
|
|
11
|
+
/// Creates a <see cref="MessageRegistrationLease"/> according to the supplied <paramref name="options"/>.
|
|
12
|
+
/// </summary>
|
|
13
|
+
/// <param name="options">Build configuration describing ownership, message bus preference, and lifecycle hooks.</param>
|
|
14
|
+
/// <returns>Lease that exposes the constructed <see cref="MessageRegistrationToken"/>.</returns>
|
|
15
|
+
/// <exception cref="ArgumentNullException"><paramref name="options"/> is <see langword="null"/>.</exception>
|
|
16
|
+
MessageRegistrationLease Build(MessageRegistrationBuildOptions options);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
namespace DxMessaging.Core.MessageBus
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
|
|
5
|
+
/// <summary>
|
|
6
|
+
/// Defines how existing registrations should react when a token receives a new bus override.
|
|
7
|
+
/// </summary>
|
|
8
|
+
public enum MessageBusRebindMode
|
|
9
|
+
{
|
|
10
|
+
/// <summary>
|
|
11
|
+
/// Legacy default. Prefer specifying an explicit mode.
|
|
12
|
+
/// </summary>
|
|
13
|
+
[Obsolete("Specify PreserveRegistrations or RebindActive to clarify intent.")]
|
|
14
|
+
Unknown = 0,
|
|
15
|
+
|
|
16
|
+
/// <summary>
|
|
17
|
+
/// Update the override for future registrations but leave existing registrations on their current bus.
|
|
18
|
+
/// </summary>
|
|
19
|
+
PreserveRegistrations = 1,
|
|
20
|
+
|
|
21
|
+
/// <summary>
|
|
22
|
+
/// Rebind active registrations to the supplied bus immediately.
|
|
23
|
+
/// </summary>
|
|
24
|
+
RebindActive = 2,
|
|
25
|
+
}
|
|
26
|
+
}
|