com.wallstop-studios.dxmessaging 2.2.0 → 3.0.1

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 (248) hide show
  1. package/CHANGELOG.md +106 -67
  2. package/CHANGELOG.md.meta +7 -7
  3. package/Editor/Analyzers/BaseCallIlInspector.cs +277 -0
  4. package/Editor/Analyzers/BaseCallIlInspector.cs.meta +11 -0
  5. package/Editor/Analyzers/BaseCallLogMessageParser.cs +295 -0
  6. package/Editor/Analyzers/BaseCallLogMessageParser.cs.meta +11 -0
  7. package/Editor/Analyzers/BaseCallReportAggregator.cs +308 -0
  8. package/Editor/Analyzers/BaseCallReportAggregator.cs.meta +11 -0
  9. package/Editor/Analyzers/BaseCallTypeScanner.cs +110 -0
  10. package/Editor/Analyzers/BaseCallTypeScanner.cs.meta +11 -0
  11. package/Editor/Analyzers/BaseCallTypeScannerCore.cs +562 -0
  12. package/Editor/Analyzers/BaseCallTypeScannerCore.cs.meta +11 -0
  13. package/Editor/Analyzers/DxMessagingConsoleHarvester.cs +1122 -0
  14. package/Editor/Analyzers/DxMessagingConsoleHarvester.cs.meta +11 -0
  15. package/Editor/Analyzers/Microsoft.CodeAnalysis.CSharp.dll.meta +44 -44
  16. package/Editor/Analyzers/Microsoft.CodeAnalysis.dll.meta +44 -44
  17. package/Editor/Analyzers/System.Collections.Immutable.dll.meta +44 -44
  18. package/Editor/Analyzers/System.Reflection.Metadata.dll.meta +44 -44
  19. package/Editor/Analyzers/System.Runtime.CompilerServices.Unsafe.dll.meta +44 -44
  20. package/Editor/Analyzers/WallstopStudios.DxMessaging.Analyzer.dll +0 -0
  21. package/Editor/Analyzers/WallstopStudios.DxMessaging.Analyzer.dll.meta +33 -0
  22. package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
  23. package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll.meta +72 -72
  24. package/Editor/Analyzers.meta +8 -8
  25. package/Editor/AssemblyInfo.cs.meta +3 -3
  26. package/Editor/CustomEditors/MessageAwareComponentFallbackEditor.cs +81 -0
  27. package/Editor/CustomEditors/MessageAwareComponentFallbackEditor.cs.meta +11 -0
  28. package/Editor/CustomEditors/MessageAwareComponentInspectorOverlay.cs +420 -0
  29. package/Editor/CustomEditors/MessageAwareComponentInspectorOverlay.cs.meta +11 -0
  30. package/Editor/CustomEditors/MessagingComponentEditor.cs +1 -1
  31. package/Editor/CustomEditors/MessagingComponentEditor.cs.meta +2 -2
  32. package/Editor/CustomEditors.meta +2 -2
  33. package/Editor/DxMessagingEditorInitializer.cs.meta +2 -2
  34. package/Editor/DxMessagingMenu.cs.meta +11 -11
  35. package/Editor/DxMessagingSceneBuildProcessor.cs.meta +11 -11
  36. package/Editor/Settings/DxMessagingBaseCallIgnoreSync.cs +190 -0
  37. package/Editor/Settings/DxMessagingBaseCallIgnoreSync.cs.meta +11 -0
  38. package/Editor/Settings/DxMessagingSettings.cs +189 -0
  39. package/Editor/Settings/DxMessagingSettings.cs.meta +2 -2
  40. package/Editor/Settings/DxMessagingSettingsProvider.cs +50 -33
  41. package/Editor/Settings/DxMessagingSettingsProvider.cs.meta +2 -2
  42. package/Editor/Settings.meta +2 -2
  43. package/Editor/SetupCscRsp.cs +209 -8
  44. package/Editor/SetupCscRsp.cs.meta +2 -2
  45. package/Editor/Testing/MessagingComponentEditorHarness.cs +1 -1
  46. package/Editor/Testing/MessagingComponentEditorHarness.cs.meta +3 -3
  47. package/Editor/Testing.meta +3 -3
  48. package/Editor/WallstopStudios.DxMessaging.Editor.asmdef +14 -14
  49. package/Editor/WallstopStudios.DxMessaging.Editor.asmdef.meta +7 -7
  50. package/Editor.meta +8 -8
  51. package/LICENSE.md +9 -9
  52. package/LICENSE.md.meta +7 -7
  53. package/README.md +941 -900
  54. package/README.md.meta +7 -7
  55. package/Runtime/AssemblyInfo.cs +4 -0
  56. package/Runtime/AssemblyInfo.cs.meta +2 -2
  57. package/Runtime/Core/Attributes/DxAutoConstructorAttribute.cs.meta +2 -2
  58. package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs.meta +2 -2
  59. package/Runtime/Core/Attributes/DxIgnoreMissingBaseCallAttribute.cs +26 -0
  60. package/Runtime/Core/Attributes/DxIgnoreMissingBaseCallAttribute.cs.meta +11 -0
  61. package/Runtime/Core/Attributes/DxOptionalParameterAttribute.cs.meta +2 -2
  62. package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs.meta +2 -2
  63. package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs.meta +2 -2
  64. package/Runtime/Core/Attributes.meta +2 -2
  65. package/Runtime/Core/Configuration/DxMessagingRuntimeSettings.cs +195 -0
  66. package/Runtime/Core/Configuration/DxMessagingRuntimeSettings.cs.meta +11 -0
  67. package/Runtime/Core/Configuration/DxMessagingRuntimeSettingsProvider.cs +179 -0
  68. package/Runtime/Core/Configuration/DxMessagingRuntimeSettingsProvider.cs.meta +11 -0
  69. package/Runtime/Core/Configuration.meta +9 -0
  70. package/Runtime/Core/DataStructure/CyclicBuffer.cs +2 -2
  71. package/Runtime/Core/DataStructure/CyclicBuffer.cs.meta +2 -2
  72. package/Runtime/Core/DataStructure.meta +2 -2
  73. package/Runtime/Core/Diagnostics/MessageEmissionData.cs.meta +2 -2
  74. package/Runtime/Core/Diagnostics/MessageRegistrationData.cs.meta +2 -2
  75. package/Runtime/Core/Diagnostics/MessageRegistrationType.cs.meta +2 -2
  76. package/Runtime/Core/Diagnostics.meta +2 -2
  77. package/Runtime/Core/DxMessagingStaticState.cs +19 -0
  78. package/Runtime/Core/DxMessagingStaticState.cs.meta +11 -11
  79. package/Runtime/Core/Extensions/EnumExtensions.cs.meta +2 -2
  80. package/Runtime/Core/Extensions/IListExtensions.cs.meta +2 -2
  81. package/Runtime/Core/Extensions/MessageBusExtensions.cs.meta +12 -12
  82. package/Runtime/Core/Extensions/MessageExtensions.cs.meta +11 -11
  83. package/Runtime/Core/Extensions.meta +8 -8
  84. package/Runtime/Core/Helper/MessageCache.cs +32 -0
  85. package/Runtime/Core/Helper/MessageCache.cs.meta +2 -2
  86. package/Runtime/Core/Helper/MessageHelperIndexer.cs.meta +2 -2
  87. package/Runtime/Core/Helper.meta +2 -2
  88. package/Runtime/Core/IMessage.cs +3 -3
  89. package/Runtime/Core/IMessage.cs.meta +11 -11
  90. package/Runtime/Core/InstanceId.cs.meta +11 -11
  91. package/Runtime/Core/Internal/TypedDispatchLinkIndex.cs +51 -0
  92. package/Runtime/Core/Internal/TypedDispatchLinkIndex.cs.meta +11 -0
  93. package/Runtime/Core/Internal/TypedGlobalSlotIndex.cs +38 -0
  94. package/Runtime/Core/Internal/TypedGlobalSlotIndex.cs.meta +11 -0
  95. package/Runtime/Core/Internal/TypedSlotIndex.cs +81 -0
  96. package/Runtime/Core/Internal/TypedSlotIndex.cs.meta +11 -0
  97. package/Runtime/Core/Internal/TypedSlots.cs +613 -0
  98. package/Runtime/Core/Internal/TypedSlots.cs.meta +11 -0
  99. package/Runtime/Core/Internal.meta +9 -0
  100. package/Runtime/Core/MessageBus/DiagnosticsTarget.cs.meta +11 -11
  101. package/Runtime/Core/MessageBus/GlobalMessageBusProvider.cs.meta +11 -11
  102. package/Runtime/Core/MessageBus/IMessageBus.cs +177 -3
  103. package/Runtime/Core/MessageBus/IMessageBus.cs.meta +11 -11
  104. package/Runtime/Core/MessageBus/IMessageBusProvider.cs.meta +11 -11
  105. package/Runtime/Core/MessageBus/IMessageRegistrationBuilder.cs.meta +11 -11
  106. package/Runtime/Core/MessageBus/Internal/BusContextIndex.cs +16 -0
  107. package/Runtime/Core/MessageBus/Internal/BusContextIndex.cs.meta +11 -0
  108. package/Runtime/Core/MessageBus/Internal/BusSinkIndex.cs +40 -0
  109. package/Runtime/Core/MessageBus/Internal/BusSinkIndex.cs.meta +11 -0
  110. package/Runtime/Core/MessageBus/Internal/BusSlots.cs +718 -0
  111. package/Runtime/Core/MessageBus/Internal/BusSlots.cs.meta +11 -0
  112. package/Runtime/Core/MessageBus/Internal/DispatchKind.cs +38 -0
  113. package/Runtime/Core/MessageBus/Internal/DispatchKind.cs.meta +11 -0
  114. package/Runtime/Core/MessageBus/Internal/DispatchPhase.cs +20 -0
  115. package/Runtime/Core/MessageBus/Internal/DispatchPhase.cs.meta +11 -0
  116. package/Runtime/Core/MessageBus/Internal/DispatchVariant.cs +28 -0
  117. package/Runtime/Core/MessageBus/Internal/DispatchVariant.cs.meta +11 -0
  118. package/Runtime/Core/MessageBus/Internal/IEvictableSlot.cs +48 -0
  119. package/Runtime/Core/MessageBus/Internal/IEvictableSlot.cs.meta +11 -0
  120. package/Runtime/Core/MessageBus/Internal/ISweepable.cs +15 -0
  121. package/Runtime/Core/MessageBus/Internal/ISweepable.cs.meta +11 -0
  122. package/Runtime/Core/MessageBus/Internal/RegistrationMethodAxes.cs +222 -0
  123. package/Runtime/Core/MessageBus/Internal/RegistrationMethodAxes.cs.meta +11 -0
  124. package/Runtime/Core/MessageBus/Internal/SlotKey.cs +192 -0
  125. package/Runtime/Core/MessageBus/Internal/SlotKey.cs.meta +11 -0
  126. package/Runtime/Core/MessageBus/Internal.meta +9 -0
  127. package/Runtime/Core/MessageBus/MessageBus.cs +2651 -500
  128. package/Runtime/Core/MessageBus/MessageBus.cs.meta +11 -11
  129. package/Runtime/Core/MessageBus/MessageBusRebindMode.cs.meta +11 -11
  130. package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs.meta +11 -11
  131. package/Runtime/Core/MessageBus/MessagingRegistration.cs.meta +11 -11
  132. package/Runtime/Core/MessageBus/RegistrationLog.cs.meta +11 -11
  133. package/Runtime/Core/MessageBus.meta +8 -8
  134. package/Runtime/Core/MessageHandler.cs +2019 -542
  135. package/Runtime/Core/MessageHandler.cs.meta +11 -11
  136. package/Runtime/Core/MessageRegistrationHandle.cs.meta +11 -11
  137. package/Runtime/Core/MessageRegistrationToken.cs +7 -0
  138. package/Runtime/Core/MessageRegistrationToken.cs.meta +11 -11
  139. package/Runtime/Core/Messages/GlobalStringMessage.cs.meta +2 -2
  140. package/Runtime/Core/Messages/IBroadcastMessage.cs.meta +11 -11
  141. package/Runtime/Core/Messages/ITargetedMessage.cs.meta +11 -11
  142. package/Runtime/Core/Messages/IUntargetedMessage.cs.meta +11 -11
  143. package/Runtime/Core/Messages/ReflexiveMessage.cs.meta +2 -2
  144. package/Runtime/Core/Messages/SourcedStringMessage.cs.meta +11 -11
  145. package/Runtime/Core/Messages/StringMessage.cs.meta +2 -2
  146. package/Runtime/Core/Messages.meta +8 -8
  147. package/Runtime/Core/MessagingDebug.cs.meta +11 -11
  148. package/Runtime/Core/Pooling/CollectionPool.cs +266 -0
  149. package/Runtime/Core/Pooling/CollectionPool.cs.meta +11 -0
  150. package/Runtime/Core/Pooling/CollectionPoolDiagnostics.cs +30 -0
  151. package/Runtime/Core/Pooling/CollectionPoolDiagnostics.cs.meta +11 -0
  152. package/Runtime/Core/Pooling/DxPools.cs +157 -0
  153. package/Runtime/Core/Pooling/DxPools.cs.meta +11 -0
  154. package/Runtime/Core/Pooling/EvictionPlayerLoopHook.cs +106 -0
  155. package/Runtime/Core/Pooling/EvictionPlayerLoopHook.cs.meta +11 -0
  156. package/Runtime/Core/Pooling/IDxMessagingClock.cs +18 -0
  157. package/Runtime/Core/Pooling/IDxMessagingClock.cs.meta +11 -0
  158. package/Runtime/Core/Pooling/PoolDiagnosticsSnapshot.cs +55 -0
  159. package/Runtime/Core/Pooling/PoolDiagnosticsSnapshot.cs.meta +11 -0
  160. package/Runtime/Core/Pooling/StopwatchClock.cs +27 -0
  161. package/Runtime/Core/Pooling/StopwatchClock.cs.meta +11 -0
  162. package/Runtime/Core/Pooling/UnityRealtimeClock.cs +31 -0
  163. package/Runtime/Core/Pooling/UnityRealtimeClock.cs.meta +11 -0
  164. package/Runtime/Core/Pooling.meta +9 -0
  165. package/Runtime/Core.meta +8 -8
  166. package/Runtime/Unity/CurrentGlobalMessageBusProvider.cs.meta +12 -12
  167. package/Runtime/Unity/DxMessagingRuntimeInitializer.cs.meta +11 -11
  168. package/Runtime/Unity/InitialGlobalMessageBusProvider.cs.meta +12 -12
  169. package/Runtime/Unity/Integrations/Reflex/AssemblyInfo.cs.meta +2 -2
  170. package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs +73 -0
  171. package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs.meta +11 -11
  172. package/Runtime/Unity/Integrations/Reflex/WallstopStudios.DxMessaging.Reflex.asmdef +20 -20
  173. package/Runtime/Unity/Integrations/Reflex/WallstopStudios.DxMessaging.Reflex.asmdef.meta +7 -7
  174. package/Runtime/Unity/Integrations/Reflex.meta +8 -8
  175. package/Runtime/Unity/Integrations/VContainer/AssemblyInfo.cs.meta +2 -2
  176. package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs +109 -1
  177. package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs.meta +11 -11
  178. package/Runtime/Unity/Integrations/VContainer/WallstopStudios.DxMessaging.VContainer.asmdef +30 -30
  179. package/Runtime/Unity/Integrations/VContainer/WallstopStudios.DxMessaging.VContainer.asmdef.meta +7 -7
  180. package/Runtime/Unity/Integrations/VContainer.meta +8 -8
  181. package/Runtime/Unity/Integrations/Zenject/AssemblyInfo.cs.meta +2 -2
  182. package/Runtime/Unity/Integrations/Zenject/WallstopStudios.DxMessaging.Zenject.asmdef +30 -30
  183. package/Runtime/Unity/Integrations/Zenject/WallstopStudios.DxMessaging.Zenject.asmdef.meta +7 -7
  184. package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs +79 -1
  185. package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs.meta +11 -11
  186. package/Runtime/Unity/Integrations/Zenject.meta +8 -8
  187. package/Runtime/Unity/Integrations.meta +8 -8
  188. package/Runtime/Unity/MessageAwareComponent.cs +29 -0
  189. package/Runtime/Unity/MessageAwareComponent.cs.meta +11 -11
  190. package/Runtime/Unity/MessageBusProviderHandle.cs.meta +12 -12
  191. package/Runtime/Unity/MessagingComponent.cs.meta +11 -11
  192. package/Runtime/Unity/MessagingComponentInstaller.cs.meta +12 -12
  193. package/Runtime/Unity/ScriptableMessageBusProvider.cs.meta +12 -12
  194. package/Runtime/Unity.meta +8 -8
  195. package/Runtime/WallstopStudios.DxMessaging.asmdef +14 -14
  196. package/Runtime/WallstopStudios.DxMessaging.asmdef.meta +7 -7
  197. package/Runtime.meta +8 -8
  198. package/Samples~/DI/Prefabs/MessagingInstallerSample.prefab +98 -98
  199. package/Samples~/DI/Prefabs/MessagingInstallerSample.prefab.meta +7 -7
  200. package/Samples~/DI/Prefabs.meta +8 -8
  201. package/Samples~/DI/Providers/GlobalMessageBusProvider.asset +14 -14
  202. package/Samples~/DI/Providers/GlobalMessageBusProvider.asset.meta +8 -8
  203. package/Samples~/DI/Providers/InitialGlobalMessageBusProvider.asset +14 -14
  204. package/Samples~/DI/Providers/InitialGlobalMessageBusProvider.asset.meta +8 -8
  205. package/Samples~/DI/Providers.meta +8 -8
  206. package/Samples~/DI/README.md +51 -51
  207. package/Samples~/DI/README.md.meta +7 -7
  208. package/Samples~/DI/Reflex/SampleInstaller.cs +7 -0
  209. package/Samples~/DI/Reflex/SampleInstaller.cs.meta +11 -11
  210. package/Samples~/DI/Reflex.meta +8 -8
  211. package/Samples~/DI/VContainer/SampleLifetimeScope.cs +6 -1
  212. package/Samples~/DI/VContainer/SampleLifetimeScope.cs.meta +11 -11
  213. package/Samples~/DI/VContainer.meta +8 -8
  214. package/Samples~/DI/Zenject/SampleInstaller.cs +8 -0
  215. package/Samples~/DI/Zenject/SampleInstaller.cs.meta +11 -11
  216. package/Samples~/DI/Zenject.meta +8 -8
  217. package/Samples~/DI.meta +8 -8
  218. package/Samples~/Mini Combat/Boot.cs.meta +11 -11
  219. package/Samples~/Mini Combat/Enemy.cs.meta +11 -11
  220. package/Samples~/Mini Combat/Messages.cs.meta +11 -11
  221. package/Samples~/Mini Combat/Player.cs.meta +11 -11
  222. package/Samples~/Mini Combat/README.md +324 -323
  223. package/Samples~/Mini Combat/README.md.meta +7 -7
  224. package/Samples~/Mini Combat/UIOverlay.cs.meta +11 -11
  225. package/Samples~/Mini Combat/Walkthrough.md +430 -430
  226. package/Samples~/Mini Combat/Walkthrough.md.meta +7 -7
  227. package/Samples~/Mini Combat/WallstopStudios.DxMessaging.MiniCombat.Sample.asmdef +13 -13
  228. package/Samples~/Mini Combat/WallstopStudios.DxMessaging.MiniCombat.Sample.asmdef.meta +7 -7
  229. package/Samples~/Mini Combat.meta +8 -8
  230. package/Samples~/UI Buttons + Inspector/DiagnosticsEnabler.cs.meta +11 -11
  231. package/Samples~/UI Buttons + Inspector/Messages.cs.meta +11 -11
  232. package/Samples~/UI Buttons + Inspector/MessagingObserver.cs.meta +11 -11
  233. package/Samples~/UI Buttons + Inspector/README.md +210 -209
  234. package/Samples~/UI Buttons + Inspector/README.md.meta +7 -7
  235. package/Samples~/UI Buttons + Inspector/UIButtonEmitter.cs.meta +11 -11
  236. package/Samples~/UI Buttons + Inspector/WallstopStudios.DxMessaging.UIButtons.Sample.asmdef +13 -13
  237. package/Samples~/UI Buttons + Inspector/WallstopStudios.DxMessaging.UIButtons.Sample.asmdef.meta +7 -7
  238. package/Samples~/UI Buttons + Inspector.meta +8 -8
  239. package/SourceGenerators/Directory.Build.props.meta +7 -7
  240. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoConstructorGenerator.cs.meta +11 -11
  241. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxMessageIdGenerator.cs.meta +2 -2
  242. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.csproj.meta +7 -7
  243. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.meta +8 -8
  244. package/SourceGenerators.meta +8 -8
  245. package/Third Party Notices.md +3 -3
  246. package/Third Party Notices.md.meta +7 -7
  247. package/package.json +115 -92
  248. package/package.json.meta +7 -7
