@vgai/engine 0.2.0 → 0.3.0
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/README.md +3 -1
- package/dist/adapter/authoring.d.ts +404 -0
- package/dist/adapter/authoring.d.ts.map +1 -0
- package/dist/adapter/authoring.js +22 -0
- package/dist/adapter/colyseus-networking-adapter.d.ts +43 -0
- package/dist/adapter/colyseus-networking-adapter.d.ts.map +1 -0
- package/dist/adapter/colyseus-networking-adapter.js +38 -0
- package/dist/adapter/first-party-systems.d.ts +38 -0
- package/dist/adapter/first-party-systems.d.ts.map +1 -0
- package/dist/adapter/first-party-systems.js +77 -0
- package/dist/adapter/game-adapter.d.ts +133 -0
- package/dist/adapter/game-adapter.d.ts.map +1 -0
- package/dist/adapter/game-adapter.js +10 -0
- package/dist/adapter/host-context.d.ts +73 -0
- package/dist/adapter/host-context.d.ts.map +1 -0
- package/dist/adapter/host-context.js +16 -0
- package/dist/adapter/index.d.ts +22 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/index.js +15 -0
- package/dist/adapter/ingest/game-contract.d.ts +53 -0
- package/dist/adapter/ingest/game-contract.d.ts.map +1 -0
- package/dist/adapter/ingest/game-contract.js +30 -0
- package/dist/adapter/ingest/overlay-applier.d.ts +118 -0
- package/dist/adapter/ingest/overlay-applier.d.ts.map +1 -0
- package/dist/adapter/ingest/overlay-applier.js +132 -0
- package/dist/adapter/ingest/overlay-apply.d.ts +60 -0
- package/dist/adapter/ingest/overlay-apply.d.ts.map +1 -0
- package/dist/adapter/ingest/overlay-apply.js +101 -0
- package/dist/adapter/ingest/overlay-file.d.ts +79 -0
- package/dist/adapter/ingest/overlay-file.d.ts.map +1 -0
- package/dist/adapter/ingest/overlay-file.js +66 -0
- package/dist/adapter/ingest/overlay-report.d.ts +113 -0
- package/dist/adapter/ingest/overlay-report.d.ts.map +1 -0
- package/dist/adapter/ingest/overlay-report.js +103 -0
- package/dist/adapter/ingest/scene-capture.d.ts +97 -0
- package/dist/adapter/ingest/scene-capture.d.ts.map +1 -0
- package/dist/adapter/ingest/scene-capture.js +248 -0
- package/dist/adapter/ingest/upstream-pin.d.ts +47 -0
- package/dist/adapter/ingest/upstream-pin.d.ts.map +1 -0
- package/dist/adapter/ingest/upstream-pin.js +50 -0
- package/dist/adapter/loop-gate-report.d.ts +34 -0
- package/dist/adapter/loop-gate-report.d.ts.map +1 -0
- package/dist/adapter/loop-gate-report.js +37 -0
- package/dist/adapter/rapier-physics-adapter.d.ts +12 -0
- package/dist/adapter/rapier-physics-adapter.d.ts.map +1 -0
- package/dist/adapter/rapier-physics-adapter.js +46 -0
- package/dist/adapter/system-adapter.d.ts +133 -0
- package/dist/adapter/system-adapter.d.ts.map +1 -0
- package/dist/adapter/system-adapter.js +13 -0
- package/dist/adapter/transform.d.ts +18 -0
- package/dist/adapter/transform.d.ts.map +1 -0
- package/dist/adapter/transform.js +1 -0
- package/dist/adapter/vgai-scene-game-adapter.d.ts +116 -0
- package/dist/adapter/vgai-scene-game-adapter.d.ts.map +1 -0
- package/dist/adapter/vgai-scene-game-adapter.js +714 -0
- package/dist/adapter/world-kind.d.ts +30 -0
- package/dist/adapter/world-kind.d.ts.map +1 -0
- package/dist/adapter/world-kind.js +18 -0
- package/dist/ai/navigation.d.ts +64 -0
- package/dist/ai/navigation.d.ts.map +1 -0
- package/dist/ai/navigation.js +133 -0
- package/dist/animation/anim-graph-types.d.ts +25 -0
- package/dist/animation/anim-graph-types.d.ts.map +1 -0
- package/dist/animation/anim-graph-types.js +1 -0
- package/dist/animation/animation-clock.d.ts +213 -0
- package/dist/animation/animation-clock.d.ts.map +1 -0
- package/dist/animation/animation-clock.js +301 -0
- package/dist/animation/blend-node.d.ts +22 -0
- package/dist/animation/blend-node.d.ts.map +1 -0
- package/dist/animation/blend-node.js +97 -0
- package/dist/animation/camera-ownership.d.ts +250 -0
- package/dist/animation/camera-ownership.d.ts.map +1 -0
- package/dist/animation/camera-ownership.js +169 -0
- package/dist/animation/cinematic-cues.d.ts +200 -0
- package/dist/animation/cinematic-cues.d.ts.map +1 -0
- package/dist/animation/cinematic-cues.js +213 -0
- package/dist/animation/clip-map.d.ts +12 -0
- package/dist/animation/clip-map.d.ts.map +1 -0
- package/dist/animation/clip-map.js +37 -0
- package/dist/animation/gsap-registration.d.ts +119 -0
- package/dist/animation/gsap-registration.d.ts.map +1 -0
- package/dist/animation/gsap-registration.js +92 -0
- package/dist/animation/theatre-clock-binding.d.ts +89 -0
- package/dist/animation/theatre-clock-binding.d.ts.map +1 -0
- package/dist/animation/theatre-clock-binding.js +29 -0
- package/dist/animation/theatre-director.d.ts +242 -0
- package/dist/animation/theatre-director.d.ts.map +1 -0
- package/dist/animation/theatre-director.js +235 -0
- package/dist/animation/theatre-object-binding.d.ts +305 -0
- package/dist/animation/theatre-object-binding.d.ts.map +1 -0
- package/dist/animation/theatre-object-binding.js +351 -0
- package/dist/animation/xstate-animation-binding.d.ts +111 -0
- package/dist/animation/xstate-animation-binding.d.ts.map +1 -0
- package/dist/animation/xstate-animation-binding.js +307 -0
- package/dist/animation/xstate-animation-meta.d.ts +228 -0
- package/dist/animation/xstate-animation-meta.d.ts.map +1 -0
- package/dist/animation/xstate-animation-meta.js +221 -0
- package/dist/assets.d.ts +26 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +55 -0
- package/dist/audio/index.d.ts +4 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/index.js +24 -0
- package/dist/audio/tone-clock-binding.d.ts +75 -0
- package/dist/audio/tone-clock-binding.d.ts.map +1 -0
- package/dist/audio/tone-clock-binding.js +29 -0
- package/dist/audio/tone-context.d.ts +114 -0
- package/dist/audio/tone-context.d.ts.map +1 -0
- package/dist/audio/tone-context.js +39 -0
- package/dist/audio/tone-offline-render.d.ts +90 -0
- package/dist/audio/tone-offline-render.d.ts.map +1 -0
- package/dist/audio/tone-offline-render.js +56 -0
- package/dist/audio/wav-encode.d.ts +38 -0
- package/dist/audio/wav-encode.d.ts.map +1 -0
- package/dist/audio/wav-encode.js +97 -0
- package/dist/core/game-loop.d.ts +21 -0
- package/dist/core/game-loop.d.ts.map +1 -0
- package/dist/core/game-loop.js +130 -0
- package/dist/core/system-runner.d.ts +120 -0
- package/dist/core/system-runner.d.ts.map +1 -0
- package/dist/core/system-runner.js +286 -0
- package/dist/core/types.d.ts +58 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +25 -0
- package/dist/data/data-asset.d.ts +101 -0
- package/dist/data/data-asset.d.ts.map +1 -0
- package/dist/data/data-asset.js +122 -0
- package/dist/data/data-check-core.d.ts +110 -0
- package/dist/data/data-check-core.d.ts.map +1 -0
- package/dist/data/data-check-core.js +178 -0
- package/dist/data/data-ref.d.ts +79 -0
- package/dist/data/data-ref.d.ts.map +1 -0
- package/dist/data/data-ref.js +130 -0
- package/dist/data/vite-plugin-data.d.ts +79 -0
- package/dist/data/vite-plugin-data.d.ts.map +1 -0
- package/dist/data/vite-plugin-data.js +217 -0
- package/dist/dev/console-bridge.d.ts +22 -0
- package/dist/dev/console-bridge.d.ts.map +1 -0
- package/dist/dev/console-bridge.js +71 -0
- package/dist/dev/debug-draw.d.ts +24 -0
- package/dist/dev/debug-draw.d.ts.map +1 -0
- package/dist/dev/debug-draw.js +73 -0
- package/dist/dev/logger.d.ts +30 -0
- package/dist/dev/logger.d.ts.map +1 -0
- package/dist/dev/logger.js +90 -0
- package/dist/ecs/component-manager.d.ts +189 -0
- package/dist/ecs/component-manager.d.ts.map +1 -0
- package/dist/ecs/component-manager.js +676 -0
- package/dist/ecs/game-component.d.ts +97 -0
- package/dist/ecs/game-component.d.ts.map +1 -0
- package/dist/ecs/game-component.js +80 -0
- package/dist/ecs/hmr-swap-report.d.ts +53 -0
- package/dist/ecs/hmr-swap-report.d.ts.map +1 -0
- package/dist/ecs/hmr-swap-report.js +55 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/input/input-manager.d.ts +596 -0
- package/dist/input/input-manager.d.ts.map +1 -0
- package/dist/input/input-manager.js +1564 -0
- package/dist/input/input-types.d.ts +171 -0
- package/dist/input/input-types.d.ts.map +1 -0
- package/dist/input/input-types.js +1 -0
- package/dist/input/prompt-labels.d.ts +21 -0
- package/dist/input/prompt-labels.d.ts.map +1 -0
- package/dist/input/prompt-labels.js +121 -0
- package/dist/input/rebind-controller.d.ts +59 -0
- package/dist/input/rebind-controller.d.ts.map +1 -0
- package/dist/input/rebind-controller.js +85 -0
- package/dist/input/schema.d.ts +16 -0
- package/dist/input/schema.d.ts.map +1 -0
- package/dist/input/schema.js +228 -0
- package/dist/loader.d.ts +43 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +59 -0
- package/dist/manifest/index.d.ts +5 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +8 -0
- package/dist/manifest/load-file.d.ts +4 -0
- package/dist/manifest/load-file.d.ts.map +1 -0
- package/dist/manifest/load-file.js +14 -0
- package/dist/manifest/load.d.ts +117 -0
- package/dist/manifest/load.d.ts.map +1 -0
- package/dist/manifest/load.js +255 -0
- package/dist/manifest/schema.d.ts +173 -0
- package/dist/manifest/schema.d.ts.map +1 -0
- package/dist/manifest/schema.js +302 -0
- package/dist/physics/collision-system.d.ts +41 -0
- package/dist/physics/collision-system.d.ts.map +1 -0
- package/dist/physics/collision-system.js +64 -0
- package/dist/physics/physics-registry.d.ts +45 -0
- package/dist/physics/physics-registry.d.ts.map +1 -0
- package/dist/physics/physics-registry.js +65 -0
- package/dist/physics/transform-writer.d.ts +16 -0
- package/dist/physics/transform-writer.d.ts.map +1 -0
- package/dist/physics/transform-writer.js +38 -0
- package/dist/physics/trigger-dispatch.d.ts +24 -0
- package/dist/physics/trigger-dispatch.d.ts.map +1 -0
- package/dist/physics/trigger-dispatch.js +80 -0
- package/dist/react/game-state.d.ts +105 -0
- package/dist/react/game-state.d.ts.map +1 -0
- package/dist/react/game-state.js +144 -0
- package/dist/react/use-data.d.ts +60 -0
- package/dist/react/use-data.d.ts.map +1 -0
- package/dist/react/use-data.js +96 -0
- package/dist/react/use-selection.d.ts +75 -0
- package/dist/react/use-selection.d.ts.map +1 -0
- package/dist/react/use-selection.js +90 -0
- package/dist/render/auto-batcher.d.ts +34 -0
- package/dist/render/auto-batcher.d.ts.map +1 -0
- package/dist/render/auto-batcher.js +140 -0
- package/dist/render/render-batch-system.d.ts +33 -0
- package/dist/render/render-batch-system.d.ts.map +1 -0
- package/dist/render/render-batch-system.js +230 -0
- package/dist/render/render-features.d.ts +47 -0
- package/dist/render/render-features.d.ts.map +1 -0
- package/dist/render/render-features.js +105 -0
- package/dist/render/render-settings.d.ts +36 -0
- package/dist/render/render-settings.d.ts.map +1 -0
- package/dist/render/render-settings.js +51 -0
- package/dist/runtime/create-runtime.d.ts +280 -0
- package/dist/runtime/create-runtime.d.ts.map +1 -0
- package/dist/runtime/create-runtime.js +795 -0
- package/dist/runtime/frame-selector-cache.d.ts +41 -0
- package/dist/runtime/frame-selector-cache.d.ts.map +1 -0
- package/dist/runtime/frame-selector-cache.js +65 -0
- package/dist/runtime/game.d.ts +433 -0
- package/dist/runtime/game.d.ts.map +1 -0
- package/dist/runtime/game.js +569 -0
- package/dist/runtime/input-router.d.ts +78 -0
- package/dist/runtime/input-router.d.ts.map +1 -0
- package/dist/runtime/input-router.js +171 -0
- package/dist/runtime/mount-game.d.ts +129 -0
- package/dist/runtime/mount-game.d.ts.map +1 -0
- package/dist/runtime/mount-game.js +152 -0
- package/dist/runtime/mount-manifest.d.ts +119 -0
- package/dist/runtime/mount-manifest.d.ts.map +1 -0
- package/dist/runtime/mount-manifest.js +204 -0
- package/dist/runtime/render-audio-control.d.ts +110 -0
- package/dist/runtime/render-audio-control.d.ts.map +1 -0
- package/dist/runtime/render-audio-control.js +111 -0
- package/dist/runtime/render-control.d.ts +291 -0
- package/dist/runtime/render-control.d.ts.map +1 -0
- package/dist/runtime/render-control.js +264 -0
- package/dist/runtime/render-seed.d.ts +57 -0
- package/dist/runtime/render-seed.d.ts.map +1 -0
- package/dist/runtime/render-seed.js +74 -0
- package/dist/runtime/scene-ui-bridge.d.ts +69 -0
- package/dist/runtime/scene-ui-bridge.d.ts.map +1 -0
- package/dist/runtime/scene-ui-bridge.js +23 -0
- package/dist/runtime/scene-ui-data.d.ts +13 -0
- package/dist/runtime/scene-ui-data.d.ts.map +1 -0
- package/dist/runtime/scene-ui-data.js +92 -0
- package/dist/runtime/state-bridge.d.ts +47 -0
- package/dist/runtime/state-bridge.d.ts.map +1 -0
- package/dist/runtime/state-bridge.js +53 -0
- package/dist/runtime/types.d.ts +179 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +1 -0
- package/dist/scene/asset-loaders.d.ts +79 -0
- package/dist/scene/asset-loaders.d.ts.map +1 -0
- package/dist/scene/asset-loaders.js +141 -0
- package/dist/scene/asset-paths.d.ts +11 -0
- package/dist/scene/asset-paths.d.ts.map +1 -0
- package/dist/scene/asset-paths.js +108 -0
- package/dist/scene/asset-ref-check.d.ts +88 -0
- package/dist/scene/asset-ref-check.d.ts.map +1 -0
- package/dist/scene/asset-ref-check.js +214 -0
- package/dist/scene/asset-registry.d.ts +30 -0
- package/dist/scene/asset-registry.d.ts.map +1 -0
- package/dist/scene/asset-registry.js +50 -0
- package/dist/scene/collider-dimensions.d.ts +63 -0
- package/dist/scene/collider-dimensions.d.ts.map +1 -0
- package/dist/scene/collider-dimensions.js +98 -0
- package/dist/scene/component-registry.d.ts +17 -0
- package/dist/scene/component-registry.d.ts.map +1 -0
- package/dist/scene/component-registry.js +28 -0
- package/dist/scene/defaults.d.ts +252 -0
- package/dist/scene/defaults.d.ts.map +1 -0
- package/dist/scene/defaults.js +151 -0
- package/dist/scene/geometries/index.d.ts +8 -0
- package/dist/scene/geometries/index.d.ts.map +1 -0
- package/dist/scene/geometries/index.js +7 -0
- package/dist/scene/geometries/terrain.d.ts +2 -0
- package/dist/scene/geometries/terrain.d.ts.map +1 -0
- package/dist/scene/geometries/terrain.js +37 -0
- package/dist/scene/geometry-registry.d.ts +24 -0
- package/dist/scene/geometry-registry.d.ts.map +1 -0
- package/dist/scene/geometry-registry.js +20 -0
- package/dist/scene/instance-registry.d.ts +36 -0
- package/dist/scene/instance-registry.d.ts.map +1 -0
- package/dist/scene/instance-registry.js +55 -0
- package/dist/scene/instancers/grid.d.ts +2 -0
- package/dist/scene/instancers/grid.d.ts.map +1 -0
- package/dist/scene/instancers/grid.js +36 -0
- package/dist/scene/instancers/index.d.ts +8 -0
- package/dist/scene/instancers/index.d.ts.map +1 -0
- package/dist/scene/instancers/index.js +7 -0
- package/dist/scene/light-camera-factory.d.ts +23 -0
- package/dist/scene/light-camera-factory.d.ts.map +1 -0
- package/dist/scene/light-camera-factory.js +68 -0
- package/dist/scene/material-factory.d.ts +17 -0
- package/dist/scene/material-factory.d.ts.map +1 -0
- package/dist/scene/material-factory.js +197 -0
- package/dist/scene/material-registry.d.ts +40 -0
- package/dist/scene/material-registry.d.ts.map +1 -0
- package/dist/scene/material-registry.js +44 -0
- package/dist/scene/materials/index.d.ts +8 -0
- package/dist/scene/materials/index.d.ts.map +1 -0
- package/dist/scene/materials/index.js +7 -0
- package/dist/scene/materials/water.d.ts +2 -0
- package/dist/scene/materials/water.d.ts.map +1 -0
- package/dist/scene/materials/water.js +54 -0
- package/dist/scene/parse.d.ts +23 -0
- package/dist/scene/parse.d.ts.map +1 -0
- package/dist/scene/parse.js +179 -0
- package/dist/scene/particles-factory.d.ts +33 -0
- package/dist/scene/particles-factory.d.ts.map +1 -0
- package/dist/scene/particles-factory.js +282 -0
- package/dist/scene/scene-apply.d.ts +109 -0
- package/dist/scene/scene-apply.d.ts.map +1 -0
- package/dist/scene/scene-apply.js +326 -0
- package/dist/scene/scene-diff-schema.d.ts +285 -0
- package/dist/scene/scene-diff-schema.d.ts.map +1 -0
- package/dist/scene/scene-diff-schema.js +92 -0
- package/dist/scene/scene-diff-types.d.ts +40 -0
- package/dist/scene/scene-diff-types.d.ts.map +1 -0
- package/dist/scene/scene-diff-types.js +14 -0
- package/dist/scene/scene-loader.d.ts +177 -0
- package/dist/scene/scene-loader.d.ts.map +1 -0
- package/dist/scene/scene-loader.js +1213 -0
- package/dist/scene/scene-query.d.ts +11 -0
- package/dist/scene/scene-query.d.ts.map +1 -0
- package/dist/scene/scene-query.js +63 -0
- package/dist/scene/scene-types.d.ts +10 -0
- package/dist/scene/scene-types.d.ts.map +1 -0
- package/dist/scene/scene-types.js +8 -0
- package/dist/scene/scene-version.d.ts +26 -0
- package/dist/scene/scene-version.d.ts.map +1 -0
- package/dist/scene/scene-version.js +34 -0
- package/dist/scene/schema/animation.d.ts +8 -0
- package/dist/scene/schema/animation.d.ts.map +1 -0
- package/dist/scene/schema/animation.js +42 -0
- package/dist/scene/schema/audio.d.ts +13 -0
- package/dist/scene/schema/audio.d.ts.map +1 -0
- package/dist/scene/schema/audio.js +22 -0
- package/dist/scene/schema/camera.d.ts +28 -0
- package/dist/scene/schema/camera.d.ts.map +1 -0
- package/dist/scene/schema/camera.js +17 -0
- package/dist/scene/schema/collider.d.ts +40 -0
- package/dist/scene/schema/collider.d.ts.map +1 -0
- package/dist/scene/schema/collider.js +55 -0
- package/dist/scene/schema/entity-ref.d.ts +31 -0
- package/dist/scene/schema/entity-ref.d.ts.map +1 -0
- package/dist/scene/schema/entity-ref.js +61 -0
- package/dist/scene/schema/entity.d.ts +1036 -0
- package/dist/scene/schema/entity.d.ts.map +1 -0
- package/dist/scene/schema/entity.js +153 -0
- package/dist/scene/schema/environment.d.ts +425 -0
- package/dist/scene/schema/environment.d.ts.map +1 -0
- package/dist/scene/schema/environment.js +357 -0
- package/dist/scene/schema/index.d.ts +39 -0
- package/dist/scene/schema/index.d.ts.map +1 -0
- package/dist/scene/schema/index.js +20 -0
- package/dist/scene/schema/instances.d.ts +14 -0
- package/dist/scene/schema/instances.d.ts.map +1 -0
- package/dist/scene/schema/instances.js +28 -0
- package/dist/scene/schema/joint.d.ts +23 -0
- package/dist/scene/schema/joint.d.ts.map +1 -0
- package/dist/scene/schema/joint.js +23 -0
- package/dist/scene/schema/light.d.ts +38 -0
- package/dist/scene/schema/light.d.ts.map +1 -0
- package/dist/scene/schema/light.js +26 -0
- package/dist/scene/schema/material.d.ts +199 -0
- package/dist/scene/schema/material.d.ts.map +1 -0
- package/dist/scene/schema/material.js +99 -0
- package/dist/scene/schema/mesh.d.ts +48 -0
- package/dist/scene/schema/mesh.d.ts.map +1 -0
- package/dist/scene/schema/mesh.js +82 -0
- package/dist/scene/schema/particles.d.ts +2178 -0
- package/dist/scene/schema/particles.d.ts.map +1 -0
- package/dist/scene/schema/particles.js +321 -0
- package/dist/scene/schema/physics.d.ts +56 -0
- package/dist/scene/schema/physics.d.ts.map +1 -0
- package/dist/scene/schema/physics.js +37 -0
- package/dist/scene/schema/scene-file.d.ts +304 -0
- package/dist/scene/schema/scene-file.d.ts.map +1 -0
- package/dist/scene/schema/scene-file.js +262 -0
- package/dist/scene/schema/shadow.d.ts +28 -0
- package/dist/scene/schema/shadow.d.ts.map +1 -0
- package/dist/scene/schema/shadow.js +20 -0
- package/dist/scene/schema/spline.d.ts +25 -0
- package/dist/scene/schema/spline.d.ts.map +1 -0
- package/dist/scene/schema/spline.js +15 -0
- package/dist/scene/schema/tuples.d.ts +12 -0
- package/dist/scene/schema/tuples.d.ts.map +1 -0
- package/dist/scene/schema/tuples.js +14 -0
- package/dist/scene/schema/ui.d.ts +880 -0
- package/dist/scene/schema/ui.d.ts.map +1 -0
- package/dist/scene/schema/ui.js +506 -0
- package/dist/scene/user-data.d.ts +171 -0
- package/dist/scene/user-data.d.ts.map +1 -0
- package/dist/scene/user-data.js +137 -0
- package/dist/setup/setup-audio.d.ts +20 -0
- package/dist/setup/setup-audio.d.ts.map +1 -0
- package/dist/setup/setup-audio.js +41 -0
- package/dist/setup/setup-particles.d.ts +17 -0
- package/dist/setup/setup-particles.d.ts.map +1 -0
- package/dist/setup/setup-particles.js +16 -0
- package/dist/setup/setup-physics.d.ts +25 -0
- package/dist/setup/setup-physics.d.ts.map +1 -0
- package/dist/setup/setup-physics.js +51 -0
- package/dist/setup/setup-renderer.d.ts +69 -0
- package/dist/setup/setup-renderer.d.ts.map +1 -0
- package/dist/setup/setup-renderer.js +363 -0
- package/dist/tools/define-tool.d.ts +105 -0
- package/dist/tools/define-tool.d.ts.map +1 -0
- package/dist/tools/define-tool.js +82 -0
- package/dist/world2d/authoring-2d.d.ts +76 -0
- package/dist/world2d/authoring-2d.d.ts.map +1 -0
- package/dist/world2d/authoring-2d.js +176 -0
- package/dist/world2d/capture-to-scene2d.d.ts +5 -0
- package/dist/world2d/capture-to-scene2d.d.ts.map +1 -0
- package/dist/world2d/capture-to-scene2d.js +49 -0
- package/dist/world2d/collision-2d.d.ts +52 -0
- package/dist/world2d/collision-2d.d.ts.map +1 -0
- package/dist/world2d/collision-2d.js +70 -0
- package/dist/world2d/components-2d.d.ts +47 -0
- package/dist/world2d/components-2d.d.ts.map +1 -0
- package/dist/world2d/components-2d.js +77 -0
- package/dist/world2d/index.d.ts +34 -0
- package/dist/world2d/index.d.ts.map +1 -0
- package/dist/world2d/index.js +32 -0
- package/dist/world2d/ingest-iframe-2d.d.ts +82 -0
- package/dist/world2d/ingest-iframe-2d.d.ts.map +1 -0
- package/dist/world2d/ingest-iframe-2d.js +166 -0
- package/dist/world2d/ingest2d.d.ts +97 -0
- package/dist/world2d/ingest2d.d.ts.map +1 -0
- package/dist/world2d/ingest2d.js +40 -0
- package/dist/world2d/physics2d-registry.d.ts +24 -0
- package/dist/world2d/physics2d-registry.d.ts.map +1 -0
- package/dist/world2d/physics2d-registry.js +38 -0
- package/dist/world2d/pixi-game-adapter.d.ts +107 -0
- package/dist/world2d/pixi-game-adapter.d.ts.map +1 -0
- package/dist/world2d/pixi-game-adapter.js +211 -0
- package/dist/world2d/pixi-surface.d.ts +39 -0
- package/dist/world2d/pixi-surface.d.ts.map +1 -0
- package/dist/world2d/pixi-surface.js +47 -0
- package/dist/world2d/scene-capture-2d.d.ts +43 -0
- package/dist/world2d/scene-capture-2d.d.ts.map +1 -0
- package/dist/world2d/scene-capture-2d.js +92 -0
- package/dist/world2d/scene2d-loader.d.ts +27 -0
- package/dist/world2d/scene2d-loader.d.ts.map +1 -0
- package/dist/world2d/scene2d-loader.js +274 -0
- package/dist/world2d/schema/entity2d.d.ts +102 -0
- package/dist/world2d/schema/entity2d.d.ts.map +1 -0
- package/dist/world2d/schema/entity2d.js +119 -0
- package/dist/world2d/schema/physics2d.d.ts +46 -0
- package/dist/world2d/schema/physics2d.d.ts.map +1 -0
- package/dist/world2d/schema/physics2d.js +45 -0
- package/dist/world2d/schema/sprite.d.ts +42 -0
- package/dist/world2d/schema/sprite.d.ts.map +1 -0
- package/dist/world2d/schema/sprite.js +63 -0
- package/dist/world2d/schema/tilemap.d.ts +15 -0
- package/dist/world2d/schema/tilemap.d.ts.map +1 -0
- package/dist/world2d/schema/tilemap.js +19 -0
- package/dist/world2d/schema/tuples2d.d.ts +20 -0
- package/dist/world2d/schema/tuples2d.d.ts.map +1 -0
- package/dist/world2d/schema/tuples2d.js +19 -0
- package/dist/world2d/system-adapters-2d.d.ts +16 -0
- package/dist/world2d/system-adapters-2d.d.ts.map +1 -0
- package/dist/world2d/system-adapters-2d.js +37 -0
- package/dist/world2d/transform-writer-2d.d.ts +16 -0
- package/dist/world2d/transform-writer-2d.d.ts.map +1 -0
- package/dist/world2d/transform-writer-2d.js +22 -0
- package/dist/world2d/types.d.ts +53 -0
- package/dist/world2d/types.d.ts.map +1 -0
- package/dist/world2d/types.js +1 -0
- package/package.json +18 -4
- package/src/adapter/authoring.ts +10 -0
- package/src/adapter/first-party-systems.ts +23 -34
- package/src/adapter/index.ts +1 -3
- package/src/adapter/system-adapter.ts +15 -22
- package/src/adapter/vgai-scene-game-adapter.ts +5 -14
- package/src/animation/anim-graph-types.ts +12 -43
- package/src/animation/animation-clock.ts +479 -0
- package/src/animation/camera-ownership.ts +467 -0
- package/src/animation/cinematic-cues.ts +451 -0
- package/src/animation/clip-map.ts +41 -0
- package/src/animation/gsap-registration.ts +184 -0
- package/src/animation/theatre-clock-binding.ts +111 -0
- package/src/animation/theatre-director.ts +347 -0
- package/src/animation/theatre-object-binding.ts +661 -0
- package/src/animation/xstate-animation-binding.ts +398 -0
- package/src/animation/xstate-animation-meta.ts +282 -0
- package/src/audio/index.ts +39 -7
- package/src/audio/tone-clock-binding.ts +98 -0
- package/src/audio/tone-context.ts +129 -0
- package/src/audio/tone-offline-render.ts +167 -0
- package/src/audio/wav-encode.ts +119 -0
- package/src/core/game-loop.ts +17 -0
- package/src/core/types.ts +13 -0
- package/src/data/data-asset.ts +167 -0
- package/src/data/data-check-core.ts +242 -0
- package/src/data/data-ref.ts +145 -0
- package/src/data/vite-plugin-data.ts +290 -0
- package/src/index.ts +48 -0
- package/src/input/input-manager.ts +1206 -32
- package/src/input/input-types.ts +155 -3
- package/src/input/prompt-labels.ts +122 -0
- package/src/input/rebind-controller.ts +105 -0
- package/src/input/schema.ts +206 -52
- package/src/react/use-data.ts +114 -0
- package/src/react/use-selection.tsx +135 -0
- package/src/runtime/create-runtime.ts +30 -9
- package/src/runtime/render-audio-control.ts +168 -0
- package/src/runtime/render-control.ts +522 -0
- package/src/runtime/render-seed.ts +79 -0
- package/src/runtime/types.ts +0 -5
- package/src/scene/asset-loaders.ts +10 -36
- package/src/scene/asset-paths.ts +0 -2
- package/src/scene/asset-ref-check.ts +248 -0
- package/src/scene/parse.ts +133 -0
- package/src/scene/scene-loader.ts +81 -96
- package/src/scene/schema/animation.ts +30 -79
- package/src/scene/schema/entity.ts +20 -0
- package/src/scene/schema/index.ts +2 -12
- package/src/scene/user-data.ts +8 -9
- package/src/setup/setup-renderer.ts +9 -2
- package/src/tools/define-tool.ts +152 -0
- package/src/animation/anim-graph.ts +0 -406
- package/src/animation/anim-system.ts +0 -28
- package/src/animation/property-track.ts +0 -178
- package/src/animation/schema.ts +0 -204
- package/src/audio/ambient.ts +0 -300
- package/src/audio/impacts.ts +0 -212
- package/src/audio/movement.ts +0 -140
- package/src/audio/musical.ts +0 -200
- package/src/audio/ui-sounds.ts +0 -171
- package/src/audio/vehicle.ts +0 -235
- package/src/audio/weapons.ts +0 -152
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const RENDER_FEATURES = [
|
|
3
|
+
{
|
|
4
|
+
key: 'autoBatch',
|
|
5
|
+
label: 'Auto-batching',
|
|
6
|
+
description: 'Automatically batch entities sharing geometry+material into one draw call (InstancedMesh/BatchedMesh) while keeping each Object3D as the handle. The headline perf win; opt out per-entity for custom-shader/skinned meshes.',
|
|
7
|
+
kind: 'toggle',
|
|
8
|
+
default: true,
|
|
9
|
+
apply: 'live',
|
|
10
|
+
perEntity: true,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
key: 'frustumCulling',
|
|
14
|
+
label: 'Frustum culling',
|
|
15
|
+
description: 'Per-instance frustum culling for batched content.',
|
|
16
|
+
kind: 'toggle',
|
|
17
|
+
default: true,
|
|
18
|
+
apply: 'live',
|
|
19
|
+
perEntity: true,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
key: 'lod',
|
|
23
|
+
label: 'Level of detail',
|
|
24
|
+
description: 'Distance-based geometry swap (LOD) for eligible entities.',
|
|
25
|
+
kind: 'toggle',
|
|
26
|
+
default: true,
|
|
27
|
+
apply: 'live',
|
|
28
|
+
perEntity: true,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
key: 'shadows',
|
|
32
|
+
label: 'Shadows',
|
|
33
|
+
description: 'Enable the shadow map. Per-entity cast/receive still applies.',
|
|
34
|
+
kind: 'toggle',
|
|
35
|
+
default: true,
|
|
36
|
+
apply: 'live',
|
|
37
|
+
perEntity: true,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: 'postProcessing',
|
|
41
|
+
label: 'Post-processing',
|
|
42
|
+
description: 'Master switch for the post-processing stack (individual effects nest beneath it).',
|
|
43
|
+
kind: 'toggle',
|
|
44
|
+
default: true,
|
|
45
|
+
apply: 'live',
|
|
46
|
+
perEntity: false,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'resolutionScale',
|
|
50
|
+
label: 'Resolution scale',
|
|
51
|
+
description: 'Device-pixel-ratio multiplier (1.0 = native). The cheapest perf dial.',
|
|
52
|
+
kind: 'number',
|
|
53
|
+
default: 1,
|
|
54
|
+
apply: 'live',
|
|
55
|
+
perEntity: false,
|
|
56
|
+
range: [0.25, 2],
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
key: 'antialias',
|
|
60
|
+
label: 'Antialiasing',
|
|
61
|
+
description: 'MSAA via renderer construction. Applies on reload (renderer re-init).',
|
|
62
|
+
kind: 'toggle',
|
|
63
|
+
default: true,
|
|
64
|
+
apply: 'reload',
|
|
65
|
+
perEntity: false,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
key: 'backend',
|
|
69
|
+
label: 'Renderer backend',
|
|
70
|
+
description: 'GPU backend: auto picks WebGPU when available, else WebGL2. Applies on reload.',
|
|
71
|
+
kind: 'enum',
|
|
72
|
+
default: 'auto',
|
|
73
|
+
apply: 'reload',
|
|
74
|
+
perEntity: false,
|
|
75
|
+
options: ['auto', 'webgl', 'webgpu'],
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
/** Map for O(1) lookup by key. */
|
|
79
|
+
export const RENDER_FEATURE_BY_KEY = new Map(RENDER_FEATURES.map((f) => [f.key, f]));
|
|
80
|
+
/**
|
|
81
|
+
* Build a Zod object for the render settings, derived from the registry so the
|
|
82
|
+
* schema can never drift from the feature list. All fields optional — absence
|
|
83
|
+
* means "inherit" in the cascade. `perEntityOnly` builds the per-entity override
|
|
84
|
+
* schema (only features whose `perEntity` is true).
|
|
85
|
+
*/
|
|
86
|
+
export function buildRenderingZod(opts = {}) {
|
|
87
|
+
const shape = {};
|
|
88
|
+
for (const f of RENDER_FEATURES) {
|
|
89
|
+
if (opts.perEntityOnly && !f.perEntity)
|
|
90
|
+
continue;
|
|
91
|
+
let base;
|
|
92
|
+
if (f.kind === 'toggle')
|
|
93
|
+
base = z.boolean();
|
|
94
|
+
else if (f.kind === 'number')
|
|
95
|
+
base = z.number();
|
|
96
|
+
else
|
|
97
|
+
base = z.enum(f.options);
|
|
98
|
+
shape[f.key] = base.optional().describe(f.description);
|
|
99
|
+
}
|
|
100
|
+
return z
|
|
101
|
+
.object(shape)
|
|
102
|
+
.describe(opts.perEntityOnly
|
|
103
|
+
? 'Per-entity render overrides (omit a field to inherit from the scene/engine default)'
|
|
104
|
+
: 'Scene render settings (omit a field to inherit the engine default)');
|
|
105
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type RenderFeatureValue } from './render-features';
|
|
2
|
+
/**
|
|
3
|
+
* Cascade resolution for render settings: engine default → scene → entity, with
|
|
4
|
+
* tri-state inherit (an absent value inherits from the next level up). See
|
|
5
|
+
* docs/research/RENDER-SETTINGS-UX.md.
|
|
6
|
+
*/
|
|
7
|
+
/** A partial override map (scene-level or entity-level). Absent key = inherit. */
|
|
8
|
+
export type RenderScope = Partial<Record<string, RenderFeatureValue>>;
|
|
9
|
+
/** Fully-resolved settings: every registry key present. */
|
|
10
|
+
export type ResolvedRenderSettings = Record<string, RenderFeatureValue>;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve effective settings. `entity` overrides only apply to features whose
|
|
13
|
+
* `perEntity` flag is set; non-per-entity features resolve across engine→scene
|
|
14
|
+
* only. `??` walks up the chain on `undefined` (inherit) but lets an explicit
|
|
15
|
+
* `false`/`0` override (they are not nullish).
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveRenderSettings(scene?: RenderScope, entity?: RenderScope): ResolvedRenderSettings;
|
|
18
|
+
/**
|
|
19
|
+
* A small observable holding the live scene-level resolved settings. Live
|
|
20
|
+
* features re-apply when a value changes (subscribers are notified with the
|
|
21
|
+
* changed key). This is the seam a future player-facing graphics menu would
|
|
22
|
+
* drive — for now it backs the editor toggles + the runtime systems.
|
|
23
|
+
*/
|
|
24
|
+
export declare class RenderSettings {
|
|
25
|
+
private values;
|
|
26
|
+
private listeners;
|
|
27
|
+
constructor(scene?: RenderScope);
|
|
28
|
+
get(key: string): RenderFeatureValue;
|
|
29
|
+
/** Set a scene-level value; notifies subscribers if it changed. */
|
|
30
|
+
set(key: string, value: RenderFeatureValue): void;
|
|
31
|
+
/** Resolve the effective value for an entity (entity override → scene → default). */
|
|
32
|
+
forEntity(key: string, entity?: RenderScope): RenderFeatureValue;
|
|
33
|
+
subscribe(fn: (key: string, value: RenderFeatureValue) => void): () => void;
|
|
34
|
+
snapshot(): ResolvedRenderSettings;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=render-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-settings.d.ts","sourceRoot":"","sources":["../../src/render/render-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE7E;;;;GAIG;AAEH,kFAAkF;AAClF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAEtE,2DAA2D;AAC3D,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,sBAAsB,CAOxB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAA+D;gBAEpE,KAAK,CAAC,EAAE,WAAW;IAI/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAIpC,mEAAmE;IACnE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAMjD,qFAAqF;IACrF,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,kBAAkB;IAKhE,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,MAAM,IAAI;IAK3E,QAAQ,IAAI,sBAAsB;CAGnC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { RENDER_FEATURES } from './render-features';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve effective settings. `entity` overrides only apply to features whose
|
|
4
|
+
* `perEntity` flag is set; non-per-entity features resolve across engine→scene
|
|
5
|
+
* only. `??` walks up the chain on `undefined` (inherit) but lets an explicit
|
|
6
|
+
* `false`/`0` override (they are not nullish).
|
|
7
|
+
*/
|
|
8
|
+
export function resolveRenderSettings(scene, entity) {
|
|
9
|
+
const out = {};
|
|
10
|
+
for (const f of RENDER_FEATURES) {
|
|
11
|
+
const entityVal = f.perEntity ? entity?.[f.key] : undefined;
|
|
12
|
+
out[f.key] = entityVal ?? scene?.[f.key] ?? f.default;
|
|
13
|
+
}
|
|
14
|
+
return out;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A small observable holding the live scene-level resolved settings. Live
|
|
18
|
+
* features re-apply when a value changes (subscribers are notified with the
|
|
19
|
+
* changed key). This is the seam a future player-facing graphics menu would
|
|
20
|
+
* drive — for now it backs the editor toggles + the runtime systems.
|
|
21
|
+
*/
|
|
22
|
+
export class RenderSettings {
|
|
23
|
+
values;
|
|
24
|
+
listeners = new Set();
|
|
25
|
+
constructor(scene) {
|
|
26
|
+
this.values = resolveRenderSettings(scene);
|
|
27
|
+
}
|
|
28
|
+
get(key) {
|
|
29
|
+
return this.values[key];
|
|
30
|
+
}
|
|
31
|
+
/** Set a scene-level value; notifies subscribers if it changed. */
|
|
32
|
+
set(key, value) {
|
|
33
|
+
if (this.values[key] === value)
|
|
34
|
+
return;
|
|
35
|
+
this.values[key] = value;
|
|
36
|
+
for (const fn of this.listeners)
|
|
37
|
+
fn(key, value);
|
|
38
|
+
}
|
|
39
|
+
/** Resolve the effective value for an entity (entity override → scene → default). */
|
|
40
|
+
forEntity(key, entity) {
|
|
41
|
+
const f = entity?.[key];
|
|
42
|
+
return f ?? this.values[key];
|
|
43
|
+
}
|
|
44
|
+
subscribe(fn) {
|
|
45
|
+
this.listeners.add(fn);
|
|
46
|
+
return () => this.listeners.delete(fn);
|
|
47
|
+
}
|
|
48
|
+
snapshot() {
|
|
49
|
+
return { ...this.values };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import type { GameAdapter, MountedGame, MountedReactWorld } from '../adapter/game-adapter';
|
|
3
|
+
import { type VgaiSceneConfig } from '../adapter/vgai-scene-game-adapter';
|
|
4
|
+
import type { MountedGame2D, World2DHost } from '../world2d/pixi-game-adapter';
|
|
5
|
+
import { type Game, type GameInternal, type WorldInstance } from './game';
|
|
6
|
+
export { adoptSceneCamera } from '../adapter/vgai-scene-game-adapter';
|
|
7
|
+
/**
|
|
8
|
+
* Register a threejs world onto the Game shell. `opts.id` defaults to
|
|
9
|
+
* `'main'` — the single-world callers (`createGameRuntime`, slice-1/2 tests)
|
|
10
|
+
* are unaffected; a second/third world (T7.1 slice 3's two-world proof, and
|
|
11
|
+
* real multi-world manifests later) pass an explicit id. This is the ONE
|
|
12
|
+
* registration code path for a threejs world, whatever its id.
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerThreeWorld(game: GameInternal, adapter: GameAdapter, mounted: MountedGame, opts?: {
|
|
15
|
+
id?: string | undefined;
|
|
16
|
+
pausable?: boolean | undefined;
|
|
17
|
+
}): WorldInstance;
|
|
18
|
+
/** Thin alias kept for existing single-world callers (`createGameRuntime`,
|
|
19
|
+
* `test/game-root.test.ts`, `test/frame-order.test.ts`) — registers the
|
|
20
|
+
* default `'main'` world via the SAME `registerThreeWorld` code path. */
|
|
21
|
+
export declare function registerDefaultThreeWorld(game: GameInternal, adapter: GameAdapter, mounted: MountedGame): WorldInstance;
|
|
22
|
+
export declare function registerPixiWorld(game: GameInternal, adapter: Pixi2DGameAdapter, mounted: MountedGame2D, opts?: {
|
|
23
|
+
id?: string | undefined;
|
|
24
|
+
pausable?: boolean | undefined;
|
|
25
|
+
}): WorldInstance;
|
|
26
|
+
/**
|
|
27
|
+
* Register a react world onto the Game shell (T6.2 slice 1,
|
|
28
|
+
* `docs/REACT-WORLD-DESIGN.md` §1.B) — the react analog of
|
|
29
|
+
* {@link registerThreeWorld}/{@link registerPixiWorld}. A react world has no
|
|
30
|
+
* `ComponentManager` to adopt (D8: react entities host no GameComponents —
|
|
31
|
+
* there is nothing for `adoptWorld` to backfill, unlike the three/pixi
|
|
32
|
+
* siblings above) and no `frame` hooks (react's own `createRoot` schedules
|
|
33
|
+
* its commits; `GameInternal.runFrame` correctly leaves a world with no
|
|
34
|
+
* `frame` untouched by its opaque-`update` fallback too, since
|
|
35
|
+
* `MountedReactGame` declares no `update`). `adapter` is typed as the real
|
|
36
|
+
* {@link ReactWorldAdapter} shape (T7.5, same reasoning as
|
|
37
|
+
* `registerPixiWorld`'s doc comment above) — `WorldInstance.adapter` only
|
|
38
|
+
* needs `.id`, so this passes through with zero cast.
|
|
39
|
+
*/
|
|
40
|
+
export declare function registerReactWorld(game: GameInternal, adapter: ReactWorldAdapter, mounted: MountedReactGame, container: HTMLElement, opts?: {
|
|
41
|
+
id?: string | undefined;
|
|
42
|
+
pausable?: boolean | undefined;
|
|
43
|
+
}): WorldInstance;
|
|
44
|
+
/**
|
|
45
|
+
* Configuration for {@link createGameRuntime}.
|
|
46
|
+
*
|
|
47
|
+
* The host depends on a {@link GameAdapter}. For convenience, the legacy
|
|
48
|
+
* first-party fields (`setup`/`scenePath`/`sceneData`/…) are accepted and wrapped
|
|
49
|
+
* in a {@link VgaiSceneGameAdapter} when no explicit `adapter` is given — so the
|
|
50
|
+
* host's default implementer is first-party, but the host itself only ever
|
|
51
|
+
* mounts "a GameAdapter".
|
|
52
|
+
*
|
|
53
|
+
* This is the LEGACY (single-world) shape — preserved byte-for-byte (T6.1
|
|
54
|
+
* slice 1, docs/MULTI-WORLD-DESIGN.md §1.A): every existing caller and test
|
|
55
|
+
* passes this shape unmodified. See {@link WorldsRuntimeConfig} for the new
|
|
56
|
+
* multi-world alternative and {@link RuntimeConfig} for the union.
|
|
57
|
+
*/
|
|
58
|
+
export interface LegacyRuntimeConfig extends VgaiSceneConfig {
|
|
59
|
+
canvas: HTMLCanvasElement;
|
|
60
|
+
width?: number | undefined;
|
|
61
|
+
height?: number | undefined;
|
|
62
|
+
/** An explicit game adapter to mount (first-party OR external). */
|
|
63
|
+
adapter?: GameAdapter | undefined;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* A pixijs-shaped adapter — the structural contract `WorldMountSpec`'s
|
|
67
|
+
* `pixijs` variant requires. `PixiSceneGameAdapter` (`world2d/
|
|
68
|
+
* pixi-game-adapter.ts`) satisfies this today; it is deliberately NOT named
|
|
69
|
+
* here as a concrete type so an external pixi adapter can satisfy the same
|
|
70
|
+
* shape without importing the first-party implementer.
|
|
71
|
+
*/
|
|
72
|
+
export interface Pixi2DGameAdapter {
|
|
73
|
+
readonly id: string;
|
|
74
|
+
mount(host: World2DHost): Promise<MountedGame2D>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* One world to mount in the {@link WorldsRuntimeConfig} worlds path (T6.1
|
|
78
|
+
* slice 1) — the host-facing mirror of `manifest/load.ts`'s
|
|
79
|
+
* `ResolvedWorldEntry` (same `id`/`zOrder`/`pausable`/`loop` fields; the
|
|
80
|
+
* manifest-to-host translation itself is the editor's job, not this file's).
|
|
81
|
+
*
|
|
82
|
+
* `react` (T6.2 slice 1, `docs/REACT-WORLD-DESIGN.md`) mounts as a DOM-root
|
|
83
|
+
* layer `<div>` in the SAME stack instead of a canvas — see
|
|
84
|
+
* {@link ReactWorldMountSpec}/{@link ReactWorldAdapter} below.
|
|
85
|
+
*/
|
|
86
|
+
export interface WorldMountSpecBase {
|
|
87
|
+
/** Manifest id — must be unique within one `worlds` array. */
|
|
88
|
+
readonly id: string;
|
|
89
|
+
/** Canvas stacking order (COMPOSITION-DESIGN D5 §1); ties broken by array
|
|
90
|
+
* order, mirroring `manifest/load.ts`'s `loadGameManifest` sort. Defaults
|
|
91
|
+
* to `0`. */
|
|
92
|
+
readonly zOrder?: number | undefined;
|
|
93
|
+
/** Whether play-mode pause/step applies to this world (D10). Defaults to `true`. */
|
|
94
|
+
readonly pausable?: boolean | undefined;
|
|
95
|
+
/** `'gated'` (host-driven, default) or `'self-driven'` (this world drives
|
|
96
|
+
* its own loop — D5's "composited, unsynchronized" tier). Carried through
|
|
97
|
+
* for parity with `ResolvedWorldEntry`; T6.1 slice 1 does not yet
|
|
98
|
+
* validate it against the mounted adapter's actual `drivesOwnLoop` (that
|
|
99
|
+
* cross-check, if ever needed, is T7.6's loop-gate surface). */
|
|
100
|
+
readonly loop?: 'gated' | 'self-driven' | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* Optional claim predicate for the delegating input router (D5 §2a), over
|
|
103
|
+
* a point RELATIVE TO THE CONTAINER. Absent means: this world claims only
|
|
104
|
+
* if it ends up the bottom (lowest zOrder) world — see
|
|
105
|
+
* `input-router.ts`'s `resolveClaimingWorld`. A pixijs world with no
|
|
106
|
+
* explicit `hitTest` gets a REAL default derived from its own mounted
|
|
107
|
+
* stage's `EventBoundary.hitTest` (see `derivePixiHitTest` below) — a
|
|
108
|
+
* threejs world with no explicit `hitTest` gets no default (three has no
|
|
109
|
+
* cheap universal "is this pixel interactive" answer).
|
|
110
|
+
*/
|
|
111
|
+
readonly hitTest?: ((x: number, y: number) => boolean) | undefined;
|
|
112
|
+
}
|
|
113
|
+
export interface ThreeWorldMountSpec extends WorldMountSpecBase {
|
|
114
|
+
readonly kind: 'threejs';
|
|
115
|
+
readonly adapter: GameAdapter;
|
|
116
|
+
}
|
|
117
|
+
export interface PixiWorldMountSpec extends WorldMountSpecBase {
|
|
118
|
+
readonly kind: 'pixijs';
|
|
119
|
+
readonly adapter: Pixi2DGameAdapter;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The host-facing surface handed to a {@link ReactWorldAdapter}'s `mount`
|
|
123
|
+
* (T6.2 slice 1, `docs/REACT-WORLD-DESIGN.md` §1.B) — the react analog of
|
|
124
|
+
* {@link World2DHost}. `container` is the absolutely-positioned, z-ordered
|
|
125
|
+
* DOM-root layer `<div>` the host already created and stacked (same box/
|
|
126
|
+
* z-order rules as a canvas per COMPOSITION-DESIGN D5 §1) — the adapter's
|
|
127
|
+
* `mount` renders its react tree INTO this exact element via `createRoot`;
|
|
128
|
+
* it must never create its own root element (mirrors `HostContext`'s
|
|
129
|
+
* "the world's runtime renders into the surface it is handed" rule for
|
|
130
|
+
* canvases, `docs/GAME-ROOT-DESIGN.md` §2).
|
|
131
|
+
*/
|
|
132
|
+
export interface ReactWorldHost {
|
|
133
|
+
readonly container: HTMLElement;
|
|
134
|
+
/**
|
|
135
|
+
* The Game this world is being mounted into — symmetric with
|
|
136
|
+
* `HostContext.game`; what a react adapter hands to `<GameProvider>` so
|
|
137
|
+
* `useGameState` selectors read live state (T7.4 bridge).
|
|
138
|
+
*
|
|
139
|
+
* Optional as of D-V3 (docs/WAVE5-MULTIWORLD-INGEST-DESIGN.md, F24
|
|
140
|
+
* composite): a `default-react` sibling mounted BESIDE an ingest world
|
|
141
|
+
* (`packages/editor/src/ingest-siblings.ts`) has no native `Game` to hand
|
|
142
|
+
* it — there is no first-party `GameContext`/loop for the sibling to join,
|
|
143
|
+
* only the ingested world's own foreign runtime — so its host carries no
|
|
144
|
+
* `game` at all rather than fabricating an empty one (anti-shim rule); the
|
|
145
|
+
* sibling mounts its entry component bare, with no `<GameProvider>` wrap.
|
|
146
|
+
* `mountOneReactWorld` below (the NATIVE multi-world runtime path) still
|
|
147
|
+
* ALWAYS supplies a real `game` — this optionality is reached only by the
|
|
148
|
+
* composite sibling's own hand-built host, never by weakening the native
|
|
149
|
+
* path's guarantee.
|
|
150
|
+
*/
|
|
151
|
+
readonly game?: Game;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* A live, mounted react world (T6.2 slice 1) — the react analog of
|
|
155
|
+
* {@link MountedGame2D}. React worlds host no ticking components (D8 —
|
|
156
|
+
* `ecs/component-manager.ts` already throws on any attach to a react-kind
|
|
157
|
+
* manager) and render from game state via the T7.4 bridge instead of a
|
|
158
|
+
* per-frame `update`, so this shape carries no `update`/`fixedUpdate`/
|
|
159
|
+
* `ctx`/`frame` — `drivesOwnLoop` is always `false` (react's `createRoot`
|
|
160
|
+
* schedules its OWN commits; the host's fixed-step loop never drives it,
|
|
161
|
+
* and it is correctly skipped by `GameInternal.runFrame`'s per-world
|
|
162
|
+
* `frame`-hooks/opaque-`update` dispatch — see `registerReactWorld` below,
|
|
163
|
+
* which registers this `WorldInstance` with no `frame`, same as any other
|
|
164
|
+
* opaque mount with nothing to tick).
|
|
165
|
+
*
|
|
166
|
+
* Deliberately carries NO `firstParty: true` brand: that brand specifically
|
|
167
|
+
* means "has a `.ctx: GameContext`" (`isFirstPartyMounted`,
|
|
168
|
+
* `runtime/game.ts`) — a react world has no Rapier/ComponentManager/
|
|
169
|
+
* GameContext at all, so branding it first-party would be a type lie.
|
|
170
|
+
* `Game.registerWorld`'s "no state bridge" console warning
|
|
171
|
+
* (`docs/REACT-STATE-BRIDGE.md` §4) explicitly exempts `kind: 'react'`
|
|
172
|
+
* (§7.1-15): a react world has no `observe` BY DESIGN — that hook is scoped
|
|
173
|
+
* to `useWorldObservation` (the ingested/foreign-world case), not
|
|
174
|
+
* `useGameState` (`ui/game-state.tsx`), which a react world's own mounted
|
|
175
|
+
* tree uses instead — it reads `Game.state` directly (T7.4's actual bridge
|
|
176
|
+
* for first-party-observable state), never a per-world `observe`.
|
|
177
|
+
*
|
|
178
|
+
* `kind`/`container` (T7.5) satisfy `MountedReactWorld` (`adapter/
|
|
179
|
+
* game-adapter.ts`) — `container` is the SAME `ReactWorldHost.container` the
|
|
180
|
+
* adapter's `mount` was handed (identity matters, mirroring `threeRoot()`/
|
|
181
|
+
* `pixiRoot()`'s "same instance the adapter mounted" contract); every
|
|
182
|
+
* `ReactWorldAdapter` implementer echoes it back here so `mounted` alone
|
|
183
|
+
* (with no separately-threaded `container`) satisfies the union
|
|
184
|
+
* `WorldInstanceInit.mounted`/`WorldInstance.mounted` with zero cast.
|
|
185
|
+
*/
|
|
186
|
+
export interface MountedReactGame extends MountedReactWorld {
|
|
187
|
+
readonly drivesOwnLoop: false;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* A react-shaped adapter — the structural contract `WorldMountSpec`'s
|
|
191
|
+
* `react` variant requires. Mirrors {@link Pixi2DGameAdapter}: deliberately
|
|
192
|
+
* NOT tied to a concrete implementer here so an editor-resolved adapter (the
|
|
193
|
+
* `default-react` resolver branch, T6.2's editor-side follow-up) can satisfy
|
|
194
|
+
* this shape without this file importing react-dom or any editor code.
|
|
195
|
+
*/
|
|
196
|
+
export interface ReactWorldAdapter {
|
|
197
|
+
readonly id: string;
|
|
198
|
+
mount(host: ReactWorldHost): Promise<MountedReactGame>;
|
|
199
|
+
}
|
|
200
|
+
export interface ReactWorldMountSpec extends WorldMountSpecBase {
|
|
201
|
+
readonly kind: 'react';
|
|
202
|
+
readonly adapter: ReactWorldAdapter;
|
|
203
|
+
}
|
|
204
|
+
export type WorldMountSpec = ThreeWorldMountSpec | PixiWorldMountSpec | ReactWorldMountSpec;
|
|
205
|
+
/**
|
|
206
|
+
* The NEW multi-world alternative to {@link LegacyRuntimeConfig} (T6.1 slice
|
|
207
|
+
* 1, docs/MULTI-WORLD-DESIGN.md §1.A; react worlds T6.2 slice 1,
|
|
208
|
+
* docs/REACT-WORLD-DESIGN.md §1.B): mount N worlds (threejs + pixijs + react)
|
|
209
|
+
* on ONE `Game`, stacked in `container` per COMPOSITION-DESIGN D5 §1.
|
|
210
|
+
* Internally the legacy signature maps to a one-element worlds list —
|
|
211
|
+
* `worlds[0]` (by `Game.defaultWorld`'s existing "first threejs world, else
|
|
212
|
+
* first world" rule) is the default world, so
|
|
213
|
+
* `GameSession.scene`/`.camera`/`.mounted` keep aliasing exactly as they do
|
|
214
|
+
* today.
|
|
215
|
+
*/
|
|
216
|
+
export interface WorldsRuntimeConfig {
|
|
217
|
+
/** The host creates one absolutely-positioned surface per world inside
|
|
218
|
+
* this element (D5 §1) — a canvas for threejs/pixijs, a DOM-root `<div>`
|
|
219
|
+
* layer for react — plus one shared UI overlay above all of them. */
|
|
220
|
+
container: HTMLElement;
|
|
221
|
+
worlds: WorldMountSpec[];
|
|
222
|
+
width?: number | undefined;
|
|
223
|
+
height?: number | undefined;
|
|
224
|
+
/**
|
|
225
|
+
* Mirrors `HostContext.headless` (Node conformance tests — no GPU): skips
|
|
226
|
+
* real `WebGLRenderer` construction for every threejs world in this
|
|
227
|
+
* session (a stand-in renderer is used instead, exactly as
|
|
228
|
+
* `VgaiSceneGameAdapter.mount` already special-cases `host.headless`
|
|
229
|
+
* internally). Pixijs worlds are unaffected — Pixi already falls back to
|
|
230
|
+
* a 2D canvas renderer with no GPU. Never set `true` in a real host.
|
|
231
|
+
*/
|
|
232
|
+
headless?: boolean | undefined;
|
|
233
|
+
}
|
|
234
|
+
/** The full config union `createGameRuntime` accepts — the legacy
|
|
235
|
+
* single-`{canvas, adapter}` shape, or the new worlds path. */
|
|
236
|
+
export type RuntimeConfig = LegacyRuntimeConfig | WorldsRuntimeConfig;
|
|
237
|
+
/**
|
|
238
|
+
* Handle returned by createGameRuntime() for controlling the running game.
|
|
239
|
+
*
|
|
240
|
+
* This is the GENERIC host handle — it has no first-party concepts (no
|
|
241
|
+
* `GameContext`, no `GameSetupFn`). First-party features (the live `GameContext`,
|
|
242
|
+
* warm-restart hot reload) are reached by casting `mounted` to `VgaiMountedGame`
|
|
243
|
+
* (the editor does this for HMR/physics-sync — those are inherently first-party).
|
|
244
|
+
*
|
|
245
|
+
* `scene`/`camera`/`mounted` alias the Game's `defaultWorld` (T6.1 slice 1):
|
|
246
|
+
* for the legacy single-world path this is the only world, byte-identical to
|
|
247
|
+
* before; for the worlds path it is the first threejs world (else the first
|
|
248
|
+
* world) by DECLARATION order, per `Game.defaultWorld`'s existing rule —
|
|
249
|
+
* independent of `zOrder`/canvas stacking, which is a rendering-only concern.
|
|
250
|
+
*/
|
|
251
|
+
export interface GameSession {
|
|
252
|
+
stop(): void;
|
|
253
|
+
pause(): void;
|
|
254
|
+
resume(): void;
|
|
255
|
+
step(): void;
|
|
256
|
+
resize(width: number, height: number): void;
|
|
257
|
+
readonly scene: THREE.Scene;
|
|
258
|
+
readonly camera: THREE.PerspectiveCamera;
|
|
259
|
+
/** The mounted game (interface surface). Cast to `VgaiMountedGame` for first-party extras. */
|
|
260
|
+
readonly mounted: MountedGame;
|
|
261
|
+
/** The Game root (T6.1 slice 1) — the multi-world entry point
|
|
262
|
+
* (`game.worlds`/`game.world(id)`/`game.queryByComponent`) for callers
|
|
263
|
+
* that need more than the default-world aliases above. */
|
|
264
|
+
readonly game: Game;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Bootstrap the game host and mount a game adapter.
|
|
268
|
+
*
|
|
269
|
+
* `createGameRuntime` is the HOST: it owns the canvas/renderer(s), the loop,
|
|
270
|
+
* the UI overlay, and the asset cache, and it mounts a {@link GameAdapter}
|
|
271
|
+
* (or several, via the worlds path — T6.1 slice 1) against that context. It
|
|
272
|
+
* knows nothing about `.vscn`, `GameComponent`, Rapier, or `GameSetupFn` —
|
|
273
|
+
* those live inside the first-party {@link VgaiSceneGameAdapter}, which is
|
|
274
|
+
* the default implementer when no explicit `adapter` is supplied on the
|
|
275
|
+
* legacy path. Dispatches on `config`'s shape: {@link WorldsRuntimeConfig}
|
|
276
|
+
* (`worlds` present) goes through {@link createWorldsGameRuntime};
|
|
277
|
+
* everything else is the byte-compatible legacy single-world path.
|
|
278
|
+
*/
|
|
279
|
+
export declare function createGameRuntime(config: RuntimeConfig): Promise<GameSession>;
|
|
280
|
+
//# sourceMappingURL=create-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/create-runtime.ts"],"names":[],"mappings":"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"}
|