@vgai/engine 0.3.0 → 0.4.0-canary.20260715.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/package.json +8 -2
- package/schemas/engine-api.json +124 -0
- package/schemas/engine-api.md +53 -0
- package/schemas/engine-capabilities.json +124 -0
- package/schemas/inputmap.schema.json +314 -0
- package/schemas/mat.schema.json +286 -0
- package/schemas/prefab.schema.json +10148 -0
- package/schemas/scn2d.schema.json +475 -0
- package/schemas/vgai-game.schema.json +383 -0
- package/schemas/vscn.schema.json +11007 -0
- package/src/adapter/{world-kind.ts → adapter-surface.ts} +6 -6
- package/src/adapter/authoring.ts +67 -0
- package/src/adapter/game-adapter.ts +8 -8
- package/src/adapter/host-context.ts +2 -4
- package/src/adapter/index.ts +3 -1
- package/src/adapter/system-adapter.ts +73 -0
- package/src/adapter/vgai-scene-game-adapter.ts +239 -180
- package/src/animation/xstate-animation-binding.ts +300 -262
- package/src/animation/xstate-animation-meta.ts +50 -13
- package/src/character/cloth-sim.ts +533 -0
- package/src/character/spring-chain.ts +307 -0
- package/src/core/game-loop.ts +41 -3
- package/src/core/seeded-random.ts +161 -0
- package/src/core/system-runner.ts +20 -3
- package/src/core/types.ts +37 -0
- package/src/data/data-asset.ts +1 -1
- package/src/dev/performance-profiler.ts +213 -0
- package/src/dev/webgl-gpu-timer.ts +53 -0
- package/src/ecs/component-manager.ts +45 -12
- package/src/ecs/game-component.ts +95 -11
- package/src/humanoid/bake.operation.ts +326 -0
- package/src/humanoid/body.ts +663 -0
- package/src/humanoid/clips.ts +149 -0
- package/src/humanoid/compose.ts +209 -0
- package/src/humanoid/generate.ts +189 -0
- package/src/humanoid/index.ts +36 -0
- package/src/humanoid/schema.ts +108 -0
- package/src/humanoid/skeleton.ts +345 -0
- package/src/index.ts +5 -5
- package/src/input/input-manager.ts +701 -22
- package/src/input/input-types.ts +5 -2
- package/src/manifest/index.ts +5 -5
- package/src/manifest/load.ts +125 -72
- package/src/manifest/schema.ts +362 -255
- package/src/react/game-state.tsx +135 -32
- package/src/react/root-adapter.tsx +49 -0
- package/src/react/unmanaged-root-detector.ts +66 -0
- package/src/react/use-data.ts +12 -2
- package/src/runtime/create-runtime.ts +100 -282
- package/src/runtime/debug-bridge.ts +483 -0
- package/src/runtime/debug-registry.ts +856 -0
- package/src/runtime/game.ts +342 -93
- package/src/runtime/gameplay-rng-trap.ts +134 -0
- package/src/runtime/input-router.ts +7 -7
- package/src/runtime/mount-game.ts +40 -38
- package/src/runtime/mount-manifest.ts +169 -37
- package/src/runtime/render-control.ts +13 -13
- package/src/runtime/render-seed.ts +1 -1
- package/src/runtime/state-bridge.ts +24 -10
- package/src/runtime/types.ts +110 -28
- package/src/scene/asset-registry.ts +22 -0
- package/src/scene/component-registry.ts +14 -3
- package/src/scene/defaults.ts +1 -0
- package/src/scene/light-camera-factory.ts +11 -3
- package/src/scene/scene-apply.ts +55 -4
- package/src/scene/scene-loader.ts +10 -27
- package/src/scene/scene-types.ts +0 -1
- package/src/scene/schema/index.ts +0 -34
- package/src/scene/schema/light.ts +16 -1
- package/src/scene/schema/material.ts +96 -91
- package/src/scene/schema/scene-file.ts +1 -7
- package/src/scene/user-data.ts +14 -1
- package/src/setup/setup-renderer.ts +1 -1
- package/src/tools/define-tool.ts +50 -11
- package/src/world2d/authoring-2d.ts +17 -1
- package/src/world2d/collision-2d.ts +1 -1
- package/src/world2d/pixi-game-adapter.ts +19 -17
- package/src/world2d/scene2d-loader.ts +1 -0
- package/src/world2d/types.ts +8 -2
- package/dist/adapter/authoring.d.ts +0 -404
- package/dist/adapter/authoring.d.ts.map +0 -1
- package/dist/adapter/authoring.js +0 -22
- package/dist/adapter/colyseus-networking-adapter.d.ts +0 -43
- package/dist/adapter/colyseus-networking-adapter.d.ts.map +0 -1
- package/dist/adapter/colyseus-networking-adapter.js +0 -38
- package/dist/adapter/first-party-systems.d.ts +0 -38
- package/dist/adapter/first-party-systems.d.ts.map +0 -1
- package/dist/adapter/first-party-systems.js +0 -77
- package/dist/adapter/game-adapter.d.ts +0 -133
- package/dist/adapter/game-adapter.d.ts.map +0 -1
- package/dist/adapter/game-adapter.js +0 -10
- package/dist/adapter/host-context.d.ts +0 -73
- package/dist/adapter/host-context.d.ts.map +0 -1
- package/dist/adapter/host-context.js +0 -16
- package/dist/adapter/index.d.ts +0 -22
- package/dist/adapter/index.d.ts.map +0 -1
- package/dist/adapter/index.js +0 -15
- package/dist/adapter/ingest/game-contract.d.ts +0 -53
- package/dist/adapter/ingest/game-contract.d.ts.map +0 -1
- package/dist/adapter/ingest/game-contract.js +0 -30
- package/dist/adapter/ingest/overlay-applier.d.ts +0 -118
- package/dist/adapter/ingest/overlay-applier.d.ts.map +0 -1
- package/dist/adapter/ingest/overlay-applier.js +0 -132
- package/dist/adapter/ingest/overlay-apply.d.ts +0 -60
- package/dist/adapter/ingest/overlay-apply.d.ts.map +0 -1
- package/dist/adapter/ingest/overlay-apply.js +0 -101
- package/dist/adapter/ingest/overlay-file.d.ts +0 -79
- package/dist/adapter/ingest/overlay-file.d.ts.map +0 -1
- package/dist/adapter/ingest/overlay-file.js +0 -66
- package/dist/adapter/ingest/overlay-report.d.ts +0 -113
- package/dist/adapter/ingest/overlay-report.d.ts.map +0 -1
- package/dist/adapter/ingest/overlay-report.js +0 -103
- package/dist/adapter/ingest/scene-capture.d.ts +0 -97
- package/dist/adapter/ingest/scene-capture.d.ts.map +0 -1
- package/dist/adapter/ingest/scene-capture.js +0 -248
- package/dist/adapter/ingest/upstream-pin.d.ts +0 -47
- package/dist/adapter/ingest/upstream-pin.d.ts.map +0 -1
- package/dist/adapter/ingest/upstream-pin.js +0 -50
- package/dist/adapter/loop-gate-report.d.ts +0 -34
- package/dist/adapter/loop-gate-report.d.ts.map +0 -1
- package/dist/adapter/loop-gate-report.js +0 -37
- package/dist/adapter/rapier-physics-adapter.d.ts +0 -12
- package/dist/adapter/rapier-physics-adapter.d.ts.map +0 -1
- package/dist/adapter/rapier-physics-adapter.js +0 -46
- package/dist/adapter/system-adapter.d.ts +0 -133
- package/dist/adapter/system-adapter.d.ts.map +0 -1
- package/dist/adapter/system-adapter.js +0 -13
- package/dist/adapter/transform.d.ts +0 -18
- package/dist/adapter/transform.d.ts.map +0 -1
- package/dist/adapter/transform.js +0 -1
- package/dist/adapter/vgai-scene-game-adapter.d.ts +0 -116
- package/dist/adapter/vgai-scene-game-adapter.d.ts.map +0 -1
- package/dist/adapter/vgai-scene-game-adapter.js +0 -714
- package/dist/adapter/world-kind.d.ts +0 -30
- package/dist/adapter/world-kind.d.ts.map +0 -1
- package/dist/adapter/world-kind.js +0 -18
- package/dist/ai/navigation.d.ts +0 -64
- package/dist/ai/navigation.d.ts.map +0 -1
- package/dist/ai/navigation.js +0 -133
- package/dist/animation/anim-graph-types.d.ts +0 -25
- package/dist/animation/anim-graph-types.d.ts.map +0 -1
- package/dist/animation/anim-graph-types.js +0 -1
- package/dist/animation/animation-clock.d.ts +0 -213
- package/dist/animation/animation-clock.d.ts.map +0 -1
- package/dist/animation/animation-clock.js +0 -301
- package/dist/animation/blend-node.d.ts +0 -22
- package/dist/animation/blend-node.d.ts.map +0 -1
- package/dist/animation/blend-node.js +0 -97
- package/dist/animation/camera-ownership.d.ts +0 -250
- package/dist/animation/camera-ownership.d.ts.map +0 -1
- package/dist/animation/camera-ownership.js +0 -169
- package/dist/animation/cinematic-cues.d.ts +0 -200
- package/dist/animation/cinematic-cues.d.ts.map +0 -1
- package/dist/animation/cinematic-cues.js +0 -213
- package/dist/animation/clip-map.d.ts +0 -12
- package/dist/animation/clip-map.d.ts.map +0 -1
- package/dist/animation/clip-map.js +0 -37
- package/dist/animation/gsap-registration.d.ts +0 -119
- package/dist/animation/gsap-registration.d.ts.map +0 -1
- package/dist/animation/gsap-registration.js +0 -92
- package/dist/animation/theatre-clock-binding.d.ts +0 -89
- package/dist/animation/theatre-clock-binding.d.ts.map +0 -1
- package/dist/animation/theatre-clock-binding.js +0 -29
- package/dist/animation/theatre-director.d.ts +0 -242
- package/dist/animation/theatre-director.d.ts.map +0 -1
- package/dist/animation/theatre-director.js +0 -235
- package/dist/animation/theatre-object-binding.d.ts +0 -305
- package/dist/animation/theatre-object-binding.d.ts.map +0 -1
- package/dist/animation/theatre-object-binding.js +0 -351
- package/dist/animation/xstate-animation-binding.d.ts +0 -111
- package/dist/animation/xstate-animation-binding.d.ts.map +0 -1
- package/dist/animation/xstate-animation-binding.js +0 -307
- package/dist/animation/xstate-animation-meta.d.ts +0 -228
- package/dist/animation/xstate-animation-meta.d.ts.map +0 -1
- package/dist/animation/xstate-animation-meta.js +0 -221
- package/dist/assets.d.ts +0 -26
- package/dist/assets.d.ts.map +0 -1
- package/dist/assets.js +0 -55
- package/dist/audio/index.d.ts +0 -4
- package/dist/audio/index.d.ts.map +0 -1
- package/dist/audio/index.js +0 -24
- package/dist/audio/tone-clock-binding.d.ts +0 -75
- package/dist/audio/tone-clock-binding.d.ts.map +0 -1
- package/dist/audio/tone-clock-binding.js +0 -29
- package/dist/audio/tone-context.d.ts +0 -114
- package/dist/audio/tone-context.d.ts.map +0 -1
- package/dist/audio/tone-context.js +0 -39
- package/dist/audio/tone-offline-render.d.ts +0 -90
- package/dist/audio/tone-offline-render.d.ts.map +0 -1
- package/dist/audio/tone-offline-render.js +0 -56
- package/dist/audio/wav-encode.d.ts +0 -38
- package/dist/audio/wav-encode.d.ts.map +0 -1
- package/dist/audio/wav-encode.js +0 -97
- package/dist/core/game-loop.d.ts +0 -21
- package/dist/core/game-loop.d.ts.map +0 -1
- package/dist/core/game-loop.js +0 -130
- package/dist/core/system-runner.d.ts +0 -120
- package/dist/core/system-runner.d.ts.map +0 -1
- package/dist/core/system-runner.js +0 -286
- package/dist/core/types.d.ts +0 -58
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -25
- package/dist/data/data-asset.d.ts +0 -101
- package/dist/data/data-asset.d.ts.map +0 -1
- package/dist/data/data-asset.js +0 -122
- package/dist/data/data-check-core.d.ts +0 -110
- package/dist/data/data-check-core.d.ts.map +0 -1
- package/dist/data/data-check-core.js +0 -178
- package/dist/data/data-ref.d.ts +0 -79
- package/dist/data/data-ref.d.ts.map +0 -1
- package/dist/data/data-ref.js +0 -130
- package/dist/data/vite-plugin-data.d.ts +0 -79
- package/dist/data/vite-plugin-data.d.ts.map +0 -1
- package/dist/data/vite-plugin-data.js +0 -217
- package/dist/dev/console-bridge.d.ts +0 -22
- package/dist/dev/console-bridge.d.ts.map +0 -1
- package/dist/dev/console-bridge.js +0 -71
- package/dist/dev/debug-draw.d.ts +0 -24
- package/dist/dev/debug-draw.d.ts.map +0 -1
- package/dist/dev/debug-draw.js +0 -73
- package/dist/dev/logger.d.ts +0 -30
- package/dist/dev/logger.d.ts.map +0 -1
- package/dist/dev/logger.js +0 -90
- package/dist/ecs/component-manager.d.ts +0 -189
- package/dist/ecs/component-manager.d.ts.map +0 -1
- package/dist/ecs/component-manager.js +0 -676
- package/dist/ecs/game-component.d.ts +0 -97
- package/dist/ecs/game-component.d.ts.map +0 -1
- package/dist/ecs/game-component.js +0 -80
- package/dist/ecs/hmr-swap-report.d.ts +0 -53
- package/dist/ecs/hmr-swap-report.d.ts.map +0 -1
- package/dist/ecs/hmr-swap-report.js +0 -55
- package/dist/index.d.ts +0 -37
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -30
- package/dist/input/input-manager.d.ts +0 -596
- package/dist/input/input-manager.d.ts.map +0 -1
- package/dist/input/input-manager.js +0 -1564
- package/dist/input/input-types.d.ts +0 -171
- package/dist/input/input-types.d.ts.map +0 -1
- package/dist/input/input-types.js +0 -1
- package/dist/input/prompt-labels.d.ts +0 -21
- package/dist/input/prompt-labels.d.ts.map +0 -1
- package/dist/input/prompt-labels.js +0 -121
- package/dist/input/rebind-controller.d.ts +0 -59
- package/dist/input/rebind-controller.d.ts.map +0 -1
- package/dist/input/rebind-controller.js +0 -85
- package/dist/input/schema.d.ts +0 -16
- package/dist/input/schema.d.ts.map +0 -1
- package/dist/input/schema.js +0 -228
- package/dist/loader.d.ts +0 -43
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -59
- package/dist/manifest/index.d.ts +0 -5
- package/dist/manifest/index.d.ts.map +0 -1
- package/dist/manifest/index.js +0 -8
- package/dist/manifest/load-file.d.ts +0 -4
- package/dist/manifest/load-file.d.ts.map +0 -1
- package/dist/manifest/load-file.js +0 -14
- package/dist/manifest/load.d.ts +0 -117
- package/dist/manifest/load.d.ts.map +0 -1
- package/dist/manifest/load.js +0 -255
- package/dist/manifest/schema.d.ts +0 -173
- package/dist/manifest/schema.d.ts.map +0 -1
- package/dist/manifest/schema.js +0 -302
- package/dist/physics/collision-system.d.ts +0 -41
- package/dist/physics/collision-system.d.ts.map +0 -1
- package/dist/physics/collision-system.js +0 -64
- package/dist/physics/physics-registry.d.ts +0 -45
- package/dist/physics/physics-registry.d.ts.map +0 -1
- package/dist/physics/physics-registry.js +0 -65
- package/dist/physics/transform-writer.d.ts +0 -16
- package/dist/physics/transform-writer.d.ts.map +0 -1
- package/dist/physics/transform-writer.js +0 -38
- package/dist/physics/trigger-dispatch.d.ts +0 -24
- package/dist/physics/trigger-dispatch.d.ts.map +0 -1
- package/dist/physics/trigger-dispatch.js +0 -80
- package/dist/react/game-state.d.ts +0 -105
- package/dist/react/game-state.d.ts.map +0 -1
- package/dist/react/game-state.js +0 -144
- package/dist/react/use-data.d.ts +0 -60
- package/dist/react/use-data.d.ts.map +0 -1
- package/dist/react/use-data.js +0 -96
- package/dist/react/use-selection.d.ts +0 -75
- package/dist/react/use-selection.d.ts.map +0 -1
- package/dist/react/use-selection.js +0 -90
- package/dist/render/auto-batcher.d.ts +0 -34
- package/dist/render/auto-batcher.d.ts.map +0 -1
- package/dist/render/auto-batcher.js +0 -140
- package/dist/render/render-batch-system.d.ts +0 -33
- package/dist/render/render-batch-system.d.ts.map +0 -1
- package/dist/render/render-batch-system.js +0 -230
- package/dist/render/render-features.d.ts +0 -47
- package/dist/render/render-features.d.ts.map +0 -1
- package/dist/render/render-features.js +0 -105
- package/dist/render/render-settings.d.ts +0 -36
- package/dist/render/render-settings.d.ts.map +0 -1
- package/dist/render/render-settings.js +0 -51
- package/dist/runtime/create-runtime.d.ts +0 -280
- package/dist/runtime/create-runtime.d.ts.map +0 -1
- package/dist/runtime/create-runtime.js +0 -795
- package/dist/runtime/frame-selector-cache.d.ts +0 -41
- package/dist/runtime/frame-selector-cache.d.ts.map +0 -1
- package/dist/runtime/frame-selector-cache.js +0 -65
- package/dist/runtime/game.d.ts +0 -433
- package/dist/runtime/game.d.ts.map +0 -1
- package/dist/runtime/game.js +0 -569
- package/dist/runtime/input-router.d.ts +0 -78
- package/dist/runtime/input-router.d.ts.map +0 -1
- package/dist/runtime/input-router.js +0 -171
- package/dist/runtime/mount-game.d.ts +0 -129
- package/dist/runtime/mount-game.d.ts.map +0 -1
- package/dist/runtime/mount-game.js +0 -152
- package/dist/runtime/mount-manifest.d.ts +0 -119
- package/dist/runtime/mount-manifest.d.ts.map +0 -1
- package/dist/runtime/mount-manifest.js +0 -204
- package/dist/runtime/render-audio-control.d.ts +0 -110
- package/dist/runtime/render-audio-control.d.ts.map +0 -1
- package/dist/runtime/render-audio-control.js +0 -111
- package/dist/runtime/render-control.d.ts +0 -291
- package/dist/runtime/render-control.d.ts.map +0 -1
- package/dist/runtime/render-control.js +0 -264
- package/dist/runtime/render-seed.d.ts +0 -57
- package/dist/runtime/render-seed.d.ts.map +0 -1
- package/dist/runtime/render-seed.js +0 -74
- package/dist/runtime/scene-ui-bridge.d.ts +0 -69
- package/dist/runtime/scene-ui-bridge.d.ts.map +0 -1
- package/dist/runtime/scene-ui-bridge.js +0 -23
- package/dist/runtime/scene-ui-data.d.ts +0 -13
- package/dist/runtime/scene-ui-data.d.ts.map +0 -1
- package/dist/runtime/scene-ui-data.js +0 -92
- package/dist/runtime/state-bridge.d.ts +0 -47
- package/dist/runtime/state-bridge.d.ts.map +0 -1
- package/dist/runtime/state-bridge.js +0 -53
- package/dist/runtime/types.d.ts +0 -179
- package/dist/runtime/types.d.ts.map +0 -1
- package/dist/runtime/types.js +0 -1
- package/dist/scene/asset-loaders.d.ts +0 -79
- package/dist/scene/asset-loaders.d.ts.map +0 -1
- package/dist/scene/asset-loaders.js +0 -141
- package/dist/scene/asset-paths.d.ts +0 -11
- package/dist/scene/asset-paths.d.ts.map +0 -1
- package/dist/scene/asset-paths.js +0 -108
- package/dist/scene/asset-ref-check.d.ts +0 -88
- package/dist/scene/asset-ref-check.d.ts.map +0 -1
- package/dist/scene/asset-ref-check.js +0 -214
- package/dist/scene/asset-registry.d.ts +0 -30
- package/dist/scene/asset-registry.d.ts.map +0 -1
- package/dist/scene/asset-registry.js +0 -50
- package/dist/scene/collider-dimensions.d.ts +0 -63
- package/dist/scene/collider-dimensions.d.ts.map +0 -1
- package/dist/scene/collider-dimensions.js +0 -98
- package/dist/scene/component-registry.d.ts +0 -17
- package/dist/scene/component-registry.d.ts.map +0 -1
- package/dist/scene/component-registry.js +0 -28
- package/dist/scene/defaults.d.ts +0 -252
- package/dist/scene/defaults.d.ts.map +0 -1
- package/dist/scene/defaults.js +0 -151
- package/dist/scene/geometries/index.d.ts +0 -8
- package/dist/scene/geometries/index.d.ts.map +0 -1
- package/dist/scene/geometries/index.js +0 -7
- package/dist/scene/geometries/terrain.d.ts +0 -2
- package/dist/scene/geometries/terrain.d.ts.map +0 -1
- package/dist/scene/geometries/terrain.js +0 -37
- package/dist/scene/geometry-registry.d.ts +0 -24
- package/dist/scene/geometry-registry.d.ts.map +0 -1
- package/dist/scene/geometry-registry.js +0 -20
- package/dist/scene/instance-registry.d.ts +0 -36
- package/dist/scene/instance-registry.d.ts.map +0 -1
- package/dist/scene/instance-registry.js +0 -55
- package/dist/scene/instancers/grid.d.ts +0 -2
- package/dist/scene/instancers/grid.d.ts.map +0 -1
- package/dist/scene/instancers/grid.js +0 -36
- package/dist/scene/instancers/index.d.ts +0 -8
- package/dist/scene/instancers/index.d.ts.map +0 -1
- package/dist/scene/instancers/index.js +0 -7
- package/dist/scene/light-camera-factory.d.ts +0 -23
- package/dist/scene/light-camera-factory.d.ts.map +0 -1
- package/dist/scene/light-camera-factory.js +0 -68
- package/dist/scene/material-factory.d.ts +0 -17
- package/dist/scene/material-factory.d.ts.map +0 -1
- package/dist/scene/material-factory.js +0 -197
- package/dist/scene/material-registry.d.ts +0 -40
- package/dist/scene/material-registry.d.ts.map +0 -1
- package/dist/scene/material-registry.js +0 -44
- package/dist/scene/materials/index.d.ts +0 -8
- package/dist/scene/materials/index.d.ts.map +0 -1
- package/dist/scene/materials/index.js +0 -7
- package/dist/scene/materials/water.d.ts +0 -2
- package/dist/scene/materials/water.d.ts.map +0 -1
- package/dist/scene/materials/water.js +0 -54
- package/dist/scene/parse.d.ts +0 -23
- package/dist/scene/parse.d.ts.map +0 -1
- package/dist/scene/parse.js +0 -179
- package/dist/scene/particles-factory.d.ts +0 -33
- package/dist/scene/particles-factory.d.ts.map +0 -1
- package/dist/scene/particles-factory.js +0 -282
- package/dist/scene/scene-apply.d.ts +0 -109
- package/dist/scene/scene-apply.d.ts.map +0 -1
- package/dist/scene/scene-apply.js +0 -326
- package/dist/scene/scene-diff-schema.d.ts +0 -285
- package/dist/scene/scene-diff-schema.d.ts.map +0 -1
- package/dist/scene/scene-diff-schema.js +0 -92
- package/dist/scene/scene-diff-types.d.ts +0 -40
- package/dist/scene/scene-diff-types.d.ts.map +0 -1
- package/dist/scene/scene-diff-types.js +0 -14
- package/dist/scene/scene-loader.d.ts +0 -177
- package/dist/scene/scene-loader.d.ts.map +0 -1
- package/dist/scene/scene-loader.js +0 -1213
- package/dist/scene/scene-query.d.ts +0 -11
- package/dist/scene/scene-query.d.ts.map +0 -1
- package/dist/scene/scene-query.js +0 -63
- package/dist/scene/scene-types.d.ts +0 -10
- package/dist/scene/scene-types.d.ts.map +0 -1
- package/dist/scene/scene-types.js +0 -8
- package/dist/scene/scene-version.d.ts +0 -26
- package/dist/scene/scene-version.d.ts.map +0 -1
- package/dist/scene/scene-version.js +0 -34
- package/dist/scene/schema/animation.d.ts +0 -8
- package/dist/scene/schema/animation.d.ts.map +0 -1
- package/dist/scene/schema/animation.js +0 -42
- package/dist/scene/schema/audio.d.ts +0 -13
- package/dist/scene/schema/audio.d.ts.map +0 -1
- package/dist/scene/schema/audio.js +0 -22
- package/dist/scene/schema/camera.d.ts +0 -28
- package/dist/scene/schema/camera.d.ts.map +0 -1
- package/dist/scene/schema/camera.js +0 -17
- package/dist/scene/schema/collider.d.ts +0 -40
- package/dist/scene/schema/collider.d.ts.map +0 -1
- package/dist/scene/schema/collider.js +0 -55
- package/dist/scene/schema/entity-ref.d.ts +0 -31
- package/dist/scene/schema/entity-ref.d.ts.map +0 -1
- package/dist/scene/schema/entity-ref.js +0 -61
- package/dist/scene/schema/entity.d.ts +0 -1036
- package/dist/scene/schema/entity.d.ts.map +0 -1
- package/dist/scene/schema/entity.js +0 -153
- package/dist/scene/schema/environment.d.ts +0 -425
- package/dist/scene/schema/environment.d.ts.map +0 -1
- package/dist/scene/schema/environment.js +0 -357
- package/dist/scene/schema/index.d.ts +0 -39
- package/dist/scene/schema/index.d.ts.map +0 -1
- package/dist/scene/schema/index.js +0 -20
- package/dist/scene/schema/instances.d.ts +0 -14
- package/dist/scene/schema/instances.d.ts.map +0 -1
- package/dist/scene/schema/instances.js +0 -28
- package/dist/scene/schema/joint.d.ts +0 -23
- package/dist/scene/schema/joint.d.ts.map +0 -1
- package/dist/scene/schema/joint.js +0 -23
- package/dist/scene/schema/light.d.ts +0 -38
- package/dist/scene/schema/light.d.ts.map +0 -1
- package/dist/scene/schema/light.js +0 -26
- package/dist/scene/schema/material.d.ts +0 -199
- package/dist/scene/schema/material.d.ts.map +0 -1
- package/dist/scene/schema/material.js +0 -99
- package/dist/scene/schema/mesh.d.ts +0 -48
- package/dist/scene/schema/mesh.d.ts.map +0 -1
- package/dist/scene/schema/mesh.js +0 -82
- package/dist/scene/schema/particles.d.ts +0 -2178
- package/dist/scene/schema/particles.d.ts.map +0 -1
- package/dist/scene/schema/particles.js +0 -321
- package/dist/scene/schema/physics.d.ts +0 -56
- package/dist/scene/schema/physics.d.ts.map +0 -1
- package/dist/scene/schema/physics.js +0 -37
- package/dist/scene/schema/scene-file.d.ts +0 -304
- package/dist/scene/schema/scene-file.d.ts.map +0 -1
- package/dist/scene/schema/scene-file.js +0 -262
- package/dist/scene/schema/shadow.d.ts +0 -28
- package/dist/scene/schema/shadow.d.ts.map +0 -1
- package/dist/scene/schema/shadow.js +0 -20
- package/dist/scene/schema/spline.d.ts +0 -25
- package/dist/scene/schema/spline.d.ts.map +0 -1
- package/dist/scene/schema/spline.js +0 -15
- package/dist/scene/schema/tuples.d.ts +0 -12
- package/dist/scene/schema/tuples.d.ts.map +0 -1
- package/dist/scene/schema/tuples.js +0 -14
- package/dist/scene/schema/ui.d.ts +0 -880
- package/dist/scene/schema/ui.d.ts.map +0 -1
- package/dist/scene/schema/ui.js +0 -506
- package/dist/scene/user-data.d.ts +0 -171
- package/dist/scene/user-data.d.ts.map +0 -1
- package/dist/scene/user-data.js +0 -137
- package/dist/setup/setup-audio.d.ts +0 -20
- package/dist/setup/setup-audio.d.ts.map +0 -1
- package/dist/setup/setup-audio.js +0 -41
- package/dist/setup/setup-particles.d.ts +0 -17
- package/dist/setup/setup-particles.d.ts.map +0 -1
- package/dist/setup/setup-particles.js +0 -16
- package/dist/setup/setup-physics.d.ts +0 -25
- package/dist/setup/setup-physics.d.ts.map +0 -1
- package/dist/setup/setup-physics.js +0 -51
- package/dist/setup/setup-renderer.d.ts +0 -69
- package/dist/setup/setup-renderer.d.ts.map +0 -1
- package/dist/setup/setup-renderer.js +0 -363
- package/dist/tools/define-tool.d.ts +0 -105
- package/dist/tools/define-tool.d.ts.map +0 -1
- package/dist/tools/define-tool.js +0 -82
- package/dist/world2d/authoring-2d.d.ts +0 -76
- package/dist/world2d/authoring-2d.d.ts.map +0 -1
- package/dist/world2d/authoring-2d.js +0 -176
- package/dist/world2d/capture-to-scene2d.d.ts +0 -5
- package/dist/world2d/capture-to-scene2d.d.ts.map +0 -1
- package/dist/world2d/capture-to-scene2d.js +0 -49
- package/dist/world2d/collision-2d.d.ts +0 -52
- package/dist/world2d/collision-2d.d.ts.map +0 -1
- package/dist/world2d/collision-2d.js +0 -70
- package/dist/world2d/components-2d.d.ts +0 -47
- package/dist/world2d/components-2d.d.ts.map +0 -1
- package/dist/world2d/components-2d.js +0 -77
- package/dist/world2d/index.d.ts +0 -34
- package/dist/world2d/index.d.ts.map +0 -1
- package/dist/world2d/index.js +0 -32
- package/dist/world2d/ingest-iframe-2d.d.ts +0 -82
- package/dist/world2d/ingest-iframe-2d.d.ts.map +0 -1
- package/dist/world2d/ingest-iframe-2d.js +0 -166
- package/dist/world2d/ingest2d.d.ts +0 -97
- package/dist/world2d/ingest2d.d.ts.map +0 -1
- package/dist/world2d/ingest2d.js +0 -40
- package/dist/world2d/physics2d-registry.d.ts +0 -24
- package/dist/world2d/physics2d-registry.d.ts.map +0 -1
- package/dist/world2d/physics2d-registry.js +0 -38
- package/dist/world2d/pixi-game-adapter.d.ts +0 -107
- package/dist/world2d/pixi-game-adapter.d.ts.map +0 -1
- package/dist/world2d/pixi-game-adapter.js +0 -211
- package/dist/world2d/pixi-surface.d.ts +0 -39
- package/dist/world2d/pixi-surface.d.ts.map +0 -1
- package/dist/world2d/pixi-surface.js +0 -47
- package/dist/world2d/scene-capture-2d.d.ts +0 -43
- package/dist/world2d/scene-capture-2d.d.ts.map +0 -1
- package/dist/world2d/scene-capture-2d.js +0 -92
- package/dist/world2d/scene2d-loader.d.ts +0 -27
- package/dist/world2d/scene2d-loader.d.ts.map +0 -1
- package/dist/world2d/scene2d-loader.js +0 -274
- package/dist/world2d/schema/entity2d.d.ts +0 -102
- package/dist/world2d/schema/entity2d.d.ts.map +0 -1
- package/dist/world2d/schema/entity2d.js +0 -119
- package/dist/world2d/schema/physics2d.d.ts +0 -46
- package/dist/world2d/schema/physics2d.d.ts.map +0 -1
- package/dist/world2d/schema/physics2d.js +0 -45
- package/dist/world2d/schema/sprite.d.ts +0 -42
- package/dist/world2d/schema/sprite.d.ts.map +0 -1
- package/dist/world2d/schema/sprite.js +0 -63
- package/dist/world2d/schema/tilemap.d.ts +0 -15
- package/dist/world2d/schema/tilemap.d.ts.map +0 -1
- package/dist/world2d/schema/tilemap.js +0 -19
- package/dist/world2d/schema/tuples2d.d.ts +0 -20
- package/dist/world2d/schema/tuples2d.d.ts.map +0 -1
- package/dist/world2d/schema/tuples2d.js +0 -19
- package/dist/world2d/system-adapters-2d.d.ts +0 -16
- package/dist/world2d/system-adapters-2d.d.ts.map +0 -1
- package/dist/world2d/system-adapters-2d.js +0 -37
- package/dist/world2d/transform-writer-2d.d.ts +0 -16
- package/dist/world2d/transform-writer-2d.d.ts.map +0 -1
- package/dist/world2d/transform-writer-2d.js +0 -22
- package/dist/world2d/types.d.ts +0 -53
- package/dist/world2d/types.d.ts.map +0 -1
- package/dist/world2d/types.js +0 -1
- package/src/runtime/scene-ui-bridge.ts +0 -86
- package/src/runtime/scene-ui-data.ts +0 -119
- package/src/scene/schema/ui.ts +0 -602
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { Vec2Schema } from './tuples2d';
|
|
3
|
-
/**
|
|
4
|
-
* `sprite` authored section — engine-owned 2D sprite data, NOT a `PIXI.Sprite`.
|
|
5
|
-
*
|
|
6
|
-
* Per ARCHITECTURE.md §Render Surfaces: authored data says `sprite`, and a runtime
|
|
7
|
-
* adapter instantiates it onto the appropriate backend (here, a `PIXI.Sprite` on
|
|
8
|
-
* the world2d surface). A 1x1 white texture is used when `texture` is omitted, so a
|
|
9
|
-
* tinted rectangle sprite needs no asset.
|
|
10
|
-
*/
|
|
11
|
-
export const SpriteSchema = z
|
|
12
|
-
.object({
|
|
13
|
-
texture: z
|
|
14
|
-
.string()
|
|
15
|
-
.optional()
|
|
16
|
-
.describe('Texture asset URL (loaded via PIXI.Assets). Omit for a tintable 1x1 white texture'),
|
|
17
|
-
frame: z
|
|
18
|
-
.string()
|
|
19
|
-
.optional()
|
|
20
|
-
.describe('Spritesheet frame/sub-texture name when `texture` is a spritesheet atlas'),
|
|
21
|
-
anchor: Vec2Schema.optional().describe('Normalized anchor [x, y] (0..1). Default [0.5, 0.5]'),
|
|
22
|
-
tint: z
|
|
23
|
-
.string()
|
|
24
|
-
.optional()
|
|
25
|
-
.describe("Tint color as hex string (e.g. '#ff8800'). Default white"),
|
|
26
|
-
alpha: z.number().min(0).max(1).optional().describe('Opacity 0..1. Default 1'),
|
|
27
|
-
width: z
|
|
28
|
-
.number()
|
|
29
|
-
.optional()
|
|
30
|
-
.describe('Explicit display width in pixels (overrides texture size)'),
|
|
31
|
-
height: z
|
|
32
|
-
.number()
|
|
33
|
-
.optional()
|
|
34
|
-
.describe('Explicit display height in pixels (overrides texture size)'),
|
|
35
|
-
blendMode: z
|
|
36
|
-
.enum(['normal', 'add', 'multiply', 'screen'])
|
|
37
|
-
.optional()
|
|
38
|
-
.describe('PixiJS blend mode. Default normal'),
|
|
39
|
-
interactive: z
|
|
40
|
-
.boolean()
|
|
41
|
-
.optional()
|
|
42
|
-
.describe('Enable federated pointer events (eventMode=static) so this sprite can be picked'),
|
|
43
|
-
filter: z
|
|
44
|
-
.enum(['none', 'blur', 'desaturate'])
|
|
45
|
-
.optional()
|
|
46
|
-
.describe('Apply a PixiJS filter (BlurFilter / ColorMatrix desaturate). Default none'),
|
|
47
|
-
animationFrames: z
|
|
48
|
-
.number()
|
|
49
|
-
.int()
|
|
50
|
-
.optional()
|
|
51
|
-
.describe('If set, build an AnimatedSprite cycling N generated tinted frames'),
|
|
52
|
-
fps: z.number().optional().describe('AnimatedSprite playback speed in frames/sec. Default 8'),
|
|
53
|
-
})
|
|
54
|
-
.describe('2D sprite appearance (world2d). Instantiated as a PIXI.Sprite or AnimatedSprite');
|
|
55
|
-
/** `text` authored section — a world-space PIXI.Text label (world-space UI). */
|
|
56
|
-
export const Text2DSchema = z
|
|
57
|
-
.object({
|
|
58
|
-
text: z.string().describe('The string to display'),
|
|
59
|
-
fontSize: z.number().optional().describe('Font size in pixels. Default 24'),
|
|
60
|
-
fill: z.string().optional().describe("Text color as hex string. Default '#ffffff'"),
|
|
61
|
-
anchor: Vec2Schema.optional().describe('Normalized anchor [x, y] (0..1). Default [0.5, 0.5]'),
|
|
62
|
-
})
|
|
63
|
-
.describe('2D world-space text label (world2d). Instantiated as a PIXI.Text');
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* `tilemap` authored section — engine-owned 2D tilemap data (NOT a CompositeTilemap),
|
|
4
|
-
* instantiated to a `@pixi/tilemap` CompositeTilemap by the 2D spawn path. Asset-light:
|
|
5
|
-
* a `palette` of hex colors generates one tile texture each, and `tiles` is a row-major
|
|
6
|
-
* grid of palette indices. A real tileset texture/Tiled `.tmj` import is the natural
|
|
7
|
-
* extension (per the spec's optional Tiled note).
|
|
8
|
-
*/
|
|
9
|
-
export declare const TilemapSchema: z.ZodObject<{
|
|
10
|
-
tileSize: z.ZodNumber;
|
|
11
|
-
palette: z.ZodArray<z.ZodString>;
|
|
12
|
-
tiles: z.ZodArray<z.ZodArray<z.ZodNumber>>;
|
|
13
|
-
}, z.core.$strip>;
|
|
14
|
-
export type SceneTilemap = z.infer<typeof TilemapSchema>;
|
|
15
|
-
//# sourceMappingURL=tilemap.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tilemap.d.ts","sourceRoot":"","sources":["../../../src/world2d/schema/tilemap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;;;;iBAU2D,CAAC;AAEtF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* `tilemap` authored section — engine-owned 2D tilemap data (NOT a CompositeTilemap),
|
|
4
|
-
* instantiated to a `@pixi/tilemap` CompositeTilemap by the 2D spawn path. Asset-light:
|
|
5
|
-
* a `palette` of hex colors generates one tile texture each, and `tiles` is a row-major
|
|
6
|
-
* grid of palette indices. A real tileset texture/Tiled `.tmj` import is the natural
|
|
7
|
-
* extension (per the spec's optional Tiled note).
|
|
8
|
-
*/
|
|
9
|
-
export const TilemapSchema = z
|
|
10
|
-
.object({
|
|
11
|
-
tileSize: z.number().describe('Tile width/height in pixels'),
|
|
12
|
-
palette: z
|
|
13
|
-
.array(z.string())
|
|
14
|
-
.describe('Hex colors; one generated tile texture per entry (index → color)'),
|
|
15
|
-
tiles: z
|
|
16
|
-
.array(z.array(z.number().int()))
|
|
17
|
-
.describe('Row-major grid of palette indices (each row is an array of tile indices)'),
|
|
18
|
-
})
|
|
19
|
-
.describe('2D tilemap (world2d). Instantiated as a @pixi/tilemap CompositeTilemap');
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/** 2D vector as [x, y]. The world2d analog of the 3D Vec3. */
|
|
3
|
-
export declare const Vec2Schema: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
4
|
-
export type Vec2 = z.infer<typeof Vec2Schema>;
|
|
5
|
-
/**
|
|
6
|
-
* 2D local transform — the world2d analog of the 3D TransformSchema.
|
|
7
|
-
*
|
|
8
|
-
* Orientation is a single scalar `rotation` (radians, about the screen Z axis),
|
|
9
|
-
* NOT a quaternion: PixiJS display objects rotate in the plane. The runtime/editor
|
|
10
|
-
* neutral `Transform` tuple (position[3]/quaternion[4]/scale[3]) maps onto this as
|
|
11
|
-
* z = 0 and rotation about Z (see PIXI-WORLD2D-MAXIMAL-SPEC model-transform2d-section).
|
|
12
|
-
*/
|
|
13
|
-
export declare const Transform2DSchema: z.ZodObject<{
|
|
14
|
-
position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
15
|
-
rotation: z.ZodOptional<z.ZodNumber>;
|
|
16
|
-
scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
17
|
-
pivot: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
18
|
-
}, z.core.$strip>;
|
|
19
|
-
export type SceneTransform2D = z.infer<typeof Transform2DSchema>;
|
|
20
|
-
//# sourceMappingURL=tuples2d.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tuples2d.d.ts","sourceRoot":"","sources":["../../../src/world2d/schema/tuples2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8DAA8D;AAC9D,eAAO,MAAM,UAAU,8CAAoE,CAAC;AAE5F,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;iBAOwC,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/** 2D vector as [x, y]. The world2d analog of the 3D Vec3. */
|
|
3
|
-
export const Vec2Schema = z.tuple([z.number(), z.number()]).describe('2D vector as [x, y]');
|
|
4
|
-
/**
|
|
5
|
-
* 2D local transform — the world2d analog of the 3D TransformSchema.
|
|
6
|
-
*
|
|
7
|
-
* Orientation is a single scalar `rotation` (radians, about the screen Z axis),
|
|
8
|
-
* NOT a quaternion: PixiJS display objects rotate in the plane. The runtime/editor
|
|
9
|
-
* neutral `Transform` tuple (position[3]/quaternion[4]/scale[3]) maps onto this as
|
|
10
|
-
* z = 0 and rotation about Z (see PIXI-WORLD2D-MAXIMAL-SPEC model-transform2d-section).
|
|
11
|
-
*/
|
|
12
|
-
export const Transform2DSchema = z
|
|
13
|
-
.object({
|
|
14
|
-
position: Vec2Schema.optional().describe('Local position [x, y] in world2d pixels'),
|
|
15
|
-
rotation: z.number().optional().describe('Rotation in radians about the Z axis. Default 0'),
|
|
16
|
-
scale: Vec2Schema.optional().describe('Scale per axis [x, y]. Default [1, 1]'),
|
|
17
|
-
pivot: Vec2Schema.optional().describe('Local pivot point [x, y] (center of rotation/scale)'),
|
|
18
|
-
})
|
|
19
|
-
.describe('2D local transform relative to parent (world2d surface)');
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Container } from 'pixi.js';
|
|
2
|
-
import type { Physics2DRegistry } from './physics2d-registry';
|
|
3
|
-
/**
|
|
4
|
-
* PhysicsAdapter2D — the world2d analog of the 3D PhysicsAdapter (rapier-physics-adapter).
|
|
5
|
-
* Lets the editor coordinate editing of a Rapier-2D-driven entity WITHOUT owning the
|
|
6
|
-
* simulation: report transform ownership, then freeze → commit → unfreeze so a drag
|
|
7
|
-
* sticks instead of being stomped by the next physics step.
|
|
8
|
-
*/
|
|
9
|
-
export interface PhysicsAdapter2D {
|
|
10
|
-
ownerOf(display: Container): 'physics' | 'none';
|
|
11
|
-
freeze(display: Container): void;
|
|
12
|
-
commit(display: Container, position: [number, number], rotation: number): void;
|
|
13
|
-
unfreeze(display: Container): void;
|
|
14
|
-
}
|
|
15
|
-
export declare function createPhysicsAdapter2D(physics: Physics2DRegistry): PhysicsAdapter2D;
|
|
16
|
-
//# sourceMappingURL=system-adapters-2d.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system-adapters-2d.d.ts","sourceRoot":"","sources":["../../src/world2d/system-adapters-2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/E,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAgCnF"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export function createPhysicsAdapter2D(physics) {
|
|
2
|
-
// Remember each frozen body's prior type so unfreeze restores it.
|
|
3
|
-
const frozen = new WeakMap();
|
|
4
|
-
return {
|
|
5
|
-
ownerOf(display) {
|
|
6
|
-
const refs = physics.get(display);
|
|
7
|
-
if (!refs)
|
|
8
|
-
return 'none';
|
|
9
|
-
return refs.body.isDynamic() || refs.body.isKinematic() ? 'physics' : 'none';
|
|
10
|
-
},
|
|
11
|
-
freeze(display) {
|
|
12
|
-
const refs = physics.get(display);
|
|
13
|
-
if (!refs)
|
|
14
|
-
return;
|
|
15
|
-
frozen.set(display, refs.body.bodyType());
|
|
16
|
-
// Kinematic-position bodies hold a pose without being driven by forces.
|
|
17
|
-
refs.body.setBodyType(2 /* KinematicPositionBased */, true);
|
|
18
|
-
},
|
|
19
|
-
commit(display, position, rotation) {
|
|
20
|
-
const refs = physics.get(display);
|
|
21
|
-
if (!refs)
|
|
22
|
-
return;
|
|
23
|
-
refs.body.setTranslation({ x: position[0], y: position[1] }, true);
|
|
24
|
-
refs.body.setRotation(rotation, true);
|
|
25
|
-
},
|
|
26
|
-
unfreeze(display) {
|
|
27
|
-
const refs = physics.get(display);
|
|
28
|
-
if (!refs)
|
|
29
|
-
return;
|
|
30
|
-
const prior = frozen.get(display);
|
|
31
|
-
if (prior !== undefined) {
|
|
32
|
-
refs.body.setBodyType(prior, true);
|
|
33
|
-
frozen.delete(display);
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Physics2DRegistry } from './physics2d-registry';
|
|
2
|
-
/**
|
|
3
|
-
* Build the single postPhysics transform writer for world2d — the ~5-line 2D
|
|
4
|
-
* analog of `createTransformWriter`.
|
|
5
|
-
*
|
|
6
|
-
* Rapier 2D reports `translation()` as `{x, y}` and `rotation()` as a SCALAR angle
|
|
7
|
-
* (radians), so the writeback is simply `display.position.set(x, y)` +
|
|
8
|
-
* `display.rotation = angle`. Scale is left untouched (Rapier carries no scale).
|
|
9
|
-
*
|
|
10
|
-
* Bodies are simulated in world2d pixel space directly (the surface uses a
|
|
11
|
-
* y-down, pixel-unit world), so no unit conversion is needed; parented entities
|
|
12
|
-
* are kept flat under the world container by the loader, mirroring the 3D writer's
|
|
13
|
-
* scene-root fast path.
|
|
14
|
-
*/
|
|
15
|
-
export declare function createTransformWriter2D(physics: Physics2DRegistry): () => void;
|
|
16
|
-
//# sourceMappingURL=transform-writer-2d.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transform-writer-2d.d.ts","sourceRoot":"","sources":["../../src/world2d/transform-writer-2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,SAC3B,IAAI,CAO1C"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Build the single postPhysics transform writer for world2d — the ~5-line 2D
|
|
3
|
-
* analog of `createTransformWriter`.
|
|
4
|
-
*
|
|
5
|
-
* Rapier 2D reports `translation()` as `{x, y}` and `rotation()` as a SCALAR angle
|
|
6
|
-
* (radians), so the writeback is simply `display.position.set(x, y)` +
|
|
7
|
-
* `display.rotation = angle`. Scale is left untouched (Rapier carries no scale).
|
|
8
|
-
*
|
|
9
|
-
* Bodies are simulated in world2d pixel space directly (the surface uses a
|
|
10
|
-
* y-down, pixel-unit world), so no unit conversion is needed; parented entities
|
|
11
|
-
* are kept flat under the world container by the loader, mirroring the 3D writer's
|
|
12
|
-
* scene-root fast path.
|
|
13
|
-
*/
|
|
14
|
-
export function createTransformWriter2D(physics) {
|
|
15
|
-
return function writeTransforms2D() {
|
|
16
|
-
for (const [display, { body }] of physics.entries()) {
|
|
17
|
-
const t = body.translation();
|
|
18
|
-
display.position.set(t.x, t.y);
|
|
19
|
-
display.rotation = body.rotation();
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}
|
package/dist/world2d/types.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type RAPIER from '@dimforge/rapier2d-compat';
|
|
2
|
-
import type { Application, Container } from 'pixi.js';
|
|
3
|
-
import type { z } from 'zod';
|
|
4
|
-
import type { createSystemRunner } from '../core/system-runner';
|
|
5
|
-
import type { SystemPhaseName } from '../core/types';
|
|
6
|
-
import type { ComponentManager } from '../ecs/component-manager';
|
|
7
|
-
import type { GameComponent } from '../ecs/game-component';
|
|
8
|
-
import type { Collision2DSystem } from './collision-2d';
|
|
9
|
-
import type { Physics2DRegistry } from './physics2d-registry';
|
|
10
|
-
/**
|
|
11
|
-
* All world2d subsystems, passed to every world2d `setup(ctx)` and to each
|
|
12
|
-
* `GameComponent<'pixijs'>` lifecycle method — the 2D analog of `GameContext`.
|
|
13
|
-
*
|
|
14
|
-
* Raw libraries (call directly, no wrappers): `app` / `stage` (PixiJS),
|
|
15
|
-
* `rapier2dWorld` / `rapier2d` (Rapier 2D). Engine handles bridge them into the
|
|
16
|
-
* SAME phase-ordered loop the 3D path uses (`systems` is the very same
|
|
17
|
-
* `createSystemRunner`, and `PHASE_ORDER` is shared).
|
|
18
|
-
*/
|
|
19
|
-
export interface World2DContext {
|
|
20
|
-
/** The PixiJS application. Its renderer draws `stage`; auto-ticker is disabled. */
|
|
21
|
-
app: Application;
|
|
22
|
-
/** The world2d scene-graph root (the camera/world container under app.stage). */
|
|
23
|
-
stage: Container;
|
|
24
|
-
/** The Rapier 2D physics `World`. One shared world per world2d scene. */
|
|
25
|
-
rapier2dWorld: RAPIER.World;
|
|
26
|
-
/** The Rapier 2D module namespace (RigidBodyDesc, ColliderDesc, Vector2, …). */
|
|
27
|
-
rapier2d: typeof RAPIER;
|
|
28
|
-
/** `Container ↔ Rapier2D body/collider` registry (+ collider→entity reverse index). */
|
|
29
|
-
physics2d: Physics2DRegistry;
|
|
30
|
-
/** Rapier 2D collision/trigger event dispatcher; drained each postPhysics. */
|
|
31
|
-
collisions2d: Collision2DSystem;
|
|
32
|
-
/** Manager for all live GameComponent instances in this pixi world — the
|
|
33
|
-
* unified `ComponentManager` (`ecs/component-manager.ts`, constructed with
|
|
34
|
-
* `{ kind: 'pixijs' }`). The world2d-silo-only manager this replaced
|
|
35
|
-
* (T7.3) is deleted; every 2D component attaches here, exactly like a
|
|
36
|
-
* threejs component attaches onto its world's manager. */
|
|
37
|
-
components: ComponentManager;
|
|
38
|
-
/** The phase-ordered system runner (shared with the 3D path). */
|
|
39
|
-
systems: ReturnType<typeof createSystemRunner>;
|
|
40
|
-
/** DOM overlay for screen-space React/HUD UI (pointer-events:none by default). */
|
|
41
|
-
uiContainer: HTMLDivElement;
|
|
42
|
-
}
|
|
43
|
-
/** Constructor type for `GameComponent<'pixijs'>` subclasses used in a world2d
|
|
44
|
-
* registry (carries static phase/schema) — the 2D-registry analog of
|
|
45
|
-
* `GameComponentClass` (`ecs/game-component.ts`), narrowed to the pixijs kind
|
|
46
|
-
* so `new Cls()` returns a properly-typed `GameComponent<'pixijs'>` without a cast. */
|
|
47
|
-
export type Pixi2DComponentClass = (new () => GameComponent<'pixijs'>) & {
|
|
48
|
-
phase?: SystemPhaseName;
|
|
49
|
-
schema?: z.ZodObject<z.ZodRawShape>;
|
|
50
|
-
};
|
|
51
|
-
/** Component registry for world2d — a plain name→class map (the 2D analog). */
|
|
52
|
-
export type Component2DRegistry = Record<string, Pixi2DComponentClass>;
|
|
53
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/world2d/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,GAAG,EAAE,WAAW,CAAC;IACjB,iFAAiF;IACjF,KAAK,EAAE,SAAS,CAAC;IACjB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,EAAE,OAAO,MAAM,CAAC;IACxB,uFAAuF;IACvF,SAAS,EAAE,iBAAiB,CAAC;IAC7B,8EAA8E;IAC9E,YAAY,EAAE,iBAAiB,CAAC;IAChC;;;;+DAI2D;IAC3D,UAAU,EAAE,gBAAgB,CAAC;IAC7B,iEAAiE;IACjE,OAAO,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC/C,kFAAkF;IAClF,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED;;;wFAGwF;AACxF,MAAM,MAAM,oBAAoB,GAAG,CAAC,UAAU,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG;IACvE,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC"}
|
package/dist/world2d/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scene-UI render bridge (B1, widened design/24-scene-ui.md D3) — the injection
|
|
3
|
-
* seam that keeps the engine React-free.
|
|
4
|
-
*
|
|
5
|
-
* The engine knows the scene carries a `ui` tree (data), but it does NOT know how to
|
|
6
|
-
* render React. An editor-side module registers a renderer here (a thin wrapper over
|
|
7
|
-
* the React `mountSceneUI`); the first-party scene adapter calls it at game-time to
|
|
8
|
-
* mount the scene's UI into `host.ui` and disposes it on teardown. Fully decoupled:
|
|
9
|
-
* the engine treats `sceneUI` and the handle as opaque. The optional third `services`
|
|
10
|
-
* argument carries game-sourced data/components/events/projector (D2-D7) — still
|
|
11
|
-
* opaque to the engine, still zero React import here.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Structural match for `@vgai/scene-ui`'s `UIDataSource` — engine stays React-free
|
|
16
|
-
* (this interface is duck-typed against the real one, not imported from it).
|
|
17
|
-
*/
|
|
18
|
-
export interface SceneUIDataSourceLike {
|
|
19
|
-
get(path: string): unknown;
|
|
20
|
-
set(path: string, value: unknown): void;
|
|
21
|
-
subscribe(listener: () => void): () => void;
|
|
22
|
-
version(): number;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Game-time services fed into a scene's UI mount (D2's "dynamic" layer). Every
|
|
27
|
-
* field is optional: a renderer falls back to its own registration-time registry
|
|
28
|
-
* (D2 merge rule) or built-in default when a field is absent. `components`/
|
|
29
|
-
* `transforms`/`strings` stay `unknown`-valued here — they're React things the
|
|
30
|
-
* scene-ui renderer casts to its real `UIComponentRegistry`/`TransformRegistry`/
|
|
31
|
-
* `StringTables`.
|
|
32
|
-
*/
|
|
33
|
-
export interface SceneUIGameServices {
|
|
34
|
-
/** Reactive game state the UI binds against (D4's `gameStateDataSource`, or a
|
|
35
|
-
* game's own bus). Absent -> the renderer falls back to an empty static store. */
|
|
36
|
-
data?: SceneUIDataSourceLike;
|
|
37
|
-
/** `kind:"component"` leaf implementations, keyed by the name authored in the scene. */
|
|
38
|
-
components?: Record<string, unknown>;
|
|
39
|
-
/** Named binding transforms (`$bind.transform`). */
|
|
40
|
-
transforms?: Record<string, unknown>;
|
|
41
|
-
/** Localized string tables, keyed by locale then textKey. */
|
|
42
|
-
strings?: Record<string, Record<string, string>>;
|
|
43
|
-
locale?: string;
|
|
44
|
-
/** Routes a `kind:"button"` (etc.) `events.onClick` handler id to the game.
|
|
45
|
-
* Absent -> a loud console.warn per event (D6 — no magic engine event bus). */
|
|
46
|
-
onEvent?: (handlerId: string, payload?: unknown) => void;
|
|
47
|
-
/** Projects an entity id to a screen-space point for world-tracked canvases
|
|
48
|
-
* (D5). Returns null when the entity is unknown or behind the camera. */
|
|
49
|
-
worldProjector?: (entityId: string) => { x: number; y: number } | null;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export interface SceneUIHandle {
|
|
53
|
-
dispose(): void;
|
|
54
|
-
/** Re-render with new services without a remount (a late `setSceneUIServices`
|
|
55
|
-
* call after the initial mount, D7). Optional — a renderer that can't update
|
|
56
|
-
* in place may omit it; callers dispose+remount instead. */
|
|
57
|
-
update?(services: SceneUIGameServices): void;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Renderer signature — `sceneUI` is the scene's `ui` array (opaque to the engine).
|
|
62
|
-
* `services` is optional so existing 2-arg renderer functions keep working
|
|
63
|
-
* unchanged (back-compat, D3/D5 §5).
|
|
64
|
-
*/
|
|
65
|
-
export type SceneUIRenderer = (
|
|
66
|
-
container: HTMLElement,
|
|
67
|
-
sceneUI: unknown,
|
|
68
|
-
services?: SceneUIGameServices,
|
|
69
|
-
) => SceneUIHandle;
|
|
70
|
-
|
|
71
|
-
let _renderer: SceneUIRenderer | null = null;
|
|
72
|
-
|
|
73
|
-
/** Register the React renderer (called once by the editor/runtime host). */
|
|
74
|
-
export function setSceneUIRenderer(renderer: SceneUIRenderer | null): void {
|
|
75
|
-
_renderer = renderer;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/** Render a scene's UI into `container` if a renderer is registered, else no-op. */
|
|
79
|
-
export function renderSceneUI(
|
|
80
|
-
container: HTMLElement,
|
|
81
|
-
sceneUI: unknown,
|
|
82
|
-
services?: SceneUIGameServices,
|
|
83
|
-
): SceneUIHandle | null {
|
|
84
|
-
if (!_renderer || sceneUI == null) return null;
|
|
85
|
-
return _renderer(container, sceneUI, services);
|
|
86
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* gameStateDataSource (design/24-scene-ui.md D4) — the default scene-UI data
|
|
3
|
-
* source: binds a scene's authored UI directly against live `GameComponent`
|
|
4
|
-
* instance fields, with zero game-side wiring.
|
|
5
|
-
*
|
|
6
|
-
* Path grammar: `"<ComponentName>.<field.path>"` — the first segment resolves
|
|
7
|
-
* through the SAME `ComponentRegistry` that resolves a scene's `components:`
|
|
8
|
-
* entries (name -> class) to `game.queryByComponent(Class)[0]`, the rest walks
|
|
9
|
-
* the live instance's own fields (components mutate `this` freely — the
|
|
10
|
-
* state-bridge contract, `runtime/state-bridge.ts`). A text node bound to
|
|
11
|
-
* `S1Session.wallet.money` just works.
|
|
12
|
-
*
|
|
13
|
-
* React-free, plain TS — `SceneUIDataSourceLike` is a structural (duck-typed)
|
|
14
|
-
* match for `@vgai/scene-ui`'s real `UIDataSource`, so the engine never
|
|
15
|
-
* imports the runtime that consumes this.
|
|
16
|
-
*/
|
|
17
|
-
import type { GameComponent, GameComponentClass } from '../ecs/game-component';
|
|
18
|
-
import type { ComponentRegistry } from '../scene/component-registry';
|
|
19
|
-
import type { Game } from './game';
|
|
20
|
-
import type { SceneUIDataSourceLike } from './scene-ui-bridge';
|
|
21
|
-
|
|
22
|
-
function splitRoot(path: string): [root: string, rest: string] {
|
|
23
|
-
const dot = path.indexOf('.');
|
|
24
|
-
return dot === -1 ? [path, ''] : [path.slice(0, dot), path.slice(dot + 1)];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function readRest(obj: unknown, rest: string): unknown {
|
|
28
|
-
if (!rest) return obj;
|
|
29
|
-
let cur: unknown = obj;
|
|
30
|
-
for (const key of rest.split('.')) {
|
|
31
|
-
if (cur == null || typeof cur !== 'object') return undefined;
|
|
32
|
-
cur = (cur as Record<string, unknown>)[key];
|
|
33
|
-
}
|
|
34
|
-
return cur;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Build the default `SceneUIDataSourceLike` over a game's live components.
|
|
39
|
-
*
|
|
40
|
-
* `subscribe`/`version` are driven by `game.state` (bumps once per completed
|
|
41
|
-
* frame, after every world's phases — see `state-bridge.ts`) PLUS a local
|
|
42
|
-
* bump on `set()`, so a two-way control's own write echoes immediately
|
|
43
|
-
* instead of waiting for the next frame.
|
|
44
|
-
*/
|
|
45
|
-
export function gameStateDataSource(
|
|
46
|
-
game: Game,
|
|
47
|
-
registry: ComponentRegistry,
|
|
48
|
-
): SceneUIDataSourceLike {
|
|
49
|
-
let version = 0;
|
|
50
|
-
const listeners = new Set<() => void>();
|
|
51
|
-
// Warn-once-per-root-segment (D4/§9 review checklist): a scene author
|
|
52
|
-
// typo'ing a component name in a binding should be loud exactly once, not
|
|
53
|
-
// on every `get()` (a bound node re-reads its path every render).
|
|
54
|
-
const warnedRoots = new Set<string>();
|
|
55
|
-
|
|
56
|
-
const notify = (): void => {
|
|
57
|
-
for (const listener of listeners) listener();
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
/** Resolves a root segment to its live component instance, or undefined. */
|
|
61
|
-
const resolveInstance = (root: string): GameComponent | undefined => {
|
|
62
|
-
const Klass: GameComponentClass | undefined = registry[root];
|
|
63
|
-
if (!Klass) {
|
|
64
|
-
if (!warnedRoots.has(root)) {
|
|
65
|
-
warnedRoots.add(root);
|
|
66
|
-
console.warn(
|
|
67
|
-
`scene-ui: data binding root "${root}" is not a registered component name — ` +
|
|
68
|
-
'check the binding source against src/scripts/registry.ts.',
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
// Registered but zero live instances (e.g. not spawned yet this scene) is
|
|
74
|
-
// an ordinary, expected transient state — stays undefined, no warning.
|
|
75
|
-
return game.queryByComponent(Klass)[0];
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
// ONE subscription to the frame-versioned state bridge for this data
|
|
79
|
-
// source's whole lifetime, fanning out to however many external
|
|
80
|
-
// subscribers this scene-UI mount has.
|
|
81
|
-
game.state.subscribe(() => {
|
|
82
|
-
version++;
|
|
83
|
-
notify();
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
return {
|
|
87
|
-
get(path: string): unknown {
|
|
88
|
-
const [root, rest] = splitRoot(path);
|
|
89
|
-
const inst = resolveInstance(root);
|
|
90
|
-
return inst === undefined ? undefined : readRest(inst, rest);
|
|
91
|
-
},
|
|
92
|
-
set(path: string, value: unknown): void {
|
|
93
|
-
const [root, rest] = splitRoot(path);
|
|
94
|
-
const inst = resolveInstance(root);
|
|
95
|
-
if (inst === undefined || !rest) return;
|
|
96
|
-
const keys = rest.split('.');
|
|
97
|
-
let cur: Record<string, unknown> = inst as unknown as Record<string, unknown>;
|
|
98
|
-
for (let i = 0; i < keys.length - 1; i++) {
|
|
99
|
-
const key = keys[i] as string;
|
|
100
|
-
const next = cur[key];
|
|
101
|
-
if (next == null || typeof next !== 'object') return; // don't invent nested fields on a live instance
|
|
102
|
-
cur = next as Record<string, unknown>;
|
|
103
|
-
}
|
|
104
|
-
cur[keys[keys.length - 1] as string] = value;
|
|
105
|
-
// Two-way writes echo immediately, not on the next frame (D4).
|
|
106
|
-
version++;
|
|
107
|
-
notify();
|
|
108
|
-
},
|
|
109
|
-
subscribe(listener: () => void): () => void {
|
|
110
|
-
listeners.add(listener);
|
|
111
|
-
return () => {
|
|
112
|
-
listeners.delete(listener);
|
|
113
|
-
};
|
|
114
|
-
},
|
|
115
|
-
version(): number {
|
|
116
|
-
return version;
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
}
|