@@ -1,12 +1,12 @@
1
- fileFormatVersion: 2
2
- guid: 2d2a3b7979da4f248a398e05be9f83d4
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
12
-
1
+ fileFormatVersion: 2
2
+ guid: 2d2a3b7979da4f248a398e05be9f83d4
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
12
+
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: 760f3c3fe4dffe647b41eef37728c4f4
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 760f3c3fe4dffe647b41eef37728c4f4
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,8 +1,8 @@
1
- fileFormatVersion: 2
2
- guid: 963c131823f1c5948a69209dbac6533f
3
- folderAsset: yes
4
- DefaultImporter:
5
- externalObjects: {}
6
- userData:
7
- assetBundleName:
8
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 963c131823f1c5948a69209dbac6533f
3
+ folderAsset: yes
4
+ DefaultImporter:
5
+ externalObjects: {}
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -155,6 +155,25 @@ namespace DxMessaging.Core.Helper
155
155
  return false;
156
156
  }
157
157
 
158
+ /// <summary>
159
+ /// Attempts to get the value at an already-resolved message type index.
160
+ /// </summary>
161
+ /// <param name="index">Index previously assigned by <see cref="MessageHelperIndexer{TMessage}"/>.</param>
162
+ /// <param name="value">Out parameter receiving the value if present.</param>
163
+ /// <returns>True if a non-null value was present.</returns>
164
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
165
+ internal bool TryGetValueAtIndex(int index, out TValue value)
166
+ {
167
+ if (0 <= index && index < _values.Count)
168
+ {
169
+ value = _values[index];
170
+ return value != null;
171
+ }
172
+
173
+ value = default;
174
+ return false;
175
+ }
176
+
158
177
  /// <summary>
