com.wallstop-studios.dxmessaging 2.1.2 → 2.1.4
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/dotnet-tests.yml +3 -3
- package/.github/workflows/prettier-autofix.yml +0 -7
- package/.pre-commit-config.yaml +8 -5
- package/AGENTS.md +12 -12
- package/CONTRIBUTING.md +8 -2
- package/Docs/Comparisons.md +5 -5
- package/Docs/InterceptorsAndOrdering.md +1 -1
- package/Docs/Performance.md +13 -13
- package/Docs/QuickReference.md +1 -1
- package/Docs/Reference.md +5 -5
- package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
- package/Editor/CustomEditors/MessagingComponentEditor.cs +3 -0
- package/Editor/DxMessagingEditorInitializer.cs +58 -1
- package/Editor/DxMessagingMenu.cs +38 -0
- package/Editor/DxMessagingMenu.cs.meta +11 -0
- package/Editor/DxMessagingSceneBuildProcessor.cs +81 -0
- package/Editor/DxMessagingSceneBuildProcessor.cs.meta +11 -0
- package/Editor/Settings/DxMessagingSettings.cs +37 -6
- package/Editor/Settings/DxMessagingSettingsProvider.cs +45 -7
- package/README.md +1 -1
- package/Runtime/Core/Attributes/DxOptionalParameterAttribute.cs +52 -0
- package/Runtime/Core/DataStructure/CyclicBuffer.cs +16 -0
- package/Runtime/Core/Diagnostics/MessageEmissionData.cs +1 -1
- package/Runtime/Core/Diagnostics/MessageRegistrationType.cs +62 -0
- package/Runtime/Core/DxMessagingStaticState.cs +108 -0
- package/Runtime/Core/DxMessagingStaticState.cs.meta +11 -0
- package/Runtime/Core/Extensions/IListExtensions.cs +24 -0
- package/Runtime/Core/Extensions/MessageBusExtensions.cs +142 -0
- package/Runtime/Core/Helper/MessageCache.cs +16 -0
- package/Runtime/Core/Helper/MessageHelperIndexer.cs +77 -0
- package/Runtime/Core/InstanceId.cs +86 -0
- package/Runtime/Core/MessageBus/DiagnosticsTarget.cs +31 -0
- package/Runtime/Core/MessageBus/DiagnosticsTarget.cs.meta +11 -0
- package/Runtime/Core/MessageBus/IMessageBus.cs +44 -16
- package/Runtime/Core/MessageBus/MessageBus.cs +167 -180
- package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs +44 -0
- package/Runtime/Core/MessageBus/MessagingRegistration.cs +60 -2
- package/Runtime/Core/MessageBus/RegistrationLog.cs +10 -0
- package/Runtime/Core/MessageHandler.cs +107 -6
- package/Runtime/Core/MessageRegistrationHandle.cs +59 -0
- package/Runtime/Core/MessageRegistrationToken.cs +18 -2
- package/Runtime/Core/Messages/ReflexiveMessage.cs +38 -0
- package/Runtime/Core/MessagingDebug.cs +16 -1
- package/Runtime/Unity/CurrentGlobalMessageBusProvider.cs +4 -0
- package/Runtime/Unity/DxMessagingRuntimeInitializer.cs +19 -0
- package/Runtime/Unity/DxMessagingRuntimeInitializer.cs.meta +11 -0
- package/Runtime/Unity/InitialGlobalMessageBusProvider.cs +4 -0
- package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs +17 -0
- package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs +8 -0
- package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs +12 -0
- package/Runtime/Unity/MessagingComponent.cs +93 -0
- package/Samples~/DI/README.md +13 -13
- package/Samples~/Mini Combat/README.md +15 -15
- package/Samples~/Mini Combat/Walkthrough.md +12 -12
- package/Samples~/UI Buttons + Inspector/README.md +4 -4
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoConstructorGenerator.cs +4 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxMessageIdGenerator.cs +4 -0
- package/Tests/Runtime/Core/DiagnosticsTests.cs +3 -3
- package/Tests/Runtime/Core/DxMessagingStaticStateTests.cs +69 -0
- package/Tests/Runtime/Core/DxMessagingStaticStateTests.cs.meta +11 -0
- package/Tests/Runtime/Core/Extensions/MessageBusExtensionsTests.cs +12 -31
- package/Tests/Runtime/Core/OrderingManyRegistrationsTests.cs +683 -0
- package/Tests/Runtime/Core/OrderingManyRegistrationsTests.cs.meta +11 -0
- package/package.json +1 -1
- package/scripts/fix-eol.js +38 -3
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.csproj +0 -20
- package/Tests/Runtime/WallstopStudios.DxMessaging.Tests.Runtime.csproj.meta +0 -7
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#if UNITY_2021_3_OR_NEWER
|
|
2
|
+
namespace DxMessaging.Tests.Runtime.Core
|
|
3
|
+
{
|
|
4
|
+
using System;
|
|
5
|
+
using System.Reflection;
|
|
6
|
+
using DxMessaging.Core;
|
|
7
|
+
using DxMessaging.Core.Helper;
|
|
8
|
+
using DxMessaging.Core.MessageBus;
|
|
9
|
+
using DxMessaging.Core.Messages;
|
|
10
|
+
using NUnit.Framework;
|
|
11
|
+
|
|
12
|
+
public sealed class DxMessagingStaticStateTests
|
|
13
|
+
{
|
|
14
|
+
[Test]
|
|
15
|
+
public void ResetRestoresDefaultStaticState()
|
|
16
|
+
{
|
|
17
|
+
DxMessagingStaticState.Reset();
|
|
18
|
+
IMessageBus baselineBus = MessageHandler.MessageBus;
|
|
19
|
+
MessageRegistrationHandle baselineHandle =
|
|
20
|
+
MessageRegistrationHandle.CreateMessageRegistrationHandle();
|
|
21
|
+
|
|
22
|
+
MessageRegistrationHandle.CreateMessageRegistrationHandle();
|
|
23
|
+
MessagingDebug.enabled = true;
|
|
24
|
+
MessagingDebug.LogFunction = (logLevel, message) => { };
|
|
25
|
+
|
|
26
|
+
IMessageBus.GlobalDiagnosticsTargets = DiagnosticsTarget.All;
|
|
27
|
+
IMessageBus.GlobalMessageBufferSize = 128;
|
|
28
|
+
IMessageBus.GlobalSequentialIndex = 7;
|
|
29
|
+
|
|
30
|
+
Type builderType = typeof(MessageRegistrationBuilder);
|
|
31
|
+
FieldInfo syntheticOwnerField = builderType.GetField(
|
|
32
|
+
"_syntheticOwnerCounter",
|
|
33
|
+
BindingFlags.NonPublic | BindingFlags.Static
|
|
34
|
+
);
|
|
35
|
+
Assert.IsNotNull(syntheticOwnerField);
|
|
36
|
+
syntheticOwnerField.SetValue(null, 3);
|
|
37
|
+
|
|
38
|
+
MessageCache<object> cache = new MessageCache<object>();
|
|
39
|
+
cache.GetOrAdd<DummyUntargetedMessage>();
|
|
40
|
+
|
|
41
|
+
MessageHandler.SetGlobalMessageBus(new MessageBus());
|
|
42
|
+
|
|
43
|
+
DxMessagingStaticState.Reset();
|
|
44
|
+
|
|
45
|
+
Assert.IsFalse(MessagingDebug.enabled);
|
|
46
|
+
Assert.IsNull(MessagingDebug.LogFunction);
|
|
47
|
+
Assert.AreEqual(DiagnosticsTarget.Off, IMessageBus.GlobalDiagnosticsTargets);
|
|
48
|
+
Assert.AreEqual(0, IMessageBus.GlobalMessageBufferSize);
|
|
49
|
+
Assert.AreEqual(-1, IMessageBus.GlobalSequentialIndex);
|
|
50
|
+
|
|
51
|
+
MessageRegistrationHandle resetHandle =
|
|
52
|
+
MessageRegistrationHandle.CreateMessageRegistrationHandle();
|
|
53
|
+
Assert.AreEqual(baselineHandle, resetHandle);
|
|
54
|
+
|
|
55
|
+
object syntheticOwnerValue = syntheticOwnerField.GetValue(null);
|
|
56
|
+
Assert.AreEqual(0, (int)syntheticOwnerValue);
|
|
57
|
+
|
|
58
|
+
Assert.AreEqual(0, MessageHelperIndexer.TotalMessages);
|
|
59
|
+
Assert.AreEqual(-1, MessageHelperIndexer<DummyUntargetedMessage>.SequentialId);
|
|
60
|
+
Assert.AreSame(MessageHandler.InitialGlobalMessageBus, MessageHandler.MessageBus);
|
|
61
|
+
Assert.AreSame(baselineBus, MessageHandler.MessageBus);
|
|
62
|
+
|
|
63
|
+
DxMessagingStaticState.Reset();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private struct DummyUntargetedMessage : IUntargetedMessage { }
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
#endif
|
|
@@ -33,9 +33,7 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
33
33
|
MessageHandler handler = new MessageHandler(new InstanceId(10), bus) { active = true };
|
|
34
34
|
MessageRegistrationToken token = MessageRegistrationToken.Create(handler, bus);
|
|
35
35
|
int count = 0;
|
|
36
|
-
_ = token.RegisterUntargeted
|
|
37
|
-
(ref ClassUntargetedMessage _) => count++
|
|
38
|
-
);
|
|
36
|
+
_ = token.RegisterUntargeted((ref ClassUntargetedMessage _) => count++);
|
|
39
37
|
token.Enable();
|
|
40
38
|
|
|
41
39
|
ClassUntargetedMessage message = new ClassUntargetedMessage();
|
|
@@ -52,9 +50,7 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
52
50
|
MessageHandler handler = new MessageHandler(new InstanceId(20), bus) { active = true };
|
|
53
51
|
MessageRegistrationToken token = MessageRegistrationToken.Create(handler, bus);
|
|
54
52
|
int count = 0;
|
|
55
|
-
_ = token.RegisterUntargeted
|
|
56
|
-
(ref StructUntargetedMessage _) => count++
|
|
57
|
-
);
|
|
53
|
+
_ = token.RegisterUntargeted((ref StructUntargetedMessage _) => count++);
|
|
58
54
|
token.Enable();
|
|
59
55
|
|
|
60
56
|
StructUntargetedMessage message = new StructUntargetedMessage(1);
|
|
@@ -73,7 +69,7 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
73
69
|
StructInterceptedMessage intercepted = default;
|
|
74
70
|
int postProcessCount = 0;
|
|
75
71
|
|
|
76
|
-
_ = bus.RegisterUntargetedInterceptor
|
|
72
|
+
_ = bus.RegisterUntargetedInterceptor(
|
|
77
73
|
(ref StructInterceptedMessage msg) =>
|
|
78
74
|
{
|
|
79
75
|
msg.Value += 10;
|
|
@@ -81,11 +77,9 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
81
77
|
}
|
|
82
78
|
);
|
|
83
79
|
|
|
84
|
-
_ = token.RegisterUntargeted
|
|
85
|
-
(ref StructInterceptedMessage msg) => intercepted = msg
|
|
86
|
-
);
|
|
80
|
+
_ = token.RegisterUntargeted((ref StructInterceptedMessage msg) => intercepted = msg);
|
|
87
81
|
|
|
88
|
-
_ = token.RegisterUntargetedPostProcessor
|
|
82
|
+
_ = token.RegisterUntargetedPostProcessor(
|
|
89
83
|
(ref StructInterceptedMessage _) => postProcessCount++
|
|
90
84
|
);
|
|
91
85
|
|
|
@@ -108,9 +102,7 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
108
102
|
MessageRegistrationToken token = MessageRegistrationToken.Create(handler, bus);
|
|
109
103
|
int busSum = 0;
|
|
110
104
|
|
|
111
|
-
_ = token.RegisterUntargeted
|
|
112
|
-
(ref StructUntargetedMessage msg) => busSum += msg.Value
|
|
113
|
-
);
|
|
105
|
+
_ = token.RegisterUntargeted((ref StructUntargetedMessage msg) => busSum += msg.Value);
|
|
114
106
|
|
|
115
107
|
token.Enable();
|
|
116
108
|
|
|
@@ -132,7 +124,7 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
132
124
|
MessageRegistrationToken token2 = MessageRegistrationToken.Create(handler2, bus);
|
|
133
125
|
int messageSum = 0;
|
|
134
126
|
|
|
135
|
-
_ = token2.RegisterUntargeted
|
|
127
|
+
_ = token2.RegisterUntargeted(
|
|
136
128
|
(ref StructUntargetedMessage msg) => messageSum += msg.Value
|
|
137
129
|
);
|
|
138
130
|
|
|
@@ -158,10 +150,7 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
158
150
|
MessageHandler handler = new MessageHandler(new InstanceId(30), bus) { active = true };
|
|
159
151
|
MessageRegistrationToken token = MessageRegistrationToken.Create(handler, bus);
|
|
160
152
|
int count = 0;
|
|
161
|
-
_ = token.RegisterTargeted
|
|
162
|
-
target,
|
|
163
|
-
(ref StructTargetedMessage _) => count++
|
|
164
|
-
);
|
|
153
|
+
_ = token.RegisterTargeted(target, (ref StructTargetedMessage _) => count++);
|
|
165
154
|
token.Enable();
|
|
166
155
|
|
|
167
156
|
StructTargetedMessage message = new StructTargetedMessage(5);
|
|
@@ -180,10 +169,7 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
180
169
|
MessageHandler handler = new MessageHandler(new InstanceId(40), bus) { active = true };
|
|
181
170
|
MessageRegistrationToken token = MessageRegistrationToken.Create(handler, bus);
|
|
182
171
|
int count = 0;
|
|
183
|
-
_ = token.RegisterBroadcast
|
|
184
|
-
source,
|
|
185
|
-
(ref StructBroadcastMessage _) => count++
|
|
186
|
-
);
|
|
172
|
+
_ = token.RegisterBroadcast(source, (ref StructBroadcastMessage _) => count++);
|
|
187
173
|
token.Enable();
|
|
188
174
|
|
|
189
175
|
StructBroadcastMessage message = new StructBroadcastMessage(7);
|
|
@@ -206,19 +192,14 @@ namespace DxMessaging.Tests.Runtime.Core.Extensions
|
|
|
206
192
|
string broadcast = null;
|
|
207
193
|
string untargeted = null;
|
|
208
194
|
|
|
209
|
-
_ = token.RegisterTargeted
|
|
210
|
-
target,
|
|
211
|
-
(ref StringMessage m) => targeted = m.message
|
|
212
|
-
);
|
|
195
|
+
_ = token.RegisterTargeted(target, (ref StringMessage m) => targeted = m.message);
|
|
213
196
|
|
|
214
|
-
_ = token.RegisterBroadcast
|
|
197
|
+
_ = token.RegisterBroadcast(
|
|
215
198
|
source,
|
|
216
199
|
(ref SourcedStringMessage m) => broadcast = m.message
|
|
217
200
|
);
|
|
218
201
|
|
|
219
|
-
_ = token.RegisterUntargeted
|
|
220
|
-
(ref GlobalStringMessage m) => untargeted = m.message
|
|
221
|
-
);
|
|
202
|
+
_ = token.RegisterUntargeted((ref GlobalStringMessage m) => untargeted = m.message);
|
|
222
203
|
|
|
223
204
|
token.Enable();
|
|
224
205
|
|