@forgeax/engine-runtime 0.0.0-dev.8d955ade1c79
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/LICENSE +202 -0
- package/README.md +165 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/__tests__/active-camera.unit.test.d.ts +2 -0
- package/dist/__tests__/active-camera.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-add.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-add.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-asset-union.test-d.d.ts +2 -0
- package/dist/__tests__/animation-graph-asset-union.test-d.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-blend.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-blend.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-build.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-build.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-clip-missing.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-clip-missing.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-clip.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-clip.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-collect-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-collect-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-default-path.integration.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-default-path.integration.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-describe.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-describe.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-errors.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-errors.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-nesting.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-nesting.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-orthogonal-weight.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-orthogonal-weight.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-serialize.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-serialize.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-slot-fill.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-slot-fill.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-nslot.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-nslot.unit.test.d.ts.map +1 -0
- package/dist/__tests__/animation-slot-length-guard.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-slot-length-guard.unit.test.d.ts.map +1 -0
- package/dist/__tests__/append-injection.test.d.ts +2 -0
- package/dist/__tests__/append-injection.test.d.ts.map +1 -0
- package/dist/__tests__/asi-world-baseline-export.unit.test.d.ts +2 -0
- package/dist/__tests__/asi-world-baseline-export.unit.test.d.ts.map +1 -0
- package/dist/__tests__/asi-world-ci-config.unit.test.d.ts +2 -0
- package/dist/__tests__/asi-world-ci-config.unit.test.d.ts.map +1 -0
- package/dist/__tests__/asi-world-smoke.unit.test.d.ts +2 -0
- package/dist/__tests__/asi-world-smoke.unit.test.d.ts.map +1 -0
- package/dist/__tests__/asset-brand-and-name-retirement.test.d.ts +2 -0
- package/dist/__tests__/asset-brand-and-name-retirement.test.d.ts.map +1 -0
- package/dist/__tests__/asset-error-exhaustive.test-d.d.ts +11 -0
- package/dist/__tests__/asset-error-exhaustive.test-d.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-guid-reverse.test.d.ts +2 -0
- package/dist/__tests__/asset-registry-guid-reverse.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-hdr-equirect.test.d.ts +2 -0
- package/dist/__tests__/asset-registry-hdr-equirect.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-mesh-pack-payload.dawn.test.d.ts +2 -0
- package/dist/__tests__/asset-registry-mesh-pack-payload.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-mounts.test.d.ts +2 -0
- package/dist/__tests__/asset-registry-mounts.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-scene.test-d.d.ts +2 -0
- package/dist/__tests__/asset-registry-scene.test-d.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.browser.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.browser.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.dawn.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.listCatalog.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.listCatalog.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.mesh-bin.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.mesh-bin.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.pack-cache.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.pack-cache.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.raw-container-failfast.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.raw-container-failfast.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.recursive.spec.d.ts +2 -0
- package/dist/__tests__/asset-registry.recursive.spec.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.unit.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.unit.test.d.ts.map +1 -0
- package/dist/__tests__/asset.unit.test.d.ts +2 -0
- package/dist/__tests__/asset.unit.test.d.ts.map +1 -0
- package/dist/__tests__/audio-load-by-guid.unit.test.d.ts +2 -0
- package/dist/__tests__/audio-load-by-guid.unit.test.d.ts.map +1 -0
- package/dist/__tests__/backend-selection.integration.test.d.ts +2 -0
- package/dist/__tests__/backend-selection.integration.test.d.ts.map +1 -0
- package/dist/__tests__/basis-catalog-dispatch.integration.test.d.ts +2 -0
- package/dist/__tests__/basis-catalog-dispatch.integration.test.d.ts.map +1 -0
- package/dist/__tests__/bind-group-cache-keying.test.d.ts +2 -0
- package/dist/__tests__/bind-group-cache-keying.test.d.ts.map +1 -0
- package/dist/__tests__/block-upload-math.unit.test.d.ts +2 -0
- package/dist/__tests__/block-upload-math.unit.test.d.ts.map +1 -0
- package/dist/__tests__/builtin-asset-registry.unit.test.d.ts +2 -0
- package/dist/__tests__/builtin-asset-registry.unit.test.d.ts.map +1 -0
- package/dist/__tests__/builtin-shader-register-e2e.test.d.ts +2 -0
- package/dist/__tests__/builtin-shader-register-e2e.test.d.ts.map +1 -0
- package/dist/__tests__/cache-false-eviction.test.d.ts +2 -0
- package/dist/__tests__/cache-false-eviction.test.d.ts.map +1 -0
- package/dist/__tests__/cache-isolation-matrix.test.d.ts +2 -0
- package/dist/__tests__/cache-isolation-matrix.test.d.ts.map +1 -0
- package/dist/__tests__/camera-clear-snapshot-equivalence.unit.test.d.ts +2 -0
- package/dist/__tests__/camera-clear-snapshot-equivalence.unit.test.d.ts.map +1 -0
- package/dist/__tests__/clamp-to-last.e2e.browser.test.d.ts +2 -0
- package/dist/__tests__/clamp-to-last.e2e.browser.test.d.ts.map +1 -0
- package/dist/__tests__/clamp-to-last.e2e.dawn.test.d.ts +2 -0
- package/dist/__tests__/clamp-to-last.e2e.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/collect-scene-asset.test.d.ts +2 -0
- package/dist/__tests__/collect-scene-asset.test.d.ts.map +1 -0
- package/dist/__tests__/collect-scene-mount-collapse.test.d.ts +2 -0
- package/dist/__tests__/collect-scene-mount-collapse.test.d.ts.map +1 -0
- package/dist/__tests__/collect-subtree.unit.test.d.ts +2 -0
- package/dist/__tests__/collect-subtree.unit.test.d.ts.map +1 -0
- package/dist/__tests__/collect-transient-children-absent.test.d.ts +2 -0
- package/dist/__tests__/collect-transient-children-absent.test.d.ts.map +1 -0
- package/dist/__tests__/collect-transient-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/collect-transient-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/collect-transient-skip.test.d.ts +2 -0
- package/dist/__tests__/collect-transient-skip.test.d.ts.map +1 -0
- package/dist/__tests__/components.test-d.d.ts +2 -0
- package/dist/__tests__/components.test-d.d.ts.map +1 -0
- package/dist/__tests__/components.unit.test.d.ts +2 -0
- package/dist/__tests__/components.unit.test.d.ts.map +1 -0
- package/dist/__tests__/composite-skybox-cross-world.browser.test.d.ts +2 -0
- package/dist/__tests__/composite-skybox-cross-world.browser.test.d.ts.map +1 -0
- package/dist/__tests__/compressed-texture-physical-extent.integration.test.d.ts +2 -0
- package/dist/__tests__/compressed-texture-physical-extent.integration.test.d.ts.map +1 -0
- package/dist/__tests__/create-renderer-assembly.integration.test.d.ts +2 -0
- package/dist/__tests__/create-renderer-assembly.integration.test.d.ts.map +1 -0
- package/dist/__tests__/createRenderer-dispose.test.d.ts +2 -0
- package/dist/__tests__/createRenderer-dispose.test.d.ts.map +1 -0
- package/dist/__tests__/createRenderer-requiredFeatures.unit.test.d.ts +2 -0
- package/dist/__tests__/createRenderer-requiredFeatures.unit.test.d.ts.map +1 -0
- package/dist/__tests__/createRenderer.browser-no-webgpu.test.d.ts +2 -0
- package/dist/__tests__/createRenderer.browser-no-webgpu.test.d.ts.map +1 -0
- package/dist/__tests__/createRenderer.unit.test.d.ts +2 -0
- package/dist/__tests__/createRenderer.unit.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/ibl-compose.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/ibl-compose.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/ibl-modules-compose.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/ibl-modules-compose.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/ibl-precompute-readback.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/ibl-precompute-readback.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/instances-per-instance-pbr.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/instances-per-instance-pbr.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/instances-shadow.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/instances-shadow.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/instances-uniform-fallback.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/instances-uniform-fallback.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/material-alpha.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/material-alpha.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/material-cooked-fixture.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/material-cooked-fixture.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/mesh-ssbo-normal-matrix.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/mesh-ssbo-normal-matrix.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/mesh-update-dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/mesh-update-dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/mipmap-srgb-linear.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/mipmap-srgb-linear.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/tonemap.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/tonemap.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/upload-texture.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/upload-texture.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/user-handle-mesh-render.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/user-handle-mesh-render.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/user-mesh-upload.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/user-mesh-upload.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/zero-manifest-mesh-fail.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/zero-manifest-mesh-fail.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/zero-manifest-ready.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/zero-manifest-ready.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/demo-sortscope-migration.unit.test.d.ts +2 -0
- package/dist/__tests__/demo-sortscope-migration.unit.test.d.ts.map +1 -0
- package/dist/__tests__/derive-bgl-integration.test.d.ts +2 -0
- package/dist/__tests__/derive-bgl-integration.test.d.ts.map +1 -0
- package/dist/__tests__/derive-render-data-skin.unit.test.d.ts +2 -0
- package/dist/__tests__/derive-render-data-skin.unit.test.d.ts.map +1 -0
- package/dist/__tests__/draw-published.d.ts +5 -0
- package/dist/__tests__/draw-published.d.ts.map +1 -0
- package/dist/__tests__/dynamic-texture-store.unit.test.d.ts +2 -0
- package/dist/__tests__/dynamic-texture-store.unit.test.d.ts.map +1 -0
- package/dist/__tests__/environment-error-exhaustive.test-d.d.ts +8 -0
- package/dist/__tests__/environment-error-exhaustive.test-d.d.ts.map +1 -0
- package/dist/__tests__/equirect-bc6h.integration.test.d.ts +2 -0
- package/dist/__tests__/equirect-bc6h.integration.test.d.ts.map +1 -0
- package/dist/__tests__/error-exhaustive.test.d.ts +2 -0
- package/dist/__tests__/error-exhaustive.test.d.ts.map +1 -0
- package/dist/__tests__/errors.unit.test.d.ts +2 -0
- package/dist/__tests__/errors.unit.test.d.ts.map +1 -0
- package/dist/__tests__/extract-frames-graceful-degradation.test.d.ts +2 -0
- package/dist/__tests__/extract-frames-graceful-degradation.test.d.ts.map +1 -0
- package/dist/__tests__/extract-frames-merge.test.d.ts +2 -0
- package/dist/__tests__/extract-frames-merge.test.d.ts.map +1 -0
- package/dist/__tests__/extract-frames-reset.test.d.ts +2 -0
- package/dist/__tests__/extract-frames-reset.test.d.ts.map +1 -0
- package/dist/__tests__/extract-record-no-hardcoded-texture-fields.test.d.ts +2 -0
- package/dist/__tests__/extract-record-no-hardcoded-texture-fields.test.d.ts.map +1 -0
- package/dist/__tests__/extract-skin-mismatch.unit.test.d.ts +2 -0
- package/dist/__tests__/extract-skin-mismatch.unit.test.d.ts.map +1 -0
- package/dist/__tests__/fetch-binary-decompress.test.d.ts +2 -0
- package/dist/__tests__/fetch-binary-decompress.test.d.ts.map +1 -0
- package/dist/__tests__/four-path-compression.integration.test.d.ts +2 -0
- package/dist/__tests__/four-path-compression.integration.test.d.ts.map +1 -0
- package/dist/__tests__/frame-targets-shadow-regression.unit.test.d.ts +2 -0
- package/dist/__tests__/frame-targets-shadow-regression.unit.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-feature-host.dawn.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-feature-host.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-post-bgl-depth.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-post-bgl-depth.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-post-depth-params-arity.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-post-depth-params-arity.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-post-process-pass.dawn.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-post-process-pass.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-post-process-pass.unit.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-post-process-pass.unit.test.d.ts.map +1 -0
- package/dist/__tests__/fxaa-pixel-diff.dawn.test.d.ts +2 -0
- package/dist/__tests__/fxaa-pixel-diff.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/fxaa-validation-and-resize.dawn.test.d.ts +2 -0
- package/dist/__tests__/fxaa-validation-and-resize.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/fxaa-zero-overhead.dawn.test.d.ts +2 -0
- package/dist/__tests__/fxaa-zero-overhead.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/geometry.unit.test.d.ts +2 -0
- package/dist/__tests__/geometry.unit.test.d.ts.map +1 -0
- package/dist/__tests__/glyph-tilemap-worldid.test.d.ts +2 -0
- package/dist/__tests__/glyph-tilemap-worldid.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-resource-cow-survivor.test.d.ts +2 -0
- package/dist/__tests__/gpu-resource-cow-survivor.test.d.ts.map +1 -0
- package/dist/__tests__/guid-for-asset.unit.test.d.ts +2 -0
- package/dist/__tests__/guid-for-asset.unit.test.d.ts.map +1 -0
- package/dist/__tests__/handle-migration.test.d.ts +2 -0
- package/dist/__tests__/handle-migration.test.d.ts.map +1 -0
- package/dist/__tests__/hello-tilemap-smoke-upgrade.unit.test.d.ts +2 -0
- package/dist/__tests__/hello-tilemap-smoke-upgrade.unit.test.d.ts.map +1 -0
- package/dist/__tests__/helpers/mock-shader-registry.d.ts +11 -0
- package/dist/__tests__/helpers/mock-shader-registry.d.ts.map +1 -0
- package/dist/__tests__/helpers/register-runtime-components.d.ts +4 -0
- package/dist/__tests__/helpers/register-runtime-components.d.ts.map +1 -0
- package/dist/__tests__/helpers/register-scene-components.d.ts +4 -0
- package/dist/__tests__/helpers/register-scene-components.d.ts.map +1 -0
- package/dist/__tests__/helpers/tilemap-assets.d.ts +6 -0
- package/dist/__tests__/helpers/tilemap-assets.d.ts.map +1 -0
- package/dist/__tests__/host-custom-kind-contract.test-d.d.ts +2 -0
- package/dist/__tests__/host-custom-kind-contract.test-d.d.ts.map +1 -0
- package/dist/__tests__/host-custom-kind-contract.test.d.ts +2 -0
- package/dist/__tests__/host-custom-kind-contract.test.d.ts.map +1 -0
- package/dist/__tests__/inspect-name.test.d.ts +2 -0
- package/dist/__tests__/inspect-name.test.d.ts.map +1 -0
- package/dist/__tests__/instances.test-d.d.ts +2 -0
- package/dist/__tests__/instances.test-d.d.ts.map +1 -0
- package/dist/__tests__/instantiate-mount-deferred-wiring.test.d.ts +2 -0
- package/dist/__tests__/instantiate-mount-deferred-wiring.test.d.ts.map +1 -0
- package/dist/__tests__/light-attenuation-formula.test.d.ts +2 -0
- package/dist/__tests__/light-attenuation-formula.test.d.ts.map +1 -0
- package/dist/__tests__/light-casters-9-light.browser.test.d.ts +2 -0
- package/dist/__tests__/light-casters-9-light.browser.test.d.ts.map +1 -0
- package/dist/__tests__/light-gpu-byte-neutral.unit.test.d.ts +2 -0
- package/dist/__tests__/light-gpu-byte-neutral.unit.test.d.ts.map +1 -0
- package/dist/__tests__/light-snapshot.test-d.d.ts +2 -0
- package/dist/__tests__/light-snapshot.test-d.d.ts.map +1 -0
- package/dist/__tests__/lights-vec-negative.unit.test.d.ts +2 -0
- package/dist/__tests__/lights-vec-negative.unit.test.d.ts.map +1 -0
- package/dist/__tests__/lights.unit.test.d.ts +2 -0
- package/dist/__tests__/lights.unit.test.d.ts.map +1 -0
- package/dist/__tests__/loadbyguid-payload.unit.test.d.ts +2 -0
- package/dist/__tests__/loadbyguid-payload.unit.test.d.ts.map +1 -0
- package/dist/__tests__/loadbyguid-texture-intern.unit.test.d.ts +2 -0
- package/dist/__tests__/loadbyguid-texture-intern.unit.test.d.ts.map +1 -0
- package/dist/__tests__/loader-extract-graceful.test.d.ts +2 -0
- package/dist/__tests__/loader-extract-graceful.test.d.ts.map +1 -0
- package/dist/__tests__/loader-name-survival.test.d.ts +2 -0
- package/dist/__tests__/loader-name-survival.test.d.ts.map +1 -0
- package/dist/__tests__/m3-vec-negative.unit.test.d.ts +2 -0
- package/dist/__tests__/m3-vec-negative.unit.test.d.ts.map +1 -0
- package/dist/__tests__/m5-browser-dawn-sweep.integration.test.d.ts +2 -0
- package/dist/__tests__/m5-browser-dawn-sweep.integration.test.d.ts.map +1 -0
- package/dist/__tests__/material-texture-uv-scale.unit.test.d.ts +2 -0
- package/dist/__tests__/material-texture-uv-scale.unit.test.d.ts.map +1 -0
- package/dist/__tests__/materials.unit.test.d.ts +2 -0
- package/dist/__tests__/materials.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin-contract.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin-contract.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin-skin-roundtrip.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin-skin-roundtrip.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-loader-skin-contract.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-loader-skin-contract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-ssbo-grow.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-ssbo-grow.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mip-gate.unit.test.d.ts +2 -0
- package/dist/__tests__/mip-gate.unit.test.d.ts.map +1 -0
- package/dist/__tests__/msaa-sprite-pixel-diff.dawn.test.d.ts +2 -0
- package/dist/__tests__/msaa-sprite-pixel-diff.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/multi-uv-8set.e2e.dawn.test.d.ts +2 -0
- package/dist/__tests__/multi-uv-8set.e2e.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/name.unit.test.d.ts +2 -0
- package/dist/__tests__/name.unit.test.d.ts.map +1 -0
- package/dist/__tests__/new-kind-refs-contract.test.d.ts +2 -0
- package/dist/__tests__/new-kind-refs-contract.test.d.ts.map +1 -0
- package/dist/__tests__/package-promotion.test.d.ts +2 -0
- package/dist/__tests__/package-promotion.test.d.ts.map +1 -0
- package/dist/__tests__/package-rename.test.d.ts +2 -0
- package/dist/__tests__/package-rename.test.d.ts.map +1 -0
- package/dist/__tests__/pass-selector.unit.test.d.ts +2 -0
- package/dist/__tests__/pass-selector.unit.test.d.ts.map +1 -0
- package/dist/__tests__/pbr-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/pbr-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline-builder-msaa.unit.test.d.ts +2 -0
- package/dist/__tests__/pipeline-builder-msaa.unit.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline-cache-keying.unit.test.d.ts +2 -0
- package/dist/__tests__/pipeline-cache-keying.unit.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline-spec.test.d.ts +2 -0
- package/dist/__tests__/pipeline-spec.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/point-light-shadow.browser.test.d.ts +2 -0
- package/dist/__tests__/point-light-shadow.browser.test.d.ts.map +1 -0
- package/dist/__tests__/point-light-shadow.dawn.test.d.ts +2 -0
- package/dist/__tests__/point-light-shadow.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/point-light-shadow.unit.test.d.ts +2 -0
- package/dist/__tests__/point-light-shadow.unit.test.d.ts.map +1 -0
- package/dist/__tests__/post-process-error-codes.unit.test.d.ts +2 -0
- package/dist/__tests__/post-process-error-codes.unit.test.d.ts.map +1 -0
- package/dist/__tests__/post-process-params-component.unit.test.d.ts +2 -0
- package/dist/__tests__/post-process-params-component.unit.test.d.ts.map +1 -0
- package/dist/__tests__/post-process-params-extract.unit.test.d.ts +2 -0
- package/dist/__tests__/post-process-params-extract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/postprocess-camera-consistency.test.d.ts +2 -0
- package/dist/__tests__/postprocess-camera-consistency.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-assembly.integration.test.d.ts +2 -0
- package/dist/__tests__/profiler-assembly.integration.test.d.ts.map +1 -0
- package/dist/__tests__/propagate-transforms.dawn.test.d.ts +2 -0
- package/dist/__tests__/propagate-transforms.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/record-worldid-isolation.test.d.ts +2 -0
- package/dist/__tests__/record-worldid-isolation.test.d.ts.map +1 -0
- package/dist/__tests__/recover-error-exhaustive.test-d.d.ts +11 -0
- package/dist/__tests__/recover-error-exhaustive.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts +11 -0
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-assembly.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.browser.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics.browser.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.dawn.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts +10 -0
- package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.integration.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics.integration.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.regression.integration.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics.regression.integration.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-recover.integration.test.d.ts +2 -0
- package/dist/__tests__/render-feature-recover.integration.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-runtime-surface.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-runtime-surface.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-schema-consumer.integration.test.d.ts +2 -0
- package/dist/__tests__/render-schema-consumer.integration.test.d.ts.map +1 -0
- package/dist/__tests__/render-schema-owner-boundary.unit.test.d.ts +2 -0
- package/dist/__tests__/render-schema-owner-boundary.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-cross-world-overlay-queue.test.d.ts +2 -0
- package/dist/__tests__/render-system-cross-world-overlay-queue.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-extract-dispatch-ordering.test.d.ts +2 -0
- package/dist/__tests__/render-system-extract-dispatch-ordering.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-extract.test.d.ts +2 -0
- package/dist/__tests__/render-system-extract.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-extract.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-extract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-fold-bucket.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-fold-bucket.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-fold-fallback.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-fold-fallback.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-fold-material.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-fold-material.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-fold-metrics.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-fold-metrics.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-fold-modegate.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-fold-modegate.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-fold-scene-instances.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-fold-scene-instances.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-fold.dawn.test.d.ts +2 -0
- package/dist/__tests__/render-system-fold.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-mega.test.d.ts +2 -0
- package/dist/__tests__/render-system-mega.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-owner-split-contract.test.d.ts +2 -0
- package/dist/__tests__/render-system-owner-split-contract.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-record-multi-material-textureview.test.d.ts +2 -0
- package/dist/__tests__/render-system-record-multi-material-textureview.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-record-per-submesh-transparency.test.d.ts +2 -0
- package/dist/__tests__/render-system-record-per-submesh-transparency.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-record.test.d.ts +2 -0
- package/dist/__tests__/render-system-record.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-record.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-record.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-system-skin-bg.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-skin-bg.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-consumer.test-d.d.ts +2 -0
- package/dist/__tests__/renderer-consumer.test-d.d.ts.map +1 -0
- package/dist/__tests__/renderer-health.unit.test.d.ts +2 -0
- package/dist/__tests__/renderer-health.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +2 -0
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-recover.unit.test.d.ts +2 -0
- package/dist/__tests__/renderer-recover.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-result.test-d.d.ts +2 -0
- package/dist/__tests__/renderer-result.test-d.d.ts.map +1 -0
- package/dist/__tests__/renderer-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/renderer-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-test-utils.d.ts +10 -0
- package/dist/__tests__/renderer-test-utils.d.ts.map +1 -0
- package/dist/__tests__/renderer.test-d.d.ts +2 -0
- package/dist/__tests__/renderer.test-d.d.ts.map +1 -0
- package/dist/__tests__/resolve-asset-handle-err.test.d.ts +2 -0
- package/dist/__tests__/resolve-asset-handle-err.test.d.ts.map +1 -0
- package/dist/__tests__/resolve-asset-handle.unit.test.d.ts +2 -0
- package/dist/__tests__/resolve-asset-handle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/resolve-depth-only-view.test.d.ts +2 -0
- package/dist/__tests__/resolve-depth-only-view.test.d.ts.map +1 -0
- package/dist/__tests__/resolveName-fallback.test.d.ts +2 -0
- package/dist/__tests__/resolveName-fallback.test.d.ts.map +1 -0
- package/dist/__tests__/resolveName-null-package.test.d.ts +2 -0
- package/dist/__tests__/resolveName-null-package.test.d.ts.map +1 -0
- package/dist/__tests__/resolveName-unified-entry.test.d.ts +2 -0
- package/dist/__tests__/resolveName-unified-entry.test.d.ts.map +1 -0
- package/dist/__tests__/resolveName.test.d.ts +2 -0
- package/dist/__tests__/resolveName.test.d.ts.map +1 -0
- package/dist/__tests__/rhi-null-command-flow.unit.test.d.ts +2 -0
- package/dist/__tests__/rhi-null-command-flow.unit.test.d.ts.map +1 -0
- package/dist/__tests__/rhi-null-noop-behavior.unit.test.d.ts +2 -0
- package/dist/__tests__/rhi-null-noop-behavior.unit.test.d.ts.map +1 -0
- package/dist/__tests__/rhi-null-renderer-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/rhi-null-renderer-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/roots-to-scene-asset.test.d.ts +2 -0
- package/dist/__tests__/roots-to-scene-asset.test.d.ts.map +1 -0
- package/dist/__tests__/roundtrip-primitive.test.d.ts +2 -0
- package/dist/__tests__/roundtrip-primitive.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-authority-scan.unit.test.d.ts +2 -0
- package/dist/__tests__/runtime-authority-scan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-domain-residue.unit.test.d.ts +2 -0
- package/dist/__tests__/runtime-domain-residue.unit.test.d.ts.map +1 -0
- package/dist/__tests__/scene-bare-guid-refs-instantiate.test.d.ts +2 -0
- package/dist/__tests__/scene-bare-guid-refs-instantiate.test.d.ts.map +1 -0
- package/dist/__tests__/scene-equirect-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/scene-equirect-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/scene-instance-authoring.integration.test.d.ts +2 -0
- package/dist/__tests__/scene-instance-authoring.integration.test.d.ts.map +1 -0
- package/dist/__tests__/scene-instance-bridge.integration.test.d.ts +2 -0
- package/dist/__tests__/scene-instance-bridge.integration.test.d.ts.map +1 -0
- package/dist/__tests__/scene-instance-component.test.d.ts +2 -0
- package/dist/__tests__/scene-instance-component.test.d.ts.map +1 -0
- package/dist/__tests__/scene-instantiate-cycle-runtime.test.d.ts +2 -0
- package/dist/__tests__/scene-instantiate-cycle-runtime.test.d.ts.map +1 -0
- package/dist/__tests__/scene-mount-fixed-point.test.d.ts +2 -0
- package/dist/__tests__/scene-mount-fixed-point.test.d.ts.map +1 -0
- package/dist/__tests__/scene-mount-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/scene-mount-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/scene-mount-wrapper-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/scene-mount-wrapper-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/scene-sugar-instantiate.test.d.ts +2 -0
- package/dist/__tests__/scene-sugar-instantiate.test.d.ts.map +1 -0
- package/dist/__tests__/serialize-mounts-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/serialize-mounts-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/serialize-scene-asset.test.d.ts +2 -0
- package/dist/__tests__/serialize-scene-asset.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-caster-empty-schema.test.d.ts +2 -0
- package/dist/__tests__/shadow-caster-empty-schema.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-atlas.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-atlas.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-blend.dawn.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-blend.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-cascade-loadop.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-cascade-loadop.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-component.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-component.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-extract.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-extract.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-orthoz.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-orthoz.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-runtime-vary.dawn.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-runtime-vary.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-shader.dawn.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-shader.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-tile-consistency.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-tile-consistency.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-ubo.dawn.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-ubo.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-ubo.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-ubo.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-csm-viewport.browser.test.d.ts +2 -0
- package/dist/__tests__/shadow-csm-viewport.browser.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-fields-observable.dawn.test.d.ts +2 -0
- package/dist/__tests__/shadow-fields-observable.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-m1.dawn.test.d.ts +2 -0
- package/dist/__tests__/shadow-m1.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/shadow-mesh-ssbo-order.test.d.ts +2 -0
- package/dist/__tests__/shadow-mesh-ssbo-order.test.d.ts.map +1 -0
- package/dist/__tests__/skin-error-exhaustive.test-d.d.ts +11 -0
- package/dist/__tests__/skin-error-exhaustive.test-d.d.ts.map +1 -0
- package/dist/__tests__/skin-errors.unit.test.d.ts +2 -0
- package/dist/__tests__/skin-errors.unit.test.d.ts.map +1 -0
- package/dist/__tests__/skin-extract-getarrayview-count.unit.test.d.ts +2 -0
- package/dist/__tests__/skin-extract-getarrayview-count.unit.test.d.ts.map +1 -0
- package/dist/__tests__/skin-parented-double-transform.test.d.ts +14 -0
- package/dist/__tests__/skin-parented-double-transform.test.d.ts.map +1 -0
- package/dist/__tests__/skylight-lazy-projection.test.d.ts +2 -0
- package/dist/__tests__/skylight-lazy-projection.test.d.ts.map +1 -0
- package/dist/__tests__/sparse-tag-scene-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/sparse-tag-scene-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/sprite-cullmode-flip.dawn.test.d.ts +2 -0
- package/dist/__tests__/sprite-cullmode-flip.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/sprite-lit-bgl-byte-identical.test.d.ts +2 -0
- package/dist/__tests__/sprite-lit-bgl-byte-identical.test.d.ts.map +1 -0
- package/dist/__tests__/sprite-lit-extract-branch.test.d.ts +2 -0
- package/dist/__tests__/sprite-lit-extract-branch.test.d.ts.map +1 -0
- package/dist/__tests__/sprite-lit-pipeline-cache-key.test.d.ts +2 -0
- package/dist/__tests__/sprite-lit-pipeline-cache-key.test.d.ts.map +1 -0
- package/dist/__tests__/sprite-param-values.test-d.d.ts +2 -0
- package/dist/__tests__/sprite-param-values.test-d.d.ts.map +1 -0
- package/dist/__tests__/ssao-bgl.test.d.ts +2 -0
- package/dist/__tests__/ssao-bgl.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-buffers.test.d.ts +2 -0
- package/dist/__tests__/ssao-buffers.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-data.test.d.ts +2 -0
- package/dist/__tests__/ssao-data.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-errors.test.d.ts +2 -0
- package/dist/__tests__/ssao-errors.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-manifest.test.d.ts +2 -0
- package/dist/__tests__/ssao-manifest.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-passes.test.d.ts +2 -0
- package/dist/__tests__/ssao-passes.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-pipelines.test.d.ts +2 -0
- package/dist/__tests__/ssao-pipelines.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-uniform-layout.test.d.ts +2 -0
- package/dist/__tests__/ssao-uniform-layout.test.d.ts.map +1 -0
- package/dist/__tests__/static-rig.integration.test.d.ts +2 -0
- package/dist/__tests__/static-rig.integration.test.d.ts.map +1 -0
- package/dist/__tests__/stencil-outline-pixel.dawn.test.d.ts +2 -0
- package/dist/__tests__/stencil-outline-pixel.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/swap-chain-format.unit.test.d.ts +2 -0
- package/dist/__tests__/swap-chain-format.unit.test.d.ts.map +1 -0
- package/dist/__tests__/systems.unit.test.d.ts +2 -0
- package/dist/__tests__/systems.unit.test.d.ts.map +1 -0
- package/dist/__tests__/template-game-default-api-contract.test.d.ts +2 -0
- package/dist/__tests__/template-game-default-api-contract.test.d.ts.map +1 -0
- package/dist/__tests__/text.unit.test.d.ts +2 -0
- package/dist/__tests__/text.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-childed-despawn.test.d.ts +2 -0
- package/dist/__tests__/tilemap-childed-despawn.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-chunk-extract.overhang-bounds.test.d.ts +2 -0
- package/dist/__tests__/tilemap-chunk-extract.overhang-bounds.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-chunk-extract.propagate-order.test.d.ts +2 -0
- package/dist/__tests__/tilemap-chunk-extract.propagate-order.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-chunk-extract.terrain-rewrite.unit.test.d.ts +2 -0
- package/dist/__tests__/tilemap-chunk-extract.terrain-rewrite.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-chunk-extract.test.d.ts +2 -0
- package/dist/__tests__/tilemap-chunk-extract.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-chunk-extract.unit.test.d.ts +2 -0
- package/dist/__tests__/tilemap-chunk-extract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-chunk-y-sort-bench.unit.test.d.ts +2 -0
- package/dist/__tests__/tilemap-chunk-y-sort-bench.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-dirty-rebuild.test.d.ts +2 -0
- package/dist/__tests__/tilemap-dirty-rebuild.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-material-cache.test.d.ts +2 -0
- package/dist/__tests__/tilemap-material-cache.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-multi-atlas.test.d.ts +2 -0
- package/dist/__tests__/tilemap-multi-atlas.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-owner-boundary.unit.test.d.ts +2 -0
- package/dist/__tests__/tilemap-owner-boundary.unit.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-region-pack.test.d.ts +2 -0
- package/dist/__tests__/tilemap-region-pack.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-spawn-flip-pivot.test.d.ts +2 -0
- package/dist/__tests__/tilemap-spawn-flip-pivot.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-uv-inset.test.d.ts +2 -0
- package/dist/__tests__/tilemap-uv-inset.test.d.ts.map +1 -0
- package/dist/__tests__/tilemap-validate.test.d.ts +2 -0
- package/dist/__tests__/tilemap-validate.test.d.ts.map +1 -0
- package/dist/__tests__/tileset-asset-validate.test.d.ts +2 -0
- package/dist/__tests__/tileset-asset-validate.test.d.ts.map +1 -0
- package/dist/__tests__/transcode-fallback.unit.test.d.ts +2 -0
- package/dist/__tests__/transcode-fallback.unit.test.d.ts.map +1 -0
- package/dist/__tests__/transform-hierarchy-pixel-diff.dawn.test.d.ts +2 -0
- package/dist/__tests__/transform-hierarchy-pixel-diff.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/transient-fields-collect.test.d.ts +2 -0
- package/dist/__tests__/transient-fields-collect.test.d.ts.map +1 -0
- package/dist/__tests__/transient-runtime-behavior.test.d.ts +2 -0
- package/dist/__tests__/transient-runtime-behavior.test.d.ts.map +1 -0
- package/dist/__tests__/transitional-authoring.integration.test.d.ts +2 -0
- package/dist/__tests__/transitional-authoring.integration.test.d.ts.map +1 -0
- package/dist/__tests__/transparent-sort-tilemap-sprite-interleave.test.d.ts +2 -0
- package/dist/__tests__/transparent-sort-tilemap-sprite-interleave.test.d.ts.map +1 -0
- package/dist/__tests__/variant-selection.unit.test.d.ts +2 -0
- package/dist/__tests__/variant-selection.unit.test.d.ts.map +1 -0
- package/dist/__tests__/vertex-attribute-layout.test.d.ts +2 -0
- package/dist/__tests__/vertex-attribute-layout.test.d.ts.map +1 -0
- package/dist/__tests__/video-extract-bindgroup.dawn.test.d.ts +2 -0
- package/dist/__tests__/video-extract-bindgroup.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/video-loader-consumption.test.d.ts +2 -0
- package/dist/__tests__/video-loader-consumption.test.d.ts.map +1 -0
- package/dist/__tests__/video-loader-smoke.dawn.test.d.ts +2 -0
- package/dist/__tests__/video-loader-smoke.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/view-ubo-layout.browser.test.d.ts +2 -0
- package/dist/__tests__/view-ubo-layout.browser.test.d.ts.map +1 -0
- package/dist/__tests__/world-entity-key.test.d.ts +2 -0
- package/dist/__tests__/world-entity-key.test.d.ts.map +1 -0
- package/dist/__tests__/world-scene-despawn.test.d.ts +2 -0
- package/dist/__tests__/world-scene-despawn.test.d.ts.map +1 -0
- package/dist/__tests__/world-scene-instantiate.test.d.ts +2 -0
- package/dist/__tests__/world-scene-instantiate.test.d.ts.map +1 -0
- package/dist/__tests__/world-scene-nested.test.d.ts +2 -0
- package/dist/__tests__/world-scene-nested.test.d.ts.map +1 -0
- package/dist/__tests__/world-scene-override.test.d.ts +2 -0
- package/dist/__tests__/world-scene-override.test.d.ts.map +1 -0
- package/dist/__tests__/zero-compression-zero-load.integration.test.d.ts +2 -0
- package/dist/__tests__/zero-compression-zero-load.integration.test.d.ts.map +1 -0
- package/dist/asset-contributions.d.ts +3 -0
- package/dist/asset-contributions.d.ts.map +1 -0
- package/dist/backend-selection.d.ts +13 -0
- package/dist/backend-selection.d.ts.map +1 -0
- package/dist/collect-scene-asset.d.ts +19 -0
- package/dist/collect-scene-asset.d.ts.map +1 -0
- package/dist/components/__tests__/camera.test-d.d.ts +2 -0
- package/dist/components/__tests__/camera.test-d.d.ts.map +1 -0
- package/dist/components/__tests__/camera.test.d.ts +2 -0
- package/dist/components/__tests__/camera.test.d.ts.map +1 -0
- package/dist/components/__tests__/child-of.test.d.ts +2 -0
- package/dist/components/__tests__/child-of.test.d.ts.map +1 -0
- package/dist/components/__tests__/sprite-animation.test-d.d.ts +2 -0
- package/dist/components/__tests__/sprite-animation.test-d.d.ts.map +1 -0
- package/dist/components/__tests__/sprite-instances.unit.test.d.ts +2 -0
- package/dist/components/__tests__/sprite-instances.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/sprite-region-override.test-d.d.ts +2 -0
- package/dist/components/__tests__/sprite-region-override.test-d.d.ts.map +1 -0
- package/dist/components/__tests__/tile-layer.test-d.d.ts +2 -0
- package/dist/components/__tests__/tile-layer.test-d.d.ts.map +1 -0
- package/dist/components/__tests__/tile-layer.unit.test.d.ts +2 -0
- package/dist/components/__tests__/tile-layer.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/tilemap.test-d.d.ts +2 -0
- package/dist/components/__tests__/tilemap.test-d.d.ts.map +1 -0
- package/dist/components/__tests__/transform-vec-schema.test.d.ts +2 -0
- package/dist/components/__tests__/transform-vec-schema.test.d.ts.map +1 -0
- package/dist/create-renderer-env-classify.d.ts +21 -0
- package/dist/create-renderer-env-classify.d.ts.map +1 -0
- package/dist/createRenderer.d.ts +15 -0
- package/dist/createRenderer.d.ts.map +1 -0
- package/dist/dev-import-transport.d.ts +24 -0
- package/dist/dev-import-transport.d.ts.map +1 -0
- package/dist/errors/environment.d.ts +2 -0
- package/dist/errors/environment.d.ts.map +1 -0
- package/dist/index.d.ts +218 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +813 -0
- package/dist/index.mjs.map +1 -0
- package/dist/renderer-host.d.ts +9 -0
- package/dist/renderer-host.d.ts.map +1 -0
- package/dist/renderer-host.mjs +62 -0
- package/dist/renderer-host.mjs.map +1 -0
- package/dist/scene-instances/__tests__/post-spawn-resolve-joints.unit.test.d.ts +2 -0
- package/dist/scene-instances/__tests__/post-spawn-resolve-joints.unit.test.d.ts.map +1 -0
- package/dist/scene-instances/index.d.ts +2 -0
- package/dist/scene-instances/index.d.ts.map +1 -0
- package/dist/scene-utils/mount-override-fold.d.ts +15 -0
- package/dist/scene-utils/mount-override-fold.d.ts.map +1 -0
- package/dist/sprite-param-values.d.ts +62 -0
- package/dist/sprite-param-values.d.ts.map +1 -0
- package/dist/systems/__tests__/_xorshift.d.ts +28 -0
- package/dist/systems/__tests__/_xorshift.d.ts.map +1 -0
- package/dist/systems/__tests__/argsort-in-place.test.d.ts +2 -0
- package/dist/systems/__tests__/argsort-in-place.test.d.ts.map +1 -0
- package/dist/systems/__tests__/transparent-sort.bench.d.ts +2 -0
- package/dist/systems/__tests__/transparent-sort.bench.d.ts.map +1 -0
- package/dist/systems/sprite-animation-tick.d.ts +50 -0
- package/dist/systems/sprite-animation-tick.d.ts.map +1 -0
- package/dist/systems/tonemap.d.ts +27 -0
- package/dist/systems/tonemap.d.ts.map +1 -0
- package/dist/systems/transparent-sort.d.ts +50 -0
- package/dist/systems/transparent-sort.d.ts.map +1 -0
- package/dist/tilemap-register-validate.d.ts +21 -0
- package/dist/tilemap-register-validate.d.ts.map +1 -0
- package/package.json +101 -0
- package/src/__tests__/active-camera.unit.test.ts +203 -0
- package/src/__tests__/animation-graph-add.unit.test.ts +67 -0
- package/src/__tests__/animation-graph-asset-union.test-d.ts +83 -0
- package/src/__tests__/animation-graph-blend.unit.test.ts +66 -0
- package/src/__tests__/animation-graph-build.unit.test.ts +100 -0
- package/src/__tests__/animation-graph-clip-missing.unit.test.ts +62 -0
- package/src/__tests__/animation-graph-clip.unit.test.ts +77 -0
- package/src/__tests__/animation-graph-collect-roundtrip.test.ts +213 -0
- package/src/__tests__/animation-graph-default-path.integration.test.ts +65 -0
- package/src/__tests__/animation-graph-describe.unit.test.ts +68 -0
- package/src/__tests__/animation-graph-errors.unit.test.ts +75 -0
- package/src/__tests__/animation-graph-nesting.unit.test.ts +84 -0
- package/src/__tests__/animation-graph-orthogonal-weight.unit.test.ts +98 -0
- package/src/__tests__/animation-graph-serialize.unit.test.ts +171 -0
- package/src/__tests__/animation-graph-slot-fill.unit.test.ts +95 -0
- package/src/__tests__/animation-nslot.unit.test.ts +63 -0
- package/src/__tests__/animation-slot-length-guard.unit.test.ts +81 -0
- package/src/__tests__/append-injection.test.ts +105 -0
- package/src/__tests__/asi-world-baseline-export.unit.test.ts +173 -0
- package/src/__tests__/asi-world-ci-config.unit.test.ts +186 -0
- package/src/__tests__/asi-world-smoke.unit.test.ts +192 -0
- package/src/__tests__/asset-brand-and-name-retirement.test.ts +102 -0
- package/src/__tests__/asset-error-exhaustive.test-d.ts +62 -0
- package/src/__tests__/asset-registry-guid-reverse.test.ts +608 -0
- package/src/__tests__/asset-registry-hdr-equirect.test.ts +78 -0
- package/src/__tests__/asset-registry-mesh-pack-payload.dawn.test.ts +232 -0
- package/src/__tests__/asset-registry-mounts.test.ts +806 -0
- package/src/__tests__/asset-registry-scene.test-d.ts +49 -0
- package/src/__tests__/asset-registry.browser.test.ts +81 -0
- package/src/__tests__/asset-registry.dawn.test.ts +94 -0
- package/src/__tests__/asset-registry.listCatalog.test.ts +170 -0
- package/src/__tests__/asset-registry.mesh-bin.test.ts +316 -0
- package/src/__tests__/asset-registry.pack-cache.test.ts +969 -0
- package/src/__tests__/asset-registry.raw-container-failfast.test.ts +225 -0
- package/src/__tests__/asset-registry.recursive.spec.ts +1397 -0
- package/src/__tests__/asset-registry.unit.test.ts +1030 -0
- package/src/__tests__/asset.unit.test.ts +7107 -0
- package/src/__tests__/audio-load-by-guid.unit.test.ts +126 -0
- package/src/__tests__/backend-selection.integration.test.ts +11 -0
- package/src/__tests__/basis-catalog-dispatch.integration.test.ts +320 -0
- package/src/__tests__/bind-group-cache-keying.test.ts +295 -0
- package/src/__tests__/block-upload-math.unit.test.ts +192 -0
- package/src/__tests__/builtin-asset-registry.unit.test.ts +112 -0
- package/src/__tests__/builtin-shader-register-e2e.test.ts +151 -0
- package/src/__tests__/cache-false-eviction.test.ts +127 -0
- package/src/__tests__/cache-isolation-matrix.test.ts +183 -0
- package/src/__tests__/camera-clear-snapshot-equivalence.unit.test.ts +75 -0
- package/src/__tests__/clamp-to-last.e2e.browser.test.ts +193 -0
- package/src/__tests__/clamp-to-last.e2e.dawn.test.ts +325 -0
- package/src/__tests__/collect-scene-asset.test.ts +873 -0
- package/src/__tests__/collect-scene-mount-collapse.test.ts +391 -0
- package/src/__tests__/collect-subtree.unit.test.ts +75 -0
- package/src/__tests__/collect-transient-children-absent.test.ts +168 -0
- package/src/__tests__/collect-transient-roundtrip.test.ts +269 -0
- package/src/__tests__/collect-transient-skip.test.ts +176 -0
- package/src/__tests__/components.test-d.ts +231 -0
- package/src/__tests__/components.unit.test.ts +2666 -0
- package/src/__tests__/composite-skybox-cross-world.browser.test.ts +410 -0
- package/src/__tests__/compressed-texture-physical-extent.integration.test.ts +139 -0
- package/src/__tests__/create-renderer-assembly.integration.test.ts +55 -0
- package/src/__tests__/createRenderer-dispose.test.ts +49 -0
- package/src/__tests__/createRenderer-requiredFeatures.unit.test.ts +134 -0
- package/src/__tests__/createRenderer.browser-no-webgpu.test.ts +54 -0
- package/src/__tests__/createRenderer.unit.test.ts +231 -0
- package/src/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.ts +357 -0
- package/src/__tests__/dawn/ibl-compose.dawn.test.ts +151 -0
- package/src/__tests__/dawn/ibl-modules-compose.dawn.test.ts +223 -0
- package/src/__tests__/dawn/ibl-precompute-readback.dawn.test.ts +250 -0
- package/src/__tests__/dawn/instances-per-instance-pbr.dawn.test.ts +631 -0
- package/src/__tests__/dawn/instances-shadow.dawn.test.ts +454 -0
- package/src/__tests__/dawn/instances-uniform-fallback.dawn.test.ts +312 -0
- package/src/__tests__/dawn/material-alpha.dawn.test.ts +296 -0
- package/src/__tests__/dawn/material-cooked-fixture.dawn.test.ts +79 -0
- package/src/__tests__/dawn/mesh-ssbo-normal-matrix.dawn.test.ts +106 -0
- package/src/__tests__/dawn/mesh-update-dawn.test.ts +250 -0
- package/src/__tests__/dawn/mipmap-srgb-linear.dawn.test.ts +124 -0
- package/src/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.ts +555 -0
- package/src/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.ts +235 -0
- package/src/__tests__/dawn/tonemap.dawn.test.ts +107 -0
- package/src/__tests__/dawn/upload-texture.dawn.test.ts +198 -0
- package/src/__tests__/dawn/user-handle-mesh-render.dawn.test.ts +289 -0
- package/src/__tests__/dawn/user-mesh-upload.dawn.test.ts +209 -0
- package/src/__tests__/dawn/zero-manifest-mesh-fail.dawn.test.ts +119 -0
- package/src/__tests__/dawn/zero-manifest-ready.dawn.test.ts +98 -0
- package/src/__tests__/demo-sortscope-migration.unit.test.ts +115 -0
- package/src/__tests__/derive-bgl-integration.test.ts +388 -0
- package/src/__tests__/derive-render-data-skin.unit.test.ts +90 -0
- package/src/__tests__/draw-published.ts +17 -0
- package/src/__tests__/dynamic-texture-store.unit.test.ts +190 -0
- package/src/__tests__/environment-error-exhaustive.test-d.ts +28 -0
- package/src/__tests__/equirect-bc6h.integration.test.ts +158 -0
- package/src/__tests__/error-exhaustive.test.ts +220 -0
- package/src/__tests__/errors.unit.test.ts +1227 -0
- package/src/__tests__/extract-frames-graceful-degradation.test.ts +294 -0
- package/src/__tests__/extract-frames-merge.test.ts +656 -0
- package/src/__tests__/extract-frames-reset.test.ts +158 -0
- package/src/__tests__/extract-record-no-hardcoded-texture-fields.test.ts +81 -0
- package/src/__tests__/extract-skin-mismatch.unit.test.ts +322 -0
- package/src/__tests__/fetch-binary-decompress.test.ts +356 -0
- package/src/__tests__/four-path-compression.integration.test.ts +395 -0
- package/src/__tests__/frame-targets-shadow-regression.unit.test.ts +28 -0
- package/src/__tests__/fullscreen-feature-host.dawn.test.ts +80 -0
- package/src/__tests__/fullscreen-post-bgl-depth.test.ts +133 -0
- package/src/__tests__/fullscreen-post-depth-params-arity.test.ts +84 -0
- package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +336 -0
- package/src/__tests__/fullscreen-post-process-pass.unit.test.ts +109 -0
- package/src/__tests__/fxaa-pixel-diff.dawn.test.ts +303 -0
- package/src/__tests__/fxaa-validation-and-resize.dawn.test.ts +369 -0
- package/src/__tests__/fxaa-zero-overhead.dawn.test.ts +258 -0
- package/src/__tests__/geometry.unit.test.ts +2631 -0
- package/src/__tests__/glyph-tilemap-worldid.test.ts +146 -0
- package/src/__tests__/gpu-resource-cow-survivor.test.ts +390 -0
- package/src/__tests__/guid-for-asset.unit.test.ts +102 -0
- package/src/__tests__/handle-migration.test.ts +136 -0
- package/src/__tests__/hello-tilemap-smoke-upgrade.unit.test.ts +147 -0
- package/src/__tests__/helpers/mock-shader-registry.ts +139 -0
- package/src/__tests__/helpers/register-runtime-components.ts +71 -0
- package/src/__tests__/helpers/register-scene-components.ts +10 -0
- package/src/__tests__/helpers/tilemap-assets.ts +29 -0
- package/src/__tests__/host-custom-kind-contract.test-d.ts +47 -0
- package/src/__tests__/host-custom-kind-contract.test.ts +578 -0
- package/src/__tests__/inspect-name.test.ts +139 -0
- package/src/__tests__/instances.test-d.ts +61 -0
- package/src/__tests__/instantiate-mount-deferred-wiring.test.ts +112 -0
- package/src/__tests__/light-attenuation-formula.test.ts +171 -0
- package/src/__tests__/light-casters-9-light.browser.test.ts +877 -0
- package/src/__tests__/light-gpu-byte-neutral.unit.test.ts +160 -0
- package/src/__tests__/light-snapshot.test-d.ts +84 -0
- package/src/__tests__/lights-vec-negative.unit.test.ts +52 -0
- package/src/__tests__/lights.unit.test.ts +2456 -0
- package/src/__tests__/loadbyguid-payload.unit.test.ts +117 -0
- package/src/__tests__/loadbyguid-texture-intern.unit.test.ts +213 -0
- package/src/__tests__/loader-extract-graceful.test.ts +146 -0
- package/src/__tests__/loader-name-survival.test.ts +213 -0
- package/src/__tests__/m3-vec-negative.unit.test.ts +46 -0
- package/src/__tests__/m5-browser-dawn-sweep.integration.test.ts +8 -0
- package/src/__tests__/material-texture-uv-scale.unit.test.ts +119 -0
- package/src/__tests__/materials.unit.test.ts +254 -0
- package/src/__tests__/mesh-bin-contract.test.ts +28 -0
- package/src/__tests__/mesh-bin-skin-roundtrip.unit.test.ts +149 -0
- package/src/__tests__/mesh-bin.test.ts +38 -0
- package/src/__tests__/mesh-loader-skin-contract.unit.test.ts +120 -0
- package/src/__tests__/mesh-ssbo-grow.unit.test.ts +244 -0
- package/src/__tests__/mip-gate.unit.test.ts +79 -0
- package/src/__tests__/msaa-sprite-pixel-diff.dawn.test.ts +367 -0
- package/src/__tests__/multi-uv-8set.e2e.dawn.test.ts +296 -0
- package/src/__tests__/name.unit.test.ts +123 -0
- package/src/__tests__/new-kind-refs-contract.test.ts +132 -0
- package/src/__tests__/node-shims.d.ts +31 -0
- package/src/__tests__/package-promotion.test.ts +88 -0
- package/src/__tests__/package-rename.test.ts +103 -0
- package/src/__tests__/pass-selector.unit.test.ts +102 -0
- package/src/__tests__/pbr-pipeline.unit.test.ts +200 -0
- package/src/__tests__/pipeline-builder-msaa.unit.test.ts +221 -0
- package/src/__tests__/pipeline-cache-keying.unit.test.ts +313 -0
- package/src/__tests__/pipeline-spec.test.ts +900 -0
- package/src/__tests__/pipeline.unit.test.ts +5435 -0
- package/src/__tests__/point-light-shadow.browser.test.ts +278 -0
- package/src/__tests__/point-light-shadow.dawn.test.ts +813 -0
- package/src/__tests__/point-light-shadow.unit.test.ts +675 -0
- package/src/__tests__/post-process-error-codes.unit.test.ts +161 -0
- package/src/__tests__/post-process-params-component.unit.test.ts +153 -0
- package/src/__tests__/post-process-params-extract.unit.test.ts +97 -0
- package/src/__tests__/postprocess-camera-consistency.test.ts +375 -0
- package/src/__tests__/profiler-assembly.integration.test.ts +74 -0
- package/src/__tests__/propagate-transforms.dawn.test.ts +254 -0
- package/src/__tests__/record-worldid-isolation.test.ts +225 -0
- package/src/__tests__/recover-error-exhaustive.test-d.ts +35 -0
- package/src/__tests__/render-error-exhaustive.test-d.ts +291 -0
- package/src/__tests__/render-feature-assembly.test-d.ts +39 -0
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +126 -0
- package/src/__tests__/render-feature-prepared-graphics.browser.test.ts +88 -0
- package/src/__tests__/render-feature-prepared-graphics.dawn.test.ts +115 -0
- package/src/__tests__/render-feature-prepared-graphics.fixture.ts +104 -0
- package/src/__tests__/render-feature-prepared-graphics.integration.test.ts +56 -0
- package/src/__tests__/render-feature-prepared-graphics.regression.integration.test.ts +104 -0
- package/src/__tests__/render-feature-recover.integration.test.ts +102 -0
- package/src/__tests__/render-feature-runtime-surface.test-d.ts +42 -0
- package/src/__tests__/render-schema-consumer.integration.test.ts +32 -0
- package/src/__tests__/render-schema-owner-boundary.unit.test.ts +22 -0
- package/src/__tests__/render-system-cross-world-overlay-queue.test.ts +172 -0
- package/src/__tests__/render-system-extract-dispatch-ordering.test.ts +307 -0
- package/src/__tests__/render-system-extract.test.ts +1384 -0
- package/src/__tests__/render-system-extract.unit.test.ts +360 -0
- package/src/__tests__/render-system-fold-bucket.unit.test.ts +286 -0
- package/src/__tests__/render-system-fold-fallback.unit.test.ts +151 -0
- package/src/__tests__/render-system-fold-material.unit.test.ts +143 -0
- package/src/__tests__/render-system-fold-metrics.unit.test.ts +170 -0
- package/src/__tests__/render-system-fold-modegate.unit.test.ts +166 -0
- package/src/__tests__/render-system-fold-scene-instances.unit.test.ts +51 -0
- package/src/__tests__/render-system-fold.dawn.test.ts +308 -0
- package/src/__tests__/render-system-mega.test.ts +1680 -0
- package/src/__tests__/render-system-owner-split-contract.test.ts +178 -0
- package/src/__tests__/render-system-record-multi-material-textureview.test.ts +698 -0
- package/src/__tests__/render-system-record-per-submesh-transparency.test.ts +458 -0
- package/src/__tests__/render-system-record.test.ts +1668 -0
- package/src/__tests__/render-system-record.unit.test.ts +269 -0
- package/src/__tests__/render-system-skin-bg.unit.test.ts +143 -0
- package/src/__tests__/renderer-consumer.test-d.ts +18 -0
- package/src/__tests__/renderer-health.unit.test.ts +45 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +42 -0
- package/src/__tests__/renderer-recover.unit.test.ts +55 -0
- package/src/__tests__/renderer-result.test-d.ts +36 -0
- package/src/__tests__/renderer-surface.unit.test.ts +414 -0
- package/src/__tests__/renderer-test-utils.ts +56 -0
- package/src/__tests__/renderer.test-d.ts +61 -0
- package/src/__tests__/resolve-asset-handle-err.test.ts +111 -0
- package/src/__tests__/resolve-asset-handle.unit.test.ts +64 -0
- package/src/__tests__/resolve-depth-only-view.test.ts +173 -0
- package/src/__tests__/resolveName-fallback.test.ts +64 -0
- package/src/__tests__/resolveName-null-package.test.ts +38 -0
- package/src/__tests__/resolveName-unified-entry.test.ts +65 -0
- package/src/__tests__/resolveName.test.ts +64 -0
- package/src/__tests__/rhi-null-command-flow.unit.test.ts +69 -0
- package/src/__tests__/rhi-null-noop-behavior.unit.test.ts +196 -0
- package/src/__tests__/rhi-null-renderer-lifecycle.unit.test.ts +54 -0
- package/src/__tests__/roots-to-scene-asset.test.ts +711 -0
- package/src/__tests__/roundtrip-primitive.test.ts +351 -0
- package/src/__tests__/runtime-authority-scan.unit.test.ts +19 -0
- package/src/__tests__/runtime-domain-residue.unit.test.ts +13 -0
- package/src/__tests__/scene-bare-guid-refs-instantiate.test.ts +123 -0
- package/src/__tests__/scene-equirect-roundtrip.test.ts +120 -0
- package/src/__tests__/scene-instance-authoring.integration.test.ts +8 -0
- package/src/__tests__/scene-instance-bridge.integration.test.ts +8 -0
- package/src/__tests__/scene-instance-component.test.ts +45 -0
- package/src/__tests__/scene-instantiate-cycle-runtime.test.ts +66 -0
- package/src/__tests__/scene-mount-fixed-point.test.ts +257 -0
- package/src/__tests__/scene-mount-roundtrip.test.ts +987 -0
- package/src/__tests__/scene-mount-wrapper-roundtrip.test.ts +202 -0
- package/src/__tests__/scene-sugar-instantiate.test.ts +324 -0
- package/src/__tests__/serialize-mounts-roundtrip.test.ts +533 -0
- package/src/__tests__/serialize-scene-asset.test.ts +533 -0
- package/src/__tests__/shadow-caster-empty-schema.test.ts +83 -0
- package/src/__tests__/shadow-csm-atlas.test.ts +178 -0
- package/src/__tests__/shadow-csm-blend.dawn.test.ts +230 -0
- package/src/__tests__/shadow-csm-cascade-loadop.test.ts +354 -0
- package/src/__tests__/shadow-csm-component.test.ts +284 -0
- package/src/__tests__/shadow-csm-extract.test.ts +236 -0
- package/src/__tests__/shadow-csm-orthoz.test.ts +137 -0
- package/src/__tests__/shadow-csm-runtime-vary.dawn.test.ts +203 -0
- package/src/__tests__/shadow-csm-shader.dawn.test.ts +358 -0
- package/src/__tests__/shadow-csm-tile-consistency.test.ts +425 -0
- package/src/__tests__/shadow-csm-ubo.dawn.test.ts +252 -0
- package/src/__tests__/shadow-csm-ubo.test.ts +278 -0
- package/src/__tests__/shadow-csm-viewport.browser.test.ts +85 -0
- package/src/__tests__/shadow-fields-observable.dawn.test.ts +626 -0
- package/src/__tests__/shadow-m1.dawn.test.ts +104 -0
- package/src/__tests__/shadow-mesh-ssbo-order.test.ts +48 -0
- package/src/__tests__/skin-error-exhaustive.test-d.ts +74 -0
- package/src/__tests__/skin-errors.unit.test.ts +10 -0
- package/src/__tests__/skin-extract-getarrayview-count.unit.test.ts +25 -0
- package/src/__tests__/skin-parented-double-transform.test.ts +268 -0
- package/src/__tests__/skylight-lazy-projection.test.ts +380 -0
- package/src/__tests__/sparse-tag-scene-roundtrip.test.ts +43 -0
- package/src/__tests__/sprite-cullmode-flip.dawn.test.ts +453 -0
- package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +142 -0
- package/src/__tests__/sprite-lit-extract-branch.test.ts +117 -0
- package/src/__tests__/sprite-lit-pipeline-cache-key.test.ts +123 -0
- package/src/__tests__/sprite-param-values.test-d.ts +104 -0
- package/src/__tests__/ssao-bgl.test.ts +354 -0
- package/src/__tests__/ssao-buffers.test.ts +211 -0
- package/src/__tests__/ssao-data.test.ts +121 -0
- package/src/__tests__/ssao-errors.test.ts +162 -0
- package/src/__tests__/ssao-manifest.test.ts +109 -0
- package/src/__tests__/ssao-passes.test.ts +905 -0
- package/src/__tests__/ssao-pipelines.test.ts +275 -0
- package/src/__tests__/ssao-uniform-layout.test.ts +180 -0
- package/src/__tests__/static-rig.integration.test.ts +9 -0
- package/src/__tests__/stencil-outline-pixel.dawn.test.ts +303 -0
- package/src/__tests__/swap-chain-format.unit.test.ts +115 -0
- package/src/__tests__/systems.unit.test.ts +9167 -0
- package/src/__tests__/template-game-default-api-contract.test.ts +362 -0
- package/src/__tests__/text.unit.test.ts +489 -0
- package/src/__tests__/tilemap-childed-despawn.test.ts +462 -0
- package/src/__tests__/tilemap-chunk-extract.overhang-bounds.test.ts +310 -0
- package/src/__tests__/tilemap-chunk-extract.propagate-order.test.ts +81 -0
- package/src/__tests__/tilemap-chunk-extract.terrain-rewrite.unit.test.ts +424 -0
- package/src/__tests__/tilemap-chunk-extract.test.ts +232 -0
- package/src/__tests__/tilemap-chunk-extract.unit.test.ts +383 -0
- package/src/__tests__/tilemap-chunk-y-sort-bench.unit.test.ts +109 -0
- package/src/__tests__/tilemap-dirty-rebuild.test.ts +296 -0
- package/src/__tests__/tilemap-material-cache.test.ts +132 -0
- package/src/__tests__/tilemap-multi-atlas.test.ts +217 -0
- package/src/__tests__/tilemap-owner-boundary.unit.test.ts +66 -0
- package/src/__tests__/tilemap-region-pack.test.ts +149 -0
- package/src/__tests__/tilemap-spawn-flip-pivot.test.ts +270 -0
- package/src/__tests__/tilemap-uv-inset.test.ts +201 -0
- package/src/__tests__/tilemap-validate.test.ts +201 -0
- package/src/__tests__/tileset-asset-validate.test.ts +638 -0
- package/src/__tests__/transcode-fallback.unit.test.ts +207 -0
- package/src/__tests__/transform-hierarchy-pixel-diff.dawn.test.ts +282 -0
- package/src/__tests__/transient-fields-collect.test.ts +210 -0
- package/src/__tests__/transient-runtime-behavior.test.ts +227 -0
- package/src/__tests__/transitional-authoring.integration.test.ts +7 -0
- package/src/__tests__/transparent-sort-tilemap-sprite-interleave.test.ts +227 -0
- package/src/__tests__/variant-selection.unit.test.ts +21 -0
- package/src/__tests__/vertex-attribute-layout.test.ts +324 -0
- package/src/__tests__/video-extract-bindgroup.dawn.test.ts +403 -0
- package/src/__tests__/video-loader-consumption.test.ts +86 -0
- package/src/__tests__/video-loader-smoke.dawn.test.ts +60 -0
- package/src/__tests__/view-ubo-layout.browser.test.ts +161 -0
- package/src/__tests__/world-entity-key.test.ts +92 -0
- package/src/__tests__/world-scene-despawn.test.ts +132 -0
- package/src/__tests__/world-scene-instantiate.test.ts +194 -0
- package/src/__tests__/world-scene-nested.test.ts +230 -0
- package/src/__tests__/world-scene-override.test.ts +199 -0
- package/src/__tests__/zero-compression-zero-load.integration.test.ts +107 -0
- package/src/asset-contributions.ts +48 -0
- package/src/backend-selection.ts +69 -0
- package/src/collect-scene-asset.ts +701 -0
- package/src/components/__tests__/camera.test-d.ts +57 -0
- package/src/components/__tests__/camera.test.ts +95 -0
- package/src/components/__tests__/child-of.test.ts +35 -0
- package/src/components/__tests__/sprite-animation.test-d.ts +160 -0
- package/src/components/__tests__/sprite-instances.unit.test.ts +108 -0
- package/src/components/__tests__/sprite-region-override.test-d.ts +101 -0
- package/src/components/__tests__/tile-layer.test-d.ts +33 -0
- package/src/components/__tests__/tile-layer.unit.test.ts +125 -0
- package/src/components/__tests__/tilemap.test-d.ts +35 -0
- package/src/components/__tests__/transform-vec-schema.test.ts +121 -0
- package/src/create-renderer-env-classify.ts +110 -0
- package/src/createRenderer.ts +49 -0
- package/src/dev-import-transport.ts +97 -0
- package/src/errors/environment.ts +6 -0
- package/src/index.ts +380 -0
- package/src/renderer-host.ts +33 -0
- package/src/scene-instances/__tests__/post-spawn-resolve-joints.unit.test.ts +183 -0
- package/src/scene-instances/index.ts +4 -0
- package/src/scene-utils/mount-override-fold.ts +213 -0
- package/src/sprite-param-values.ts +61 -0
- package/src/systems/__tests__/_xorshift.ts +83 -0
- package/src/systems/__tests__/argsort-in-place.test.ts +155 -0
- package/src/systems/__tests__/transparent-sort.bench.ts +218 -0
- package/src/systems/sprite-animation-tick.ts +302 -0
- package/src/systems/tonemap.ts +68 -0
- package/src/systems/transparent-sort.ts +434 -0
- package/src/tilemap-register-validate.ts +100 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
// @forgeax/engine-runtime — public API surface (M3).
|
|
2
|
+
//
|
|
3
|
+
// Surface (K-4):
|
|
4
|
+
// - createRenderer(canvas, options?) — async Result factory; uses WebGPU
|
|
5
|
+
// exclusively and returns EngineEnvironmentError or RenderError on failure.
|
|
6
|
+
// - Renderer / RendererOptions / RendererLostInfo /
|
|
7
|
+
// RendererLostListener — types for callers.
|
|
8
|
+
// - EngineEnvironmentError — returned when no backend is usable.
|
|
9
|
+
//
|
|
10
|
+
// What is **NOT** here, by design (acceptance grep checks negative existence):
|
|
11
|
+
// - any internal backend module — locked by `package.json#exports`
|
|
12
|
+
// entry `"./internal/*": null`.
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* `acquireCanvasContext` facade re-export (M3 D-P3 / w15).
|
|
16
|
+
*
|
|
17
|
+
* Single-entry SSOT for vite apps: instead of importing rhi-webgpu directly,
|
|
18
|
+
* AI users wire canvas through engine-runtime's public surface (charter
|
|
19
|
+
* proposition 5 consistent abstraction — apps see one entry; pipeline
|
|
20
|
+
* isolation — apps depend on engine-runtime, not on the rhi backend choice).
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* import { acquireCanvasContext } from '@forgeax/engine-runtime';
|
|
24
|
+
* const ctxResult = acquireCanvasContext(canvas);
|
|
25
|
+
*/
|
|
26
|
+
export { acquireCanvasContext } from '@forgeax/engine-rhi-webgpu';
|
|
27
|
+
export { defaultAssetDecoderContributions } from './asset-contributions';
|
|
28
|
+
export { createRenderer } from './createRenderer';
|
|
29
|
+
|
|
30
|
+
// feat-20260704-runtime-tier1-decomposition M2 / w10 (D-3 / D-9): the top-level
|
|
31
|
+
// RuntimeError / RuntimeErrorCode cross-cluster aggregates are ELIMINATED. Each
|
|
32
|
+
// error cluster's closed *ErrorCode + *Error union is re-exported so external
|
|
33
|
+
// consumers `import type` the cluster union and write exhaustive `switch
|
|
34
|
+
// (err.code)` (AC-07 a/b). Every re-export sources directly from
|
|
35
|
+
// ./errors/<cluster> (NOT the transitional errors.ts barrel, deleted in w15;
|
|
36
|
+
// NOT the @forgeax/engine-types zombie RuntimeErrorCode -- D-9).
|
|
37
|
+
|
|
38
|
+
// feat-20260705-runtime-tier2-decomposition M1 / w14: the asset cluster error
|
|
39
|
+
// re-exports (AssetRuntimeError / *Detail types + MaterialResolvedEmptyPasses /
|
|
40
|
+
// SceneCollect* classes) moved to @forgeax/engine-assets-runtime. Consumers
|
|
41
|
+
// import them from that package directly (AC-105: runtime barrel exports zero
|
|
42
|
+
// asset-cluster symbols).
|
|
43
|
+
// -- environment cluster --
|
|
44
|
+
export { EngineEnvironmentError } from './errors/environment';
|
|
45
|
+
// -- recover cluster --
|
|
46
|
+
// -- render cluster --
|
|
47
|
+
// -- skin cluster --
|
|
48
|
+
|
|
49
|
+
// ─── ECS render bridge (feat-20260509-ecs-render-bridge-mvp) ────────────────
|
|
50
|
+
//
|
|
51
|
+
// Single-import surface for the 5-component schema set + builtin asset handles
|
|
52
|
+
// (charter proposition 1 progressive disclosure + plan-strategy 7.4
|
|
53
|
+
// discoverability "AI users see 8 core symbols in one read").
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* RHI error-model surface (feat-20260511-tetris-retro-followups verify minor-edit).
|
|
57
|
+
*
|
|
58
|
+
* Re-export the closed `RhiError` / `RhiErrorCode` union + detail interfaces so
|
|
59
|
+
* AI users wiring a `'limit-exceeded'` / `'asset-not-registered'` /
|
|
60
|
+
* `'webgpu-runtime-error'` listener only import from `@forgeax/engine-runtime`
|
|
61
|
+
* (charter proposition 1 progressive disclosure + proposition 5 consistent
|
|
62
|
+
* abstraction; plan-strategy §7.1 decision 1 single-entry SSOT — IDE
|
|
63
|
+
* autocomplete on `@forgeax/engine-runtime` already covers the full
|
|
64
|
+
* observable surface, including the failure path). The error-model SSOT
|
|
65
|
+
* still lives in `packages/rhi/src/errors.ts` — this is a thin re-export, no
|
|
66
|
+
* new types or renames.
|
|
67
|
+
*
|
|
68
|
+
* `LimitExceededDetail` carries `{ maxStorageBufferBindingSize,
|
|
69
|
+
* requestedBytes }` (feat-20260513-instanced-mesh M5 D-3 evolution
|
|
70
|
+
* major reshape from the legacy `{ renderableCount, limit }` shape).
|
|
71
|
+
* Read both fields directly through typed property access after the
|
|
72
|
+
* `code === 'limit-exceeded'` discriminant narrows `err.detail`.
|
|
73
|
+
*
|
|
74
|
+
* The `Renderer.subscribe` channel projects renderer-owned failures through
|
|
75
|
+
* one `RendererEvent` union. The public operation error is always `RenderError`;
|
|
76
|
+
* lower-layer causes remain structured in its detail instead of creating a
|
|
77
|
+
* second listener/error authority.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* import {
|
|
81
|
+
* RhiError, type RhiErrorCode, type LimitExceededDetail,
|
|
82
|
+
* } from '@forgeax/engine-runtime';
|
|
83
|
+
* import { type RenderError } from '@forgeax/engine-render';
|
|
84
|
+
* renderer.subscribe((event) => {
|
|
85
|
+
* if (event.kind !== 'error') return;
|
|
86
|
+
* const e: RenderError = event.error;
|
|
87
|
+
* switch (e.code) {
|
|
88
|
+
* case 'limit-exceeded': {
|
|
89
|
+
* const detail = e.detail as LimitExceededDetail;
|
|
90
|
+
* // detail.maxStorageBufferBindingSize vs detail.requestedBytes
|
|
91
|
+
* break;
|
|
92
|
+
* }
|
|
93
|
+
* case 'equirect-projection-failed': {
|
|
94
|
+
* // renderer error arm — e narrows to EquirectProjectionFailedError
|
|
95
|
+
* const detail: EquirectProjectionFailedDetail = e.detail;
|
|
96
|
+
* // detail.handle — the equirect handle whose projection failed
|
|
97
|
+
* break;
|
|
98
|
+
* }
|
|
99
|
+
* }
|
|
100
|
+
* });
|
|
101
|
+
*/
|
|
102
|
+
export {
|
|
103
|
+
type LimitExceededDetail,
|
|
104
|
+
type RhiAssetNotRegisteredDetail,
|
|
105
|
+
RhiError,
|
|
106
|
+
type RhiErrorCode,
|
|
107
|
+
type RhiErrorDetail,
|
|
108
|
+
type RhiShaderCompileDetail,
|
|
109
|
+
type RhiWebgpuRuntimeDetail,
|
|
110
|
+
} from '@forgeax/engine-rhi';
|
|
111
|
+
/**
|
|
112
|
+
* Asset system SSOT re-exports (feat-20260511-asset-system-v1 / w30 / D-P7 +
|
|
113
|
+
* plan-strategy §7.4 discoverability dual-entry).
|
|
114
|
+
*
|
|
115
|
+
* The error-model SSOT lives in `@forgeax/engine-types` (closed `AssetErrorCode`
|
|
116
|
+
* 4-member union + `AssetError` class + `ASSET_ERROR_HINTS` per-code hint table);
|
|
117
|
+
* this barrel is a thin re-export so AI users can write a single-line import —
|
|
118
|
+
*
|
|
119
|
+
* import type { Asset } from '@forgeax/engine-assets-runtime';
|
|
120
|
+
* import type { Handle } from '@forgeax/engine-types';
|
|
121
|
+
* import { AssetError } from '@forgeax/engine-runtime';
|
|
122
|
+
*
|
|
123
|
+
* — and let IDE autocomplete on `@forgeax/engine-runtime` cover the full asset
|
|
124
|
+
* surface (charter proposition 1 progressive disclosure). `@forgeax/engine-types`
|
|
125
|
+
* remains a valid import entry for AI users that want the bare SSOT layer.
|
|
126
|
+
*/
|
|
127
|
+
export {
|
|
128
|
+
AssetError,
|
|
129
|
+
type AssetErrorCode,
|
|
130
|
+
type Handle,
|
|
131
|
+
MATERIAL_PARAM_TYPES,
|
|
132
|
+
type MaterialAsset,
|
|
133
|
+
type MaterialPass,
|
|
134
|
+
type ParamSchemaEntry,
|
|
135
|
+
type RenderQueue,
|
|
136
|
+
type SamplerAsset,
|
|
137
|
+
type TextureAsset,
|
|
138
|
+
type VertexAttributeMap,
|
|
139
|
+
} from '@forgeax/engine-types';
|
|
140
|
+
// feat-20260705-runtime-tier2-decomposition M1 / w14: Asset / MeshAsset types
|
|
141
|
+
// moved to @forgeax/engine-assets-runtime (AC-105).
|
|
142
|
+
// feat-20260705-runtime-tier2-decomposition M1 / w14: AssetRegistry + the
|
|
143
|
+
// HANDLE_* builtin mesh handles moved to @forgeax/engine-assets-runtime (AC-105).
|
|
144
|
+
// feat-20260705-runtime-tier2-decomposition M1 / w14: the process-static
|
|
145
|
+
// BuiltinAssetRegistry tier (BUILTIN_* payloads) moved to
|
|
146
|
+
// @forgeax/engine-assets-runtime (AC-105). Geometry owns the shared runtime
|
|
147
|
+
// vertex layout.
|
|
148
|
+
// Runtime-specific authoring components remain here. Domain authorities are
|
|
149
|
+
// imported directly from @forgeax/engine-scene, @forgeax/engine-animation,
|
|
150
|
+
// @forgeax/engine-skinning, and @forgeax/engine-render.
|
|
151
|
+
/**
|
|
152
|
+
* GlyphText authoring component for world-space MSDF text
|
|
153
|
+
* (feat-20260531-world-space-msdf-text-rendering M4 / w14). Carries
|
|
154
|
+
* `fontHandle` / `text` / `fontSize` / `color: array<f32, 4>`; the
|
|
155
|
+
* `glyphTextLayoutSystem` (this package) bakes a MeshAsset and attaches
|
|
156
|
+
* MeshFilter + MeshRenderer (plan-strategy D-2; GlyphText is pure authoring
|
|
157
|
+
* data, baking is a system responsibility). Co-located with its consuming
|
|
158
|
+
* system in `@forgeax/engine-runtime` so AI users import the component and
|
|
159
|
+
* the system from one package.
|
|
160
|
+
*/
|
|
161
|
+
/**
|
|
162
|
+
* feat-20260625-sprite-instances-and-tilemap-terrain-static-batch M1 / w4 —
|
|
163
|
+
* SpriteInstances primitive: 2D peer of `Instances`. Carries per-instance
|
|
164
|
+
* mat4 (stride 16) + per-instance UV region (stride 4). Exported directly
|
|
165
|
+
* from the @forgeax/engine-runtime barrel so AI users discover both
|
|
166
|
+
* primitives side-by-side via IDE autocomplete on `@forgeax/engine-runtime`.
|
|
167
|
+
* Per plan-strategy D-8, the barrel re-export lives here (runtime top-level),
|
|
168
|
+
* not in `@forgeax/engine-ecs` — the ecs package stays unaware of the sprite
|
|
169
|
+
* shading model concept.
|
|
170
|
+
*/
|
|
171
|
+
// feat-20260604-hdr-equirect-cube-importer-loader M4 / w15: the dev-only
|
|
172
|
+
// ImportTransport factory. A host wires it into createRenderer / createApp so
|
|
173
|
+
// a DDC miss at runtime triggers an on-demand POST /__import import against the
|
|
174
|
+
// vite-plugin-pack dev server. Aligned with the create*/wire* factory family.
|
|
175
|
+
export { createDevImportTransport } from './dev-import-transport';
|
|
176
|
+
// feat-20260705-runtime-tier2-decomposition M3 / w31: glyph-layout +
|
|
177
|
+
// glyph-mesh-bake (FONT_CONCURRENCY_LIMIT /
|
|
178
|
+
// GlyphLayoutResult / layoutGlyphText / resetFontConcurrency /
|
|
179
|
+
// trackFontConcurrency / VERTEX_OFFSET / bakeGlyphMesh / buildGlyphMeshAsset /
|
|
180
|
+
// conservativeCubeAabb / GlyphMeshBakeResult) moved to
|
|
181
|
+
// @forgeax/engine-graphics-extras (AC-303). Zero shim -- import from that
|
|
182
|
+
// package. glyphTextLayoutSystem stays here (system entry, S12).
|
|
183
|
+
/**
|
|
184
|
+
* glyphTextLayoutSystem (feat-20260531-world-space-msdf-text-rendering) -- lays
|
|
185
|
+
* out + bakes every `GlyphText` entity, attaching MeshFilter + MeshRenderer on
|
|
186
|
+
* first observation and re-baking in place on a text / size / color change.
|
|
187
|
+
* `createApp` attaches the World and owns the returned render lease before
|
|
188
|
+
* the first frame; `Renderer.draw` consumes only that lease-bound request.
|
|
189
|
+
*/
|
|
190
|
+
/**
|
|
191
|
+
* GpuBuffer / GpuTexture runtime wrappers + GpuResource union
|
|
192
|
+
* (feat-20260612-rhi-destroy-renderer-dispose-gpu-lifecycle / M2).
|
|
193
|
+
*
|
|
194
|
+
* AI-user-facing handles for explicit GPU lifecycle:
|
|
195
|
+
* - `new GpuBuffer(device, handle).destroy()`
|
|
196
|
+
* - `new GpuTexture(device, handle).destroy()`
|
|
197
|
+
* - `type GpuResource = GpuBuffer | GpuTexture` for "dispose any
|
|
198
|
+
* GPU resource" call sites (charter §F1 single-entry).
|
|
199
|
+
*
|
|
200
|
+
* Forwarding shape (D-7 SSOT): the wrapper forwards to
|
|
201
|
+
* `device.destroyBuffer / destroyTexture`; the destroyed: boolean
|
|
202
|
+
* bookkeeping lives once on the RHI shim. Second `.destroy()` returns
|
|
203
|
+
* `Result.err({ code: 'destroy-after-destroy' })`.
|
|
204
|
+
*/
|
|
205
|
+
/**
|
|
206
|
+
*/
|
|
207
|
+
// feat-20260705-runtime-tier2-decomposition M1 / w14: the loader-injection
|
|
208
|
+
// surface (LoaderRegistry / wireDefaultLoaders / createDefaultLoaderRegistry)
|
|
209
|
+
// moved to @forgeax/engine-assets-runtime (AC-105).
|
|
210
|
+
// feat-20260705-runtime-tier2-decomposition M2 / w25: the picking cluster
|
|
211
|
+
// (pick / pickVertex / pickVertexOnEntity / pickTile + PickHit / VertexHit /
|
|
212
|
+
// PickError / PickErrorCode / PickTileError / PickTileHit) moved to
|
|
213
|
+
// @forgeax/engine-picking (AC-204). Zero shim -- import from that package.
|
|
214
|
+
/**
|
|
215
|
+
* RenderSystem (D-S2 — feat-20260509-ecs-render-bridge-mvp).
|
|
216
|
+
*
|
|
217
|
+
* Engine-internal phase that walks the World query graph (Extract /
|
|
218
|
+
* Prepare / Record three stages). RenderSystem is **not** registered to
|
|
219
|
+
* the ECS schedule (AC-09); `Renderer.draw(worlds, options)` invokes it once per
|
|
220
|
+
* frame.
|
|
221
|
+
*
|
|
222
|
+
* AI users see this re-export so the F-1 single-import contract holds:
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* import {
|
|
226
|
+
* Camera, DirectionalLight, MeshFilter, MeshRenderer,
|
|
227
|
+
* } from '@forgeax/engine-render';
|
|
228
|
+
* import { Transform } from '@forgeax/engine-scene';
|
|
229
|
+
* import { AssetRegistry, HANDLE_CUBE, HANDLE_TRIANGLE } from '@forgeax/engine-assets-runtime';
|
|
230
|
+
*/
|
|
231
|
+
// feat-20260705-runtime-tier2-decomposition M1 / w14: resolveAssetHandle moved
|
|
232
|
+
// to @forgeax/engine-assets-runtime (AC-105).
|
|
233
|
+
export type { SpriteParamValues } from './sprite-param-values';
|
|
234
|
+
// feat-20260630-viewport-2x2-run-x-display-redesign M2 / w12 / plan-strategy D-2:
|
|
235
|
+
// engine-neutral by-entity-id active camera selection (no editor concept).
|
|
236
|
+
/**
|
|
237
|
+
* Transparent-bucket sort configuration (feat-20260520-2d-sprite-layer-mvp
|
|
238
|
+
* M-2 w14). The POD interface + 3 named mode constants + `get/set`
|
|
239
|
+
* helpers form the entire AI-user-visible surface for transparent sort
|
|
240
|
+
* mode selection — see `transparent-sort-config.ts` JSDoc head for the
|
|
241
|
+
* 5-view selection table (horizontal / top-down / Don't-Starve /
|
|
242
|
+
* isometric / JRPG).
|
|
243
|
+
*
|
|
244
|
+
* `setTransparentSortConfig` returns
|
|
245
|
+
* `Result<void, ResourceInvalidValueError>`; AI users self-repair by
|
|
246
|
+
* reading `.code / .expected / .hint / .detail` property access on the
|
|
247
|
+
* err branch (charter P3 structured failure SSOT).
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* import {
|
|
251
|
+
* TRANSPARENT_SORT_CONFIG_KEY,
|
|
252
|
+
* TRANSPARENT_SORT_MODE_LAYER_Y,
|
|
253
|
+
* setTransparentSortConfig,
|
|
254
|
+
* } from '@forgeax/engine-render/authoring';
|
|
255
|
+
* const r = setTransparentSortConfig(world,
|
|
256
|
+
* { mode: TRANSPARENT_SORT_MODE_LAYER_Y, yzAlpha: 1.0 });
|
|
257
|
+
*/
|
|
258
|
+
/**
|
|
259
|
+
* Sprite-animation tick system (feat-20260521-sprite-atlas-animation M4 /
|
|
260
|
+
* T-24). Walks every entity carrying `SpriteAnimation`, advances the
|
|
261
|
+
* per-entity dt accumulator clock, and writes the current frame's UV
|
|
262
|
+
* slice into `SpriteRegionOverride`. Returns
|
|
263
|
+
* `Result<void, SpriteAnimationInvalidError>` so AI users self-repair
|
|
264
|
+
* via `.code / .expected / .hint / .detail` property access on the err
|
|
265
|
+
* branch (charter P3 structured failure SSOT).
|
|
266
|
+
*
|
|
267
|
+
* Wire into the `App` schedule between input/time and `RenderSystem.
|
|
268
|
+
* extract`; the M3 sprite-bucket extract branch reads the override
|
|
269
|
+
* column populated by this tick.
|
|
270
|
+
*
|
|
271
|
+
* @example
|
|
272
|
+
* import { spriteAnimationTickSystem } from '@forgeax/engine-runtime';
|
|
273
|
+
* const app = createApp({ canvas, schedule: { update: [
|
|
274
|
+
* spriteAnimationTickSystem,
|
|
275
|
+
* ] } });
|
|
276
|
+
*/
|
|
277
|
+
export { spriteAnimationTickSystem } from './systems/sprite-animation-tick';
|
|
278
|
+
// feat-20260705-runtime-tier2-decomposition M3 / w31: tile-bits (decodeTileBits
|
|
279
|
+
// / encodeTileBits) moved to @forgeax/engine-graphics-extras (AC-303). Zero shim
|
|
280
|
+
// -- import from that package. tilemapChunkExtractSystem stays here (system
|
|
281
|
+
// entry, S12).
|
|
282
|
+
// feat-20260608-tilemap-object-layer-rendering M0 baseline rebuild — chunk-extract system
|
|
283
|
+
// feat-20260705-runtime-tier2-decomposition M3 / w31: the video cluster
|
|
284
|
+
// (VIDEO_ELEMENT_PROVIDER_KEY / VideoElementProvider / videoLoader / VideoPlayer
|
|
285
|
+
// / probeVideoHighPerfUpload / VideoCapabilityDevice) moved to
|
|
286
|
+
// @forgeax/engine-graphics-extras (AC-303). Zero shim -- import from that
|
|
287
|
+
// package.
|
|
288
|
+
// feat-20260705-runtime-tier2-decomposition M1 / w14: createDefaultLoaderRegistry
|
|
289
|
+
// + wireDefaultLoaders moved to @forgeax/engine-assets-runtime. Consumers import
|
|
290
|
+
// them from that package directly (AC-105).
|
|
291
|
+
|
|
292
|
+
// ─── Math namespace re-export (M2 / w15) ────────────────────────────────
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* `quat` namespace re-export from `@forgeax/engine-math`.
|
|
296
|
+
*
|
|
297
|
+
* AI users write a single import from engine-runtime to get the full
|
|
298
|
+
* quaternion surface (16+ functions: create / fromEuler / multiply /
|
|
299
|
+
* slerp / eulerY / transformVec3 etc.) without cross-package math
|
|
300
|
+
* topology memory (charter P4 consistent abstraction).
|
|
301
|
+
*
|
|
302
|
+
* engine-math has zero Node-only dependencies per feat-20260524
|
|
303
|
+
* browser-safe-subexports -- this barrel re-export does not trigger
|
|
304
|
+
* the browser-safe gate.
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* ```ts
|
|
308
|
+
* import { quat } from '@forgeax/engine-runtime';
|
|
309
|
+
* const yaw = quat.eulerY(Math.PI / 4);
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
312
|
+
export { quat } from '@forgeax/engine-math';
|
|
313
|
+
|
|
314
|
+
// w8: Inspector contributor (registerRuntimeInspector + RegisterRuntimeInspectorResult)
|
|
315
|
+
// deleted — routing layer (Registry / sandbox) is removed; eval is the sole
|
|
316
|
+
// command channel.
|
|
317
|
+
|
|
318
|
+
// ─── Animation system wiring (M1 / T-19 - feat-20260523-skin-skeleton-animation) ──
|
|
319
|
+
|
|
320
|
+
// w8: registerRuntimeInspector export deleted alongside register-inspector.ts removal.
|
|
321
|
+
|
|
322
|
+
// feat-20260623-editor-openproject M2 w11+w12: SceneInstance→SceneAsset writeback
|
|
323
|
+
// chain (plan-strategy D-1: pure-data collection + pack serialization).
|
|
324
|
+
//
|
|
325
|
+
// feat-20260701-rootstosceneasset-forest-collect-schema-derived-ha M3:
|
|
326
|
+
// collectSceneAsset removed — replaced by rootsToSceneAsset (forest entry,
|
|
327
|
+
// schema-derived field dispatch, engine-self-contained GUID resolution).
|
|
328
|
+
// serializeSceneAssetToPack now uses schema-derived refs[] index (D-1/D-2).
|
|
329
|
+
export {
|
|
330
|
+
rootsToSceneAsset,
|
|
331
|
+
type SceneAssetGuidLookup,
|
|
332
|
+
serializeSceneAssetToPack,
|
|
333
|
+
} from './collect-scene-asset';
|
|
334
|
+
// feat-20260626 M6 / m6-4: debug-draw auto-attach glue is re-exported from the
|
|
335
|
+
// main barrel (was a separate tsup entry). The separate entry produced a SECOND
|
|
336
|
+
// module copy of the mutable `registeredDebugDraw` registry: createApp set it on
|
|
337
|
+
// the subpath copy, but the URP/HDRP pipelines (bundled into index) read their
|
|
338
|
+
// own always-null copy AND tsup dead-code-eliminated the flush body into a stub,
|
|
339
|
+
// so DebugDraw.flush() never ran in the browser build (debug overlay leaked +
|
|
340
|
+
// never rendered). One barrel entry => one module copy => one registry shared by
|
|
341
|
+
// createDebugDrawOnReady (the writer) and attachDebugOverlayPass (the reader).
|
|
342
|
+
// feat-20260704-runtime-tier1-decomposition M2 / w10 (D-3): the third error
|
|
343
|
+
// re-export block (HdrpCapsInsufficientError / HdrpIndexListOverflowError /
|
|
344
|
+
// HdrpLightBudgetExceededError) is folded into the render-cluster class
|
|
345
|
+
// re-export block above -- they are render-cluster members sourced from
|
|
346
|
+
// ./errors/render.
|
|
347
|
+
// feat-20260608-cluster-lighting M2 / w10 + verify F-1/F-2: HDRP cluster-forward
|
|
348
|
+
// pipeline exports — full barrel surface (4 error classes + 4 sizing constants
|
|
349
|
+
// + pipeline + grid validator).
|
|
350
|
+
// feat-20260615-pipeline-spec-ssot: PipelineSpec 4-axis SSOT public surface
|
|
351
|
+
// (charter F1 single-entry indexability + P2 schema-as-contract). All 6 pure
|
|
352
|
+
// derive functions + the closed PipelineSpecErrorCode union + getOrBuildPipeline
|
|
353
|
+
// entrypoint reachable through the engine-runtime barrel so AI users follow
|
|
354
|
+
// `import { ... } from '@forgeax/engine-runtime'` without spelunking subpaths.
|
|
355
|
+
// Implementation SSOT: packages/runtime/src/pipeline-spec.ts.
|
|
356
|
+
// Round-2 [F-3] feat-20260612-hdrp-ssao: PostProcessError surfaces SSAO
|
|
357
|
+
// failures (storageBuffer-unavailable / radius-non-positive / bias-negative)
|
|
358
|
+
// alongside the existing fullscreen post-process register / not-found /
|
|
359
|
+
// reads-not-found codes. AI users `switch (err.code)` over the closed
|
|
360
|
+
// 6-member union without `default`; .detail narrows per-code per charter P3.
|
|
361
|
+
// feat-20260604 M3 / w19: render-graph-primitives — low-level typed record helpers
|
|
362
|
+
// used by the Standard feature graph. Graph topology is declared by RenderFeaturePlan;
|
|
363
|
+
// recordSsao* and encodeFullscreenPass remain the executable RHI-facing leaves.
|
|
364
|
+
// feat-20260601-customizable-render-pipeline-seam-and-dogfood-rend M1.
|
|
365
|
+
/**
|
|
366
|
+
* Render surface. The renderer host assembles one Standard pipeline and
|
|
367
|
+
* accepts closed RenderFeature declarations at App construction. Pipelines,
|
|
368
|
+
* device handles, and asset registries remain owner-internal implementation
|
|
369
|
+
* details rather than renderer methods.
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* import type {
|
|
373
|
+
* RenderFeaturePlan,
|
|
374
|
+
* } from '@forgeax/engine-render';
|
|
375
|
+
*/
|
|
376
|
+
// RenderPipelineContext is barrel-exported for typed pass encode closures.
|
|
377
|
+
// feat-20260701-rootstosceneasset verify minor-edit (F2): collectSubtree is a
|
|
378
|
+
// reusable "BFS a subtree along Children" primitive (the forgeax-engine-ecs
|
|
379
|
+
// skill documents importing it from the barrel) — re-export so that claim holds.
|
|
380
|
+
// cache-bust-marker for feat-20260615-fbx-importer-via-sdk PR-CI run on bf1d383f / 05a331cd (post-rebase tsbuildinfo restore-keys staleness)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { AssetRegistry } from '@forgeax/engine-assets-runtime';
|
|
2
|
+
import type { RenderError, RendererOptions, RenderResult } from '@forgeax/engine-render';
|
|
3
|
+
import type {
|
|
4
|
+
BundlerOptions,
|
|
5
|
+
RendererHostAssembly,
|
|
6
|
+
} from '@forgeax/engine-render/internal/construct-renderer';
|
|
7
|
+
import { constructRendererHost } from '@forgeax/engine-render/internal/construct-renderer';
|
|
8
|
+
import { loadBackendPack } from './backend-selection';
|
|
9
|
+
|
|
10
|
+
export type {
|
|
11
|
+
BundlerOptions,
|
|
12
|
+
RendererHostAssembly,
|
|
13
|
+
} from '@forgeax/engine-render/internal/construct-renderer';
|
|
14
|
+
|
|
15
|
+
/** Assemble renderer plus asset services in the Runtime-owned backend host. */
|
|
16
|
+
export async function constructRuntimeRendererHost(
|
|
17
|
+
canvas: unknown,
|
|
18
|
+
options?: RendererOptions,
|
|
19
|
+
bundler?: BundlerOptions,
|
|
20
|
+
): Promise<RenderResult<RendererHostAssembly, RenderError>> {
|
|
21
|
+
const first = await loadBackendPack(options);
|
|
22
|
+
if (!first.ok) throw first.error;
|
|
23
|
+
const constructed = await constructRendererHost(canvas, options, bundler, first.value);
|
|
24
|
+
if (constructed.ok || options?.rhi !== undefined || typeof globalThis === 'undefined') {
|
|
25
|
+
return constructed;
|
|
26
|
+
}
|
|
27
|
+
const fallback = await loadBackendPack(options, true);
|
|
28
|
+
if (!fallback.ok) return constructed;
|
|
29
|
+
return constructRendererHost(canvas, options, bundler, fallback.value);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { loadRhiPack } from './backend-selection';
|
|
33
|
+
export type { AssetRegistry };
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// post-spawn-resolve-joints.unit.test.ts — tweak-20260611 M5 / D-7 (subtree-scope).
|
|
2
|
+
//
|
|
3
|
+
// Coverage:
|
|
4
|
+
// - single-instance resolver: existing behavior (joints wire correctly).
|
|
5
|
+
// - multi-instance resolver: three spawns of the same SceneAsset must each
|
|
6
|
+
// wire to their own subtree's joint entities (NOT entity ids of instance 0).
|
|
7
|
+
// - missing joint inside subtree: structured error 'skin-joint-path-unresolved'.
|
|
8
|
+
|
|
9
|
+
import { World } from '@forgeax/engine-ecs';
|
|
10
|
+
import { ChildOf, Name } from '@forgeax/engine-scene';
|
|
11
|
+
import { Skin } from '@forgeax/engine-skinning';
|
|
12
|
+
import type { SkinAsset } from '@forgeax/engine-types';
|
|
13
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
14
|
+
import { postSpawnResolveJoints } from '../../../../render/src/scene-instances/post-spawn-resolve-joints';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Build a 3-joint linear chain `Root -> Spine -> Hip` rooted at a fresh entity,
|
|
18
|
+
* with shared Name strings across spawns. Returns the spawnRoot + the three
|
|
19
|
+
* descendant entities for assertion. The Skin component is attached to the
|
|
20
|
+
* spawn root with a synthetic skeleton handle (the resolver's resolveSkinAsset
|
|
21
|
+
* is wired to return a fixed SkinAsset for any handle in this test).
|
|
22
|
+
*/
|
|
23
|
+
function spawnFoxLikeChain(world: World, skeletonHandle: number) {
|
|
24
|
+
const root = world.spawn({ component: Name, data: { value: 'Root' } }).unwrap();
|
|
25
|
+
const spine = world.spawn({ component: Name, data: { value: 'Spine' } }).unwrap();
|
|
26
|
+
const hip = world.spawn({ component: Name, data: { value: 'Hip' } }).unwrap();
|
|
27
|
+
|
|
28
|
+
// ChildOf is the writable edge; ECS materializes its Children target.
|
|
29
|
+
world.addComponent(spine, { component: ChildOf, data: { parent: root } }).unwrap();
|
|
30
|
+
world.addComponent(hip, { component: ChildOf, data: { parent: spine } }).unwrap();
|
|
31
|
+
|
|
32
|
+
// Skin lives on the root; resolver gets `skeleton` field as a number handle.
|
|
33
|
+
world
|
|
34
|
+
.addComponent(root, {
|
|
35
|
+
component: Skin,
|
|
36
|
+
// biome-ignore lint/suspicious/noExplicitAny: test fixture stamps a synthetic skeleton handle for resolver isolation; the resolver is mocked.
|
|
37
|
+
data: { skeleton: skeletonHandle as any, joints: new Uint32Array() },
|
|
38
|
+
})
|
|
39
|
+
.unwrap();
|
|
40
|
+
|
|
41
|
+
return { root, spine, hip };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
describe('postSpawnResolveJoints — single instance', () => {
|
|
45
|
+
it('wires Skin.joints[] to subtree entities for one spawn', () => {
|
|
46
|
+
const world = new World();
|
|
47
|
+
const skinAsset: SkinAsset = {
|
|
48
|
+
kind: 'skin',
|
|
49
|
+
skeletonGuid: '00000000-0000-0000-0000-000000000001',
|
|
50
|
+
jointPaths: ['Root', 'Spine', 'Hip'],
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const { root, spine, hip } = spawnFoxLikeChain(world, 1);
|
|
54
|
+
|
|
55
|
+
const result = postSpawnResolveJoints(world, { resolveSkinAsset: () => skinAsset }, root);
|
|
56
|
+
|
|
57
|
+
expect(result.ok).toBe(true);
|
|
58
|
+
const got = world.get(root, Skin);
|
|
59
|
+
expect(got.ok).toBe(true);
|
|
60
|
+
if (!got.ok) return;
|
|
61
|
+
const joints = Array.from(got.value.joints as ArrayLike<number>);
|
|
62
|
+
expect(joints).toEqual([root, spine, hip]);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe('postSpawnResolveJoints — multi instance (D-7 subtree-scope)', () => {
|
|
67
|
+
it('three spawns each wire to their own subtree entities — not instance-0', () => {
|
|
68
|
+
const world = new World();
|
|
69
|
+
const skinAsset: SkinAsset = {
|
|
70
|
+
kind: 'skin',
|
|
71
|
+
skeletonGuid: '00000000-0000-0000-0000-000000000001',
|
|
72
|
+
jointPaths: ['Root', 'Spine', 'Hip'],
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// Three independent spawns — same Name strings collide across instances.
|
|
76
|
+
const a = spawnFoxLikeChain(world, 1);
|
|
77
|
+
const b = spawnFoxLikeChain(world, 1);
|
|
78
|
+
const c = spawnFoxLikeChain(world, 1);
|
|
79
|
+
|
|
80
|
+
// Resolve each spawn independently.
|
|
81
|
+
expect(postSpawnResolveJoints(world, { resolveSkinAsset: () => skinAsset }, a.root).ok).toBe(
|
|
82
|
+
true,
|
|
83
|
+
);
|
|
84
|
+
expect(postSpawnResolveJoints(world, { resolveSkinAsset: () => skinAsset }, b.root).ok).toBe(
|
|
85
|
+
true,
|
|
86
|
+
);
|
|
87
|
+
expect(postSpawnResolveJoints(world, { resolveSkinAsset: () => skinAsset }, c.root).ok).toBe(
|
|
88
|
+
true,
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
const ja = Array.from(
|
|
92
|
+
(world.get(a.root, Skin) as { ok: true; value: { joints: ArrayLike<number> } }).value.joints,
|
|
93
|
+
);
|
|
94
|
+
const jb = Array.from(
|
|
95
|
+
(world.get(b.root, Skin) as { ok: true; value: { joints: ArrayLike<number> } }).value.joints,
|
|
96
|
+
);
|
|
97
|
+
const jc = Array.from(
|
|
98
|
+
(world.get(c.root, Skin) as { ok: true; value: { joints: ArrayLike<number> } }).value.joints,
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
// AC-09: the three spawns' joint entity arrays must be pairwise distinct.
|
|
102
|
+
expect(ja).toEqual([a.root, a.spine, a.hip]);
|
|
103
|
+
expect(jb).toEqual([b.root, b.spine, b.hip]);
|
|
104
|
+
expect(jc).toEqual([c.root, c.spine, c.hip]);
|
|
105
|
+
expect(ja).not.toEqual(jb);
|
|
106
|
+
expect(jb).not.toEqual(jc);
|
|
107
|
+
expect(ja).not.toEqual(jc);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('does not wire across spawn roots — instance 1 is untouched after instance 0 resolves', () => {
|
|
111
|
+
const world = new World();
|
|
112
|
+
const skinAsset: SkinAsset = {
|
|
113
|
+
kind: 'skin',
|
|
114
|
+
skeletonGuid: '00000000-0000-0000-0000-000000000001',
|
|
115
|
+
jointPaths: ['Root', 'Spine', 'Hip'],
|
|
116
|
+
};
|
|
117
|
+
const a = spawnFoxLikeChain(world, 1);
|
|
118
|
+
const b = spawnFoxLikeChain(world, 1);
|
|
119
|
+
|
|
120
|
+
// Resolve only a; b should remain joints=[] (resolver was not invoked for b).
|
|
121
|
+
postSpawnResolveJoints(world, { resolveSkinAsset: () => skinAsset }, a.root);
|
|
122
|
+
|
|
123
|
+
const jb = Array.from(
|
|
124
|
+
(world.get(b.root, Skin) as { ok: true; value: { joints: ArrayLike<number> } }).value.joints,
|
|
125
|
+
);
|
|
126
|
+
expect(jb).toEqual([]);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
describe('postSpawnResolveJoints — error path', () => {
|
|
131
|
+
it('returns skin-joint-path-unresolved when leaf name not present in subtree', () => {
|
|
132
|
+
const world = new World();
|
|
133
|
+
const skinAsset: SkinAsset = {
|
|
134
|
+
kind: 'skin',
|
|
135
|
+
skeletonGuid: '00000000-0000-0000-0000-000000000001',
|
|
136
|
+
// Each entry is a slash-separated path; leaf name is the last segment
|
|
137
|
+
// and the resolver matches on it. 'NoSuchBone' does not exist in the
|
|
138
|
+
// subtree we built, so the resolver fails on this path.
|
|
139
|
+
jointPaths: ['Root/Spine/NoSuchBone'],
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
const { root } = spawnFoxLikeChain(world, 1);
|
|
143
|
+
|
|
144
|
+
const result = postSpawnResolveJoints(world, { resolveSkinAsset: () => skinAsset }, root);
|
|
145
|
+
|
|
146
|
+
expect(result.ok).toBe(false);
|
|
147
|
+
if (result.ok) return;
|
|
148
|
+
expect(result.error.code).toBe('skin-joint-path-unresolved');
|
|
149
|
+
if (result.error.code !== 'skin-joint-path-unresolved') return;
|
|
150
|
+
expect(result.error.detail.path).toEqual(['Root', 'Spine', 'NoSuchBone']);
|
|
151
|
+
expect(result.error.detail.failedAtIndex).toBe(2);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it('warns on same-name sibling within a single subtree (D-6a still active)', () => {
|
|
155
|
+
const world = new World();
|
|
156
|
+
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => undefined);
|
|
157
|
+
|
|
158
|
+
// Two siblings both named 'Bone' under one root.
|
|
159
|
+
const root = world.spawn({ component: Name, data: { value: 'Root' } }).unwrap();
|
|
160
|
+
const bone1 = world.spawn({ component: Name, data: { value: 'Bone' } }).unwrap();
|
|
161
|
+
const bone2 = world.spawn({ component: Name, data: { value: 'Bone' } }).unwrap();
|
|
162
|
+
world.addComponent(bone1, { component: ChildOf, data: { parent: root } }).unwrap();
|
|
163
|
+
world.addComponent(bone2, { component: ChildOf, data: { parent: root } }).unwrap();
|
|
164
|
+
world
|
|
165
|
+
.addComponent(root, {
|
|
166
|
+
component: Skin,
|
|
167
|
+
// biome-ignore lint/suspicious/noExplicitAny: test fixture stamps a synthetic skeleton handle for resolver isolation; the resolver is mocked.
|
|
168
|
+
data: { skeleton: 1 as any, joints: new Uint32Array() },
|
|
169
|
+
})
|
|
170
|
+
.unwrap();
|
|
171
|
+
|
|
172
|
+
const skinAsset: SkinAsset = {
|
|
173
|
+
kind: 'skin',
|
|
174
|
+
skeletonGuid: '00000000-0000-0000-0000-000000000001',
|
|
175
|
+
jointPaths: ['Bone'],
|
|
176
|
+
};
|
|
177
|
+
postSpawnResolveJoints(world, { resolveSkinAsset: () => skinAsset }, root);
|
|
178
|
+
|
|
179
|
+
expect(warnSpy).toHaveBeenCalledTimes(1);
|
|
180
|
+
expect(warnSpy.mock.calls[0]?.[0]).toMatch(/same-name sibling.*Bone.*matches 2/);
|
|
181
|
+
warnSpy.mockRestore();
|
|
182
|
+
});
|
|
183
|
+
});
|