159
178
  /// Removes the value for the given <typeparamref name="TMessage"/> key.
160
179
  /// </summary>
@@ -170,6 +189,19 @@ namespace DxMessaging.Core.Helper
170
189
  }
171
190
  }
172
191
 
192
+ /// <summary>
193
+ /// Removes the value at an already-resolved message type index.
194
+ /// </summary>
195
+ /// <param name="index">Index previously assigned by <see cref="MessageHelperIndexer{TMessage}"/>.</param>
196
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
197
+ internal void RemoveAtIndex(int index)
198
+ {
199
+ if (0 <= index && index < _values.Count)
200
+ {
201
+ _values[index] = null;
202
+ }
203
+ }
204
+
173
205
  /// <summary>
174
206
  /// Returns an enumerator iterating over non-null entries in insertion order.
175
207
  /// </summary>
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 23cb3bf7f25d479c862736482ee96fa7
1
+ fileFormatVersion: 2
2
+ guid: 23cb3bf7f25d479c862736482ee96fa7
3
3
  timeCreated: 1745102344
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 612c352c3d984a3486ac4b19bb69fa37
1
+ fileFormatVersion: 2
2
+ guid: 612c352c3d984a3486ac4b19bb69fa37
3
3
  timeCreated: 1745101032
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 351ee8f890884099b6c7c32e66f196a9
1
+ fileFormatVersion: 2
2
+ guid: 351ee8f890884099b6c7c32e66f196a9
3
3
  timeCreated: 1745100990
