@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
|
@@ -8,11 +8,8 @@
|
|
|
8
8
|
* degrading loudly per world rather than silently ignoring them (the F24/F9
|
|
9
9
|
* anti-pattern this closes):
|
|
10
10
|
*
|
|
11
|
-
* - a builtin `dom` world — a bare
|
|
12
|
-
*
|
|
13
|
-
* fabricate first-party data (anti-shim) — the sibling's own `useWorldState`/
|
|
14
|
-
* `useGame` calls are simply unavailable, and this says so once per world.
|
|
15
|
-
* Has no loop at all, so its `SiblingMount.setPaused` stays `undefined`
|
|
11
|
+
* - a builtin `dom` world — a bare DOM layer, D-V3, rendered like every `dom`
|
|
12
|
+
* root. Has no loop at all, so its `SiblingMount.setPaused` stays `undefined`
|
|
16
13
|
* (D-B1) — never a fabricated no-op.
|
|
17
14
|
* - `{ module }` (any kind) OR a builtin `three`/`canvas` world
|
|
18
15
|
* (D-B3 — the residual this closes: a second `{ ingest }` world is
|
|
@@ -46,24 +43,24 @@
|
|
|
46
43
|
import {
|
|
47
44
|
addMountFailureReport,
|
|
48
45
|
formatMountFailureMessage,
|
|
49
|
-
} from '@volter/editor-
|
|
46
|
+
} from '@volter/editor-sdk/kit/mount-failure-report';
|
|
50
47
|
import { withStoreSelection } from '../host/authoring/mounted-authoring';
|
|
51
|
-
import { makeNoAuthoringAdapter } from '@volter/editor-
|
|
48
|
+
import { makeNoAuthoringAdapter } from '@volter/editor-sdk/kit/authoring/no-authoring-adapter';
|
|
52
49
|
import { PixiAuthoringAdapter } from '../host/authoring/pixi-authoring-adapter';
|
|
53
50
|
import { createLiveCanvasWriteTarget } from '../host/authoring/pixi-live-write-target';
|
|
54
51
|
import { resolveCanvasPixiForEditor } from '../host/canvas-entry-runtime';
|
|
55
|
-
import { CrashNullBoundary } from '@volter/editor-
|
|
56
|
-
import { editorConsole } from '@volter/editor-
|
|
57
|
-
import type { EditorShellStore } from '@volter/editor-
|
|
52
|
+
import { CrashNullBoundary } from '@volter/editor-sdk/kit/crash-null-boundary';
|
|
53
|
+
import { editorConsole } from '@volter/editor-sdk/kit/editor-console';
|
|
54
|
+
import type { EditorShellStore } from '@volter/editor-threejs/kit/editor-shell-store';
|
|
58
55
|
import { authoringJournal } from '../host/history/json-history-resource';
|
|
59
56
|
import { activeRealmServices } from '../host/realm-services';
|
|
60
57
|
import { resolveReactAdapterRootComponent } from '../host/roots/react-root';
|
|
61
|
-
import { sourceWriteBackendIfPrimed } from '@volter/editor-
|
|
58
|
+
import { sourceWriteBackendIfPrimed } from '@volter/editor-sdk/kit/ui-source/tier-source-write-backend';
|
|
62
59
|
import { DomAuthoringAdapter } from '../react/dom-authoring-adapter';
|
|
63
60
|
import { ReactRootAuthoringAdapter, walkOidTree } from '../react/react-world-authoring-adapter';
|
|
64
61
|
import { beginProjectMountEpoch } from '@volter/editor-sdk/session/project-module-url';
|
|
65
|
-
import { createPhysics2DRegistry } from '
|
|
66
|
-
import { createPhysicsAdapter2D } from '
|
|
62
|
+
import { createPhysics2DRegistry } from '../runtime/pixi/physics-registry';
|
|
63
|
+
import { createPhysicsAdapter2D } from '../runtime/pixi/system-adapters';
|
|
67
64
|
import type { AuthoringAdapter } from '@volter/editor-project/adapter';
|
|
68
65
|
import { declaredRoots } from '@volter/editor-project/adapter/manifest-interpreter';
|
|
69
66
|
import type { ResolvedAdapterRoot, ResolvedGameManifest } from '@volter/editor-project/manifest/load';
|
|
@@ -136,15 +133,13 @@ function styleSiblingLayer(
|
|
|
136
133
|
}
|
|
137
134
|
|
|
138
135
|
/**
|
|
139
|
-
* D-V3: mount a `default-react` sibling as a bare DOM layer
|
|
140
|
-
*
|
|
141
|
-
* Reuses `binding-resolver.ts`'s exact entry-loading step
|
|
136
|
+
* D-V3: mount a `default-react` sibling as a bare DOM layer, the way every
|
|
137
|
+
* `dom` root renders. Reuses `binding-resolver.ts`'s exact entry-loading step
|
|
142
138
|
* (`resolveReactAdapterRootComponent` — the same D4 `scene`-forbidden/
|
|
143
139
|
* `entry`-required checks and default-export validation
|
|
144
140
|
* `resolveDefaultReactAdapter` itself uses) rather than duplicating it.
|
|
145
141
|
*
|
|
146
|
-
* If the entry component throws at mount/first render
|
|
147
|
-
* calls `useGame`/`useWorldState` with no provider in the tree), the error
|
|
142
|
+
* If the entry component throws at mount/first render, the error
|
|
148
143
|
* boundary above catches it, this function removes the layer it just
|
|
149
144
|
* created, and RETHROWS so the caller's uniform per-sibling catch
|
|
150
145
|
* (`mountOneIngestSibling`'s caller, {@link mountIngestSiblings}) can turn it
|
|
@@ -168,13 +163,6 @@ async function mountDefaultReactSibling(
|
|
|
168
163
|
styleSiblingLayer(layer, world, 'none');
|
|
169
164
|
gameContainer.appendChild(layer);
|
|
170
165
|
|
|
171
|
-
// D-V3: one structured note per world naming the degrade — never silent
|
|
172
|
-
// about the missing bridge.
|
|
173
|
-
editorConsole.log(
|
|
174
|
-
`react sibling "${world.id}": no native Game beside an ingest world — useWorldState unavailable`,
|
|
175
|
-
'ingest',
|
|
176
|
-
);
|
|
177
|
-
|
|
178
166
|
const root = createRoot(layer);
|
|
179
167
|
let caught: unknown = null;
|
|
180
168
|
// `flushSync` forces the initial mount (render + commit + error-boundary
|
|
@@ -227,7 +215,7 @@ async function mountDefaultReactSibling(
|
|
|
227
215
|
// built — `ui-source/tier-source-write-backend.ts`, and the packaged-
|
|
228
216
|
// editor bug the old `import.meta.env.DEV` gate carried here.
|
|
229
217
|
const writeBackend = sourceWriteBackendIfPrimed('An ingest sibling’s react layer');
|
|
230
|
-
authoring = new ReactRootAuthoringAdapter(layer, store, {
|
|
218
|
+
authoring = new ReactRootAuthoringAdapter(layer, store.shell, {
|
|
231
219
|
...(writeBackend ? { writeBackend } : {}),
|
|
232
220
|
});
|
|
233
221
|
} else {
|
|
@@ -348,7 +336,7 @@ async function mountScopedRuntimeSibling(
|
|
|
348
336
|
authoring =
|
|
349
337
|
worldInstance.mounted.authoring ??
|
|
350
338
|
makeNoAuthoringAdapter(
|
|
351
|
-
store,
|
|
339
|
+
store.shell,
|
|
352
340
|
`${world.id} (${worldInstance.mounted.kind === 'canvas' ? worldInstance.mounted.substrate.name : 'unknown'} authoring unavailable)`,
|
|
353
341
|
);
|
|
354
342
|
} else {
|
|
@@ -368,7 +356,7 @@ async function mountScopedRuntimeSibling(
|
|
|
368
356
|
});
|
|
369
357
|
}
|
|
370
358
|
} else {
|
|
371
|
-
authoring = makeNoAuthoringAdapter(store, `${world.id} (no authoring surface)`);
|
|
359
|
+
authoring = makeNoAuthoringAdapter(store.shell, `${world.id} (no authoring surface)`);
|
|
372
360
|
}
|
|
373
361
|
}
|
|
374
362
|
return {
|
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { measureAdapterReach } from '../host/adapter-reach';
|
|
9
|
-
import { setActiveAuthoring } from '@volter/editor-
|
|
10
|
-
import { setActiveSystems } from '@volter/editor-
|
|
9
|
+
import { setActiveAuthoring } from '@volter/editor-sdk/kit/authoring/active-adapter';
|
|
10
|
+
import { setActiveSystems } from '@volter/editor-sdk/kit/authoring/active-systems';
|
|
11
11
|
import {
|
|
12
12
|
addMountFailureReport,
|
|
13
13
|
clearMountFailureReports,
|
|
14
14
|
formatMountFailureMessage,
|
|
15
|
-
} from '@volter/editor-
|
|
16
|
-
import { makeNoAuthoringAdapter } from '@volter/editor-
|
|
15
|
+
} from '@volter/editor-sdk/kit/mount-failure-report';
|
|
16
|
+
import { makeNoAuthoringAdapter } from '@volter/editor-sdk/kit/authoring/no-authoring-adapter';
|
|
17
17
|
import { resolveAllRoots } from '../host/binding-resolver';
|
|
18
|
-
import { editorConsole } from '@volter/editor-
|
|
19
|
-
import type { EditorShellStore } from '@volter/editor-
|
|
20
|
-
import { fetchGameManifest } from '@volter/editor-
|
|
21
|
-
import { getCurrentProject } from '@volter/editor-
|
|
22
|
-
import type { GameSession, RootMountSpec } from '
|
|
18
|
+
import { editorConsole } from '@volter/editor-sdk/kit/editor-console';
|
|
19
|
+
import type { EditorShellStore } from '@volter/editor-threejs/kit/editor-shell-store';
|
|
20
|
+
import { fetchGameManifest } from '@volter/editor-sdk/kit/manifest-project';
|
|
21
|
+
import { getCurrentProject } from '@volter/editor-sdk/kit/active-project';
|
|
22
|
+
import type { GameSession, RootMountSpec } from '../runtime/create-runtime';
|
|
23
23
|
import type { AuthoringAdapter } from '@volter/editor-project/adapter';
|
|
24
24
|
import { declaredRoots, ingestRoots } from '@volter/editor-project/adapter/manifest-interpreter';
|
|
25
25
|
import type { ResolvedAdapterRoot, ResolvedGameManifest } from '@volter/editor-project/manifest/load';
|
|
@@ -54,8 +54,8 @@ export function withStoreSelection(
|
|
|
54
54
|
return {
|
|
55
55
|
...authoring,
|
|
56
56
|
selection: {
|
|
57
|
-
get: () => [...store.selectedEntityIds],
|
|
58
|
-
set: (ids) => store.selectMultiple(ids),
|
|
57
|
+
get: () => [...store.shell.selectedEntityIds],
|
|
58
|
+
set: (ids) => store.shell.selectMultiple(ids),
|
|
59
59
|
},
|
|
60
60
|
};
|
|
61
61
|
}
|
|
@@ -68,7 +68,7 @@ export function exitModuleMode(): void {
|
|
|
68
68
|
setActiveAuthoring(null);
|
|
69
69
|
setActiveSystems(null);
|
|
70
70
|
clearMountFailureReports(); // D-W3: no session -> nothing left to report (mirrors ingest/mount-ingest-root.ts's unmountThreeIngestRoot)
|
|
71
|
-
s.store.setPlayState('stopped');
|
|
71
|
+
s.store.shell.setPlayState('stopped');
|
|
72
72
|
try {
|
|
73
73
|
s.stop();
|
|
74
74
|
} catch {
|
|
@@ -93,7 +93,7 @@ export async function mountModuleRootRuntime(
|
|
|
93
93
|
width: number,
|
|
94
94
|
height: number,
|
|
95
95
|
): Promise<{ session: GameSession; specs: RootMountSpec[] }> {
|
|
96
|
-
const { createGameRuntime } = await import('
|
|
96
|
+
const { createGameRuntime } = await import('../runtime/create-runtime');
|
|
97
97
|
const specs = await resolveAllRoots({ ...manifest, roots: [world] }, projectRoot);
|
|
98
98
|
const session = await createGameRuntime({ container, roots: specs, width, height });
|
|
99
99
|
return { session, specs };
|
|
@@ -114,7 +114,7 @@ export async function enterModuleModeFromManifestRoot(
|
|
|
114
114
|
return;
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
store.setPlayState('playing');
|
|
117
|
+
store.shell.setPlayState('playing');
|
|
118
118
|
editorConsole.log(
|
|
119
119
|
`Mounting custom adapter module for world "${world.id}" (kind: ${world.surface})`,
|
|
120
120
|
'adapter',
|
|
@@ -142,12 +142,11 @@ export async function enterModuleModeFromManifestRoot(
|
|
|
142
142
|
activeAuthoring = withStoreSelection(mounted.authoring, store);
|
|
143
143
|
} else {
|
|
144
144
|
// Honest answer for a module adapter that declares no authoring surface.
|
|
145
|
-
activeAuthoring = makeNoAuthoringAdapter(store, `${adapterId} (no authoring surface)`);
|
|
145
|
+
activeAuthoring = makeNoAuthoringAdapter(store.shell, `${adapterId} (no authoring surface)`);
|
|
146
146
|
}
|
|
147
147
|
setActiveAuthoring(activeAuthoring);
|
|
148
148
|
setActiveSystems(mounted.systems ?? {});
|
|
149
|
-
store.
|
|
150
|
-
store.notifyIngestEdit();
|
|
149
|
+
store.shell.notifyIngestEdit();
|
|
151
150
|
clearMountFailureReports(); // D-W3: mount succeeded
|
|
152
151
|
|
|
153
152
|
// Measured from the mounted adapter rather than declared by the route.
|
|
@@ -215,9 +214,9 @@ export async function tryManifestModuleRoute(store: EditorShellStore): Promise<b
|
|
|
215
214
|
return true;
|
|
216
215
|
}
|
|
217
216
|
|
|
218
|
-
import { acquireLiveDocument, liveDocumentContainer } from '@volter/editor-
|
|
217
|
+
import { acquireLiveDocument, liveDocumentContainer } from '@volter/editor-sdk/kit/live-document';
|
|
219
218
|
// THE MODULE LANE, as the host sees it (`live-session-registry.ts`).
|
|
220
|
-
import { registerLiveSession } from '@volter/editor-
|
|
219
|
+
import { registerLiveSession } from '@volter/editor-sdk/kit/live-session-registry';
|
|
221
220
|
|
|
222
221
|
registerLiveSession({
|
|
223
222
|
id: 'module',
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
|
|
23
23
|
import { measureAdapterReach } from '../host/adapter-reach';
|
|
24
24
|
import { nextPaint } from '../host/after-paint';
|
|
25
|
-
import { setActiveAuthoring } from '@volter/editor-
|
|
26
|
-
import { setActiveSystems } from '@volter/editor-
|
|
25
|
+
import { setActiveAuthoring } from '@volter/editor-sdk/kit/authoring/active-adapter';
|
|
26
|
+
import { setActiveSystems } from '@volter/editor-sdk/kit/authoring/active-systems';
|
|
27
27
|
import { BabylonAuthoringAdapter } from '../host/authoring/babylon-authoring-adapter';
|
|
28
28
|
import {
|
|
29
29
|
type BabylonRealmLike,
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
type ContractScenesStories,
|
|
36
36
|
createContractScenesStories,
|
|
37
37
|
} from '../host/authoring/contract-scenes-stories';
|
|
38
|
-
import { clearMountFailureReports } from '@volter/editor-
|
|
38
|
+
import { clearMountFailureReports } from '@volter/editor-sdk/kit/mount-failure-report';
|
|
39
39
|
import { PhaserLiveAuthoringAdapter } from '../host/authoring/phaser-live-authoring-adapter';
|
|
40
40
|
import { PixiAuthoringAdapter } from '../host/authoring/pixi-authoring-adapter';
|
|
41
41
|
import { createCreationSiteCanvasWriteTarget } from '../host/authoring/pixi-creation-site-write-target';
|
|
@@ -43,9 +43,9 @@ import { resolveCanvasPixiForEditor } from '../host/canvas-entry-runtime';
|
|
|
43
43
|
import {
|
|
44
44
|
capturePixiDisplayObjectThumbnail,
|
|
45
45
|
registerPresentedPixiApps,
|
|
46
|
-
} from '
|
|
47
|
-
import { editorConsole } from '@volter/editor-
|
|
48
|
-
import type { EditorShellStore } from '@volter/editor-
|
|
46
|
+
} from '../host/canvas-preview-frames';
|
|
47
|
+
import { editorConsole } from '@volter/editor-sdk/kit/editor-console';
|
|
48
|
+
import type { EditorShellStore } from '@volter/editor-threejs/kit/editor-shell-store';
|
|
49
49
|
import { GAME_SURFACE_CONTAINMENT_CSS } from '../host/game-realm-page';
|
|
50
50
|
import {
|
|
51
51
|
clearGameSurface,
|
|
@@ -54,21 +54,21 @@ import {
|
|
|
54
54
|
setGameSurface,
|
|
55
55
|
} from '../host/gated-globals';
|
|
56
56
|
import { authoringJournal } from '../host/history/json-history-resource';
|
|
57
|
-
import { acquireLiveDocument, liveDocumentContainer } from '@volter/editor-
|
|
58
|
-
import { getCurrentProject } from '@volter/editor-
|
|
59
|
-
import { recordRootReadiness } from '@volter/editor-
|
|
57
|
+
import { acquireLiveDocument, liveDocumentContainer } from '@volter/editor-sdk/kit/live-document';
|
|
58
|
+
import { getCurrentProject } from '@volter/editor-sdk/kit/active-project';
|
|
59
|
+
import { recordRootReadiness } from '@volter/editor-sdk/kit/readiness';
|
|
60
60
|
import type { MeasuredLoop } from '../host/same-realm-loop-gate';
|
|
61
|
-
import { projectContractSystemAdapters } from '
|
|
62
|
-
import type { RenderDebugWiring } from '
|
|
63
|
-
import type { IngestGame2D } from '
|
|
64
|
-
import { INGEST_GAME_2D_LOAD_ERROR_NAME, mountIngestGame2D } from '
|
|
65
|
-
import { createPhysics2DRegistry } from '
|
|
66
|
-
import { installPixiRenderPassBracket } from '
|
|
61
|
+
import { projectContractSystemAdapters } from '../runtime/adapter/ingest/contract-system-adapters';
|
|
62
|
+
import type { RenderDebugWiring } from '../runtime/dev/render-debug-adapter';
|
|
63
|
+
import type { IngestGame2D } from '../runtime/pixi/ingest';
|
|
64
|
+
import { INGEST_GAME_2D_LOAD_ERROR_NAME, mountIngestGame2D } from '../runtime/pixi/ingest';
|
|
65
|
+
import { createPhysics2DRegistry } from '../runtime/pixi/physics-registry';
|
|
66
|
+
import { installPixiRenderPassBracket } from '../runtime/pixi/render-pass-bracket';
|
|
67
67
|
import {
|
|
68
68
|
composePhysicsAdapters2D,
|
|
69
69
|
createPhysicsAdapter2D,
|
|
70
70
|
type PhysicsAdapter2D,
|
|
71
|
-
} from '
|
|
71
|
+
} from '../runtime/pixi/system-adapters';
|
|
72
72
|
import type { AuthoringAdapter } from '@volter/editor-project/adapter/authoring';
|
|
73
73
|
import { readGameReady } from '@volter/editor-project/adapter/ingest/game-contract';
|
|
74
74
|
import { displayKeyedPhysics } from '@volter/editor-project/adapter/system-adapter';
|
|
@@ -214,7 +214,7 @@ function rendererCanvasBelongsToHost(renderer: unknown, hostEl: HTMLElement): bo
|
|
|
214
214
|
* The projection is the ONE validator: presence + typeof for the four members,
|
|
215
215
|
* plus the keying check that makes a node-id-keyed declaration on this surface
|
|
216
216
|
* `malformed` by name instead of a bound shape nothing here can call
|
|
217
|
-
* (`@volter/game
|
|
217
|
+
* (`@volter/editor-game/runtime/adapter/ingest/contract-system-adapters`). Both verdicts reach
|
|
218
218
|
* the reader through the coverage row for `system.physics`, so a refusal here
|
|
219
219
|
* is never silent.
|
|
220
220
|
*/
|
|
@@ -339,15 +339,15 @@ function publishStructuralCanvasRuntime(
|
|
|
339
339
|
});
|
|
340
340
|
disposeScene = installIngestCanvasScene(store);
|
|
341
341
|
|
|
342
|
-
setGameInputGate(() => store.playState === 'playing' && store.activeViewportTab === 'play');
|
|
342
|
+
setGameInputGate(() => store.shell.playState === 'playing' && store.shell.activeViewportTab === 'play');
|
|
343
343
|
setActiveAuthoring(adapter);
|
|
344
344
|
// No captured Pixi renderer on this branch — the host's pixi drew nothing, so
|
|
345
345
|
// there is no context to instrument, no runner pair to bracket, and no
|
|
346
346
|
// host-owned registry carrier to compose with either: what the game itself
|
|
347
347
|
// declared is the only physics this route can have.
|
|
348
348
|
publishCanvasIngestSystems(game.name, undefined, declaredCanvasPhysics());
|
|
349
|
-
landIngestBootInEdit(
|
|
350
|
-
store.notifyIngestEdit();
|
|
349
|
+
landIngestBootInEdit();
|
|
350
|
+
store.shell.notifyIngestEdit();
|
|
351
351
|
clearMountFailureReports();
|
|
352
352
|
|
|
353
353
|
recordMountCoverage({
|
|
@@ -395,7 +395,7 @@ async function mountCanvasIngestRootInner(
|
|
|
395
395
|
return;
|
|
396
396
|
}
|
|
397
397
|
|
|
398
|
-
store.setPlayState('playing');
|
|
398
|
+
store.shell.setPlayState('playing');
|
|
399
399
|
editorConsole.log(`Ingesting unmodified PixiJS game: ${game.name}`, 'ingest');
|
|
400
400
|
|
|
401
401
|
// PD-3: READINESS, RECORDED. The three lane's self-booting mount has always
|
|
@@ -473,7 +473,7 @@ async function mountCanvasIngestRootInner(
|
|
|
473
473
|
markGameCssScope(hostEl);
|
|
474
474
|
const scopedCssProject = getCurrentProject();
|
|
475
475
|
if (scopedCssProject) {
|
|
476
|
-
const { ensureScopedGameStyles } = await import('@volter/editor-
|
|
476
|
+
const { ensureScopedGameStyles } = await import('@volter/editor-sdk/kit/scoped-game-css');
|
|
477
477
|
await ensureScopedGameStyles(scopedCssProject.rootPath);
|
|
478
478
|
}
|
|
479
479
|
}
|
|
@@ -587,7 +587,7 @@ async function mountCanvasIngestRootInner(
|
|
|
587
587
|
}
|
|
588
588
|
|
|
589
589
|
// The captured `Application` — the game's own, trapped on its first render
|
|
590
|
-
// (`@volter/game
|
|
590
|
+
// (`@volter/editor-game/runtime/pixi/scene-capture`). Two things hang off it, and neither is
|
|
591
591
|
// available anywhere else.
|
|
592
592
|
const app = mount.capture.captured?.app as Application | undefined;
|
|
593
593
|
|
|
@@ -685,7 +685,7 @@ async function mountCanvasIngestRootInner(
|
|
|
685
685
|
journal: authoringJournal(sessionId),
|
|
686
686
|
target: createCreationSiteCanvasWriteTarget({
|
|
687
687
|
physics: physicsAdapter,
|
|
688
|
-
history: store.projectHistory,
|
|
688
|
+
history: store.shell.projectHistory,
|
|
689
689
|
}),
|
|
690
690
|
...(stories ? { stories } : {}),
|
|
691
691
|
// The captured game canvas is the screen↔stage mapping `pickable`/`rects`
|
|
@@ -755,7 +755,7 @@ async function mountCanvasIngestRootInner(
|
|
|
755
755
|
// R2c: PixiJS ingest fixtures (`ingest/games/**`) are just as
|
|
756
756
|
// unshadowed-by-default as the three.js ones — drive the same gate as
|
|
757
757
|
// {@link mountThreeIngestRoot} (see that function's doc comment).
|
|
758
|
-
setGameInputGate(() => store.playState === 'playing' && store.activeViewportTab === 'play');
|
|
758
|
+
setGameInputGate(() => store.shell.playState === 'playing' && store.shell.activeViewportTab === 'play');
|
|
759
759
|
|
|
760
760
|
setActiveAuthoring(adapter);
|
|
761
761
|
// The captured game's OWN renderer — the one object that carries both halves
|
|
@@ -770,8 +770,8 @@ async function mountCanvasIngestRootInner(
|
|
|
770
770
|
mount.capture.captured?.renderer,
|
|
771
771
|
declaredPhysics ? physicsAdapter : null,
|
|
772
772
|
);
|
|
773
|
-
landIngestBootInEdit(
|
|
774
|
-
store.notifyIngestEdit();
|
|
773
|
+
landIngestBootInEdit();
|
|
774
|
+
store.shell.notifyIngestEdit();
|
|
775
775
|
clearMountFailureReports(); // D-W3: mount succeeded
|
|
776
776
|
// PD-3: the mount stood — but `contract-ready` may only be recorded when the
|
|
777
777
|
// declared promise actually ANSWERED. The three lane's `awaitWorldReady`
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
import type { AdapterReach } from '../host/adapter-reach';
|
|
16
|
-
import { getActiveSystems } from '@volter/editor-
|
|
16
|
+
import { getActiveSystems } from '@volter/editor-sdk/kit/authoring/active-systems';
|
|
17
17
|
import { ingestDataWriterNow } from '../host/authoring/ingest-data-writer';
|
|
18
18
|
import { ingestOwnershipNow } from '../host/authoring/ingest-source-persistence';
|
|
19
19
|
import {
|
|
@@ -26,8 +26,8 @@ import {
|
|
|
26
26
|
type SystemAdapterMeasurement,
|
|
27
27
|
type WriteReachFacts,
|
|
28
28
|
} from '../host/coverage/capability-coverage';
|
|
29
|
-
import { inspectSystemAdapterSeam } from '@volter/editor-
|
|
30
|
-
import { editorConsole } from '@volter/editor-
|
|
29
|
+
import { inspectSystemAdapterSeam } from '@volter/editor-sdk/kit/system-seam-evidence';
|
|
30
|
+
import { editorConsole } from '@volter/editor-sdk/kit/editor-console';
|
|
31
31
|
import {
|
|
32
32
|
type MeasuredLoop,
|
|
33
33
|
measuredLoop,
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
import {
|
|
37
37
|
type ContractSurface,
|
|
38
38
|
projectContractSystemAdapters,
|
|
39
|
-
} from '
|
|
39
|
+
} from '../runtime/adapter/ingest/contract-system-adapters';
|
|
40
40
|
import type { VgaiGameContract } from '@volter/editor-project/adapter/ingest/game-contract';
|
|
41
41
|
import type { SystemAdapters } from '@volter/editor-project/adapter/system-adapter';
|
|
42
42
|
import { activeIngest } from './active-ingest';
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { measureAdapterReach } from '../host/adapter-reach';
|
|
9
|
-
import { setActiveAuthoring } from '@volter/editor-
|
|
10
|
-
import { setActiveSystems } from '@volter/editor-
|
|
11
|
-
import { clearMountFailureReports } from '@volter/editor-
|
|
9
|
+
import { setActiveAuthoring } from '@volter/editor-sdk/kit/authoring/active-adapter';
|
|
10
|
+
import { setActiveSystems } from '@volter/editor-sdk/kit/authoring/active-systems';
|
|
11
|
+
import { clearMountFailureReports } from '@volter/editor-sdk/kit/mount-failure-report';
|
|
12
12
|
import { resolveAllRoots } from '../host/binding-resolver';
|
|
13
|
-
import { editorConsole } from '@volter/editor-
|
|
14
|
-
import type { EditorShellStore } from '@volter/editor-
|
|
13
|
+
import { editorConsole } from '@volter/editor-sdk/kit/editor-console';
|
|
14
|
+
import type { EditorShellStore } from '@volter/editor-threejs/kit/editor-shell-store';
|
|
15
15
|
import { setGameInputGate } from '../host/gated-globals';
|
|
16
16
|
import { authoringJournal } from '../host/history/json-history-resource';
|
|
17
|
-
import { acquireLiveDocument, liveDocumentContainer } from '@volter/editor-
|
|
17
|
+
import { acquireLiveDocument, liveDocumentContainer } from '@volter/editor-sdk/kit/live-document';
|
|
18
18
|
import { DomAuthoringAdapter } from '../react/dom-authoring-adapter';
|
|
19
19
|
import type { ResolvedAdapterRoot, ResolvedGameManifest } from '@volter/editor-project/manifest/load';
|
|
20
20
|
import { serializeEntry, setActiveIngest } from './active-ingest';
|
|
@@ -89,14 +89,14 @@ async function mountDomIngestRootInner(store: EditorShellStore, folderId: string
|
|
|
89
89
|
// react session — closes the cross-kind leak (F26 residual).
|
|
90
90
|
exitActiveIngest();
|
|
91
91
|
|
|
92
|
-
store.setPlayState('playing');
|
|
92
|
+
store.shell.setPlayState('playing');
|
|
93
93
|
editorConsole.log(`Ingesting unmodified native-React game: ${game.manifest.name}`, 'ingest');
|
|
94
94
|
|
|
95
95
|
// F26: same cold-mount announcement as the other ingest routes — the react
|
|
96
96
|
// world's entry executes in the editor realm and may declare the game
|
|
97
97
|
// contract to defer its session until ▶. Opt-in, never demanded.
|
|
98
98
|
(window as unknown as { __vgaiMountCold?: boolean }).__vgaiMountCold = true;
|
|
99
|
-
const { createGameRuntime } = await import('
|
|
99
|
+
const { createGameRuntime } = await import('../runtime/create-runtime');
|
|
100
100
|
const specs = await resolveAllRoots(game.manifest, projectRoot);
|
|
101
101
|
const w = gameContainer.clientWidth;
|
|
102
102
|
const h = gameContainer.clientHeight;
|
|
@@ -144,12 +144,12 @@ async function mountDomIngestRootInner(store: EditorShellStore, folderId: string
|
|
|
144
144
|
// `game-globals-shadow.ts` roots its shadow at — so a native-React fixture's
|
|
145
145
|
// own listeners are shadowed on the same terms as every other surface's now
|
|
146
146
|
// (this comment used to record the opposite, from the R-N6 residual).
|
|
147
|
-
setGameInputGate(() => store.playState === 'playing' && store.activeViewportTab === 'play');
|
|
147
|
+
setGameInputGate(() => store.shell.playState === 'playing' && store.shell.activeViewportTab === 'play');
|
|
148
148
|
|
|
149
149
|
setActiveAuthoring(adapter);
|
|
150
150
|
setActiveSystems({});
|
|
151
|
-
landIngestBootInEdit(
|
|
152
|
-
store.notifyIngestEdit();
|
|
151
|
+
landIngestBootInEdit();
|
|
152
|
+
store.shell.notifyIngestEdit();
|
|
153
153
|
clearMountFailureReports(); // D-W3: mount succeeded
|
|
154
154
|
|
|
155
155
|
const coverage = domMountCoverage(adapter);
|
|
@@ -207,7 +207,7 @@ export async function mountDomIngestRootFromManifest(
|
|
|
207
207
|
// react session — closes the cross-kind leak (F26 residual).
|
|
208
208
|
exitActiveIngest();
|
|
209
209
|
|
|
210
|
-
store.setPlayState('playing');
|
|
210
|
+
store.shell.setPlayState('playing');
|
|
211
211
|
editorConsole.log(
|
|
212
212
|
`Ingesting unmodified native-React game (external folder): ${world.id}`,
|
|
213
213
|
'ingest',
|
|
@@ -216,7 +216,7 @@ export async function mountDomIngestRootFromManifest(
|
|
|
216
216
|
// F26: same cold-mount announcement the vendored route makes — an
|
|
217
217
|
// external-folder game may declare the game contract too.
|
|
218
218
|
(window as unknown as { __vgaiMountCold?: boolean }).__vgaiMountCold = true;
|
|
219
|
-
const { createGameRuntime } = await import('
|
|
219
|
+
const { createGameRuntime } = await import('../runtime/create-runtime');
|
|
220
220
|
const specs = await resolveAllRoots({ ...manifest, roots: [world] }, projectRoot);
|
|
221
221
|
const w = gameContainer.clientWidth;
|
|
222
222
|
const h = gameContainer.clientHeight;
|
|
@@ -249,12 +249,12 @@ export async function mountDomIngestRootFromManifest(
|
|
|
249
249
|
siblings: [],
|
|
250
250
|
worldId: world.id,
|
|
251
251
|
});
|
|
252
|
-
setGameInputGate(() => store.playState === 'playing' && store.activeViewportTab === 'play');
|
|
252
|
+
setGameInputGate(() => store.shell.playState === 'playing' && store.shell.activeViewportTab === 'play');
|
|
253
253
|
|
|
254
254
|
setActiveAuthoring(adapter);
|
|
255
255
|
setActiveSystems({});
|
|
256
|
-
landIngestBootInEdit(
|
|
257
|
-
store.notifyIngestEdit();
|
|
256
|
+
landIngestBootInEdit();
|
|
257
|
+
store.shell.notifyIngestEdit();
|
|
258
258
|
clearMountFailureReports(); // D-W3: mount succeeded
|
|
259
259
|
|
|
260
260
|
const coverage = domMountCoverage(adapter);
|
|
@@ -23,25 +23,24 @@
|
|
|
23
23
|
* path is therefore its catch block.
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
-
import { getAuthoringOverride, setActiveAuthoring } from '@volter/editor-
|
|
26
|
+
import { getAuthoringOverride, setActiveAuthoring } from '@volter/editor-sdk/kit/authoring/active-adapter';
|
|
27
27
|
import {
|
|
28
28
|
CompositeAuthoringAdapter,
|
|
29
29
|
type CompositeChild,
|
|
30
|
-
} from '@volter/editor-
|
|
30
|
+
} from '@volter/editor-sdk/kit/authoring/composite-authoring-adapter';
|
|
31
31
|
import {
|
|
32
32
|
addMountFailureReport,
|
|
33
33
|
clearMountFailureReports,
|
|
34
34
|
formatMountFailureMessage,
|
|
35
35
|
getMountFailureReports,
|
|
36
36
|
type MountFailureReport,
|
|
37
|
-
} from '@volter/editor-
|
|
38
|
-
import { editorConsole } from '@volter/editor-
|
|
39
|
-
import type { EditorShellStore } from '@volter/editor-
|
|
40
|
-
import { registerEditorStateFacet } from '@volter/editor-
|
|
41
|
-
import { liveDocumentContainer } from '@volter/editor-
|
|
42
|
-
import { fetchGameManifest, isManifestAbsence } from '@volter/editor-
|
|
43
|
-
import { getCurrentProject } from '@volter/editor-
|
|
44
|
-
import { onShellStore } from '@volter/editor-core/shell-store-door';
|
|
37
|
+
} from '@volter/editor-sdk/kit/mount-failure-report';
|
|
38
|
+
import { editorConsole } from '@volter/editor-sdk/kit/editor-console';
|
|
39
|
+
import type { EditorShellStore } from '@volter/editor-threejs/kit/editor-shell-store';
|
|
40
|
+
import { registerEditorStateFacet } from '@volter/editor-sdk/kit/editor-state-facets';
|
|
41
|
+
import { liveDocumentContainer } from '@volter/editor-sdk/kit/live-document';
|
|
42
|
+
import { fetchGameManifest, isManifestAbsence } from '@volter/editor-sdk/kit/manifest-project';
|
|
43
|
+
import { getCurrentProject } from '@volter/editor-sdk/kit/active-project';
|
|
45
44
|
import { ingestRoots, rootById } from '@volter/editor-project/adapter/manifest-interpreter';
|
|
46
45
|
import { MANIFEST_FILENAME } from '@volter/editor-project/manifest/filename';
|
|
47
46
|
import type { ResolvedAdapterRoot, ResolvedGameManifest } from '@volter/editor-project/manifest/load';
|
|
@@ -76,6 +75,7 @@ export {
|
|
|
76
75
|
unmountDomIngestRoot,
|
|
77
76
|
unmountThreeIngestRoot,
|
|
78
77
|
} from './unmount-ingest-root';
|
|
78
|
+
import { onThreeStore } from '@volter/editor-threejs/kit/three-state';
|
|
79
79
|
|
|
80
80
|
type CanvasMounts = typeof import('./mount-canvas-ingest-root');
|
|
81
81
|
type DomMounts = typeof import('./mount-dom-ingest-root');
|
|
@@ -149,7 +149,7 @@ let _boundStore: EditorShellStore | null = null;
|
|
|
149
149
|
* `project-session-reset.ts`, fired by `project-manager.ts`'s
|
|
150
150
|
* `onProjectSessionEnd`.
|
|
151
151
|
*/
|
|
152
|
-
|
|
152
|
+
onThreeStore((store) => {
|
|
153
153
|
_boundStore = store;
|
|
154
154
|
clearMountFailureReports();
|
|
155
155
|
});
|
|
@@ -197,13 +197,13 @@ function reportFailedIngestMount(store: EditorShellStore, report: MountFailureRe
|
|
|
197
197
|
resetIngestPlaySurface();
|
|
198
198
|
// The prologue's `setPlayState('playing')` must never outlive a failed mount
|
|
199
199
|
// — that flag is what `collectState` reported as a live game (S-1).
|
|
200
|
-
store.setPlayState('stopped');
|
|
200
|
+
store.shell.setPlayState('stopped');
|
|
201
201
|
addMountFailureReport(report);
|
|
202
202
|
// `addMountFailureReport` notifies the status item through the slot's own
|
|
203
203
|
// subscribe; this broadcast is for the STORE-subscribed panels (hierarchy,
|
|
204
204
|
// play controls) that must re-render off the teardown above — a failed
|
|
205
205
|
// mount never reaches the success path's `notifyIngestEdit()`.
|
|
206
|
-
store.notifyIngestEdit();
|
|
206
|
+
store.shell.notifyIngestEdit();
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
/**
|
|
@@ -677,7 +677,7 @@ async function autoLaunchIngestInner(store: EditorShellStore): Promise<void> {
|
|
|
677
677
|
// never let an old bootstrap override it.
|
|
678
678
|
if (deferredIngestPlayActive()) return;
|
|
679
679
|
const { landIngestBootInEdit } = await import('./ingest-boot-viewport');
|
|
680
|
-
landIngestBootInEdit(
|
|
680
|
+
landIngestBootInEdit();
|
|
681
681
|
return;
|
|
682
682
|
}
|
|
683
683
|
await launchIngestRoutes(store);
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
import { measureAdapterReach } from '../host/adapter-reach';
|
|
22
|
-
import { setActiveAuthoring } from '@volter/editor-
|
|
23
|
-
import { setActiveSystems } from '@volter/editor-
|
|
22
|
+
import { setActiveAuthoring } from '@volter/editor-sdk/kit/authoring/active-adapter';
|
|
23
|
+
import { setActiveSystems } from '@volter/editor-sdk/kit/authoring/active-systems';
|
|
24
24
|
import { withContractHierarchy } from '../host/authoring/contract-hierarchy-authoring';
|
|
25
|
-
import { clearMountFailureReports } from '@volter/editor-
|
|
26
|
-
import { editorConsole } from '@volter/editor-
|
|
27
|
-
import type { EditorShellStore } from '@volter/editor-
|
|
25
|
+
import { clearMountFailureReports } from '@volter/editor-sdk/kit/mount-failure-report';
|
|
26
|
+
import { editorConsole } from '@volter/editor-sdk/kit/editor-console';
|
|
27
|
+
import type { EditorShellStore } from '@volter/editor-threejs/kit/editor-shell-store';
|
|
28
28
|
import { gameLoopGate, setGameInputGate } from '../host/gated-globals';
|
|
29
|
-
import { acquireLiveDocument, liveDocumentContainer } from '@volter/editor-
|
|
30
|
-
import { pickGameCamera } from '@volter/editor-
|
|
29
|
+
import { acquireLiveDocument, liveDocumentContainer } from '@volter/editor-sdk/kit/live-document';
|
|
30
|
+
import { pickGameCamera } from '@volter/editor-threejs/kit/scene-framing';
|
|
31
31
|
import type { ResolvedAdapterRoot } from '@volter/editor-project/manifest/load';
|
|
32
32
|
import type { CaptureMechanism } from '@volter/threejs-runtime/adapter/ingest/scene-capture';
|
|
33
33
|
import { type IngestSession, serializeEntry, setActiveIngest } from './active-ingest';
|
|
@@ -164,8 +164,8 @@ function activateCapturedThreeIngest(args: {
|
|
|
164
164
|
// level-streaming game captures on its first drawn frame and then parses its
|
|
165
165
|
// world in for several seconds afterwards.
|
|
166
166
|
store.focusOnScene(() => pickGameCamera(mount.capture.captured?.camera, liveScene));
|
|
167
|
-
landIngestBootInEdit(
|
|
168
|
-
store.notifyIngestEdit(); // ensure panels re-render against the override
|
|
167
|
+
landIngestBootInEdit();
|
|
168
|
+
store.shell.notifyIngestEdit(); // ensure panels re-render against the override
|
|
169
169
|
clearMountFailureReports(); // D-W3: mount succeeded
|
|
170
170
|
|
|
171
171
|
// What this editor CANNOT do with this game, said out loud once, right where
|
|
@@ -241,7 +241,7 @@ async function mountThreeIngestRootInner(
|
|
|
241
241
|
// own persistence provider, which is what EditorShellStore's autosave/saveNow
|
|
242
242
|
// now consult (design). Still switch into the guarded "playing" state so the
|
|
243
243
|
// viewport swaps onto the live scene.
|
|
244
|
-
store.setPlayState('playing');
|
|
244
|
+
store.shell.setPlayState('playing');
|
|
245
245
|
editorConsole.log(`Ingesting unmodified game: ${game.name}`, 'ingest');
|
|
246
246
|
|
|
247
247
|
// Drive the SAME input gate play-mode uses (play-mode.ts's
|
|
@@ -252,7 +252,7 @@ async function mountThreeIngestRootInner(
|
|
|
252
252
|
// tab is the active viewport surface, exactly like a first-party play
|
|
253
253
|
// session.
|
|
254
254
|
const ingestInputActive = () =>
|
|
255
|
-
store.playState === 'playing' && store.activeViewportTab === 'play';
|
|
255
|
+
store.shell.playState === 'playing' && store.shell.activeViewportTab === 'play';
|
|
256
256
|
|
|
257
257
|
try {
|
|
258
258
|
const mountOpts: MountIngestOptions = { captureTimeoutMs: game.captureTimeoutMs };
|
|
@@ -285,7 +285,7 @@ async function mountThreeIngestRootInner(
|
|
|
285
285
|
// holds when the gate CLOSES — leaving play, or switching to the Edit tab
|
|
286
286
|
// mid-flight — must be released, or the editor is left with a captured,
|
|
287
287
|
// invisible cursor over a game that is no longer receiving input.
|
|
288
|
-
session.inputGateUnsubscribe = store.subscribe(() => {
|
|
288
|
+
session.inputGateUnsubscribe = store.shell.subscribe(() => {
|
|
289
289
|
if (!ingestInputActive()) releaseGamePointerLock();
|
|
290
290
|
});
|
|
291
291
|
// The realm gate only just became reachable, so push the play state we
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* is a per-PROJECT property, not a per-realm one.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { IngestGame2D } from '
|
|
7
|
+
import type { IngestGame2D } from '../runtime/pixi/ingest';
|
|
8
8
|
import type { ResolvedAdapterRoot } from '@volter/editor-project/manifest/load';
|
|
9
9
|
import { composeIngestLoad } from './entry-load';
|
|
10
10
|
import { ingestModuleLoaders } from './resolve-three';
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* `document.body` (`setGameSurface`), absolutely positioned and full-size,
|
|
28
28
|
* so the transplanted body lands in a real box.
|
|
29
29
|
* - STYLE it. The root's `styles` manifest field serves the bundle's own
|
|
30
|
-
* stylesheet rewritten into `@scope` (
|
|
30
|
+
* stylesheet rewritten into `@scope` (`@volter/editor-sdk/session/scoped-game-css`), which is
|
|
31
31
|
* what turns `#root,body,html{width:100%;height:100%}` into a sized root
|
|
32
32
|
* without the editor seeing one of those rules. A `<link rel=stylesheet>` in
|
|
33
33
|
* the document is NOT auto-loaded here: an unscoped page sheet restyles the
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
type IngestEntry,
|
|
20
20
|
ingestEntriesOnSurface,
|
|
21
21
|
} from '../host/ingest/registry';
|
|
22
|
-
import type { IngestGame2D } from '
|
|
22
|
+
import type { IngestGame2D } from '../runtime/pixi/ingest';
|
|
23
23
|
import { composeIngestLoad } from './entry-load';
|
|
24
24
|
|
|
25
25
|
type BaseFields2D = Pick<IngestGame2D, 'id' | 'name' | 'description' | 'captureTimeoutMs'>;
|