@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,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `applyDiff` — the exact inverse of `diffScene` (T4.5, `vgai apply-diff`).
|
|
3
|
+
*
|
|
4
|
+
* `diffScene` (packages/editor/src/scene-diff.ts) computes a `SceneDiff` from
|
|
5
|
+
* two `SceneFile`s. This module does the other direction: given ONE
|
|
6
|
+
* `SceneFile` and a `SceneDiff`, produce the `SceneFile` the diff describes —
|
|
7
|
+
* a pure function, no editor/live-scene state involved.
|
|
8
|
+
*
|
|
9
|
+
* DEPENDENCY-DIRECTION NOTE (why this lives in the engine, not next to
|
|
10
|
+
* `diffScene`): the natural home for `applyDiff` is beside `diffScene` in
|
|
11
|
+
* `packages/editor/src/`. But the CLI (`packages/vgai-cli`) is the caller —
|
|
12
|
+
* `vgai apply-diff <scene> <patch>` — and `packages/vgai-cli/package.json`
|
|
13
|
+
* does not depend on `@vgai/editor` today (it depends on `@vgai/editor-sdk`,
|
|
14
|
+
* a thin RPC client for a *running* editor server, and `create-vgai-project`
|
|
15
|
+
* — neither pulls in editor source). Adding a cli→editor edge purely to reach
|
|
16
|
+
* one pure function would be a real, new dependency inversion (the T3.7 row
|
|
17
|
+
* for `deploy.ts` recorded the opposite call deliberately staying out for the
|
|
18
|
+
* same reason). `@vgai/engine`, by contrast, is already a dependency of
|
|
19
|
+
* `@vgai/editor` (one-directional: editor → engine) and is trivially addable
|
|
20
|
+
* to vgai-cli (mirroring `packages/editor/template/validate-scenes.ts`, which
|
|
21
|
+
* already imports `@vgai/engine/scene/parse` by its real published subpath).
|
|
22
|
+
* So: `DiffOp`/`SceneDiff` (the shared TYPES) and `applyDiff`/`SceneDiffSchema`
|
|
23
|
+
* (the new CODE) live in the engine; `scene-diff.ts` keeps its `diffScene`
|
|
24
|
+
* implementation where it is and re-exports the two type names, so no editor
|
|
25
|
+
* call site changes. Net edge added: vgai-cli → @vgai/engine (already the
|
|
26
|
+
* direction every other package depends on engine). Zero new editor edges.
|
|
27
|
+
*
|
|
28
|
+
* ROUND-TRIP LAW: for any two scenes A, B — `applyDiff(A, diffScene(A, B))`
|
|
29
|
+
* is deep-equal to B, WITH ONE NORMALIZATION: an entity whose `children`
|
|
30
|
+
* becomes empty is left with `children` omitted (not `children: []`) —
|
|
31
|
+
* matching the convention `cleanDocument`/`serializeScene`
|
|
32
|
+
* (packages/editor/src/scene-serializer.ts) already use for saved scene
|
|
33
|
+
* files. If B's own file happened to spell "no children" as a literal
|
|
34
|
+
* `children: []` rather than omitting the key, a byte-level diff would show
|
|
35
|
+
* that one field; every other field, and the full entity tree/order, matches
|
|
36
|
+
* exactly. This holds because `diffScene` emits an explicit `move` op for
|
|
37
|
+
* ANY entity whose absolute sibling index changes for ANY reason — not just
|
|
38
|
+
* reparenting, but also a sibling being added/removed/reordered earlier in
|
|
39
|
+
* the same array — so `applyDiff` never has to guess whether an untouched
|
|
40
|
+
* entity's position shifted; every position-relevant entity carries an
|
|
41
|
+
* explicit target index in the FINAL array.
|
|
42
|
+
*
|
|
43
|
+
* OP-ORDERING RULE (why applying `diff.ops` in array order would be wrong,
|
|
44
|
+
* and what this function does instead):
|
|
45
|
+
*
|
|
46
|
+
* 1. Detach every `move` target from wherever it currently sits — BEFORE
|
|
47
|
+
* processing any `remove`. Proof this matters: consider "remove parent
|
|
48
|
+
* with moved-out child" — parent P is deleted in the new doc, but one
|
|
49
|
+
* of P's old children, C, survives (reparented elsewhere). `diffScene`
|
|
50
|
+
* necessarily emits BOTH `{ remove: P }` and `{ move: C, parentId: ... }`
|
|
51
|
+
* (C's parentId can't still be P, since P doesn't exist in the new doc,
|
|
52
|
+
* so a parentId change — hence a move op — is guaranteed). If `remove P`
|
|
53
|
+
* ran first, it would delete P's whole subtree, including C, before C's
|
|
54
|
+
* `move` op ever got to detach it. Detaching every mover first means C
|
|
55
|
+
* is already pulled out of P's subtree by the time `remove P` runs, so
|
|
56
|
+
* only what's genuinely being deleted is deleted.
|
|
57
|
+
* 2. Process `remove` ops. A remove target that's already gone (not found)
|
|
58
|
+
* is NOT an error IF it was swept away as a descendant of an earlier
|
|
59
|
+
* remove in the SAME diff — `diffScene` lists every removed id
|
|
60
|
+
* independently (both a removed parent AND its removed descendants each
|
|
61
|
+
* get their own `remove` op, since `flattenEntities` flattens every
|
|
62
|
+
* level regardless of ancestor state). A remove target not found and
|
|
63
|
+
* not swept is a genuine error (bad id).
|
|
64
|
+
* 3. Build a complete id → node resolution map covering EVERY entity that
|
|
65
|
+
* will exist in the output: the stationary survivors (walked fresh from
|
|
66
|
+
* what's left of the tree), then a freshly-created node object for each
|
|
67
|
+
* `add` (children stripped — see below), then the already-detached node
|
|
68
|
+
* for each `move`. Because this map is built in full before any
|
|
69
|
+
* placement happens, a node object exists (and is resolvable as a
|
|
70
|
+
* parent) from the moment it's created, independent of whether it has
|
|
71
|
+
* itself been spliced into ITS OWN parent's array yet. This is what
|
|
72
|
+
* makes "add-under-added-parent" (a newly-added parent with newly-added
|
|
73
|
+
* children in the same diff) work with no dependency/topological-sort
|
|
74
|
+
* logic: a child's `add`/`move` op resolves its `parentId` against this
|
|
75
|
+
* map regardless of which op appears first in `diff.ops`.
|
|
76
|
+
* 4. Placement: group `add` + `move` ops by target parentId, sort each
|
|
77
|
+
* group ascending by `index`, then splice one at a time into the target
|
|
78
|
+
* array in that order. Inserting in ascending order of FINAL target
|
|
79
|
+
* index into an array that already holds every untouched sibling in
|
|
80
|
+
* their final relative order (untouched siblings never move — any
|
|
81
|
+
* absolute-index change gets its own `move` op, per the round-trip-law
|
|
82
|
+
* note above) reconstructs the exact final array: by induction, every
|
|
83
|
+
* element with a smaller final index than the one being inserted is
|
|
84
|
+
* already in the array, so splicing at `index` places it correctly
|
|
85
|
+
* relative to all of them, whether the array started empty (a brand
|
|
86
|
+
* new parent) or partially populated (survivors of an existing parent).
|
|
87
|
+
* 5. `update` ops last (order relative to placement doesn't matter — they
|
|
88
|
+
* mutate an object by reference, found via the same id map, regardless
|
|
89
|
+
* of where in the tree that reference currently lives).
|
|
90
|
+
*
|
|
91
|
+
* Every thrown error is an `ApplyDiffError` naming the 0-based index into
|
|
92
|
+
* `diff.ops`, the op's `type`, and the entity id involved — enough for an
|
|
93
|
+
* agent to locate and fix the offending op from the message alone.
|
|
94
|
+
*/
|
|
95
|
+
export class ApplyDiffError extends Error {
|
|
96
|
+
opIndex;
|
|
97
|
+
opType;
|
|
98
|
+
entityId;
|
|
99
|
+
constructor(message, opIndex, opType, entityId) {
|
|
100
|
+
super(`op #${opIndex} (${opType}, id=${entityId}): ${message}`);
|
|
101
|
+
this.name = 'ApplyDiffError';
|
|
102
|
+
this.opIndex = opIndex;
|
|
103
|
+
this.opType = opType;
|
|
104
|
+
this.entityId = entityId;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function cloneEntity(e) {
|
|
108
|
+
return JSON.parse(JSON.stringify(e));
|
|
109
|
+
}
|
|
110
|
+
/** Recursively search `list` (and descendants) for `id`; if found, splice it out (subtree intact) and return it. */
|
|
111
|
+
function detachById(list, id) {
|
|
112
|
+
for (let i = 0; i < list.length; i++) {
|
|
113
|
+
const node = list[i];
|
|
114
|
+
if (node.id === id) {
|
|
115
|
+
list.splice(i, 1);
|
|
116
|
+
return node;
|
|
117
|
+
}
|
|
118
|
+
if (node.children) {
|
|
119
|
+
const found = detachById(node.children, id);
|
|
120
|
+
if (found)
|
|
121
|
+
return found;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
/** Collect the id of `node` and every descendant's id into `into`. */
|
|
127
|
+
function collectIds(node, into) {
|
|
128
|
+
if (node.id)
|
|
129
|
+
into.add(node.id);
|
|
130
|
+
if (node.children) {
|
|
131
|
+
for (const child of node.children)
|
|
132
|
+
collectIds(child, into);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/** Delete `children` if it is now an empty array, to match the `cleanDocument`/`serializeScene` convention (see the round-trip-law note above). */
|
|
136
|
+
function stripEmptyChildrenArrays(list) {
|
|
137
|
+
for (const node of list) {
|
|
138
|
+
if (node.children) {
|
|
139
|
+
if (node.children.length === 0) {
|
|
140
|
+
delete node.children;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
stripEmptyChildrenArrays(node.children);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Apply a `SceneDiff` to a `SceneFile`, returning a NEW `SceneFile` (input is
|
|
150
|
+
* not mutated). See the module jsdoc above for the round-trip law and the
|
|
151
|
+
* op-ordering rule/proof.
|
|
152
|
+
*/
|
|
153
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: one cohesive apply-in-5-phases pipeline (detach movers, remove, index survivors, place adds+moves, update) — the phases share too much local state (working tree, id maps) to split without just passing that state through a longer parameter list.
|
|
154
|
+
export function applyDiff(scene, diff) {
|
|
155
|
+
const working = JSON.parse(JSON.stringify(scene));
|
|
156
|
+
const ops = diff.ops;
|
|
157
|
+
// --- Metadata / environment (independent of entity ops) ---
|
|
158
|
+
if (diff.metaChanged && diff.newName !== undefined) {
|
|
159
|
+
working.name = diff.newName;
|
|
160
|
+
}
|
|
161
|
+
if (diff.environmentChanged) {
|
|
162
|
+
if (diff.newEnvironment) {
|
|
163
|
+
working.environment = diff.newEnvironment;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
delete working.environment;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// --- Phase 1: detach every `move` target before any `remove` runs ---
|
|
170
|
+
//
|
|
171
|
+
// A move target isn't always reachable directly off `working.entities`: if
|
|
172
|
+
// its immediate (or more distant) ancestor ALSO has a `move` op that gets
|
|
173
|
+
// detached first, the target now hangs off that already-detached ancestor
|
|
174
|
+
// node, not off the main tree. `diffScene` always emits an ancestor's own
|
|
175
|
+
// move/update entry before its descendants' (`flattenEntities` sets a
|
|
176
|
+
// parent's map entry before recursing into children), so a single forward
|
|
177
|
+
// pass already covers every diffScene-computed diff — but this loop doesn't
|
|
178
|
+
// assume that ordering: it retries whatever hasn't been found yet against
|
|
179
|
+
// the growing set of already-detached movers' subtrees, to a fixed point,
|
|
180
|
+
// so `diff.ops` order genuinely does not matter (per SceneDiffSchema's
|
|
181
|
+
// `ops` doc).
|
|
182
|
+
const movedNodes = new Map();
|
|
183
|
+
function detachFromAnywhere(id) {
|
|
184
|
+
const direct = detachById(working.entities, id);
|
|
185
|
+
if (direct)
|
|
186
|
+
return direct;
|
|
187
|
+
for (const mover of movedNodes.values()) {
|
|
188
|
+
if (mover.children) {
|
|
189
|
+
const found = detachById(mover.children, id);
|
|
190
|
+
if (found)
|
|
191
|
+
return found;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return undefined;
|
|
195
|
+
}
|
|
196
|
+
const moveOpIndices = ops
|
|
197
|
+
.map((op, i) => ({ op, i }))
|
|
198
|
+
.filter((x) => x.op.type === 'move');
|
|
199
|
+
const pendingMoves = new Set(moveOpIndices.map((x) => x.i));
|
|
200
|
+
let madeProgress = true;
|
|
201
|
+
while (pendingMoves.size > 0 && madeProgress) {
|
|
202
|
+
madeProgress = false;
|
|
203
|
+
for (const { op, i } of moveOpIndices) {
|
|
204
|
+
if (!pendingMoves.has(i))
|
|
205
|
+
continue;
|
|
206
|
+
const node = detachFromAnywhere(op.id);
|
|
207
|
+
if (node) {
|
|
208
|
+
movedNodes.set(op.id, node);
|
|
209
|
+
pendingMoves.delete(i);
|
|
210
|
+
madeProgress = true;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (pendingMoves.size > 0) {
|
|
215
|
+
const i = [...pendingMoves][0];
|
|
216
|
+
const op = ops[i];
|
|
217
|
+
throw new ApplyDiffError('entity not found (nothing to move)', i, 'move', op.id);
|
|
218
|
+
}
|
|
219
|
+
// --- Phase 2: removes (a not-found target is fine if it was already swept
|
|
220
|
+
// up as a descendant of an earlier remove, OR if it hangs off a node
|
|
221
|
+
// that was itself moved in phase 1 — see `detachFromAnywhere` above) ---
|
|
222
|
+
const sweptIds = new Set();
|
|
223
|
+
ops.forEach((op, i) => {
|
|
224
|
+
if (op.type !== 'remove')
|
|
225
|
+
return;
|
|
226
|
+
const node = detachFromAnywhere(op.id);
|
|
227
|
+
if (node) {
|
|
228
|
+
collectIds(node, sweptIds);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (sweptIds.has(op.id))
|
|
232
|
+
return;
|
|
233
|
+
throw new ApplyDiffError('entity not found (already removed via an ancestor, or an invalid id)', i, 'remove', op.id);
|
|
234
|
+
});
|
|
235
|
+
// --- Phase 3: build the complete id -> node resolution map ---
|
|
236
|
+
const byId = new Map();
|
|
237
|
+
const indexStationary = (list) => {
|
|
238
|
+
for (const node of list) {
|
|
239
|
+
if (node.id)
|
|
240
|
+
byId.set(node.id, node);
|
|
241
|
+
if (node.children)
|
|
242
|
+
indexStationary(node.children);
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
indexStationary(working.entities);
|
|
246
|
+
const addNodes = new Map(); // opIndex -> freshly created node
|
|
247
|
+
ops.forEach((op, i) => {
|
|
248
|
+
if (op.type !== 'add')
|
|
249
|
+
return;
|
|
250
|
+
const entity = cloneEntity(op.entity);
|
|
251
|
+
delete entity.children; // children are position-managed by their own add/move ops
|
|
252
|
+
if (!entity.id)
|
|
253
|
+
entity.id = crypto.randomUUID();
|
|
254
|
+
if (byId.has(entity.id)) {
|
|
255
|
+
throw new ApplyDiffError('duplicate id — an entity with this id already exists', i, 'add', entity.id);
|
|
256
|
+
}
|
|
257
|
+
byId.set(entity.id, entity);
|
|
258
|
+
addNodes.set(i, entity);
|
|
259
|
+
});
|
|
260
|
+
ops.forEach((op, i) => {
|
|
261
|
+
if (op.type !== 'move')
|
|
262
|
+
return;
|
|
263
|
+
if (byId.has(op.id)) {
|
|
264
|
+
throw new ApplyDiffError('duplicate id — conflicts with an added entity', i, 'move', op.id);
|
|
265
|
+
}
|
|
266
|
+
byId.set(op.id, movedNodes.get(op.id));
|
|
267
|
+
});
|
|
268
|
+
// --- Phase 4: placement — group add+move ops by target parent, insert ascending by index ---
|
|
269
|
+
const groups = new Map();
|
|
270
|
+
ops.forEach((op, i) => {
|
|
271
|
+
if (op.type === 'add') {
|
|
272
|
+
const node = addNodes.get(i);
|
|
273
|
+
const list = groups.get(op.parentId) ?? [];
|
|
274
|
+
list.push({ index: op.index, node, opIndex: i, opType: 'add', entityId: node.id });
|
|
275
|
+
groups.set(op.parentId, list);
|
|
276
|
+
}
|
|
277
|
+
else if (op.type === 'move') {
|
|
278
|
+
const node = movedNodes.get(op.id);
|
|
279
|
+
const list = groups.get(op.parentId) ?? [];
|
|
280
|
+
list.push({ index: op.index, node, opIndex: i, opType: 'move', entityId: op.id });
|
|
281
|
+
groups.set(op.parentId, list);
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
for (const [parentId, placements] of groups) {
|
|
285
|
+
let targetArray;
|
|
286
|
+
if (parentId === null) {
|
|
287
|
+
targetArray = working.entities;
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
const parentNode = byId.get(parentId);
|
|
291
|
+
if (!parentNode) {
|
|
292
|
+
const bad = placements[0];
|
|
293
|
+
throw new ApplyDiffError(`parent entity "${parentId}" not found`, bad.opIndex, bad.opType, bad.entityId);
|
|
294
|
+
}
|
|
295
|
+
parentNode.children ??= [];
|
|
296
|
+
targetArray = parentNode.children;
|
|
297
|
+
}
|
|
298
|
+
const sorted = [...placements].sort((a, b) => a.index - b.index);
|
|
299
|
+
for (const p of sorted) {
|
|
300
|
+
if (p.index < 0) {
|
|
301
|
+
throw new ApplyDiffError(`negative target index (${p.index})`, p.opIndex, p.opType, p.entityId);
|
|
302
|
+
}
|
|
303
|
+
const clamped = Math.min(p.index, targetArray.length);
|
|
304
|
+
targetArray.splice(clamped, 0, p.node);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// --- Phase 5: updates — full field replace (except id/children), deleting omitted fields ---
|
|
308
|
+
ops.forEach((op, i) => {
|
|
309
|
+
if (op.type !== 'update')
|
|
310
|
+
return;
|
|
311
|
+
const node = byId.get(op.id);
|
|
312
|
+
if (!node) {
|
|
313
|
+
throw new ApplyDiffError('entity not found', i, 'update', op.id);
|
|
314
|
+
}
|
|
315
|
+
const { id: _id, children: _children, ...fields } = op.entity;
|
|
316
|
+
for (const key of Object.keys(node)) {
|
|
317
|
+
if (key === 'id' || key === 'children')
|
|
318
|
+
continue;
|
|
319
|
+
if (!(key in fields))
|
|
320
|
+
delete node[key];
|
|
321
|
+
}
|
|
322
|
+
Object.assign(node, fields);
|
|
323
|
+
});
|
|
324
|
+
stripEmptyChildrenArrays(working.entities);
|
|
325
|
+
return working;
|
|
326
|
+
}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schema for a `SceneDiff` JSON patch (T4.5 — `vgai apply-diff`).
|
|
3
|
+
*
|
|
4
|
+
* Validates the SHAPE of a hand-authored or `diffScene`-computed patch before
|
|
5
|
+
* `applyDiff` (./scene-apply.ts) touches it. Not wired into
|
|
6
|
+
* `scripts/generate-schema.ts` — that script's output feeds the *scene file*
|
|
7
|
+
* JSON Schema (autocomplete/reference for `.vscn.json`/`.prefab.json`/
|
|
8
|
+
* `vgai.game.json`), a different artifact from a diff/patch file. Adding a
|
|
9
|
+
* 5th line there would be mechanically trivial, but a generated
|
|
10
|
+
* `scene-diff.schema.json` has no current consumer (no editor autocomplete
|
|
11
|
+
* targets *.json patch files) — left undone; revisit if one appears.
|
|
12
|
+
*
|
|
13
|
+
* `SceneEntitySchema` is reused as-is for `add`/`update` payloads even though
|
|
14
|
+
* both operations ignore any `children` the payload carries (children are
|
|
15
|
+
* position-managed exclusively by their own `add`/`move` ops — see
|
|
16
|
+
* `applyDiff`'s jsdoc). Rejecting `children` at the schema level would need
|
|
17
|
+
* an `.omit()` off a plain object schema, but `SceneEntitySchema` is a
|
|
18
|
+
* `z.lazy()`-wrapped discriminated union (recursive type), so this schema
|
|
19
|
+
* takes the more permissive-but-documented path: allow it through and let
|
|
20
|
+
* `applyDiff` silently drop it, rather than add a second near-duplicate
|
|
21
|
+
* entity schema just to forbid one field.
|
|
22
|
+
*/
|
|
23
|
+
import { z } from 'zod';
|
|
24
|
+
export declare const DiffOpSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
25
|
+
type: z.ZodLiteral<"add">;
|
|
26
|
+
entity: z.ZodType<import("./schema").SceneEntity, unknown, z.core.$ZodTypeInternals<import("./schema").SceneEntity, unknown>>;
|
|
27
|
+
parentId: z.ZodNullable<z.ZodString>;
|
|
28
|
+
index: z.ZodNumber;
|
|
29
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
30
|
+
type: z.ZodLiteral<"remove">;
|
|
31
|
+
id: z.ZodString;
|
|
32
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
33
|
+
type: z.ZodLiteral<"update">;
|
|
34
|
+
id: z.ZodString;
|
|
35
|
+
entity: z.ZodType<import("./schema").SceneEntity, unknown, z.core.$ZodTypeInternals<import("./schema").SceneEntity, unknown>>;
|
|
36
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
37
|
+
type: z.ZodLiteral<"move">;
|
|
38
|
+
id: z.ZodString;
|
|
39
|
+
parentId: z.ZodNullable<z.ZodString>;
|
|
40
|
+
index: z.ZodNumber;
|
|
41
|
+
}, z.core.$strip>], "type">;
|
|
42
|
+
export declare const SceneDiffSchema: z.ZodObject<{
|
|
43
|
+
ops: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
44
|
+
type: z.ZodLiteral<"add">;
|
|
45
|
+
entity: z.ZodType<import("./schema").SceneEntity, unknown, z.core.$ZodTypeInternals<import("./schema").SceneEntity, unknown>>;
|
|
46
|
+
parentId: z.ZodNullable<z.ZodString>;
|
|
47
|
+
index: z.ZodNumber;
|
|
48
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
49
|
+
type: z.ZodLiteral<"remove">;
|
|
50
|
+
id: z.ZodString;
|
|
51
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
52
|
+
type: z.ZodLiteral<"update">;
|
|
53
|
+
id: z.ZodString;
|
|
54
|
+
entity: z.ZodType<import("./schema").SceneEntity, unknown, z.core.$ZodTypeInternals<import("./schema").SceneEntity, unknown>>;
|
|
55
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
56
|
+
type: z.ZodLiteral<"move">;
|
|
57
|
+
id: z.ZodString;
|
|
58
|
+
parentId: z.ZodNullable<z.ZodString>;
|
|
59
|
+
index: z.ZodNumber;
|
|
60
|
+
}, z.core.$strip>], "type">>;
|
|
61
|
+
environmentChanged: z.ZodBoolean;
|
|
62
|
+
newEnvironment: z.ZodOptional<z.ZodObject<{
|
|
63
|
+
background: z.ZodOptional<z.ZodString>;
|
|
64
|
+
ambient: z.ZodOptional<z.ZodObject<{
|
|
65
|
+
color: z.ZodString;
|
|
66
|
+
intensity: z.ZodNumber;
|
|
67
|
+
}, z.core.$strip>>;
|
|
68
|
+
fog: z.ZodOptional<z.ZodObject<{
|
|
69
|
+
type: z.ZodEnum<{
|
|
70
|
+
linear: "linear";
|
|
71
|
+
exponential: "exponential";
|
|
72
|
+
}>;
|
|
73
|
+
color: z.ZodString;
|
|
74
|
+
near: z.ZodOptional<z.ZodNumber>;
|
|
75
|
+
far: z.ZodOptional<z.ZodNumber>;
|
|
76
|
+
density: z.ZodOptional<z.ZodNumber>;
|
|
77
|
+
}, z.core.$strip>>;
|
|
78
|
+
skybox: z.ZodOptional<z.ZodString>;
|
|
79
|
+
envMapIntensity: z.ZodOptional<z.ZodNumber>;
|
|
80
|
+
toneMapping: z.ZodOptional<z.ZodObject<{
|
|
81
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
82
|
+
none: "none";
|
|
83
|
+
linear: "linear";
|
|
84
|
+
reinhard: "reinhard";
|
|
85
|
+
cineon: "cineon";
|
|
86
|
+
aces: "aces";
|
|
87
|
+
agx: "agx";
|
|
88
|
+
}>>;
|
|
89
|
+
exposure: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
}, z.core.$strip>>;
|
|
91
|
+
postProcessing: z.ZodOptional<z.ZodObject<{
|
|
92
|
+
bloom: z.ZodOptional<z.ZodObject<{
|
|
93
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
94
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
95
|
+
luminanceThreshold: z.ZodOptional<z.ZodNumber>;
|
|
96
|
+
luminanceSmoothing: z.ZodOptional<z.ZodNumber>;
|
|
97
|
+
}, z.core.$strip>>;
|
|
98
|
+
vignette: z.ZodOptional<z.ZodObject<{
|
|
99
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
100
|
+
darkness: z.ZodOptional<z.ZodNumber>;
|
|
101
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
102
|
+
}, z.core.$strip>>;
|
|
103
|
+
brightnessContrast: z.ZodOptional<z.ZodObject<{
|
|
104
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
105
|
+
brightness: z.ZodOptional<z.ZodNumber>;
|
|
106
|
+
contrast: z.ZodOptional<z.ZodNumber>;
|
|
107
|
+
}, z.core.$strip>>;
|
|
108
|
+
hueSaturation: z.ZodOptional<z.ZodObject<{
|
|
109
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
110
|
+
hue: z.ZodOptional<z.ZodNumber>;
|
|
111
|
+
saturation: z.ZodOptional<z.ZodNumber>;
|
|
112
|
+
}, z.core.$strip>>;
|
|
113
|
+
sepia: z.ZodOptional<z.ZodObject<{
|
|
114
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
115
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
116
|
+
}, z.core.$strip>>;
|
|
117
|
+
colorDepth: z.ZodOptional<z.ZodObject<{
|
|
118
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
119
|
+
bits: z.ZodOptional<z.ZodNumber>;
|
|
120
|
+
}, z.core.$strip>>;
|
|
121
|
+
chromaticAberration: z.ZodOptional<z.ZodObject<{
|
|
122
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
123
|
+
offsetX: z.ZodOptional<z.ZodNumber>;
|
|
124
|
+
offsetY: z.ZodOptional<z.ZodNumber>;
|
|
125
|
+
radialModulation: z.ZodOptional<z.ZodBoolean>;
|
|
126
|
+
modulationOffset: z.ZodOptional<z.ZodNumber>;
|
|
127
|
+
}, z.core.$strip>>;
|
|
128
|
+
lensDistortion: z.ZodOptional<z.ZodObject<{
|
|
129
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
130
|
+
distortionX: z.ZodOptional<z.ZodNumber>;
|
|
131
|
+
distortionY: z.ZodOptional<z.ZodNumber>;
|
|
132
|
+
focalLengthX: z.ZodOptional<z.ZodNumber>;
|
|
133
|
+
focalLengthY: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
skew: z.ZodOptional<z.ZodNumber>;
|
|
135
|
+
}, z.core.$strip>>;
|
|
136
|
+
depthOfField: z.ZodOptional<z.ZodObject<{
|
|
137
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
138
|
+
worldFocusDistance: z.ZodOptional<z.ZodNumber>;
|
|
139
|
+
worldFocusRange: z.ZodOptional<z.ZodNumber>;
|
|
140
|
+
bokehScale: z.ZodOptional<z.ZodNumber>;
|
|
141
|
+
focalLength: z.ZodOptional<z.ZodNumber>;
|
|
142
|
+
}, z.core.$strip>>;
|
|
143
|
+
tiltShift: z.ZodOptional<z.ZodObject<{
|
|
144
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
145
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
146
|
+
rotation: z.ZodOptional<z.ZodNumber>;
|
|
147
|
+
focusArea: z.ZodOptional<z.ZodNumber>;
|
|
148
|
+
feather: z.ZodOptional<z.ZodNumber>;
|
|
149
|
+
}, z.core.$strip>>;
|
|
150
|
+
noise: z.ZodOptional<z.ZodObject<{
|
|
151
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
152
|
+
premultiply: z.ZodOptional<z.ZodBoolean>;
|
|
153
|
+
}, z.core.$strip>>;
|
|
154
|
+
scanline: z.ZodOptional<z.ZodObject<{
|
|
155
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
156
|
+
density: z.ZodOptional<z.ZodNumber>;
|
|
157
|
+
}, z.core.$strip>>;
|
|
158
|
+
dotScreen: z.ZodOptional<z.ZodObject<{
|
|
159
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
160
|
+
angle: z.ZodOptional<z.ZodNumber>;
|
|
161
|
+
scale: z.ZodOptional<z.ZodNumber>;
|
|
162
|
+
}, z.core.$strip>>;
|
|
163
|
+
grid: z.ZodOptional<z.ZodObject<{
|
|
164
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
165
|
+
scale: z.ZodOptional<z.ZodNumber>;
|
|
166
|
+
lineWidth: z.ZodOptional<z.ZodNumber>;
|
|
167
|
+
}, z.core.$strip>>;
|
|
168
|
+
pixelation: z.ZodOptional<z.ZodObject<{
|
|
169
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
170
|
+
granularity: z.ZodOptional<z.ZodNumber>;
|
|
171
|
+
}, z.core.$strip>>;
|
|
172
|
+
glitch: z.ZodOptional<z.ZodObject<{
|
|
173
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
174
|
+
delayX: z.ZodOptional<z.ZodNumber>;
|
|
175
|
+
delayY: z.ZodOptional<z.ZodNumber>;
|
|
176
|
+
durationX: z.ZodOptional<z.ZodNumber>;
|
|
177
|
+
durationY: z.ZodOptional<z.ZodNumber>;
|
|
178
|
+
strengthX: z.ZodOptional<z.ZodNumber>;
|
|
179
|
+
strengthY: z.ZodOptional<z.ZodNumber>;
|
|
180
|
+
columns: z.ZodOptional<z.ZodNumber>;
|
|
181
|
+
ratio: z.ZodOptional<z.ZodNumber>;
|
|
182
|
+
}, z.core.$strip>>;
|
|
183
|
+
shockWave: z.ZodOptional<z.ZodObject<{
|
|
184
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
185
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
186
|
+
maxRadius: z.ZodOptional<z.ZodNumber>;
|
|
187
|
+
waveSize: z.ZodOptional<z.ZodNumber>;
|
|
188
|
+
amplitude: z.ZodOptional<z.ZodNumber>;
|
|
189
|
+
positionX: z.ZodOptional<z.ZodNumber>;
|
|
190
|
+
positionY: z.ZodOptional<z.ZodNumber>;
|
|
191
|
+
positionZ: z.ZodOptional<z.ZodNumber>;
|
|
192
|
+
}, z.core.$strip>>;
|
|
193
|
+
smaa: z.ZodOptional<z.ZodObject<{
|
|
194
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
195
|
+
preset: z.ZodOptional<z.ZodEnum<{
|
|
196
|
+
low: "low";
|
|
197
|
+
medium: "medium";
|
|
198
|
+
high: "high";
|
|
199
|
+
ultra: "ultra";
|
|
200
|
+
}>>;
|
|
201
|
+
}, z.core.$strip>>;
|
|
202
|
+
ssao: z.ZodOptional<z.ZodObject<{
|
|
203
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
204
|
+
radius: z.ZodOptional<z.ZodNumber>;
|
|
205
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
206
|
+
bias: z.ZodOptional<z.ZodNumber>;
|
|
207
|
+
samples: z.ZodOptional<z.ZodNumber>;
|
|
208
|
+
rings: z.ZodOptional<z.ZodNumber>;
|
|
209
|
+
fade: z.ZodOptional<z.ZodNumber>;
|
|
210
|
+
color: z.ZodOptional<z.ZodString>;
|
|
211
|
+
}, z.core.$strip>>;
|
|
212
|
+
n8ao: z.ZodOptional<z.ZodObject<{
|
|
213
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
214
|
+
aoSamples: z.ZodOptional<z.ZodNumber>;
|
|
215
|
+
aoRadius: z.ZodOptional<z.ZodNumber>;
|
|
216
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
217
|
+
denoiseSamples: z.ZodOptional<z.ZodNumber>;
|
|
218
|
+
denoiseRadius: z.ZodOptional<z.ZodNumber>;
|
|
219
|
+
distanceFalloff: z.ZodOptional<z.ZodNumber>;
|
|
220
|
+
screenSpaceRadius: z.ZodOptional<z.ZodBoolean>;
|
|
221
|
+
color: z.ZodOptional<z.ZodString>;
|
|
222
|
+
halfRes: z.ZodOptional<z.ZodBoolean>;
|
|
223
|
+
}, z.core.$strip>>;
|
|
224
|
+
godRays: z.ZodOptional<z.ZodObject<{
|
|
225
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
226
|
+
sourceEntity: z.ZodOptional<z.ZodString>;
|
|
227
|
+
density: z.ZodOptional<z.ZodNumber>;
|
|
228
|
+
decay: z.ZodOptional<z.ZodNumber>;
|
|
229
|
+
weight: z.ZodOptional<z.ZodNumber>;
|
|
230
|
+
exposure: z.ZodOptional<z.ZodNumber>;
|
|
231
|
+
samples: z.ZodOptional<z.ZodNumber>;
|
|
232
|
+
}, z.core.$strip>>;
|
|
233
|
+
outline: z.ZodOptional<z.ZodObject<{
|
|
234
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
235
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
236
|
+
edgeStrength: z.ZodOptional<z.ZodNumber>;
|
|
237
|
+
pulseSpeed: z.ZodOptional<z.ZodNumber>;
|
|
238
|
+
visibleEdgeColor: z.ZodOptional<z.ZodString>;
|
|
239
|
+
hiddenEdgeColor: z.ZodOptional<z.ZodString>;
|
|
240
|
+
xRay: z.ZodOptional<z.ZodBoolean>;
|
|
241
|
+
}, z.core.$strip>>;
|
|
242
|
+
ssr: z.ZodOptional<z.ZodObject<{
|
|
243
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
244
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
245
|
+
exponent: z.ZodOptional<z.ZodNumber>;
|
|
246
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
247
|
+
thickness: z.ZodOptional<z.ZodNumber>;
|
|
248
|
+
maxRoughness: z.ZodOptional<z.ZodNumber>;
|
|
249
|
+
}, z.core.$strip>>;
|
|
250
|
+
ssgi: z.ZodOptional<z.ZodObject<{
|
|
251
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
252
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
253
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
254
|
+
thickness: z.ZodOptional<z.ZodNumber>;
|
|
255
|
+
maxRoughness: z.ZodOptional<z.ZodNumber>;
|
|
256
|
+
}, z.core.$strip>>;
|
|
257
|
+
motionBlur: z.ZodOptional<z.ZodObject<{
|
|
258
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
259
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
260
|
+
jitter: z.ZodOptional<z.ZodNumber>;
|
|
261
|
+
samples: z.ZodOptional<z.ZodNumber>;
|
|
262
|
+
}, z.core.$strip>>;
|
|
263
|
+
}, z.core.$strip>>;
|
|
264
|
+
navigation: z.ZodOptional<z.ZodObject<{
|
|
265
|
+
cellSize: z.ZodOptional<z.ZodNumber>;
|
|
266
|
+
cellHeight: z.ZodOptional<z.ZodNumber>;
|
|
267
|
+
walkableSlopeAngle: z.ZodOptional<z.ZodNumber>;
|
|
268
|
+
walkableHeight: z.ZodOptional<z.ZodNumber>;
|
|
269
|
+
walkableClimb: z.ZodOptional<z.ZodNumber>;
|
|
270
|
+
walkableRadius: z.ZodOptional<z.ZodNumber>;
|
|
271
|
+
maxEdgeLen: z.ZodOptional<z.ZodNumber>;
|
|
272
|
+
maxSimplificationError: z.ZodOptional<z.ZodNumber>;
|
|
273
|
+
minRegionArea: z.ZodOptional<z.ZodNumber>;
|
|
274
|
+
mergeRegionArea: z.ZodOptional<z.ZodNumber>;
|
|
275
|
+
}, z.core.$strip>>;
|
|
276
|
+
physics: z.ZodOptional<z.ZodObject<{
|
|
277
|
+
collisionLayers: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
278
|
+
}, z.core.$strip>>;
|
|
279
|
+
rendering: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
280
|
+
}, z.core.$strip>>;
|
|
281
|
+
metaChanged: z.ZodBoolean;
|
|
282
|
+
newName: z.ZodOptional<z.ZodString>;
|
|
283
|
+
}, z.core.$strip>;
|
|
284
|
+
export type SceneDiffPatch = z.infer<typeof SceneDiffSchema>;
|
|
285
|
+
//# sourceMappingURL=scene-diff-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-diff-schema.d.ts","sourceRoot":"","sources":["../../src/scene/scene-diff-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;2BA0CvB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2BzB,CAAC;AAEJ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|