com.wallstop-studios.dxmessaging 3.1.0 → 3.2.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.
- package/CHANGELOG.md +326 -0
- package/Editor/Analyzers/BaseCallLogMessageParser.cs.meta +3 -3
- package/Editor/Analyzers/BaseCallReportAggregator.cs.meta +3 -3
- package/Editor/Analyzers/DxMessagingConsoleHarvester.cs +8 -8
- package/Editor/Analyzers/DxMessagingConsoleHarvester.cs.meta +3 -3
- package/Editor/CustomEditors/MessageAwareComponentFallbackEditor.cs +171 -13
- package/Editor/CustomEditors/MessageAwareComponentFallbackEditor.cs.meta +3 -3
- package/Editor/CustomEditors/MessageAwareComponentInspectorOverlay.cs +391 -96
- package/Editor/CustomEditors/MessageAwareComponentInspectorOverlay.cs.meta +3 -3
- package/Editor/CustomEditors/MessageAwareComponentInspectorView.cs +279 -0
- package/Editor/CustomEditors/MessageAwareComponentInspectorView.cs.meta +11 -0
- package/Editor/DxMessagingEditorPalette.cs +66 -0
- package/Editor/DxMessagingEditorPalette.cs.meta +11 -0
- package/Editor/DxMessagingEditorTheme.cs +200 -0
- package/Editor/DxMessagingEditorTheme.cs.meta +11 -0
- package/Editor/DxMessagingMenu.cs.meta +3 -3
- package/Editor/DxMessagingSceneBuildProcessor.cs.meta +3 -3
- package/Editor/Icons/dxmessaging-icon-256.png +0 -0
- package/Editor/Icons/dxmessaging-icon-256.png.meta +156 -0
- package/Editor/Icons/dxmessaging-icon-32.png +0 -0
- package/Editor/Icons/dxmessaging-icon-32.png.meta +156 -0
- package/Editor/Icons/dxmessaging-icon-48.png +0 -0
- package/Editor/Icons/dxmessaging-icon-48.png.meta +156 -0
- package/Editor/Icons.meta +8 -0
- package/Editor/Settings/DxMessagingBaseCallIgnoreSync.cs +2 -3
- package/Editor/Settings/DxMessagingBaseCallIgnoreSync.cs.meta +3 -3
- package/Editor/Settings/DxMessagingSettingsProvider.cs +368 -33
- package/Editor/SetupCscRsp.cs +232 -163
- package/Editor/Testing/MessagingComponentEditorHarness.cs +11 -4
- package/Editor/Theme/DxMessagingTheme.uss +255 -0
- package/Editor/Theme/DxMessagingTheme.uss.meta +11 -0
- package/Editor/Theme/DxTokens.uss +90 -0
- package/Editor/Theme/DxTokens.uss.meta +11 -0
- package/Editor/Theme.meta +8 -0
- package/Editor/Windows/DxMessagingFlowGraphWindow.cs +5513 -0
- package/Editor/Windows/DxMessagingFlowGraphWindow.cs.meta +11 -0
- package/Editor/Windows/DxMessagingMessageMonitorWindow.cs +2288 -0
- package/Editor/Windows/DxMessagingMessageMonitorWindow.cs.meta +11 -0
- package/Editor/Windows.meta +8 -0
- package/README.md +84 -35
- package/Runtime/Analyzers.meta +8 -0
- package/Runtime/AssemblyInfo.cs +1 -0
- package/Runtime/Core/Attributes/DxIgnoreMissingBaseCallAttribute.cs.meta +3 -3
- package/Runtime/Core/Diagnostics/MessageEmissionData.cs +29 -1
- package/Runtime/Core/DxMessagingStaticState.cs.meta +3 -3
- package/Runtime/Core/Extensions/MessageBusExtensions.cs.meta +3 -3
- package/Runtime/Core/Extensions/MessageExtensions.cs +4 -5
- package/Runtime/Core/Extensions/MessageExtensions.cs.meta +3 -3
- package/Runtime/Core/Helper/MessageCache.cs +56 -23
- package/Runtime/Core/IMessage.cs.meta +3 -3
- package/Runtime/Core/InstanceId.cs.meta +3 -3
- package/Runtime/Core/Internal/FlatDispatch.cs +32 -0
- package/Runtime/Core/Internal/TypedSlots.cs +45 -7
- package/Runtime/Core/MessageBus/DiagnosticsTarget.cs.meta +3 -3
- package/Runtime/Core/MessageBus/GlobalMessageBusProvider.cs.meta +3 -3
- package/Runtime/Core/MessageBus/IMessageBus.cs +63 -28
- package/Runtime/Core/MessageBus/IMessageBus.cs.meta +3 -3
- package/Runtime/Core/MessageBus/IMessageBusProvider.cs.meta +3 -3
- package/Runtime/Core/MessageBus/IMessageRegistrationBuilder.cs.meta +3 -3
- package/Runtime/Core/MessageBus/MessageBus.cs +1135 -626
- package/Runtime/Core/MessageBus/MessageBus.cs.meta +3 -3
- package/Runtime/Core/MessageBus/MessageBusRebindMode.cs.meta +3 -3
- package/Runtime/Core/MessageBus/MessageBusRegistration.cs +207 -0
- package/Runtime/Core/MessageBus/MessageBusRegistration.cs.meta +11 -0
- package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs.meta +3 -3
- package/Runtime/Core/MessageBus/MessagingRegistration.cs.meta +3 -3
- package/Runtime/Core/MessageBus/RegistrationLog.cs +25 -12
- package/Runtime/Core/MessageBus/RegistrationLog.cs.meta +3 -3
- package/Runtime/Core/MessageHandler.cs +1886 -1082
- package/Runtime/Core/MessageHandler.cs.meta +3 -3
- package/Runtime/Core/MessageRegistrationHandle.cs +19 -5
- package/Runtime/Core/MessageRegistrationHandle.cs.meta +3 -3
- package/Runtime/Core/MessageRegistrationToken.cs +1932 -895
- package/Runtime/Core/MessageRegistrationToken.cs.meta +3 -3
- package/Runtime/Core/Messages/IBroadcastMessage.cs.meta +3 -3
- package/Runtime/Core/Messages/ITargetedMessage.cs.meta +3 -3
- package/Runtime/Core/Messages/IUntargetedMessage.cs.meta +3 -3
- package/Runtime/Core/Messages/SourcedStringMessage.cs.meta +3 -3
- package/Runtime/Core/MessagingDebug.cs.meta +3 -3
- package/Runtime/Unity/CurrentGlobalMessageBusProvider.cs.meta +3 -3
- package/Runtime/Unity/DxMessagingRuntimeInitializer.cs.meta +3 -3
- package/Runtime/Unity/InitialGlobalMessageBusProvider.cs.meta +3 -3
- package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs.meta +3 -3
- package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs.meta +3 -3
- package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs.meta +3 -3
- package/Runtime/Unity/MessageAwareComponent.cs.meta +3 -3
- package/Runtime/Unity/MessageBusProviderHandle.cs.meta +3 -3
- package/Runtime/Unity/MessagingComponent.cs.meta +3 -3
- package/Runtime/Unity/MessagingComponentInstaller.cs.meta +3 -3
- package/Runtime/Unity/ScriptableMessageBusProvider.cs.meta +3 -3
- package/Samples~/DI/Reflex/SampleInstaller.cs.meta +3 -3
- package/Samples~/DI/VContainer/SampleLifetimeScope.cs.meta +3 -3
- package/Samples~/DI/Zenject/SampleInstaller.cs.meta +3 -3
- package/Samples~/Diagnostics Tooling Exerciser/DiagnosticsToolingExerciser.cs +173 -0
- package/Samples~/Diagnostics Tooling Exerciser/DiagnosticsToolingExerciser.cs.meta +11 -0
- package/Samples~/Diagnostics Tooling Exerciser/DiagnosticsToolingExerciser.unity +424 -0
- package/Samples~/Diagnostics Tooling Exerciser/DiagnosticsToolingExerciser.unity.meta +7 -0
- package/Samples~/Diagnostics Tooling Exerciser/DiagnosticsToolingReceiver.cs +185 -0
- package/Samples~/Diagnostics Tooling Exerciser/DiagnosticsToolingReceiver.cs.meta +11 -0
- package/Samples~/Diagnostics Tooling Exerciser/Messages.cs +46 -0
- package/Samples~/Diagnostics Tooling Exerciser/Messages.cs.meta +11 -0
- package/Samples~/Diagnostics Tooling Exerciser/README.md +53 -0
- package/Samples~/Diagnostics Tooling Exerciser/README.md.meta +7 -0
- package/Samples~/Diagnostics Tooling Exerciser/WallstopStudios.DxMessaging.DiagnosticsToolingExerciser.Sample.asmdef +13 -0
- package/Samples~/Diagnostics Tooling Exerciser/WallstopStudios.DxMessaging.DiagnosticsToolingExerciser.Sample.asmdef.meta +7 -0
- package/Samples~/Diagnostics Tooling Exerciser.meta +8 -0
- package/Samples~/Mini Combat/Boot.cs.meta +3 -3
- package/Samples~/Mini Combat/Enemy.cs.meta +3 -3
- package/Samples~/Mini Combat/Messages.cs.meta +3 -3
- package/Samples~/Mini Combat/Player.cs.meta +3 -3
- package/Samples~/Mini Combat/README.md +1 -1
- package/Samples~/Mini Combat/UIOverlay.cs.meta +3 -3
- package/Samples~/Mini Combat/Walkthrough.md +3 -3
- package/Samples~/UI Buttons + Inspector/DiagnosticsEnabler.cs.meta +3 -3
- package/Samples~/UI Buttons + Inspector/Messages.cs.meta +3 -3
- package/Samples~/UI Buttons + Inspector/MessagingObserver.cs.meta +3 -3
- package/Samples~/UI Buttons + Inspector/UIButtonEmitter.cs.meta +3 -3
- package/SourceGenerators/Directory.Build.props +5 -5
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoConstructorGenerator.cs.meta +3 -3
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.csproj +12 -11
- package/docs/images/DxMessaging-banner.svg +79 -0
- package/docs/images/DxMessaging-banner.svg.meta +53 -0
- package/docs/images.meta +8 -0
- package/docs.meta +8 -0
- package/package.json +17 -5
- /package/{Editor → Runtime}/Analyzers/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- /package/{Editor → Runtime}/Analyzers/Microsoft.CodeAnalysis.CSharp.dll.meta +0 -0
- /package/{Editor → Runtime}/Analyzers/Microsoft.CodeAnalysis.dll +0 -0
- /package/{Editor → Runtime}/Analyzers/Microsoft.CodeAnalysis.dll.meta +0 -0
- /package/{Editor → Runtime}/Analyzers/System.Collections.Immutable.dll +0 -0
- /package/{Editor → Runtime}/Analyzers/System.Collections.Immutable.dll.meta +0 -0
- /package/{Editor → Runtime}/Analyzers/System.Reflection.Metadata.dll +0 -0
- /package/{Editor → Runtime}/Analyzers/System.Reflection.Metadata.dll.meta +0 -0
- /package/{Editor → Runtime}/Analyzers/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- /package/{Editor → Runtime}/Analyzers/System.Runtime.CompilerServices.Unsafe.dll.meta +0 -0
- /package/{Editor → Runtime}/Analyzers/WallstopStudios.DxMessaging.Analyzer.dll +0 -0
- /package/{Editor → Runtime}/Analyzers/WallstopStudios.DxMessaging.Analyzer.dll.meta +0 -0
- /package/{Editor → Runtime}/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
- /package/{Editor → Runtime}/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll.meta +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Diagnostics Tooling Exerciser Sample
|
|
2
|
+
|
|
3
|
+
This sample imports a scene that generates deterministic diagnostics data for
|
|
4
|
+
the package editor tools.
|
|
5
|
+
|
|
6
|
+
## What It Exercises
|
|
7
|
+
|
|
8
|
+
- **Message Monitor**: global history, component diagnostics, typed filters,
|
|
9
|
+
context filters, visible message-type lanes, and visible context lanes.
|
|
10
|
+
- **Flow Graph**: untargeted, targeted, broadcast, exact-source broadcast,
|
|
11
|
+
broadcast-without-source, `RegisterGlobalAcceptAll`, trace IDs, route-kind
|
|
12
|
+
lanes, component lanes, target lanes, context lanes, and route maps.
|
|
13
|
+
- **Inspector overlay**: each receiver is a `MessageAwareComponent` with a live
|
|
14
|
+
`MessagingComponent`, enabled token diagnostics, public counters, and recent
|
|
15
|
+
payload fields.
|
|
16
|
+
- **Project Settings**: the runner enables global diagnostics at play start, so
|
|
17
|
+
Project Settings changes to diagnostics targets and message buffer size are
|
|
18
|
+
visible immediately when the scene is rerun.
|
|
19
|
+
|
|
20
|
+
## Run It
|
|
21
|
+
|
|
22
|
+
1. Import **Diagnostics Tooling Exerciser** from the Package Manager Samples tab.
|
|
23
|
+
1. Open `DiagnosticsToolingExerciser.unity`.
|
|
24
|
+
1. Press Play. The runner emits a burst of one untargeted pulse, one targeted
|
|
25
|
+
command for each receiver, and one broadcast signal for each source.
|
|
26
|
+
1. Open **Tools > Wallstop Studios > DxMessaging > Message Monitor**.
|
|
27
|
+
1. Open **Tools > Wallstop Studios > DxMessaging > Flow Graph**.
|
|
28
|
+
1. Select `Player Ship`, `Enemy Drone`, and `HUD Console` to inspect local
|
|
29
|
+
diagnostics counters.
|
|
30
|
+
|
|
31
|
+
The runner also exposes context-menu commands:
|
|
32
|
+
|
|
33
|
+
- **Emit One Of Each** sends one untargeted, targeted, and broadcast pass.
|
|
34
|
+
- **Emit Burst** repeats that pass using `burstCount`.
|
|
35
|
+
- Receiver **Reset Counts** clears the inspector counters without changing
|
|
36
|
+
registrations.
|
|
37
|
+
|
|
38
|
+
## Expected Tool Data
|
|
39
|
+
|
|
40
|
+
After the default play-start burst:
|
|
41
|
+
|
|
42
|
+
- `DiagnosticsToolingExerciser.Sequence` is `3`.
|
|
43
|
+
- Message Monitor global history includes `ToolingPulse`, `ToolingCommand`, and
|
|
44
|
+
`ToolingSignal` entries with trace IDs like `sample-pulse-001`.
|
|
45
|
+
- Flow Graph shows three receiver components, three message types, targeted
|
|
46
|
+
routes to each receiver, exact-source broadcast routes for `Player Ship` and
|
|
47
|
+
`Enemy Drone`, and broadcast-without-source routes for all receivers.
|
|
48
|
+
- The component diagnostics panel shows enabled listener diagnostics and local
|
|
49
|
+
emissions for each receiver.
|
|
50
|
+
|
|
51
|
+
This sample is intentionally small and deterministic. If a tool surface changes,
|
|
52
|
+
update this README, the scene, and
|
|
53
|
+
`DiagnosticsToolingSampleContractTests` together.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "WallstopStudios.DxMessaging.DiagnosticsToolingExerciser.Sample",
|
|
3
|
+
"rootNamespace": "WallstopStudios.DxMessagingSamples.DiagnosticsToolingExerciser",
|
|
4
|
+
"references": ["WallstopStudios.DxMessaging"],
|
|
5
|
+
"includePlatforms": [],
|
|
6
|
+
"excludePlatforms": [],
|
|
7
|
+
"allowUnsafeCode": false,
|
|
8
|
+
"overrideReferences": false,
|
|
9
|
+
"precompiledReferences": [],
|
|
10
|
+
"autoReferenced": true,
|
|
11
|
+
"defineConstraints": [],
|
|
12
|
+
"noEngineReferences": false
|
|
13
|
+
}
|
|
@@ -40,7 +40,7 @@ public class Player : MessageAwareComponent {
|
|
|
40
40
|
void Heal(int amount) {
|
|
41
41
|
health += amount;
|
|
42
42
|
var healed = new PlayerHealed(amount);
|
|
43
|
-
healed.
|
|
43
|
+
healed.EmitGameObjectBroadcast(gameObject);
|
|
44
44
|
// Done! UI, audio, analytics all react automatically.
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -217,7 +217,7 @@ The Enemy doesn't know (or care) who needs to know about the damage. It just ann
|
|
|
217
217
|
### The Code Flow
|
|
218
218
|
|
|
219
219
|
1. **[Enemy.cs](./Enemy.cs)** detects it took damage
|
|
220
|
-
1. **Enemy**
|
|
220
|
+
1. **Enemy** creates `TookDamage tookDamage = new TookDamage(amount)` and calls `tookDamage.EmitGameObjectBroadcast(gameObject)`
|
|
221
221
|
1. **UIOverlay** receives it via `RegisterBroadcastWithoutSource`
|
|
222
222
|
1. **UIOverlay** displays the damage event
|
|
223
223
|
|
|
@@ -357,7 +357,7 @@ token.RegisterBroadcastWithoutSource<TookDamage>(OnTookDamage);
|
|
|
357
357
|
|
|
358
358
|
**Use for**: Events that multiple systems care about
|
|
359
359
|
|
|
360
|
-
**Key characteristic**: Uses `
|
|
360
|
+
**Key characteristic**: Uses `EmitGameObjectBroadcast(gameObject)` to send messages from its GameObject
|
|
361
361
|
|
|
362
362
|
### Pattern 4: The Orchestrator (Boot)
|
|
363
363
|
|
|
@@ -420,7 +420,7 @@ Try modifying the sample:
|
|
|
420
420
|
|------------|--------|---------|
|
|
421
421
|
| Send to everyone | Untargeted | `var paused = new GamePaused(); paused.Emit();` |
|
|
422
422
|
| Send to specific Component | Targeted | `var heal = new Heal(10); heal.EmitComponentTargeted(playerComponent);` |
|
|
423
|
-
| Announce an event | Broadcast | `
|
|
423
|
+
| Announce an event | Broadcast | `var exploded = new Exploded(); exploded.EmitGameObjectBroadcast(gameObject);` |
|
|
424
424
|
| Listen to everything | `RegisterBroadcastWithoutSource` | `token.RegisterBroadcastWithoutSource<Damage>(OnDamage)` |
|
|
425
425
|
| Listen to specific source | `RegisterComponentBroadcast` | `token.RegisterComponentBroadcast<Fire>(weapon, OnFire)` |
|
|
426
426
|
| Receive targeted messages | `RegisterComponentTargeted` | `token.RegisterComponentTargeted<Heal>(this, OnHeal)` |
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
end with '~'. If a SourceGenerators project builds its obj/ or bin/ in-tree,
|
|
10
10
|
Unity imports those build outputs. The analyzer/source-generator DLLs there
|
|
11
11
|
have the SAME assembly names as the correctly-configured shipped analyzers in
|
|
12
|
-
|
|
13
|
-
RoslynAnalyzer label /
|
|
12
|
+
Runtime/Analyzers/, but their Unity-auto-generated .meta lack the
|
|
13
|
+
RoslynAnalyzer label / all-platforms-disabled PluginImporter config.
|
|
14
14
|
Unity then fails to resolve their Microsoft.CodeAnalysis reference and the
|
|
15
15
|
duplicate shadows the real analyzers, so the source generator never runs and
|
|
16
16
|
every [Dx*Message] type fails to implement its generated interface
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
Building these projects is REQUIRED by the dev workflow (the main projects'
|
|
20
20
|
PostBuildCopyAnalyzers target copies the freshly-built DLL into
|
|
21
|
-
|
|
21
|
+
Runtime/Analyzers/), so the build MUST go somewhere Unity ignores.
|
|
22
22
|
|
|
23
23
|
HOW: redirect per-project obj/ and bin/ to
|
|
24
24
|
$(SolutionDir).artifacts/$(MSBuildProjectName)/{obj,bin}/$(Configuration)/.
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
Configuration-scoped obj subfolder) and OutputPath (bin) are set for the
|
|
31
31
|
build itself. $(TargetPath) therefore resolves under .artifacts/, and the
|
|
32
32
|
PostBuildCopyAnalyzers targets still copy the built DLL into
|
|
33
|
-
|
|
33
|
+
Runtime/Analyzers/ correctly.
|
|
34
34
|
-->
|
|
35
35
|
<PropertyGroup>
|
|
36
36
|
<SolutionDir Condition="'$(SolutionDir)' == ''">$(MSBuildThisFileDirectory)..\</SolutionDir>
|
|
@@ -51,6 +51,6 @@
|
|
|
51
51
|
<DebugSymbols>false</DebugSymbols>
|
|
52
52
|
<CopyAnalyzerPayload Condition="'$(CopyAnalyzerPayload)' == ''">true</CopyAnalyzerPayload>
|
|
53
53
|
<AnalyzerPayloadOutputDir Condition="'$(AnalyzerPayloadOutputDir)' == ''"
|
|
54
|
-
>$([System.IO.Path]::Combine('$(SolutionDir)', '
|
|
54
|
+
>$([System.IO.Path]::Combine('$(SolutionDir)', 'Runtime', 'Analyzers'))</AnalyzerPayloadOutputDir>
|
|
55
55
|
</PropertyGroup>
|
|
56
56
|
</Project>
|
|
@@ -25,25 +25,26 @@
|
|
|
25
25
|
directory selected by AnalyzerPayloadOutputDir.
|
|
26
26
|
|
|
27
27
|
This target copies ONLY the freshly-built source-generator DLL.
|
|
28
|
-
The Roslyn
|
|
28
|
+
The pinned Roslyn dependency DLLs the analyzer host needs
|
|
29
29
|
(Microsoft.CodeAnalysis[.CSharp], System.Collections.Immutable,
|
|
30
30
|
System.Reflection.Metadata, System.Runtime.CompilerServices.Unsafe)
|
|
31
|
-
are committed in
|
|
32
|
-
re-copied by this build: a normal (non-clean) rebuild therefore
|
|
31
|
+
are committed co-located in Runtime/Analyzers/ as fixed bytes and are
|
|
32
|
+
NOT re-copied by this build: a normal (non-clean) rebuild therefore
|
|
33
33
|
leaves those committed dep DLLs untouched. Do NOT wipe
|
|
34
|
-
|
|
35
|
-
Unity-validated set
|
|
36
|
-
|
|
34
|
+
Runtime/Analyzers/ wholesale; the committed dep bytes are the proven,
|
|
35
|
+
Unity-validated set (notably for Unity 2021's analyzer loader) and are
|
|
36
|
+
not reproduced by this 3.8.0-pinned build.
|
|
37
37
|
|
|
38
|
-
AnalyzerPayloadOutputDir defaults to
|
|
38
|
+
AnalyzerPayloadOutputDir defaults to Runtime/Analyzers for local refresh
|
|
39
39
|
builds. CI freshness checks pass a temp directory so builds do not dirty
|
|
40
40
|
the worktree. CopyAnalyzerPayload=false disables this target for tests
|
|
41
41
|
that reference this project but do not validate the shipped payload.
|
|
42
42
|
|
|
43
|
-
The shipped
|
|
44
|
-
assemblies carry the
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
The shipped Runtime/Analyzers/*.dll.meta files for the two analyzer
|
|
44
|
+
assemblies carry the RoslynAnalyzer label directly, so Unity scopes the
|
|
45
|
+
source generator to the DxMessaging runtime assembly and every assembly
|
|
46
|
+
that references it (including the predefined Assembly-CSharp), so
|
|
47
|
+
nothing is copied into the consumer's project. -->
|
|
47
48
|
<Target
|
|
48
49
|
Name="PostBuildCopyAnalyzers"
|
|
49
50
|
AfterTargets="Build"
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 200" width="800" height="200" role="img" aria-labelledby="dxmsgBannerTitle" aria-describedby="dxmsgBannerDesc">
|
|
2
|
+
<title id="dxmsgBannerTitle">DxMessaging: decoupled Unity messaging</title>
|
|
3
|
+
<desc id="dxmsgBannerDesc">A DxKit-family amber DxMessaging banner for decoupled, simple Unity systems.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="dxBannerBackground" x1="0" y1="0" x2="800" y2="200" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop stop-color="#0d1117"/>
|
|
7
|
+
<stop offset="0.62" stop-color="#10151d"/>
|
|
8
|
+
<stop offset="1" stop-color="#1b1813"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="dxBannerAmber" x1="40" y1="32" x2="742" y2="164" gradientUnits="userSpaceOnUse">
|
|
11
|
+
<stop stop-color="#ffd48e"/>
|
|
12
|
+
<stop offset="0.48" stop-color="#f4a836"/>
|
|
13
|
+
<stop offset="1" stop-color="#b07d1f"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
<filter id="dxBannerSoftShadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
16
|
+
<feDropShadow dx="0" dy="10" stdDeviation="12" flood-color="#000000" flood-opacity="0.32"/>
|
|
17
|
+
</filter>
|
|
18
|
+
</defs>
|
|
19
|
+
|
|
20
|
+
<rect width="800" height="200" fill="url(#dxBannerBackground)"/>
|
|
21
|
+
<path d="M0 150 C112 126 178 170 302 142 C444 110 538 134 800 72 L800 200 L0 200 Z" fill="#f4a836" opacity="0.06"/>
|
|
22
|
+
<path d="M0 38 C154 66 274 28 414 52 C558 78 650 62 800 34" fill="none" stroke="#f4a836" stroke-width="1.2" opacity="0.2"/>
|
|
23
|
+
<path d="M0 58 C168 88 296 48 432 72 C568 96 658 82 800 54" fill="none" stroke="#ffd48e" stroke-width="1.2" opacity="0.12"/>
|
|
24
|
+
|
|
25
|
+
<g transform="translate(34 42)" filter="url(#dxBannerSoftShadow)">
|
|
26
|
+
<polygon points="44,0 82,22 82,66 44,88 6,66 6,22" fill="#0d1117" stroke="#222b36" stroke-width="1.5" stroke-linejoin="round"/>
|
|
27
|
+
<polygon points="44,7 76,25 76,63 44,81 12,63 12,25" fill="none" stroke="url(#dxBannerAmber)" stroke-width="3" stroke-linejoin="round"/>
|
|
28
|
+
<path d="M44 44 L44 18 M44 44 L70 60 M44 44 L18 60" stroke="#ffd48e" stroke-width="2.8" stroke-linecap="round"/>
|
|
29
|
+
<circle cx="44" cy="15" r="4.3" fill="#ffd48e"/>
|
|
30
|
+
<circle cx="74" cy="62" r="4.3" fill="#ffd48e"/>
|
|
31
|
+
<circle cx="14" cy="62" r="4.3" fill="#ffd48e"/>
|
|
32
|
+
<circle cx="44" cy="44" r="7" fill="#ffd48e"/>
|
|
33
|
+
</g>
|
|
34
|
+
|
|
35
|
+
<g transform="translate(132 40)">
|
|
36
|
+
<text x="0" y="0" font-family="'JetBrains Mono', 'SF Mono', monospace" font-size="10" font-weight="700" letter-spacing="0.5" fill="#9aa3af">UNITY · C#</text>
|
|
37
|
+
<text x="0" y="44" font-family="'Space Grotesk', 'IBM Plex Sans', 'Segoe UI', sans-serif" font-size="44" font-weight="700" letter-spacing="0" fill="#e9eef4">DxMessaging</text>
|
|
38
|
+
<text x="0" y="76" font-family="'IBM Plex Sans', 'Segoe UI', sans-serif" font-size="17" font-weight="700" letter-spacing="0" fill="#f4a836">Decoupled, simple systems.</text>
|
|
39
|
+
<text x="0" y="100" font-family="'IBM Plex Sans', 'Segoe UI', sans-serif" font-size="13" font-weight="500" letter-spacing="0" fill="#9aa3af">Typed routes. Managed listeners. Editor visibility.</text>
|
|
40
|
+
</g>
|
|
41
|
+
|
|
42
|
+
<g transform="translate(132 158)" font-family="'IBM Plex Sans', 'Segoe UI', sans-serif" font-size="12" font-weight="800">
|
|
43
|
+
<rect x="0" y="0" width="84" height="28" rx="8" fill="#f4a836"/>
|
|
44
|
+
<text x="42" y="18" text-anchor="middle" fill="#0d1117">Simple</text>
|
|
45
|
+
<rect x="96" y="0" width="58" height="28" rx="8" fill="none" stroke="#4a5462" stroke-width="1.5"/>
|
|
46
|
+
<text x="125" y="18" text-anchor="middle" fill="#c9d1d9">MIT</text>
|
|
47
|
+
<!-- Version text must contain vX.Y.Z for version sync. -->
|
|
48
|
+
<rect x="166" y="0" width="76" height="28" rx="8" fill="#0c1016" stroke="#232c38" stroke-width="1"/>
|
|
49
|
+
<text data-sync="version" x="204" y="18" text-anchor="middle" font-family="'JetBrains Mono', 'SF Mono', monospace" font-size="11" font-weight="800" fill="#e9eef4">v3.2.1</text>
|
|
50
|
+
</g>
|
|
51
|
+
|
|
52
|
+
<g transform="translate(536 40)" filter="url(#dxBannerSoftShadow)">
|
|
53
|
+
<rect x="0" y="0" width="226" height="126" rx="8" fill="#0c1016" stroke="#232c38"/>
|
|
54
|
+
<text x="18" y="26" font-family="'JetBrains Mono', 'SF Mono', monospace" font-size="10" font-weight="800" letter-spacing="0.5" fill="#e9eef4">ONE BUS · THREE ROUTES</text>
|
|
55
|
+
<rect x="18" y="44" width="5" height="68" rx="2.5" fill="url(#dxBannerAmber)"/>
|
|
56
|
+
<g font-family="'IBM Plex Sans', 'Segoe UI', sans-serif" font-size="12" font-weight="700">
|
|
57
|
+
<g>
|
|
58
|
+
<circle cx="32" cy="54" r="4.5" fill="#7fa6d8"/>
|
|
59
|
+
<line x1="40" y1="54" x2="118" y2="54" stroke="#7fa6d8" stroke-width="2" stroke-linecap="round" stroke-dasharray="2 4" opacity="0.75"/>
|
|
60
|
+
<polygon points="120,54 113,50.5 113,57.5" fill="#7fa6d8"/>
|
|
61
|
+
<text x="132" y="58" fill="#7fa6d8">Untargeted</text>
|
|
62
|
+
</g>
|
|
63
|
+
<g>
|
|
64
|
+
<circle cx="32" cy="78" r="4.5" fill="#ec4661"/>
|
|
65
|
+
<line x1="40" y1="78" x2="118" y2="78" stroke="#ec4661" stroke-width="2" stroke-linecap="round" stroke-dasharray="2 4" opacity="0.75"/>
|
|
66
|
+
<polygon points="120,78 113,74.5 113,81.5" fill="#ec4661"/>
|
|
67
|
+
<text x="132" y="82" fill="#ec4661">Targeted</text>
|
|
68
|
+
</g>
|
|
69
|
+
<g>
|
|
70
|
+
<circle cx="32" cy="102" r="4.5" fill="#7fb88a"/>
|
|
71
|
+
<line x1="40" y1="102" x2="118" y2="102" stroke="#7fb88a" stroke-width="2" stroke-linecap="round" stroke-dasharray="2 4" opacity="0.75"/>
|
|
72
|
+
<polygon points="120,102 113,98.5 113,105.5" fill="#7fb88a"/>
|
|
73
|
+
<text x="132" y="106" fill="#7fb88a">Broadcast</text>
|
|
74
|
+
</g>
|
|
75
|
+
</g>
|
|
76
|
+
</g>
|
|
77
|
+
|
|
78
|
+
<text x="762" y="190" text-anchor="end" font-family="'IBM Plex Sans', 'Segoe UI', sans-serif" font-size="10" font-weight="700" letter-spacing="0" fill="#6b7480">Wallstop Studios</text>
|
|
79
|
+
</svg>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 4c1ba6b3e8994dc41b8264e9001eb49f
|
|
3
|
+
ScriptedImporter:
|
|
4
|
+
internalIDToNameTable: []
|
|
5
|
+
externalObjects: {}
|
|
6
|
+
serializedVersion: 2
|
|
7
|
+
userData:
|
|
8
|
+
assetBundleName:
|
|
9
|
+
assetBundleVariant:
|
|
10
|
+
script: {fileID: 12408, guid: 0000000000000000e000000000000000, type: 0}
|
|
11
|
+
svgType: 3
|
|
12
|
+
texturedSpriteMeshType: 0
|
|
13
|
+
svgPixelsPerUnit: 100
|
|
14
|
+
gradientResolution: 64
|
|
15
|
+
alignment: 0
|
|
16
|
+
customPivot: {x: 0, y: 0}
|
|
17
|
+
generatePhysicsShape: 0
|
|
18
|
+
viewportOptions: 0
|
|
19
|
+
preserveViewport: 0
|
|
20
|
+
advancedMode: 0
|
|
21
|
+
tessellationMode: 1
|
|
22
|
+
predefinedResolutionIndex: 1
|
|
23
|
+
targetResolution: 1080
|
|
24
|
+
resolutionMultiplier: 1
|
|
25
|
+
stepDistance: 10
|
|
26
|
+
samplingStepDistance: 100
|
|
27
|
+
maxCordDeviationEnabled: 0
|
|
28
|
+
maxCordDeviation: 1
|
|
29
|
+
maxTangentAngleEnabled: 0
|
|
30
|
+
maxTangentAngle: 5
|
|
31
|
+
keepTextureAspectRatio: 1
|
|
32
|
+
textureSize: 256
|
|
33
|
+
textureWidth: 256
|
|
34
|
+
textureHeight: 256
|
|
35
|
+
wrapMode: 0
|
|
36
|
+
filterMode: 1
|
|
37
|
+
sampleCount: 4
|
|
38
|
+
preserveSVGImageAspect: 0
|
|
39
|
+
useSVGPixelsPerUnit: 0
|
|
40
|
+
spriteData:
|
|
41
|
+
TessellationDetail: 0
|
|
42
|
+
SpriteName:
|
|
43
|
+
SpritePivot: {x: 0, y: 0}
|
|
44
|
+
SpriteAlignment: 0
|
|
45
|
+
SpriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
46
|
+
SpriteRect:
|
|
47
|
+
serializedVersion: 2
|
|
48
|
+
x: 0
|
|
49
|
+
y: 0
|
|
50
|
+
width: 0
|
|
51
|
+
height: 0
|
|
52
|
+
SpriteID:
|
|
53
|
+
PhysicsOutlines: []
|
package/docs/images.meta
ADDED
package/docs.meta
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "com.wallstop-studios.dxmessaging",
|
|
3
|
-
"version": "3.1
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"displayName": "DxMessaging",
|
|
5
5
|
"description": "Synchronous Event Bus for Unity",
|
|
6
6
|
"unity": "2021.3",
|
|
@@ -45,6 +45,10 @@
|
|
|
45
45
|
"SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.meta",
|
|
46
46
|
"CHANGELOG.md",
|
|
47
47
|
"CHANGELOG.md.meta",
|
|
48
|
+
"docs.meta",
|
|
49
|
+
"docs/images.meta",
|
|
50
|
+
"docs/images/DxMessaging-banner.svg",
|
|
51
|
+
"docs/images/DxMessaging-banner.svg.meta",
|
|
48
52
|
"LICENSE.md",
|
|
49
53
|
"LICENSE.md.meta",
|
|
50
54
|
"README.md",
|
|
@@ -61,12 +65,15 @@
|
|
|
61
65
|
"format": "prettier --write \"**/*.{md,markdown,json,asmdef,asmref,yml,yaml}\"",
|
|
62
66
|
"format:check": "prettier --check \"**/*.{md,markdown,json,asmdef,asmref,yml,yaml}\"",
|
|
63
67
|
"lint:markdown": "markdownlint-cli2 \"**/*.md\" \"**/*.markdown\"",
|
|
64
|
-
"check:spelling": "cspell --no-progress --no-summary
|
|
68
|
+
"check:spelling": "cspell --no-progress --no-summary .",
|
|
65
69
|
"sync:banner": "node scripts/sync-banner-version.js",
|
|
70
|
+
"check:banner": "node scripts/sync-banner-version.js --check",
|
|
66
71
|
"update:llms-txt": "node scripts/update-llms-txt.js",
|
|
67
72
|
"check:llms-txt": "node scripts/update-llms-txt.js --check",
|
|
68
73
|
"update:skills-index": "node scripts/generate-skills-index.js && prettier --write .llm/skills/index.md",
|
|
69
74
|
"check:skills-index": "node scripts/generate-skills-index.js --check",
|
|
75
|
+
"update:issue-template-versions": "node scripts/generate-issue-template-versions.js",
|
|
76
|
+
"check:issue-template-versions": "node scripts/generate-issue-template-versions.js --check",
|
|
70
77
|
"refresh:analyzers": "node scripts/analyzers/verify-analyzer-payload.js --write",
|
|
71
78
|
"check:analyzers": "node scripts/analyzers/verify-analyzer-payload.js --check",
|
|
72
79
|
"fix:csharp-underscores": "node scripts/fix-csharp-underscore-methods.js",
|
|
@@ -75,12 +82,12 @@
|
|
|
75
82
|
"validate:js-loc-budget": "node scripts/validate-js-loc-budget.js",
|
|
76
83
|
"validate:npm-meta": "node scripts/validate-npm-meta.js",
|
|
77
84
|
"validate:docs:strict": "python3 -m venv .artifacts/docs-venv && .artifacts/docs-venv/bin/python -m pip install -r requirements-docs.txt && .artifacts/docs-venv/bin/mkdocs build --strict --site-dir _site",
|
|
78
|
-
"validate:all": "npm run validate:asmdef-references && npm run validate:unity-versions && npm run validate:js-loc-budget && npm run validate:npm-meta && npm run check:analyzers && npm run check:llms-txt && npm run check:skills-index"
|
|
85
|
+
"validate:all": "npm run validate:asmdef-references && npm run validate:unity-versions && npm run validate:js-loc-budget && npm run check:banner && npm run validate:npm-meta && npm run check:analyzers && npm run check:llms-txt && npm run check:skills-index && npm run check:issue-template-versions"
|
|
79
86
|
},
|
|
80
87
|
"devDependencies": {
|
|
81
88
|
"cspell": "10.0.1",
|
|
82
|
-
"markdownlint-cli2": "0.
|
|
83
|
-
"prettier": "3.
|
|
89
|
+
"markdownlint-cli2": "0.23.0",
|
|
90
|
+
"prettier": "3.9.4"
|
|
84
91
|
},
|
|
85
92
|
"samples": [
|
|
86
93
|
{
|
|
@@ -93,6 +100,11 @@
|
|
|
93
100
|
"description": "UI-driven message emissions and a global observer demonstrating inspector diagnostics and RegisterGlobalAcceptAll.",
|
|
94
101
|
"path": "Samples~/UI Buttons + Inspector"
|
|
95
102
|
},
|
|
103
|
+
{
|
|
104
|
+
"displayName": "Diagnostics Tooling Exerciser",
|
|
105
|
+
"description": "Deterministic scene that drives Message Monitor, Flow Graph, Inspector diagnostics, and Project Settings with all DxMessaging route kinds.",
|
|
106
|
+
"path": "Samples~/Diagnostics Tooling Exerciser"
|
|
107
|
+
},
|
|
96
108
|
{
|
|
97
109
|
"displayName": "Dependency Injection",
|
|
98
110
|
"description": "Integration samples for Zenject, VContainer, and Reflex showing IMessageRegistrationBuilder usage with container lifecycles.",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|