@@ -8,9 +8,9 @@ namespace DxMessaging.Core
8
8
  /// <remarks>
9
9
  /// DxMessaging models three primary categories of messages:
10
10
  /// <list type="bullet">
11
- /// <item><description><see cref="Messages.IUntargetedMessage"/> global notifications (for example: settings changed).</description></item>
12
- /// <item><description><see cref="Messages.ITargetedMessage"/> commands or events directed at a specific target.</description></item>
13
- /// <item><description><see cref="Messages.IBroadcastMessage"/> events emitted by a specific source and consumable by any listener.</description></item>
11
+ /// <item><description><see cref="Messages.IUntargetedMessage"/> -- global notifications (for example: settings changed).</description></item>
12
+ /// <item><description><see cref="Messages.ITargetedMessage"/> -- commands or events directed at a specific target.</description></item>
13
+ /// <item><description><see cref="Messages.IBroadcastMessage"/> -- events emitted by a specific source and consumable by any listener.</description></item>
14
14
  /// </list>
15
15
  /// <para>
16
16
  /// Implementors typically use the generic variants (for example, <c>IUntargetedMessage&lt;T&gt;</c>) on <c>struct</c> messages
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: 7d57ad19529ae9d4eb2521c7f44af929
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 7d57ad19529ae9d4eb2521c7f44af929
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: 41b061d3cfb2f244b9806bfda65e3fa3
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 41b061d3cfb2f244b9806bfda65e3fa3
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,51 @@
1
+ namespace DxMessaging.Core.Internal
2
+ {
3
+ /// <summary>
4
+ /// Const-int positions into <c>TypedHandler&lt;T&gt;._dispatchLinks[]</c>.
5
+ /// Indices are hand-written so call sites inline as immediate operands.
6
+ /// Array length and per-index <c>null</c>-ness are validated in DEBUG
7
+ /// builds via <c>TypedHandler&lt;T&gt;.ValidateSlotArrays()</c>.
8
+ /// </summary>
9
+ /// <remarks>
10
+ /// Positions are laid out in lex-(<c>Kind</c>, <c>Phase</c>, <c>Variant</c>) order:
11
+ /// Untargeted -&gt; Targeted -&gt; Broadcast within Kind, Handle before
12
+ /// PostProcess within Phase, and with-context before WithoutContext
13
+ /// within Variant. The xmldoc on each constant names the legacy
14
+ /// <c>TypedHandler&lt;T&gt;</c> dispatch-link field whose storage role
15
+ /// the slot assumes in typed dispatch storage.
16
+ /// </remarks>
17
+ internal static class TypedDispatchLinkIndex
18
+ {
19
+ /// <summary>Legacy field: <c>_untargetedLink</c>.</summary>
20
+ public const int UntargetedHandle = 0;
21
+
22
+ /// <summary>Legacy field: <c>_untargetedPostLink</c>.</summary>
23
+ public const int UntargetedPostProcess = 1;
24
+
25
+ /// <summary>Legacy field: <c>_targetedLink</c>.</summary>
26
+ public const int TargetedHandle = 2;
27
+
28
+ /// <summary>Legacy field: <c>_targetedWithoutTargetingLink</c>.</summary>
29
+ public const int TargetedHandleWithoutContext = 3;
30
+
31
+ /// <summary>Legacy field: <c>_targetedPostLink</c>.</summary>
32
+ public const int TargetedPostProcess = 4;
33
+
34
+ /// <summary>Legacy field: <c>_targetedWithoutTargetingPostLink</c>.</summary>
35
+ public const int TargetedPostProcessWithoutContext = 5;
36
+
37
+ /// <summary>Legacy field: <c>_broadcastLink</c>.</summary>
38
+ public const int BroadcastHandle = 6;
39
+
40
+ /// <summary>Legacy field: <c>_broadcastWithoutSourceLink</c>.</summary>
41
+ public const int BroadcastHandleWithoutContext = 7;
42
+
43
+ /// <summary>Legacy field: <c>_broadcastPostLink</c>.</summary>
44
+ public const int BroadcastPostProcess = 8;
45
+
46
+ /// <summary>Legacy field: <c>_broadcastWithoutSourcePostLink</c>.</summary>
47
+ public const int BroadcastPostProcessWithoutContext = 9;
48
+
49
+ public const int Length = 10;
50
+ }
51
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 031ffa9bfbf249728da382bb9e03b017
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,38 @@
1
+ namespace DxMessaging.Core.Internal
2
+ {
3
+ /// <summary>
4
+ /// Const-int positions into <c>TypedHandler&lt;T&gt;._globalSlots[]</c>.
5
+ /// Indices are hand-written so call sites inline as immediate operands.
6
+ /// Array length and per-index <c>null</c>-ness are validated in DEBUG
7
+ /// builds via <c>TypedHandler&lt;T&gt;.ValidateSlotArrays()</c>.
8
+ /// </summary>
9
+ /// <remarks>
10
+ /// Positions are laid out in lex-(<c>Kind</c>, <c>Variant</c>) order:
11
+ /// Untargeted -&gt; Targeted -&gt; Broadcast within Kind, Default before
12
+ /// Fast within Variant. The xmldoc on each constant names the legacy
13
+ /// <c>TypedHandler&lt;T&gt;</c> field whose storage role the slot will
14
+ /// assume in typed global storage.
15
+ /// </remarks>
16
+ internal static class TypedGlobalSlotIndex
17
+ {
18
+ /// <summary>Legacy field: <c>_globalUntargetedHandlers</c>.</summary>
19
+ public const int UntargetedDefault = 0;
20
+
21
+ /// <summary>Legacy field: <c>_globalUntargetedFastHandlers</c>.</summary>
22
+ public const int UntargetedFast = 1;
23
+
24
+ /// <summary>Legacy field: <c>_globalTargetedHandlers</c>.</summary>
25
+ public const int TargetedDefault = 2;
26
+
27
+ /// <summary>Legacy field: <c>_globalTargetedFastHandlers</c>.</summary>
28
+ public const int TargetedFast = 3;
29
+
30
+ /// <summary>Legacy field: <c>_globalBroadcastHandlers</c>.</summary>
31
+ public const int BroadcastDefault = 4;
32
+
33
+ /// <summary>Legacy field: <c>_globalBroadcastFastHandlers</c>.</summary>
34
+ public const int BroadcastFast = 5;
35
+
36
+ public const int Length = 6;
37
+ }
38
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: c1d15b0be71e49828b55dc1654748f4e
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,81 @@
1
+ namespace DxMessaging.Core.Internal
2
+ {
3
+ /// <summary>
4
+ /// Const-int positions into <c>TypedHandler&lt;T&gt;._slots[]</c>. Indices
5
+ /// are hand-written so call sites inline as immediate operands. Array
6
+ /// length and per-index <c>null</c>-ness are validated in DEBUG builds via
7
+ /// <c>TypedHandler&lt;T&gt;.ValidateSlotArrays()</c>.
8
+ /// </summary>
9
+ /// <remarks>
10
+ /// Positions are laid out in lex-(<c>Kind</c>, <c>Phase</c>, <c>Variant</c>) order:
11
+ /// Untargeted -&gt; Targeted -&gt; Broadcast within Kind; Handle before
12
+ /// PostProcess within Phase; and Default -&gt; Fast -&gt; WithoutContext -&gt;
13
+ /// WithoutContextFast within Variant. The xmldoc on each constant names
14
+ /// the legacy <c>TypedHandler&lt;T&gt;</c> field whose storage role the
15
+ /// slot assumes in typed storage.
16
+ /// </remarks>
17
+ internal static class TypedSlotIndex
18
+ {
19
+ /// <summary>Legacy field: <c>_untargetedHandlers</c>.</summary>
20
+ public const int UntargetedHandleDefault = 0;
21
+
22
+ /// <summary>Legacy field: <c>_untargetedFastHandlers</c>.</summary>
23
+ public const int UntargetedHandleFast = 1;
24
+
25
+ /// <summary>Legacy field: <c>_untargetedPostProcessingHandlers</c>.</summary>
26
+ public const int UntargetedPostProcessDefault = 2;
27
+
28
+ /// <summary>Legacy field: <c>_untargetedPostProcessingFastHandlers</c>.</summary>
29
+ public const int UntargetedPostProcessFast = 3;
30
+
31
+ /// <summary>Legacy field: <c>_targetedHandlers</c>.</summary>
32
+ public const int TargetedHandleDefault = 4;
33
+
34
+ /// <summary>Legacy field: <c>_targetedFastHandlers</c>.</summary>
35
+ public const int TargetedHandleFast = 5;
36
+
37
+ /// <summary>Legacy field: <c>_targetedWithoutTargetingHandlers</c>.</summary>
38
+ public const int TargetedHandleWithoutContext = 6;
39
+
40
+ /// <summary>Legacy field: <c>_fastTargetedWithoutTargetingHandlers</c>.</summary>
41
+ public const int TargetedHandleWithoutContextFast = 7;
42
+
43
+ /// <summary>Legacy field: <c>_targetedPostProcessingHandlers</c>.</summary>
44
+ public const int TargetedPostProcessDefault = 8;
45
+
46
+ /// <summary>Legacy field: <c>_targetedPostProcessingFastHandlers</c>.</summary>
47
+ public const int TargetedPostProcessFast = 9;
48
+
49
+ /// <summary>Legacy field: <c>_targetedWithoutTargetingPostProcessingHandlers</c>.</summary>
50
+ public const int TargetedPostProcessWithoutContext = 10;
51
+
52
+ /// <summary>Legacy field: <c>_fastTargetedWithoutTargetingPostProcessingHandlers</c>.</summary>
53
+ public const int TargetedPostProcessWithoutContextFast = 11;
54
+
55
+ /// <summary>Legacy field: <c>_broadcastHandlers</c>.</summary>
56
+ public const int BroadcastHandleDefault = 12;
57
+
58
+ /// <summary>Legacy field: <c>_broadcastFastHandlers</c>.</summary>
59
+ public const int BroadcastHandleFast = 13;
60
+
61
+ /// <summary>Legacy field: <c>_broadcastWithoutSourceHandlers</c>.</summary>
62
+ public const int BroadcastHandleWithoutContext = 14;
63
+
64
+ /// <summary>Legacy field: <c>_fastBroadcastWithoutSourceHandlers</c>.</summary>
65
+ public const int BroadcastHandleWithoutContextFast = 15;
66
+
67
+ /// <summary>Legacy field: <c>_broadcastPostProcessingHandlers</c>.</summary>
68
+ public const int BroadcastPostProcessDefault = 16;
69
+
70
+ /// <summary>Legacy field: <c>_broadcastPostProcessingFastHandlers</c>.</summary>
71
+ public const int BroadcastPostProcessFast = 17;
72
+
73
+ /// <summary>Legacy field: <c>_broadcastWithoutSourcePostProcessingHandlers</c>.</summary>
74
+ public const int BroadcastPostProcessWithoutContext = 18;
75
+
76
+ /// <summary>Legacy field: <c>_fastBroadcastWithoutSourcePostProcessingHandlers</c>.</summary>
77
+ public const int BroadcastPostProcessWithoutContextFast = 19;
78
+
79
+ public const int Length = 20;
80
+ }
81
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: ef97ae16e3954ebba9ff6f003592d2da
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant: