@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,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single binding for an action.
|
|
3
|
+
*
|
|
4
|
+
* F2 (spec §12 "Complete Device Backends") un-rejects `mouse_move` and
|
|
5
|
+
* `gamepad_axis_pair` — both now have real `InputManager` readers (see that
|
|
6
|
+
* file's `collectPointerDeltaContributions`/`collectVector2Contributions`):
|
|
7
|
+
* - `mouse_move` feeds a `'pointerDelta'`-valueType action with the raw
|
|
8
|
+
* accumulated mouse delta (no deadzone — deltas are not deadzoned, same
|
|
9
|
+
* rule as `test_pointer_delta`), and can ALSO feed a `'vector2'`-valueType
|
|
10
|
+
* action (the same delta, radial-deadzoned + unit-circle-clamped via
|
|
11
|
+
* `deadzone`) — e.g. an alternative look control. It does not feed a
|
|
12
|
+
* `'scalar'` action (no natural single-axis-select field is defined; add
|
|
13
|
+
* one if a real use case needs it).
|
|
14
|
+
* - `gamepad_axis_pair` feeds a `'vector2'`-valueType action with the
|
|
15
|
+
* coupled `(xAxis, yAxis)` reading, radial-deadzoned the same way a real
|
|
16
|
+
* analog stick is (default deadzone 0.15, matching `gamepad_axis`).
|
|
17
|
+
*
|
|
18
|
+
* F2 also adds `touch_button`/`touch_stick` below — the touch/virtual-control
|
|
19
|
+
* backend. Both are driven by `InputManager.setTouchButton`/`setTouchStick`
|
|
20
|
+
* (the injectable entry points a touch-control UI's own touchstart/
|
|
21
|
+
* touchmove/touchend handlers call — that DOM wiring is a thin adapter at
|
|
22
|
+
* the edge, browser-verified separately; the MAPPING here is unit-tested
|
|
23
|
+
* headlessly with no DOM). `sourceId` names the virtual control (a zone/
|
|
24
|
+
* knob id chosen by the touch UI), reusing the same field `test_*` bindings
|
|
25
|
+
* use for their named source — not a real device index.
|
|
26
|
+
*/
|
|
27
|
+
export type InputBinding = {
|
|
28
|
+
type: 'key';
|
|
29
|
+
code: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'mouse_button';
|
|
32
|
+
button: number;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'mouse_move';
|
|
35
|
+
deadzone?: number;
|
|
36
|
+
} | {
|
|
37
|
+
type: 'gamepad_button';
|
|
38
|
+
button: number;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'gamepad_axis';
|
|
41
|
+
axis: number;
|
|
42
|
+
direction: 'positive' | 'negative';
|
|
43
|
+
deadzone?: number;
|
|
44
|
+
} | {
|
|
45
|
+
type: 'gamepad_axis_pair';
|
|
46
|
+
xAxis: number;
|
|
47
|
+
yAxis: number;
|
|
48
|
+
deadzone?: number;
|
|
49
|
+
} | {
|
|
50
|
+
type: 'test_axis';
|
|
51
|
+
sourceId: string;
|
|
52
|
+
deadzone?: number;
|
|
53
|
+
} | {
|
|
54
|
+
type: 'test_vector2';
|
|
55
|
+
sourceId: string;
|
|
56
|
+
deadzone?: number;
|
|
57
|
+
} | {
|
|
58
|
+
type: 'test_pointer_delta';
|
|
59
|
+
sourceId: string;
|
|
60
|
+
} | {
|
|
61
|
+
type: 'test_pointer_position';
|
|
62
|
+
sourceId: string;
|
|
63
|
+
} | {
|
|
64
|
+
type: 'touch_button';
|
|
65
|
+
sourceId: string;
|
|
66
|
+
} | {
|
|
67
|
+
type: 'touch_stick';
|
|
68
|
+
sourceId: string;
|
|
69
|
+
deadzone?: number;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* The value shape an action carries (F1, spec §12 "Define Typed Action Values"):
|
|
73
|
+
* - `'digital'` — boolean, with pressed/justPressed/justReleased edges (InputManager.isPressed
|
|
74
|
+
* et al.). The default when an action omits `valueType` — every action authored before F1
|
|
75
|
+
* is a digital action, so this stays backward compatible.
|
|
76
|
+
* - `'scalar'` — a single float axis (InputManager.getScalar), e.g. a throttle or a single
|
|
77
|
+
* thumbstick axis.
|
|
78
|
+
* - `'vector2'` — a {x,y} axis pair (InputManager.getVector2), e.g. movement/look.
|
|
79
|
+
* - `'pointerDelta'` — a {x,y} per-frame movement delta (InputManager.getPointerDelta),
|
|
80
|
+
* summed across contributing sources, cleared every frame (mirrors the existing
|
|
81
|
+
* mouseDeltaX/Y accumulator's per-frame-reset shape).
|
|
82
|
+
* - `'pointerPosition'` — a {x,y} absolute position (InputManager.getPointerPosition),
|
|
83
|
+
* last-write-wins across contributing sources (position isn't additive).
|
|
84
|
+
*/
|
|
85
|
+
export type ActionValueType = 'digital' | 'scalar' | 'vector2' | 'pointerDelta' | 'pointerPosition';
|
|
86
|
+
/** A plain 2D vector — the shared shape for Vector2 axis pairs, pointer delta, and pointer
|
|
87
|
+
* position action values (F1). */
|
|
88
|
+
export interface Vector2 {
|
|
89
|
+
x: number;
|
|
90
|
+
y: number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Maps an `ActionValueType` to its TS read type. This is the "no `any`" backbone behind
|
|
94
|
+
* `InputManager.readAction` (and, informally, behind each dedicated typed getter returning a
|
|
95
|
+
* concrete, non-`any` type): given a value type known at the call site (a literal, or a type
|
|
96
|
+
* parameter inferred from a caller's own action-value-type map), the return type is exact.
|
|
97
|
+
*/
|
|
98
|
+
export type ActionValueOf<T extends ActionValueType> = T extends 'digital' ? boolean : T extends 'scalar' ? number : T extends 'vector2' | 'pointerDelta' | 'pointerPosition' ? Vector2 : never;
|
|
99
|
+
/**
|
|
100
|
+
* Device/source metadata (F1 AC): which binding — and, for gamepad bindings, which connected
|
|
101
|
+
* gamepad, or for injected test bindings, which named source — produced an action's current
|
|
102
|
+
* value. Returned by the `*Source` sibling of each typed getter (e.g. `getScalarSource`).
|
|
103
|
+
*/
|
|
104
|
+
export interface ActionValueSource {
|
|
105
|
+
/** The binding kind that produced the current value. */
|
|
106
|
+
bindingType: InputBinding['type'];
|
|
107
|
+
/** Present for `test_axis`/`test_vector2`/`test_pointer_delta`/`test_pointer_position`/
|
|
108
|
+
* `touch_button`/`touch_stick` bindings — the caller-chosen source id passed to the
|
|
109
|
+
* matching `inject*`/`setTouch*` call (F2 reuses this same field for named touch zones,
|
|
110
|
+
* not a real device index). */
|
|
111
|
+
sourceId?: string;
|
|
112
|
+
/** Present for `gamepad_button`/`gamepad_axis`/`gamepad_axis_pair` (F2) bindings — the
|
|
113
|
+
* index into `navigator.getGamepads()` of the gamepad that produced the value. */
|
|
114
|
+
gamepadIndex?: number;
|
|
115
|
+
/** F2 — present alongside `gamepadIndex` for `gamepad_button`/`gamepad_axis`/
|
|
116
|
+
* `gamepad_axis_pair` bindings: the connected gamepad's `Gamepad.id` (device identity,
|
|
117
|
+
* spec §12 F2 "expose device identity"), e.g. a vendor/product string. */
|
|
118
|
+
gamepadId?: string;
|
|
119
|
+
}
|
|
120
|
+
/** An action has a name and one or more bindings */
|
|
121
|
+
export interface InputAction {
|
|
122
|
+
/** Declares this action's value shape (F1). Optional — defaults to `'digital'`, matching
|
|
123
|
+
* every action authored before F1. See `ActionValueType` for the full set. */
|
|
124
|
+
valueType?: ActionValueType;
|
|
125
|
+
bindings: InputBinding[];
|
|
126
|
+
}
|
|
127
|
+
/** The .inputmap.json file format */
|
|
128
|
+
export interface InputMapFile {
|
|
129
|
+
version: number;
|
|
130
|
+
actions: Record<string, InputAction>;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* A structural conflict returned by `InputManager.findConflicts` (F3 AC
|
|
134
|
+
* "Conflicts are detected and returned structurally"): a proposed binding
|
|
135
|
+
* would collide with an EXISTING binding already registered on a different
|
|
136
|
+
* action. Never thrown — always a plain data array the caller (typically a
|
|
137
|
+
* rebinding UI) inspects and decides what to do with (block, warn, or let the
|
|
138
|
+
* user override).
|
|
139
|
+
*/
|
|
140
|
+
export interface BindingConflict {
|
|
141
|
+
/** The other action whose existing binding collides with the proposed one. */
|
|
142
|
+
actionName: string;
|
|
143
|
+
/** That action's bindings-array index the collision was found at (stable
|
|
144
|
+
* enough to pass straight to `removeBinding`/`replaceBinding` if the UI
|
|
145
|
+
* offers "steal this binding"). */
|
|
146
|
+
bindingIndex: number;
|
|
147
|
+
/** The colliding binding itself. */
|
|
148
|
+
binding: InputBinding;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The coarse input-device family a prompt is being requested for (F3 AC "a
|
|
152
|
+
* current-device prompt API"). Keyboard and mouse are kept distinct — a
|
|
153
|
+
* binding list frequently carries one of each (e.g. `key` for movement,
|
|
154
|
+
* `mouse_button` for fire) and a prompt UI usually wants to show whichever
|
|
155
|
+
* one is bound, not conflate the two.
|
|
156
|
+
*/
|
|
157
|
+
export type PromptDevice = 'keyboard' | 'mouse' | 'gamepad' | 'touch';
|
|
158
|
+
/**
|
|
159
|
+
* The resolved display prompt for one action's binding on a given device
|
|
160
|
+
* family (F3 AC: "resolves labels/icons such as `Space`, `A`, or a touch
|
|
161
|
+
* control"). `icon` is a short glyph/name a UI can look up in its own icon
|
|
162
|
+
* set (for keyboard it's the same short label; for gamepad it's the
|
|
163
|
+
* canonical button/glyph name, e.g. `'A'`; the UI decides how to render it).
|
|
164
|
+
*/
|
|
165
|
+
export interface BindingPrompt {
|
|
166
|
+
device: PromptDevice;
|
|
167
|
+
bindingType: InputBinding['type'];
|
|
168
|
+
label: string;
|
|
169
|
+
icon: string;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=input-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-types.d.ts","sourceRoot":"","sources":["../../src/input/input-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { InputBinding, PromptDevice } from './input-types';
|
|
2
|
+
/** Display label for a `KeyboardEvent.code` (F3 AC example: `'Space'`). */
|
|
3
|
+
export declare function keyLabel(code: string): string;
|
|
4
|
+
/** Display label for a `MouseEvent.button` index. */
|
|
5
|
+
export declare function mouseButtonLabel(button: number): string;
|
|
6
|
+
/** W3C Standard Gamepad button-index -> conventional face-button glyph name
|
|
7
|
+
* (F3 AC example: `'A'`). Only meaningful when `Gamepad.mapping === 'standard'`
|
|
8
|
+
* — see `InputManager.getPrompt`, which falls back to a raw index label when
|
|
9
|
+
* the connected pad doesn't report the standard mapping. */
|
|
10
|
+
export declare const STANDARD_GAMEPAD_BUTTON_LABELS: Record<number, string>;
|
|
11
|
+
/** Display label for a single standard-mapping gamepad axis (a `gamepad_axis`
|
|
12
|
+
* binding — one half of a stick, or a trigger). */
|
|
13
|
+
export declare function gamepadAxisLabel(axis: number): string;
|
|
14
|
+
/** Display label for a coupled `gamepad_axis_pair` binding. */
|
|
15
|
+
export declare function gamepadAxisPairLabel(xAxis: number, yAxis: number): string;
|
|
16
|
+
/** Which `PromptDevice` family a binding kind belongs to, or `null` for a
|
|
17
|
+
* binding kind with no real physical device (the synthetic `test_*` kinds —
|
|
18
|
+
* they're an injected-test-input source, never something to prompt a player
|
|
19
|
+
* about). */
|
|
20
|
+
export declare function bindingDeviceFamily(type: InputBinding['type']): PromptDevice | null;
|
|
21
|
+
//# sourceMappingURL=prompt-labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-labels.d.ts","sourceRoot":"","sources":["../../src/input/prompt-labels.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA2BhE,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ7C;AAUD,qDAAqD;AACrD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;6DAG6D;AAC7D,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBjE,CAAC;AAEF;oDACoD;AACpD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED;;;cAGc;AACd,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,YAAY,GAAG,IAAI,CAiBnF"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// F3 (spec §12 "Add Rebinding and Prompts") — the device->label map behind
|
|
2
|
+
// `InputManager.getPrompt`. Pure data + pure functions, no InputManager
|
|
3
|
+
// dependency, so it's independently unit-testable and reusable by a
|
|
4
|
+
// rebinding UI that wants to render a label without going through a live
|
|
5
|
+
// InputManager instance (e.g. previewing a not-yet-applied binding).
|
|
6
|
+
//
|
|
7
|
+
// Labels intentionally favor short, conventional display strings over exact
|
|
8
|
+
// spec names (`'Ctrl'` not `'ControlLeft'`, `'A'` not `'button-0'`) — this is
|
|
9
|
+
// what a HUD prompt or rebinding list actually renders.
|
|
10
|
+
/** `KeyboardEvent.code` values with a friendlier display label than the raw
|
|
11
|
+
* code string. Anything not listed here falls through to `keyLabel`'s
|
|
12
|
+
* `Key*`/`Digit*` stripping, or the raw code as a last resort. */
|
|
13
|
+
const KEY_LABELS = {
|
|
14
|
+
Space: 'Space',
|
|
15
|
+
Escape: 'Esc',
|
|
16
|
+
Enter: 'Enter',
|
|
17
|
+
NumpadEnter: 'Enter',
|
|
18
|
+
Tab: 'Tab',
|
|
19
|
+
Backspace: 'Backspace',
|
|
20
|
+
CapsLock: 'Caps Lock',
|
|
21
|
+
ArrowUp: '↑',
|
|
22
|
+
ArrowDown: '↓',
|
|
23
|
+
ArrowLeft: '←',
|
|
24
|
+
ArrowRight: '→',
|
|
25
|
+
ShiftLeft: 'Shift',
|
|
26
|
+
ShiftRight: 'Shift',
|
|
27
|
+
ControlLeft: 'Ctrl',
|
|
28
|
+
ControlRight: 'Ctrl',
|
|
29
|
+
AltLeft: 'Alt',
|
|
30
|
+
AltRight: 'Alt',
|
|
31
|
+
MetaLeft: 'Meta',
|
|
32
|
+
MetaRight: 'Meta',
|
|
33
|
+
};
|
|
34
|
+
/** Display label for a `KeyboardEvent.code` (F3 AC example: `'Space'`). */
|
|
35
|
+
export function keyLabel(code) {
|
|
36
|
+
const known = KEY_LABELS[code];
|
|
37
|
+
if (known)
|
|
38
|
+
return known;
|
|
39
|
+
if (code.startsWith('Key') && code.length === 4)
|
|
40
|
+
return code.slice(3); // KeyW -> W
|
|
41
|
+
if (code.startsWith('Digit') && code.length === 6)
|
|
42
|
+
return code.slice(5); // Digit1 -> 1
|
|
43
|
+
if (code.startsWith('Numpad'))
|
|
44
|
+
return `Num ${code.slice(6)}`;
|
|
45
|
+
if (code.startsWith('F') && /^F\d+$/.test(code))
|
|
46
|
+
return code; // F1..F12 already short
|
|
47
|
+
return code;
|
|
48
|
+
}
|
|
49
|
+
const MOUSE_BUTTON_LABELS = {
|
|
50
|
+
0: 'Left Click',
|
|
51
|
+
1: 'Middle Click',
|
|
52
|
+
2: 'Right Click',
|
|
53
|
+
3: 'Mouse 4',
|
|
54
|
+
4: 'Mouse 5',
|
|
55
|
+
};
|
|
56
|
+
/** Display label for a `MouseEvent.button` index. */
|
|
57
|
+
export function mouseButtonLabel(button) {
|
|
58
|
+
return MOUSE_BUTTON_LABELS[button] ?? `Mouse ${button}`;
|
|
59
|
+
}
|
|
60
|
+
/** W3C Standard Gamepad button-index -> conventional face-button glyph name
|
|
61
|
+
* (F3 AC example: `'A'`). Only meaningful when `Gamepad.mapping === 'standard'`
|
|
62
|
+
* — see `InputManager.getPrompt`, which falls back to a raw index label when
|
|
63
|
+
* the connected pad doesn't report the standard mapping. */
|
|
64
|
+
export const STANDARD_GAMEPAD_BUTTON_LABELS = {
|
|
65
|
+
0: 'A',
|
|
66
|
+
1: 'B',
|
|
67
|
+
2: 'X',
|
|
68
|
+
3: 'Y',
|
|
69
|
+
4: 'LB',
|
|
70
|
+
5: 'RB',
|
|
71
|
+
6: 'LT',
|
|
72
|
+
7: 'RT',
|
|
73
|
+
8: 'Back',
|
|
74
|
+
9: 'Start',
|
|
75
|
+
10: 'L3',
|
|
76
|
+
11: 'R3',
|
|
77
|
+
12: 'D-Up',
|
|
78
|
+
13: 'D-Down',
|
|
79
|
+
14: 'D-Left',
|
|
80
|
+
15: 'D-Right',
|
|
81
|
+
16: 'Home',
|
|
82
|
+
};
|
|
83
|
+
/** Display label for a single standard-mapping gamepad axis (a `gamepad_axis`
|
|
84
|
+
* binding — one half of a stick, or a trigger). */
|
|
85
|
+
export function gamepadAxisLabel(axis) {
|
|
86
|
+
if (axis === 0 || axis === 1)
|
|
87
|
+
return 'Left Stick';
|
|
88
|
+
if (axis === 2 || axis === 3)
|
|
89
|
+
return 'Right Stick';
|
|
90
|
+
return `Axis ${axis}`;
|
|
91
|
+
}
|
|
92
|
+
/** Display label for a coupled `gamepad_axis_pair` binding. */
|
|
93
|
+
export function gamepadAxisPairLabel(xAxis, yAxis) {
|
|
94
|
+
if (xAxis === 0 && yAxis === 1)
|
|
95
|
+
return 'Left Stick';
|
|
96
|
+
if (xAxis === 2 && yAxis === 3)
|
|
97
|
+
return 'Right Stick';
|
|
98
|
+
return `Axis ${xAxis}/${yAxis}`;
|
|
99
|
+
}
|
|
100
|
+
/** Which `PromptDevice` family a binding kind belongs to, or `null` for a
|
|
101
|
+
* binding kind with no real physical device (the synthetic `test_*` kinds —
|
|
102
|
+
* they're an injected-test-input source, never something to prompt a player
|
|
103
|
+
* about). */
|
|
104
|
+
export function bindingDeviceFamily(type) {
|
|
105
|
+
switch (type) {
|
|
106
|
+
case 'key':
|
|
107
|
+
return 'keyboard';
|
|
108
|
+
case 'mouse_button':
|
|
109
|
+
case 'mouse_move':
|
|
110
|
+
return 'mouse';
|
|
111
|
+
case 'gamepad_button':
|
|
112
|
+
case 'gamepad_axis':
|
|
113
|
+
case 'gamepad_axis_pair':
|
|
114
|
+
return 'gamepad';
|
|
115
|
+
case 'touch_button':
|
|
116
|
+
case 'touch_stick':
|
|
117
|
+
return 'touch';
|
|
118
|
+
default:
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { InputManager } from './input-manager';
|
|
2
|
+
import type { BindingConflict, InputBinding } from './input-types';
|
|
3
|
+
/** How a captured binding is applied once accepted. */
|
|
4
|
+
export type RebindMode = 'replace' | 'add';
|
|
5
|
+
export type RebindState = {
|
|
6
|
+
status: 'idle';
|
|
7
|
+
} | {
|
|
8
|
+
status: 'listening';
|
|
9
|
+
actionName: string;
|
|
10
|
+
mode: RebindMode;
|
|
11
|
+
index: number;
|
|
12
|
+
} | {
|
|
13
|
+
status: 'conflict';
|
|
14
|
+
actionName: string;
|
|
15
|
+
mode: RebindMode;
|
|
16
|
+
index: number;
|
|
17
|
+
proposed: InputBinding;
|
|
18
|
+
conflicts: BindingConflict[];
|
|
19
|
+
} | {
|
|
20
|
+
status: 'applied';
|
|
21
|
+
actionName: string;
|
|
22
|
+
binding: InputBinding;
|
|
23
|
+
};
|
|
24
|
+
export declare class RebindController {
|
|
25
|
+
private readonly input;
|
|
26
|
+
private state;
|
|
27
|
+
constructor(input: InputManager);
|
|
28
|
+
getState(): RebindState;
|
|
29
|
+
/**
|
|
30
|
+
* Enter listening mode for `actionName`. `mode: 'replace'` (default)
|
|
31
|
+
* rebinds the slot at `index` (default 0 — the action's first/primary
|
|
32
|
+
* binding); `mode: 'add'` appends a new binding alongside the existing
|
|
33
|
+
* ones instead (`index` is ignored for `'add'`).
|
|
34
|
+
*/
|
|
35
|
+
listen(actionName: string, mode?: RebindMode, index?: number): void;
|
|
36
|
+
/** Abandon listening/a pending conflict with no changes applied. */
|
|
37
|
+
cancel(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Feed a captured raw `InputBinding` while in the `'listening'` state
|
|
40
|
+
* (a no-op returning the current state unchanged otherwise — e.g. a stray
|
|
41
|
+
* keypress arriving after the UI already cancelled). Checks
|
|
42
|
+
* `InputManager.findConflicts` first: a free binding is applied
|
|
43
|
+
* immediately (-> `'applied'`); a colliding one transitions to
|
|
44
|
+
* `'conflict'` instead of applying, so the UI can surface it before
|
|
45
|
+
* anything changes.
|
|
46
|
+
*/
|
|
47
|
+
capture(binding: InputBinding): RebindState;
|
|
48
|
+
/**
|
|
49
|
+
* From a `'conflict'` state, apply the pending proposed binding anyway
|
|
50
|
+
* (the UI decided the collision is acceptable, e.g. "steal this binding").
|
|
51
|
+
* Does NOT remove the colliding binding from the other action — that is a
|
|
52
|
+
* separate, explicit `InputManager.removeBinding` call the UI can make
|
|
53
|
+
* first if it wants a true swap. A no-op (returns current state) unless a
|
|
54
|
+
* conflict is pending.
|
|
55
|
+
*/
|
|
56
|
+
resolveOverride(): RebindState;
|
|
57
|
+
private apply;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=rebind-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rebind-controller.d.ts","sourceRoot":"","sources":["../../src/input/rebind-controller.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnE,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;AAE3C,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B,GACD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAErE,qBAAa,gBAAgB;IAGf,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,KAAK,CAAmC;gBAEnB,KAAK,EAAE,YAAY;IAEhD,QAAQ,IAAI,WAAW;IAIvB;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,UAAsB,EAAE,KAAK,SAAI,GAAG,IAAI;IAIzE,oEAAoE;IACpE,MAAM,IAAI,IAAI;IAId;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW;IAa3C;;;;;;;OAOG;IACH,eAAe,IAAI,WAAW;IAQ9B,OAAO,CAAC,KAAK;CAId"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// F3 (spec §12 "Add Rebinding and Prompts") — a framework-free rebinding
|
|
2
|
+
// STATE MACHINE over an `InputManager`. Deliberately has no dependency on
|
|
3
|
+
// React (or any UI library): "listen for the next input, surface a conflict,
|
|
4
|
+
// let the caller decide" is the same flow whether the caller is the
|
|
5
|
+
// template's `RebindPanel.tsx` (ordinary React, see that file) or any other
|
|
6
|
+
// UI/CLI. Keeping the logic here means it's unit-testable with no DOM/JSX at
|
|
7
|
+
// all, and the React component becomes a thin, mechanically-verifiable
|
|
8
|
+
// wrapper (see the template component's own doc comment).
|
|
9
|
+
//
|
|
10
|
+
// Flow: `listen(actionName)` -> caller captures the next raw input event
|
|
11
|
+
// itself (a keydown, a gamepad poll, a touch tap — capture is inherently
|
|
12
|
+
// device-specific and NOT this class's job) and turns it into an
|
|
13
|
+
// `InputBinding`, then calls `capture(binding)`. If the proposed binding is
|
|
14
|
+
// free, it's applied immediately and the state becomes `'applied'`. If it
|
|
15
|
+
// collides with another action's existing binding (per
|
|
16
|
+
// `InputManager.findConflicts`), the state becomes `'conflict'`, carrying the
|
|
17
|
+
// structured conflict list for the UI to show — the caller then calls either
|
|
18
|
+
// `resolveOverride()` (apply anyway) or `cancel()`.
|
|
19
|
+
export class RebindController {
|
|
20
|
+
input;
|
|
21
|
+
state = { status: 'idle' };
|
|
22
|
+
constructor(input) {
|
|
23
|
+
this.input = input;
|
|
24
|
+
}
|
|
25
|
+
getState() {
|
|
26
|
+
return this.state;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Enter listening mode for `actionName`. `mode: 'replace'` (default)
|
|
30
|
+
* rebinds the slot at `index` (default 0 — the action's first/primary
|
|
31
|
+
* binding); `mode: 'add'` appends a new binding alongside the existing
|
|
32
|
+
* ones instead (`index` is ignored for `'add'`).
|
|
33
|
+
*/
|
|
34
|
+
listen(actionName, mode = 'replace', index = 0) {
|
|
35
|
+
this.state = { status: 'listening', actionName, mode, index };
|
|
36
|
+
}
|
|
37
|
+
/** Abandon listening/a pending conflict with no changes applied. */
|
|
38
|
+
cancel() {
|
|
39
|
+
this.state = { status: 'idle' };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Feed a captured raw `InputBinding` while in the `'listening'` state
|
|
43
|
+
* (a no-op returning the current state unchanged otherwise — e.g. a stray
|
|
44
|
+
* keypress arriving after the UI already cancelled). Checks
|
|
45
|
+
* `InputManager.findConflicts` first: a free binding is applied
|
|
46
|
+
* immediately (-> `'applied'`); a colliding one transitions to
|
|
47
|
+
* `'conflict'` instead of applying, so the UI can surface it before
|
|
48
|
+
* anything changes.
|
|
49
|
+
*/
|
|
50
|
+
capture(binding) {
|
|
51
|
+
if (this.state.status !== 'listening')
|
|
52
|
+
return this.state;
|
|
53
|
+
const { actionName, mode, index } = this.state;
|
|
54
|
+
const conflicts = this.input.findConflicts(binding, actionName);
|
|
55
|
+
if (conflicts.length > 0) {
|
|
56
|
+
this.state = { status: 'conflict', actionName, mode, index, proposed: binding, conflicts };
|
|
57
|
+
return this.state;
|
|
58
|
+
}
|
|
59
|
+
this.apply(actionName, mode, index, binding);
|
|
60
|
+
this.state = { status: 'applied', actionName, binding };
|
|
61
|
+
return this.state;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* From a `'conflict'` state, apply the pending proposed binding anyway
|
|
65
|
+
* (the UI decided the collision is acceptable, e.g. "steal this binding").
|
|
66
|
+
* Does NOT remove the colliding binding from the other action — that is a
|
|
67
|
+
* separate, explicit `InputManager.removeBinding` call the UI can make
|
|
68
|
+
* first if it wants a true swap. A no-op (returns current state) unless a
|
|
69
|
+
* conflict is pending.
|
|
70
|
+
*/
|
|
71
|
+
resolveOverride() {
|
|
72
|
+
if (this.state.status !== 'conflict')
|
|
73
|
+
return this.state;
|
|
74
|
+
const { actionName, mode, index, proposed } = this.state;
|
|
75
|
+
this.apply(actionName, mode, index, proposed);
|
|
76
|
+
this.state = { status: 'applied', actionName, binding: proposed };
|
|
77
|
+
return this.state;
|
|
78
|
+
}
|
|
79
|
+
apply(actionName, mode, index, binding) {
|
|
80
|
+
if (mode === 'add')
|
|
81
|
+
this.input.addBinding(actionName, binding);
|
|
82
|
+
else
|
|
83
|
+
this.input.replaceBinding(actionName, index, binding);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { InputAction, InputBinding, InputMapFile } from './input-types';
|
|
3
|
+
/** A single input binding. Every kind listed here is LIVE — F2 (spec §12) closed the last two
|
|
4
|
+
* dead stubs (`mouse_move`/`gamepad_axis_pair`) by giving both real `InputManager` readers. */
|
|
5
|
+
export declare const InputBindingSchema: z.ZodType<InputBinding>;
|
|
6
|
+
/** An action has a name (the record key) and one or more bindings. */
|
|
7
|
+
export declare const InputActionSchema: z.ZodType<InputAction>;
|
|
8
|
+
/**
|
|
9
|
+
* The `.inputmap.json` file format (`InputManager.loadMap`).
|
|
10
|
+
*
|
|
11
|
+
* `version` is RESERVED (no range-check reader exists yet for this format —
|
|
12
|
+
* same convention `2d.version`/`Scene2DSchema` used before T2.3 gave the 3D
|
|
13
|
+
* scene version axis a real reader; see `schema-consumption-map.ts`).
|
|
14
|
+
*/
|
|
15
|
+
export declare const InputMapFileSchema: z.ZodType<InputMapFile>;
|
|
16
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/input/schema.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA6L7E;gGACgG;AAChG,eAAO,MAAM,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAa1B,CAAC;AAE9B,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAwBnD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAK1B,CAAC"}
|