@volter/editor-game 0.5.65 → 0.5.67
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/contributions/audio-unlock.service.ts +2 -2
- package/contributions/autoplay.service.ts +1 -1
- package/contributions/bridge.command.ts +3 -3
- package/contributions/canvas/component-board.service.ts +16 -0
- package/contributions/canvas/design-time-mount.service.ts +45 -0
- package/contributions/canvas-story-capture.service.ts +12 -0
- package/contributions/edit-mode-audio.service.ts +2 -2
- package/contributions/edit-mode-networking.service.ts +1 -1
- package/contributions/gameplay.command.ts +4 -4
- package/contributions/generation.service.ts +3 -3
- package/contributions/generations.status.tsx +1 -1
- package/contributions/godot.palette.json +99 -0
- package/contributions/godot.style.ts +82 -0
- package/contributions/godot.view.ts +75 -0
- package/contributions/ingest.service.ts +4 -4
- package/contributions/instances.command.ts +1 -1
- package/contributions/navmesh.menu.ts +1 -1
- package/contributions/network-observer.service.ts +14 -0
- package/contributions/play.command.ts +11 -5
- package/contributions/react/component-board.service.ts +1 -1
- package/contributions/react/design-time-mount.service.ts +1 -1
- package/contributions/react/react-inspector.service.ts +2 -2
- package/contributions/scene-document.service.ts +5 -5
- package/contributions/state-watch.menu.ts +1 -1
- package/contributions/state-watch.utility.tsx +1 -1
- package/contributions/team-playtest.service.ts +4 -4
- package/contributions/three/component-board.service.ts +1 -1
- package/contributions/three/component-verbs.command.ts +8 -8
- package/contributions/three/three-authoring.service.ts +8 -5
- package/contributions/three-story-capture.service.ts +12 -0
- package/contributions/unity.palette.json +102 -0
- package/contributions/unity.style.ts +72 -0
- package/contributions/unity.view.ts +82 -0
- package/contributions/unreal.palette.json +105 -0
- package/contributions/unreal.style.ts +66 -0
- package/contributions/unreal.view.ts +93 -0
- package/dist-node/serving.mjs +16 -0
- package/package.json +33 -16
- package/serving/index.ts +27 -0
- package/src/asset-budget/AssetBudgetPanel.tsx +1 -1
- package/src/asset-budget/asset-budget-model.ts +4 -4
- package/src/asset-budget/optimize-apply.ts +7 -7
- package/src/audio/AudioDebuggerPanel.tsx +1 -1
- package/src/bridge/dispatch.ts +16 -16
- package/src/bridge/live-frames.ts +1 -1
- package/src/bridge/screenshot.ts +6 -6
- package/src/build/BuildProfilesPanel.tsx +3 -3
- package/src/canvas/canvas-board/CanvasBoardDocument.tsx +676 -0
- package/src/canvas/canvas-board/canvas-board-model.ts +407 -0
- package/src/canvas/canvas-board/canvas-component-board.ts +56 -0
- package/src/canvas/canvas-design-mount.ts +524 -0
- package/src/canvas/design-time-canvas-mount.ts +79 -0
- package/src/coverage/live-authoring-surface.ts +6 -6
- package/src/coverage/live-project-verbs.ts +2 -2
- package/src/coverage/native-system-coverage.ts +6 -6
- package/src/coverage/root-coverage.ts +1 -1
- package/src/coverage/session-coverage.ts +5 -5
- package/src/design-system-stories/ApplicationChrome.stories.tsx +5 -5
- package/src/design-system-stories/InspectorNarrowBodies.stories.tsx +13 -53
- package/src/edit-mode/edit-mode-audio.ts +4 -4
- package/src/edit-mode/edit-mode-networking.ts +2 -2
- package/src/game-document/GameCaptureFrameButton.tsx +2 -2
- package/src/game-document/GameDocument.tsx +2 -2
- package/src/game-document/GamePanel.tsx +8 -8
- package/src/game-document/InstanceInspectorPicker.tsx +2 -2
- package/src/game-document/crowd-debug.ts +1 -1
- package/src/game-document/device-preview.ts +10 -11
- package/src/game-document/physics-debug.ts +1 -1
- package/src/generation/GenerationActivity.tsx +6 -8
- package/src/generation/generation-documents.tsx +8 -8
- package/src/generation/generation-jobs.ts +2 -2
- package/src/generation/generation-presentation.ts +1 -1
- package/src/host/adapter-reach.ts +1 -1
- package/src/host/adapter-runtime-bindings.ts +97 -6
- package/src/host/api/configurations.ts +2 -2
- package/src/host/authoring/babylon-authoring-adapter.ts +8 -8
- package/src/host/authoring/contract-hierarchy-authoring.ts +1 -1
- package/src/host/authoring/contract-scenes-stories.ts +1 -1
- package/src/host/authoring/creation-site-related.ts +2 -2
- package/src/host/authoring/ephemeral-persistence.ts +1 -1
- package/src/host/authoring/gesture-persist.ts +2 -2
- package/src/host/authoring/ingest-data-writer.ts +1 -1
- package/src/host/authoring/ingest-source-persistence.ts +8 -8
- package/src/host/authoring/mount-isolated-pixi-screen.ts +1 -1
- package/src/host/authoring/mounted-authoring.ts +4 -4
- package/src/host/authoring/phaser-live-authoring-adapter.ts +4 -4
- package/src/host/authoring/pixi-authoring-adapter.ts +42 -17
- package/src/host/authoring/pixi-creation-site-write-target.ts +2 -2
- package/src/host/authoring/pixi-live-write-target.ts +7 -7
- package/src/host/authoring/pixi-source-identity.ts +3 -3
- package/src/host/authoring/pixi-source-write-target.ts +1614 -0
- package/src/host/authoring/pixi-still-presentation.ts +2 -2
- package/src/host/authoring/pixi-structure-history.ts +3 -3
- package/src/host/authoring/pixi-transform-channels.ts +16 -14
- package/src/host/authoring/source-persistence-backend.ts +6 -6
- package/src/host/authoring/struct-write-pipe.ts +3 -3
- package/src/host/binding-resolver.ts +8 -9
- package/src/host/browser-transpile.ts +2 -2
- package/src/host/canvas-entry-runtime.ts +59 -48
- package/src/host/canvas-preview-frames.ts +482 -0
- package/src/host/components/CameraAuthoringOverlay.tsx +1 -1
- package/src/host/components/HeaderTelemetry.tsx +9 -16
- package/src/host/components/PixiIsolationSceneContent.tsx +17 -16
- package/src/host/components/ThreeIsolationSceneContent.tsx +5 -5
- package/src/host/components/frame-debugger-model.ts +2 -2
- package/src/host/components/header-telemetry-model.ts +2 -2
- package/src/host/components/scene-document.tsx +29 -61
- package/src/host/components/utility-view-state.ts +1 -1
- package/src/host/components/world-root-stage-binding.tsx +17 -26
- package/src/host/components/world-root-stage.ts +130 -63
- package/src/host/coverage/capability-coverage.ts +13 -1
- package/src/host/coverage/game-contract-seam-evidence.ts +1 -1
- package/src/host/coverage/project-verb-coverage.ts +2 -17
- package/src/host/coverage/system-adapter-coverage.ts +4 -5
- package/src/host/design-system-stories/fixtures/editor-runtime.tsx +14 -8
- package/src/host/document-preview-three.ts +2 -2
- package/src/host/entry-adjudication.ts +6 -6
- package/src/host/game-css-scope-transform.ts +4 -0
- package/src/host/game-module-access.ts +1 -1
- package/src/host/game-realm-page.ts +16 -8
- package/src/host/game-realm-reclaim.ts +1 -1
- package/src/host/gameplay-export.ts +25 -14
- package/src/host/gameplay-recording.ts +5 -5
- package/src/host/gated-globals.ts +6 -6
- package/src/host/history/json-history-resource.ts +3 -3
- package/src/host/instance-extract-actions.ts +1 -1
- package/src/host/instance-fork-actions.ts +1 -1
- package/src/host/projection/dom.ts +2 -2
- package/src/host/projection/pixi.ts +25 -3
- package/src/host/r3f-entry-runtime.ts +65 -34
- package/src/host/react-mount-runtime.ts +8 -49
- package/src/host/realm-services.ts +2 -2
- package/src/host/roots/canvas-root.tsx +361 -0
- package/src/host/roots/module-root.ts +1 -1
- package/src/host/roots/r3f-root.tsx +473 -0
- package/src/host/roots/react-root.ts +9 -43
- package/src/host/scene-view-drawability.ts +2 -2
- package/src/host/served-bundle-runtime-modules.ts +1 -19
- package/src/host/server-log-bridge.ts +3 -3
- package/src/host/stories/mounted-story-viewport-source.ts +1 -1
- package/src/host/stories/pixi-story-model.ts +30 -0
- package/src/host/stories/story-media-captures.ts +46 -0
- package/src/host/stories/story-media-presence.ts +3 -3
- package/src/host/stories/story-pixi-preview.ts +408 -0
- package/src/host/stories/story-three-preview.ts +806 -0
- package/src/host/stories/three-story-captures.ts +35 -0
- package/src/host/story-three-preview-runtime.ts +56 -0
- package/src/host/three-ingest-runtime.ts +1 -1
- package/src/host/use-active-performance-source.ts +3 -3
- package/src/host/viewport-pose-memory.ts +1 -1
- package/src/host/viewport-root-presentation.ts +6 -5
- package/src/ingest/active-ingest.ts +2 -2
- package/src/ingest/authoring/ingest-dom-surface-authoring.ts +4 -4
- package/src/ingest/authoring/ingest-root-adapter.ts +13 -13
- package/src/ingest/capture-wait-report.ts +1 -1
- package/src/ingest/deferred-ingest-play.ts +11 -10
- package/src/ingest/discovery-public-ingest.ts +2 -2
- package/src/ingest/ingest-boot-viewport.ts +6 -8
- package/src/ingest/ingest-canvas-scene-document.tsx +17 -16
- package/src/ingest/ingest-canvas-scene.ts +5 -8
- package/src/ingest/ingest-evidence-hook.ts +1 -1
- package/src/ingest/ingest-frame-snapshot.ts +1 -1
- package/src/ingest/ingest-play-control.ts +4 -4
- package/src/ingest/ingest-render-debug.ts +11 -11
- package/src/ingest/ingest-siblings.ts +16 -28
- package/src/ingest/module-mode.ts +18 -19
- package/src/ingest/mount-canvas-ingest-root.ts +27 -27
- package/src/ingest/mount-coverage.ts +4 -4
- package/src/ingest/mount-dom-ingest-root.ts +16 -16
- package/src/ingest/mount-ingest-root.ts +14 -14
- package/src/ingest/mount-three-ingest-root.ts +12 -12
- package/src/ingest/resolve-canvas.ts +1 -1
- package/src/ingest/served-html-boot.ts +1 -1
- package/src/ingest/surface-canvas.ts +1 -1
- package/src/ingest/unmount-ingest-root.ts +7 -7
- package/src/navmesh/navmesh-handler.ts +24 -16
- package/src/network/NetworkInspectorPanel.tsx +449 -14
- package/src/network/network-inspector-model.ts +14 -2
- package/src/play/play-log-events.ts +1 -1
- package/src/play/play-mode.ts +99 -142
- package/src/play/play-recording.ts +2 -2
- package/src/play/react-play-live-authoring.ts +3 -3
- package/src/play/run-selection.ts +93 -0
- package/src/play-bar/PlayBar.tsx +20 -39
- package/src/profiler/FrameDebuggerPanel.tsx +1 -1
- package/src/profiler/PerformancePanel.tsx +4 -4
- package/src/react/design-time-react-mount.ts +37 -85
- package/src/react/dom-authoring-adapter.ts +11 -11
- package/src/react/react-inspector-section.tsx +13 -13
- package/src/react/react-world-authoring-adapter.ts +31 -143
- package/src/react/story-documents/story-documents.tsx +18 -22
- package/src/react/ui-board-document.tsx +10 -11
- package/src/react/ui-component-board.ts +5 -5
- package/src/runtime/adapter/audio-meter.ts +21 -0
- package/src/runtime/adapter/first-party-audio-system.ts +230 -0
- package/src/runtime/adapter/ingest/contract-debug-adapter.ts +114 -0
- package/src/runtime/adapter/ingest/contract-system-adapters.ts +256 -0
- package/src/runtime/adapter/ingest/merge-debug-adapters.ts +197 -0
- package/src/runtime/adapter/ingest/observation-debug-adapter.ts +162 -0
- package/src/runtime/adapter/ingest/upstream-pin.ts +51 -0
- package/src/runtime/adapter/native-debug-module.ts +498 -0
- package/src/runtime/audio/bus-mixer.ts +161 -0
- package/src/runtime/audio/pose-guard.ts +80 -0
- package/src/runtime/core/frame-pacing.ts +126 -0
- package/src/runtime/core/game-loop.ts +225 -0
- package/src/runtime/core/game-scoped-slot.ts +28 -0
- package/src/runtime/core/seeded-random.ts +162 -0
- package/src/runtime/core/sim-clock.ts +391 -0
- package/src/runtime/core/system-runner.ts +269 -0
- package/src/runtime/core/types.ts +104 -0
- package/src/runtime/create-runtime.ts +1128 -0
- package/src/runtime/debug-bridge.ts +570 -0
- package/src/runtime/debug-registry.ts +899 -0
- package/src/runtime/dev/chrome-trace.ts +153 -0
- package/src/runtime/dev/instruments.ts +403 -0
- package/src/runtime/dev/logger.ts +119 -0
- package/src/runtime/dev/performance-profiler.ts +367 -0
- package/src/runtime/dev/register-render-vitals.ts +276 -0
- package/src/runtime/dev/render-census.ts +354 -0
- package/src/runtime/dev/render-debug-adapter.ts +218 -0
- package/src/runtime/dev/render-memory.ts +226 -0
- package/src/runtime/dev/render-vitals.ts +338 -0
- package/src/runtime/dev/static-batch-advisor.ts +188 -0
- package/src/runtime/dev/webgl-frame-capture.ts +366 -0
- package/src/runtime/dev/webgl-gpu-timer.ts +53 -0
- package/src/runtime/dev-build.ts +47 -0
- package/src/runtime/game.ts +1636 -0
- package/src/runtime/gameplay-rng-trap.ts +135 -0
- package/src/runtime/host-context.ts +64 -0
- package/src/runtime/input-router.ts +169 -0
- package/src/runtime/mount-manifest.ts +480 -0
- package/src/runtime/pixi/authoring.ts +706 -0
- package/src/runtime/pixi/ingest.ts +116 -0
- package/src/runtime/pixi/physics-registry.ts +49 -0
- package/src/runtime/pixi/render-pass-bracket.ts +117 -0
- package/src/runtime/pixi/scene-capture.ts +179 -0
- package/src/runtime/pixi/system-adapters.ts +69 -0
- package/src/runtime/playtest.ts +22 -0
- package/src/runtime/presentation.ts +141 -0
- package/src/runtime/render-control.ts +642 -0
- package/src/runtime/render-seed.ts +77 -0
- package/src/runtime/run-ticks-settled.ts +73 -0
- package/src/runtime/setup/setup-audio.ts +72 -0
- package/src/services/audio-pose-guard.ts +2 -2
- package/src/services/game-audio.ts +152 -0
- package/src/services/game-network.ts +657 -0
- package/src/services/game-physics.ts +334 -0
- package/src/state-watch/StateWatchPanel.tsx +1 -1
- package/src/three/authoring/camera-runtime-inspector-section.tsx +4 -3
- package/src/three/authoring/constraint-inspector-section.tsx +8 -7
- package/src/three/authoring/model-asset-inspector-section.tsx +14 -17
- package/src/three/authoring/oid-source-persistence.ts +13 -13
- package/src/three/authoring/r3f-design-session.ts +79 -61
- package/src/three/authoring/r3f-source-authoring-adapter.ts +112 -108
- package/src/three/authoring/reflection-probe-inspector-section.tsx +5 -4
- package/src/three/authoring/spatial-joint-handles.ts +1 -1
- package/src/three/authoring/spatial-lod-handles.ts +1 -1
- package/src/three/authoring/spatial-particle-handles.ts +1 -1
- package/src/three/authoring/three-authoring-adapter.ts +33 -33
- package/src/three/component-verbs/extract-menu.ts +8 -7
- package/src/three/component-verbs/fork-menu.ts +8 -7
- package/src/three/component-verbs/internals-menu.ts +3 -3
- package/src/three/drei-asset-caches.ts +13 -0
- package/src/three/story-documents/three-story-documents.tsx +24 -34
- package/src/three/three-board/ThreeBoardDocument.tsx +25 -25
- package/src/three/three-board/board-scene.ts +7 -7
- package/src/three/three-board/three-component-board.ts +5 -5
- package/contributions/react/pasteboard.action.ts +0 -41
- package/contributions/xstate-behavior.action.ts +0 -42
- package/contributions/xstate-behavior.document.tsx +0 -73
- package/contributions/xstate-behavior.inspector.tsx +0 -28
- package/contributions/xstate-behavior.menu.ts +0 -23
- package/src/react/pasteboard-materialize.ts +0 -154
- package/src/services/game-audio-unlock.ts +0 -48
- package/src/xstate/XStateBehaviorSection.tsx +0 -130
- package/src/xstate/XStateMachineInspector.tsx +0 -566
- package/src/xstate/character-animation-machine.fixture.ts +0 -74
- package/src/xstate/live-behaviors.ts +0 -106
- package/src/xstate/use-live-actor-state.ts +0 -44
- package/src/xstate/xstate-graph.ts +0 -235
- package/src/xstate/xstate-layout.ts +0 -76
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// serving/index.ts
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
var GAME_MODULE_ACCESS = "@editor/game-module-access";
|
|
4
|
+
var ALIASED_GAME_MODULE_ACCESS = /\/editor-core\/src\/game-module-access$/;
|
|
5
|
+
var servingPlugins = (_services) => [
|
|
6
|
+
{
|
|
7
|
+
name: "volter-editor-game:game-module-access",
|
|
8
|
+
enforce: "pre",
|
|
9
|
+
resolveId(id) {
|
|
10
|
+
return id === GAME_MODULE_ACCESS || ALIASED_GAME_MODULE_ACCESS.test(id) ? fileURLToPath(new URL("../src/host/game-module-access.ts", import.meta.url)) : null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
];
|
|
14
|
+
export {
|
|
15
|
+
servingPlugins
|
|
16
|
+
};
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@volter/editor-game",
|
|
3
3
|
"author": "Volter AI, Inc.",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
|
-
"version": "0.5.
|
|
5
|
+
"version": "0.5.67",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -15,14 +15,20 @@
|
|
|
15
15
|
},
|
|
16
16
|
"files": [
|
|
17
17
|
"src",
|
|
18
|
+
"serving",
|
|
18
19
|
"contributions",
|
|
20
|
+
"dist-node",
|
|
19
21
|
"LICENSE",
|
|
20
22
|
"NOTICE"
|
|
21
23
|
],
|
|
22
24
|
"exports": {
|
|
23
25
|
"./contributions/*": "./contributions/*",
|
|
24
26
|
"./*": "./src/*",
|
|
25
|
-
"./package.json": "./package.json"
|
|
27
|
+
"./package.json": "./package.json",
|
|
28
|
+
"./host/canvas-preview-frames": "./src/host/canvas-preview-frames.ts",
|
|
29
|
+
"./host/stories/pixi-story-model": "./src/host/stories/pixi-story-model.ts",
|
|
30
|
+
"./host/stories/story-pixi-preview": "./src/host/stories/story-pixi-preview.ts",
|
|
31
|
+
"./host/stories/story-media-captures": "./src/host/stories/story-media-captures.ts"
|
|
26
32
|
},
|
|
27
33
|
"vgai": {
|
|
28
34
|
"contributions": [
|
|
@@ -31,6 +37,7 @@
|
|
|
31
37
|
"./contributions/asset-budget.document.tsx",
|
|
32
38
|
"./contributions/asset-budget.menu.ts",
|
|
33
39
|
"./contributions/audio-unlock.service.ts",
|
|
40
|
+
"./contributions/network-observer.service.ts",
|
|
34
41
|
"./contributions/audio.utility.tsx",
|
|
35
42
|
"./contributions/autoplay.service.ts",
|
|
36
43
|
"./contributions/bridge.command.ts",
|
|
@@ -51,6 +58,8 @@
|
|
|
51
58
|
"./contributions/gameplay.command.ts",
|
|
52
59
|
"./contributions/generation.service.ts",
|
|
53
60
|
"./contributions/generations.status.tsx",
|
|
61
|
+
"./contributions/godot.style.ts",
|
|
62
|
+
"./contributions/godot.view.ts",
|
|
54
63
|
"./contributions/ingest.service.ts",
|
|
55
64
|
"./contributions/instances.command.ts",
|
|
56
65
|
"./contributions/navmesh.menu.ts",
|
|
@@ -66,13 +75,14 @@
|
|
|
66
75
|
"./contributions/state-watch.utility.tsx",
|
|
67
76
|
"./contributions/team-playtest.service.ts",
|
|
68
77
|
"./contributions/transport.header.tsx",
|
|
69
|
-
"./contributions/
|
|
70
|
-
"./contributions/
|
|
71
|
-
"./contributions/
|
|
72
|
-
"./contributions/
|
|
78
|
+
"./contributions/unity.style.ts",
|
|
79
|
+
"./contributions/unity.view.ts",
|
|
80
|
+
"./contributions/unreal.style.ts",
|
|
81
|
+
"./contributions/unreal.view.ts",
|
|
82
|
+
"./contributions/canvas/component-board.service.ts",
|
|
83
|
+
"./contributions/canvas/design-time-mount.service.ts",
|
|
73
84
|
"./contributions/react/component-board.service.ts",
|
|
74
85
|
"./contributions/react/design-time-mount.service.ts",
|
|
75
|
-
"./contributions/react/pasteboard.action.ts",
|
|
76
86
|
"./contributions/react/react-inspector.service.ts",
|
|
77
87
|
"./contributions/react/story-documents.service.ts",
|
|
78
88
|
"./contributions/three/camera-runtime.inspector.tsx",
|
|
@@ -83,16 +93,19 @@
|
|
|
83
93
|
"./contributions/three/model-asset-sections.service.ts",
|
|
84
94
|
"./contributions/three/reflection-probe-capture.inspector.tsx",
|
|
85
95
|
"./contributions/three/story-documents.service.ts",
|
|
86
|
-
"./contributions/three/three-authoring.service.ts"
|
|
87
|
-
|
|
96
|
+
"./contributions/three/three-authoring.service.ts",
|
|
97
|
+
"./contributions/three-story-capture.service.ts",
|
|
98
|
+
"./contributions/canvas-story-capture.service.ts"
|
|
99
|
+
],
|
|
100
|
+
"serving": "./dist-node/serving.mjs"
|
|
88
101
|
},
|
|
89
102
|
"dependencies": {
|
|
90
|
-
"@volter/editor-
|
|
91
|
-
"@volter/editor-
|
|
92
|
-
"@volter/editor-
|
|
93
|
-
"@volter/
|
|
94
|
-
"@volter/
|
|
95
|
-
"@
|
|
103
|
+
"@volter/editor-sdk": "0.5.67",
|
|
104
|
+
"@volter/editor-project": "0.5.67",
|
|
105
|
+
"@volter/editor-threejs": "0.5.67",
|
|
106
|
+
"@volter/threejs-runtime": "0.5.67",
|
|
107
|
+
"@volter/game-runtime": "0.5.67",
|
|
108
|
+
"@colyseus/msgpackr": "^1.11.3",
|
|
96
109
|
"@colyseus/schema": "^4.0.14",
|
|
97
110
|
"@colyseus/sdk": "^0.17.34",
|
|
98
111
|
"@fortawesome/free-solid-svg-icons": "^7.2.0",
|
|
@@ -106,6 +119,7 @@
|
|
|
106
119
|
"draco3d": "^1.5.7",
|
|
107
120
|
"esbuild-wasm": "0.25.12",
|
|
108
121
|
"fastnoise-lite": "^1.1.1",
|
|
122
|
+
"loglayer": "^9.1.0",
|
|
109
123
|
"mediabunny": "1.56.2",
|
|
110
124
|
"meshoptimizer": "^1.2.0",
|
|
111
125
|
"three": "^0.180.0",
|
|
@@ -122,7 +136,8 @@
|
|
|
122
136
|
"recast-navigation": "^0.43.0",
|
|
123
137
|
"xstate": "^5.32.4",
|
|
124
138
|
"zod": "^4.3.6",
|
|
125
|
-
"@fortawesome/fontawesome-svg-core": "^7.2.0"
|
|
139
|
+
"@fortawesome/fontawesome-svg-core": "^7.2.0",
|
|
140
|
+
"@volter/editor-react": "0.5.67"
|
|
126
141
|
},
|
|
127
142
|
"peerDependencies": {
|
|
128
143
|
"@sparkjsdev/spark": "^2.1.0",
|
|
@@ -134,6 +149,8 @@
|
|
|
134
149
|
"@playwright/test": "^1.58.2"
|
|
135
150
|
},
|
|
136
151
|
"scripts": {
|
|
152
|
+
"build": "node scripts/build-serving.mjs",
|
|
153
|
+
"prepack": "npm run build",
|
|
137
154
|
"typecheck": "tsc -p tsconfig.json"
|
|
138
155
|
},
|
|
139
156
|
"peerDependenciesMeta": {
|
package/serving/index.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@volter/editor-game`'s server half (`package.json#vgai.serving`): the one deep specifier a
|
|
3
|
+
* game's own contributions name, `@editor/game-module-access` (the template's
|
|
4
|
+
* `src/contributions/use-game-modules.ts`), resolved to this package's module. The page
|
|
5
|
+
* bundle maps the same specifier for its own copy (`src/host/served-bundle-runtime-modules.ts`);
|
|
6
|
+
* a contribution the session's Vite serves needs the file.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import type { ProjectServingServices } from '@volter/editor-sdk/session/project-serving';
|
|
11
|
+
|
|
12
|
+
const GAME_MODULE_ACCESS = '@editor/game-module-access';
|
|
13
|
+
/** The kit's `@editor/*` alias runs before any plugin and rewrites the specifier to the kit's
|
|
14
|
+
* own `src/`, where this module no longer lives; that form is this package's too. */
|
|
15
|
+
const ALIASED_GAME_MODULE_ACCESS = /\/editor-core\/src\/game-module-access$/;
|
|
16
|
+
|
|
17
|
+
export const servingPlugins = (_services: ProjectServingServices): readonly unknown[] => [
|
|
18
|
+
{
|
|
19
|
+
name: 'volter-editor-game:game-module-access',
|
|
20
|
+
enforce: 'pre',
|
|
21
|
+
resolveId(id: string): string | null {
|
|
22
|
+
return id === GAME_MODULE_ACCESS || ALIASED_GAME_MODULE_ACCESS.test(id)
|
|
23
|
+
? fileURLToPath(new URL('../src/host/game-module-access.ts', import.meta.url))
|
|
24
|
+
: null;
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
];
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* rendered with an explicit `≥`, inspection failures with their reason).
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { getStorageBackend } from '@volter/editor-
|
|
15
|
+
import { getStorageBackend } from '@volter/editor-sdk/kit/storage/index';
|
|
16
16
|
import { editorHost } from '@volter/editor-sdk/host';
|
|
17
17
|
import {
|
|
18
18
|
accent,
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
* raw attribute/index bytes for geometry.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
import { sha256Hex } from '@volter/editor-
|
|
25
|
-
import type
|
|
24
|
+
import { sha256Hex } from '@volter/editor-sdk/kit/bytes-codec';
|
|
25
|
+
import { isPublicRootedBackend, type StorageBackend } from '@volter/editor-sdk/kit/storage-types';
|
|
26
26
|
import type { Document } from '@gltf-transform/core';
|
|
27
27
|
import { inspect } from '@gltf-transform/functions';
|
|
28
28
|
import { getGltfIO } from './gltf-io';
|
|
@@ -288,7 +288,7 @@ const MANIFEST_NAME = 'vgai.project.json';
|
|
|
288
288
|
* The manifest is the ONLY JSON document that owns asset references. An
|
|
289
289
|
* `.inputmap.json` was scanned as one too, and could not be. `collectStringPaths`
|
|
290
290
|
* below yields string VALUES only (action names are record KEYS — never
|
|
291
|
-
* candidates), and every string value
|
|
291
|
+
* candidates), and every string value an input map carries is a binding
|
|
292
292
|
* `type` literal, a `KeyboardEvent.code`, a `direction`/`valueType` enum, or an
|
|
293
293
|
* injected/touch `sourceId`; button/axis indexes are numbers. None of them is a
|
|
294
294
|
* path, so the only value that could ever have resolved to an asset was a
|
|
@@ -482,7 +482,7 @@ export async function collectProjectBudgetSource(
|
|
|
482
482
|
// `/vgai.project.json` (`manifest-project.ts`) and the `.vgai/`-scoped
|
|
483
483
|
// `/__editor/vgai-file` route (`project-provenance.ts`). Anything
|
|
484
484
|
// unavailable stays honestly absent — no fabricated owners or stamps.
|
|
485
|
-
if (backend
|
|
485
|
+
if (isPublicRootedBackend(backend)) {
|
|
486
486
|
const ownerFiles: AssetBudgetFile[] = [];
|
|
487
487
|
const virtualTexts = new Map<string, string>();
|
|
488
488
|
try {
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
* happened, so the failure is returned for the UI to surface.
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
-
import { sha256Hex } from '@volter/editor-
|
|
24
|
-
import { assertEditorServerAnswered } from '@volter/editor-
|
|
25
|
-
import { sourceMutationAttribution } from '@volter/editor-
|
|
26
|
-
import { handleProjectMutationFailure } from '@volter/editor-
|
|
27
|
-
import type
|
|
23
|
+
import { sha256Hex } from '@volter/editor-sdk/kit/bytes-codec';
|
|
24
|
+
import { assertEditorServerAnswered } from '@volter/editor-sdk/kit/editor-server-response';
|
|
25
|
+
import { sourceMutationAttribution } from '@volter/editor-sdk/kit/editor-session-attribution';
|
|
26
|
+
import { handleProjectMutationFailure } from '@volter/editor-sdk/kit/source-conflict';
|
|
27
|
+
import { isPublicRootedBackend, type StorageBackend } from '@volter/editor-sdk/kit/storage-types';
|
|
28
28
|
import { invalidateCachedAsset } from '@volter/threejs-runtime/asset-loaders';
|
|
29
29
|
|
|
30
30
|
const PROVENANCE_PATH = '.vgai/provenance.json';
|
|
@@ -82,7 +82,7 @@ function ledgerAssetPath(storagePath: string): string {
|
|
|
82
82
|
* backend reaches the project root directly.
|
|
83
83
|
*/
|
|
84
84
|
async function readLedgerText(backend: StorageBackend): Promise<string | null> {
|
|
85
|
-
if (backend
|
|
85
|
+
if (isPublicRootedBackend(backend)) {
|
|
86
86
|
// NOT read through `editor-server-response.ts`: the GET half of this route
|
|
87
87
|
// answers `text/plain` (routes/project-source.ts) because it serves raw
|
|
88
88
|
// file bytes, and that reader's whole rule is "the editor server answers
|
|
@@ -99,7 +99,7 @@ async function readLedgerText(backend: StorageBackend): Promise<string | null> {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
async function writeLedgerText(backend: StorageBackend, content: string): Promise<void> {
|
|
102
|
-
if (backend
|
|
102
|
+
if (isPublicRootedBackend(backend)) {
|
|
103
103
|
const write = async () => {
|
|
104
104
|
const res = await fetch('/__editor/vgai-file', {
|
|
105
105
|
method: 'POST',
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
import { editorHost } from '@volter/editor-sdk/host';
|
|
25
25
|
import { Button, fontSizeVar, spaceVar, themeVars } from '@volter/editor-sdk/widgets';
|
|
26
|
-
import { meterPercent } from '
|
|
26
|
+
import { meterPercent } from '../runtime/adapter/audio-meter';
|
|
27
27
|
import type { AudioAdapter, AudioDebugEvent, AudioMeterFrame } from '@volter/editor-project/adapter';
|
|
28
28
|
import { useEffect, useReducer, useRef, useState } from 'react';
|
|
29
29
|
import {
|
package/src/bridge/dispatch.ts
CHANGED
|
@@ -13,15 +13,15 @@ import {
|
|
|
13
13
|
getActiveSystems,
|
|
14
14
|
InstanceResolutionError,
|
|
15
15
|
systemsForInstance,
|
|
16
|
-
} from '@volter/editor-
|
|
17
|
-
import { collectPlayRunPageErrors } from '@volter/editor-
|
|
16
|
+
} from '@volter/editor-sdk/kit/authoring/active-systems';
|
|
17
|
+
import { collectPlayRunPageErrors } from '@volter/editor-sdk/kit/command-listener';
|
|
18
18
|
import { gameContractEpoch } from '../host/coverage/game-contract-seam-evidence';
|
|
19
|
-
import { recordLiveSeamEvidence } from '@volter/editor-
|
|
20
|
-
import { systemAdapterEpoch } from '@volter/editor-
|
|
19
|
+
import { recordLiveSeamEvidence } from '@volter/editor-sdk/kit/live-seam-evidence';
|
|
20
|
+
import { systemAdapterEpoch } from '@volter/editor-sdk/kit/system-seam-evidence';
|
|
21
21
|
import {
|
|
22
22
|
HOLD_STARVED_NO_DRIVER_REASON,
|
|
23
23
|
waitForHoldBudget,
|
|
24
|
-
} from '
|
|
24
|
+
} from '../runtime/debug-bridge';
|
|
25
25
|
import type { SystemAdapters } from '@volter/editor-project/adapter';
|
|
26
26
|
import { activeIngestContract } from '../ingest/ingest-play-control';
|
|
27
27
|
import { getPlayRuntimeAccess } from '../play/play-mode';
|
|
@@ -39,7 +39,7 @@ import { getPlayRuntimeAccess } from '../play/play-mode';
|
|
|
39
39
|
* game, so it never creates a play session at all, and what it publishes
|
|
40
40
|
* through `setActiveSystems` is the debug adapter projected from its own
|
|
41
41
|
* declared contract (`ingest-root-adapter.ts` →
|
|
42
|
-
* `@volter/game
|
|
42
|
+
* `@volter/editor-game/runtime/adapter/ingest/contract-debug-adapter`). The question asked here is
|
|
43
43
|
* only ever "has a live mount published a plane", never who mounted it.
|
|
44
44
|
* `notPlayingResult()` stays the answer for the genuinely-no-world case. */
|
|
45
45
|
export const hasLiveDebugPlane = (): boolean => getActiveSystems().debug != null;
|
|
@@ -48,7 +48,7 @@ export const hasLiveDebugPlane = (): boolean => getActiveSystems().debug != null
|
|
|
48
48
|
* `Error` carrying a machine-readable `code` (and optional `data`), the same
|
|
49
49
|
* shape `DebugError`/`InputActionError` already throw. Used by
|
|
50
50
|
* `dispatchBridgeMethod` below for its OWN precondition failures (no debug
|
|
51
|
-
* adapter installed, no
|
|
51
|
+
* adapter installed, no input door wired) so they survive
|
|
52
52
|
* `structuredErrorResult` exactly like an engine-thrown error would. */
|
|
53
53
|
export function bridgeError(code: string, message: string, data?: Record<string, unknown>): Error {
|
|
54
54
|
const err = new Error(message) as Error & { code: string; data?: unknown };
|
|
@@ -109,7 +109,7 @@ function recordContractSystemUse(member: string, value: unknown, name?: string):
|
|
|
109
109
|
|
|
110
110
|
/**
|
|
111
111
|
* #140 — the generic session-wire dispatch table: the SAME method-name
|
|
112
|
-
* surface `window.__vgai` exposes (`@volter/game
|
|
112
|
+
* surface `window.__vgai` exposes (`@volter/editor-game/runtime/debug-bridge`'s
|
|
113
113
|
* `VgaiDebugHandle` — `state`/`stateAll`/`providers`/`commands`/`events`/
|
|
114
114
|
* `snapshot`/`invoke`/`runTicks`/`input.*`), built from the SAME
|
|
115
115
|
* registry-backed accessors the sibling
|
|
@@ -337,8 +337,8 @@ export async function dispatchBridgeMethod(
|
|
|
337
337
|
if (!inputTarget) {
|
|
338
338
|
throw bridgeError(
|
|
339
339
|
'DEBUG_INPUT_UNAVAILABLE',
|
|
340
|
-
`session wire: ${method}() has no virtual-input target wired — no
|
|
341
|
-
"
|
|
340
|
+
`session wire: ${method}() has no virtual-input target wired — no root ` +
|
|
341
|
+
"entry exports `debug.input` (the game's own input door), or none has mounted yet",
|
|
342
342
|
);
|
|
343
343
|
}
|
|
344
344
|
if (method === 'input.setVirtualAction') {
|
|
@@ -382,8 +382,8 @@ export async function dispatchBridgeMethod(
|
|
|
382
382
|
if (!inputTarget) {
|
|
383
383
|
throw bridgeError(
|
|
384
384
|
'DEBUG_INPUT_UNAVAILABLE',
|
|
385
|
-
'session wire: input.scheduleActionAtTick() has no virtual-input target wired — no ' +
|
|
386
|
-
"
|
|
385
|
+
'session wire: input.scheduleActionAtTick() has no virtual-input target wired — no root ' +
|
|
386
|
+
"entry exports `debug.input` (the game's own input door), or none has mounted yet",
|
|
387
387
|
);
|
|
388
388
|
}
|
|
389
389
|
return inputTarget.scheduleActionAtTick(tick, action, value);
|
|
@@ -405,8 +405,8 @@ export async function dispatchBridgeMethod(
|
|
|
405
405
|
if (!inputTarget) {
|
|
406
406
|
throw bridgeError(
|
|
407
407
|
'DEBUG_INPUT_UNAVAILABLE',
|
|
408
|
-
`session wire: ${method}() has no virtual-input target wired — no
|
|
409
|
-
"
|
|
408
|
+
`session wire: ${method}() has no virtual-input target wired — no root ` +
|
|
409
|
+
"entry exports `debug.input` (the game's own input door), or none has mounted yet",
|
|
410
410
|
);
|
|
411
411
|
}
|
|
412
412
|
if (method === 'input.injectPointerDelta') {
|
|
@@ -430,8 +430,8 @@ export async function dispatchBridgeMethod(
|
|
|
430
430
|
if (!inputTarget) {
|
|
431
431
|
throw bridgeError(
|
|
432
432
|
'DEBUG_INPUT_UNAVAILABLE',
|
|
433
|
-
'session wire: holdFor() has no virtual-input target wired — no
|
|
434
|
-
"
|
|
433
|
+
'session wire: holdFor() has no virtual-input target wired — no root ' +
|
|
434
|
+
"entry exports `debug.input` (the game's own input door), or none has mounted yet",
|
|
435
435
|
);
|
|
436
436
|
}
|
|
437
437
|
const action = callArgs[0] as string;
|
|
@@ -14,7 +14,7 @@ import { getPlayRuntimeAccess } from '../play/play-mode';
|
|
|
14
14
|
export async function captureLiveCanvasFrame(
|
|
15
15
|
canvas: HTMLCanvasElement,
|
|
16
16
|
): Promise<CanvasImageSource | null> {
|
|
17
|
-
const { liveCanvasFrame } = await import('@volter/editor-
|
|
17
|
+
const { liveCanvasFrame } = await import('@volter/editor-sdk/kit/live-canvas-frame');
|
|
18
18
|
return liveCanvasFrame(canvas);
|
|
19
19
|
}
|
|
20
20
|
|
package/src/bridge/screenshot.ts
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
* `@editor/*` alias until those modules move too. Nothing here is host API.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { commandLine } from '@volter/editor-
|
|
9
|
+
import { commandLine } from '@volter/editor-sdk/kit/product-command';
|
|
10
10
|
import {
|
|
11
11
|
type CaptureFlatness,
|
|
12
12
|
CaptureLayerError,
|
|
13
13
|
capturePlayComposite,
|
|
14
14
|
sampleFlatness,
|
|
15
|
-
} from '@volter/editor-
|
|
16
|
-
import { editorConsole } from '@volter/editor-
|
|
17
|
-
import { presentationSurface } from '@volter/editor-
|
|
15
|
+
} from '@volter/editor-sdk/kit/composite-screenshot';
|
|
16
|
+
import { editorConsole } from '@volter/editor-sdk/kit/editor-console';
|
|
17
|
+
import { presentationSurface } from '@volter/editor-sdk/kit/presentation-surface';
|
|
18
18
|
import type { EditorCommandMessage, EditorCommandResult } from '@volter/editor-sdk/commands';
|
|
19
19
|
import { notPlayingResult, structuredErrorResult } from '../command-results';
|
|
20
20
|
import { isIngestActive } from '../ingest/active-ingest';
|
|
@@ -51,7 +51,7 @@ import { captureLiveCanvasFrame } from './live-frames';
|
|
|
51
51
|
*
|
|
52
52
|
* BOTH legs read a canvas, and a canvas is only readable after its frame when
|
|
53
53
|
* its WebGL context was created with `preserveDrawingBuffer: true`. Every
|
|
54
|
-
* canvas the vgai RUNTIME mounts sets it (`@volter/game
|
|
54
|
+
* canvas the vgai RUNTIME mounts sets it (`@volter/editor-game/runtime/create-runtime`,
|
|
55
55
|
* D5 §1/§4); a canvas an INGESTED game created is the game's own and usually
|
|
56
56
|
* does not, which read as a silently BLACK screenshot over a perfectly
|
|
57
57
|
* healthy running game. {@link liveCanvasFrame} is the answer for that
|
|
@@ -279,7 +279,7 @@ export async function handleBridgeScreenshot(
|
|
|
279
279
|
// Same seam as the composite leg, for the same reason: a game's own canvas
|
|
280
280
|
// is unreadable this late, so ask for a same-frame copy first and fall back
|
|
281
281
|
// to reading the canvas itself.
|
|
282
|
-
const frameModule = await import('@volter/editor-
|
|
282
|
+
const frameModule = await import('@volter/editor-sdk/kit/live-canvas-frame');
|
|
283
283
|
const readable =
|
|
284
284
|
frameModule.readablePngSource(await frameModule.liveCanvasFrame(canvas)) ?? canvas;
|
|
285
285
|
const dataUrl = readable.toDataURL('image/png');
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* build takes real seconds and a modal would block the viewport.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { workspaceHistoryService } from '@volter/editor-
|
|
12
|
-
import { getDownloadUrl, readProjectTextFile, saveFile } from '@volter/editor-
|
|
13
|
-
import { getProjectFileHistory } from '@volter/editor-
|
|
11
|
+
import { workspaceHistoryService } from '@volter/editor-sdk/kit/components/workspace-history';
|
|
12
|
+
import { getDownloadUrl, readProjectTextFile, saveFile } from '@volter/editor-sdk/kit/editor-api';
|
|
13
|
+
import { getProjectFileHistory } from '@volter/editor-sdk/kit/history/project-file-history';
|
|
14
14
|
import { faGlobe } from '@fortawesome/free-solid-svg-icons';
|
|
15
15
|
import type { BuildReport } from '@volter/editor-sdk/session/build-report';
|
|
16
16
|
import {
|