@fps-games/editor 0.2.0-beta.2 → 0.2.0-beta.3
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/dist/agent-bridge/capabilities/assets.js.map +1 -1
- package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
- package/dist/agent-bridge/capabilities/host-lifecycle.js.map +1 -1
- package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
- package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
- package/dist/agent-bridge/capabilities/selection.js.map +1 -1
- package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
- package/dist/agent-bridge/capabilities/transform.js.map +1 -1
- package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
- package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
- package/dist/agent-bridge/capability-sources.js.map +1 -1
- package/dist/agent-bridge/diagnostics.js.map +1 -1
- package/dist/agent-bridge/index.js.map +1 -1
- package/dist/agent-bridge/register.js.map +1 -1
- package/dist/agent-bridge/shared.js.map +1 -1
- package/dist/agent-bridge/source-types.js.map +1 -1
- package/dist/authoring-apply.js.map +1 -1
- package/dist/build-info.json +48 -48
- package/dist/editor-plugin-agent-capabilities.js.map +1 -1
- package/dist/editor-plugin-hierarchy-command.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/local-editor-lifecycle-operations.js.map +1 -1
- package/dist/local-editor-agent-actions.js.map +1 -1
- package/dist/local-editor-agent-bridge-transport.js.map +1 -1
- package/dist/local-editor-agent-bridge.js.map +1 -1
- package/dist/local-editor-agent-context.js.map +1 -1
- package/dist/local-editor-harness.d.ts +57 -1
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +129 -0
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/local-editor-marker-graph.js.map +1 -1
- package/dist/local-editor-performance-stats.js.map +1 -1
- package/dist/local-editor-plugin-inspector.js.map +1 -1
- package/dist/local-editor-plugin-panel.js.map +1 -1
- package/dist/local-editor-scene-render-scheduler.js.map +1 -1
- package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
- package/dist/local-editor-viewport-render-coordinator.js.map +1 -1
- package/dist/playable-babylon-facade.js.map +1 -1
- package/dist/playable-babylon-outline-inspector.js.map +1 -1
- package/dist/playable-babylon-outline-runtime.js.map +1 -1
- package/dist/playable-babylon-rendering.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +36 -0
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-product-local-editor.js.map +1 -1
- package/dist/playable-product-projection-preview.js.map +1 -1
- package/dist/playable-product-rendering.js.map +1 -1
- package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
- package/dist/playable-product-scene-capabilities.js +49 -2
- package/dist/playable-product-scene-capabilities.js.map +1 -1
- package/dist/playable-runtime-babylon.js.map +1 -1
- package/dist/playable-runtime.js.map +1 -1
- package/dist/playable-sdk-upgrade-doctor.js.map +1 -1
- package/dist/playable-sdk-vite.js.map +1 -1
- package/dist/playable-sdk.js.map +1 -1
- package/dist/playable-standard-project.js.map +1 -1
- package/dist/static-shadow-cpu-worker.js.map +1 -1
- package/dist/vite.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/environment-texture-controller.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/profile.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/lighting/directional-light-angles.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/apply.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/outlines/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/outlines/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/placement/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/placement/runtime-drop-position.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/profile.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/volume-stack.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/rendering/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/rendering/node-rendering.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-atlas.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-bake.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-options.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-rendering.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/edit-session.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/event-guard.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/infinite-grid-layer.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/infinite-grid.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/input-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/monitor.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/primitive-projection-instancing.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-camera-preview.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-measurement-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/tool-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-solver.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +5 -5
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-clipboard.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-rendering-actions.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-root-ownership.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-auto-scroll.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-plugin-panel.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-auto-scroll.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-preview.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-session.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-camera-debug-panel.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug-panel-shell.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-lighting-debug-panel.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/package.json +4 -4
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/authoring-source.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/document-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +6 -1
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-session.js +9 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/events.d.ts +1 -1
- package/node_modules/@fps-games/editor-core/dist/events.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/events.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/field-schema/index.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/field-schema/resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/field-schema/schema.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/field-schema/types.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/field-schema/validators.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/host-services.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/lifecycle.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/marker-graph.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/scene-view-input.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/selection-strategy.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/serialized-object.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/transform-command.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/transform-gizmo.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/transform-operation-policy.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/transform-operations.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
- package/node_modules/@fps-games/editor-core/package.json +6 -6
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +1 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/drop-cache.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.js +28 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/managed-facade.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.js +13 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +58 -23
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/identity.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/managed-runtime-instance.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/runtime-scene.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.js +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/transport.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.js +7 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/constants.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/drift.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/runtime-transform-patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/source.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/client.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/payload.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/response.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/adapter-dispatcher.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/payload.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/project-asset-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/readers.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/binding.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/fields.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/math.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/pan.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-format.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-state.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-storage.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-text.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/rig.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/save-patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/snapshot.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/commands/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/commands/transform.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/commands/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/core-contracts/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/camera-section.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-property.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/format.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/light-fields.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/light-sections.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/marker-section.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/object-assembly.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/readonly.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime-sections.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime-summary.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/safe-value.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/internal/local-harness.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/binding.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/fields.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/save-patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/snapshot.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/storage.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/text.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/math.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/profile.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/loading-overlay.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +18 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +60 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/timing.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/facade.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/game-objects.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/geometry.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/default-assets.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.js +28 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/duplicate.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/paths.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/preview.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/profile.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.js +26 -9
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +0 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/text.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts +8 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/json-field.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/rendering-alpha-index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/shadow-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/source-structure-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/structure.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/asset-manager.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal-scene-feature.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +3 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-asset-actions.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/draft.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/route.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +13 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/artifacts.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/companion-configs.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/validation.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/classification.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/identity.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/object-command-facade.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/property-patches.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/system-defaults.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/transform.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/shared/http.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/shared/json.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/host.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/report.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +6 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.d.ts +3 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.js +37 -8
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/path-write-coordinator.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts +4 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +14 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +5 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +3 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +2 -11
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +8 -7
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +84 -6
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +4 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +1 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +0 -33
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/package.json +9 -6
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/package.json +2 -2
- package/node_modules/@fps-games/editor-tooling/dist/contributions.js.map +1 -1
- package/node_modules/@fps-games/editor-tooling/dist/data-object.js.map +1 -1
- package/node_modules/@fps-games/editor-tooling/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-tooling/dist/migration.js.map +1 -1
- package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
- package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
- package/node_modules/@fps-games/editor-tooling/package.json +3 -3
- package/node_modules/@fps-games/playable-assets/dist/identity.js.map +1 -1
- package/node_modules/@fps-games/playable-assets/dist/index.d.ts +1 -0
- package/node_modules/@fps-games/playable-assets/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-assets/dist/index.js +1 -0
- package/node_modules/@fps-games/playable-assets/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-assets/dist/portable-path.d.ts +2 -0
- package/node_modules/@fps-games/playable-assets/dist/portable-path.d.ts.map +1 -0
- package/node_modules/@fps-games/playable-assets/dist/portable-path.js +25 -0
- package/node_modules/@fps-games/playable-assets/dist/portable-path.js.map +1 -0
- package/node_modules/@fps-games/playable-assets/package.json +1 -1
- package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-contracts/dist/marker-graph-validation.js.map +1 -1
- package/node_modules/@fps-games/playable-contracts/dist/marker-graph.js.map +1 -1
- package/node_modules/@fps-games/playable-contracts/package.json +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-authoring.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-types.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-values.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/rendering-profile.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/shadow-quality.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/shadow-runtime.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/shadow-settings.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/shadow-types.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/shadow-validation.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/value.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/package.json +2 -2
- package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/runtime-data.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/standard-plugins.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/tokens.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/types.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/package.json +12 -12
- package/node_modules/@fps-games/playable-runtime-data/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
- package/node_modules/@fps-games/playable-scene/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-scene/dist/transform-math.js.map +1 -1
- package/node_modules/@fps-games/playable-scene/package.json +2 -2
- package/node_modules/@fps-games/plugin-api/dist/index.js.map +1 -1
- package/node_modules/@fps-games/plugin-api/package.json +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/package.json +5 -5
- package/node_modules/@fps-games/plugin-host/dist/index.js.map +1 -1
- package/node_modules/@fps-games/plugin-host/package.json +2 -2
- package/node_modules/@fps-games/plugin-markers/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-markers/package.json +5 -5
- package/node_modules/@fps-games/plugin-materials/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-materials/package.json +5 -5
- package/node_modules/@fps-games/plugin-rendering/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
- package/node_modules/@fps-games/plugin-scene/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-scene/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadows/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
- package/package.json +27 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planar-shadow-system.js","sourceRoot":"","sources":["../../src/shadows/planar-shadow-system.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"planar-shadow-system.js","sourceRoot":"","sources":["../../src/shadows/planar-shadow-system.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from '@babylonjs/core/Engines/constants.js';\nimport { DirectionalLight } from '@babylonjs/core/Lights/directionalLight.js';\nimport { Color3, Color4 } from '@babylonjs/core/Maths/math.color.js';\nimport { Matrix, Vector3 } from '@babylonjs/core/Maths/math.vector.js';\nimport { Material } from '@babylonjs/core/Materials/material.js';\nimport { ShaderMaterial } from '@babylonjs/core/Materials/shaderMaterial.js';\nimport { StandardMaterial } from '@babylonjs/core/Materials/standardMaterial.js';\nimport { AbstractMesh } from '@babylonjs/core/Meshes/abstractMesh.js';\nimport { InstancedMesh } from '@babylonjs/core/Meshes/instancedMesh.js';\nimport { Mesh } from '@babylonjs/core/Meshes/mesh.js';\nimport { VertexData } from '@babylonjs/core/Meshes/mesh.vertexData.js';\nimport { TransformNode } from '@babylonjs/core/Meshes/transformNode.js';\nimport { VertexBuffer } from '@babylonjs/core/Buffers/buffer.js';\nimport type { Observer } from '@babylonjs/core/Misc/observable.js';\nimport type { Scene } from '@babylonjs/core/scene.js';\nimport type { BaseTexture } from '@babylonjs/core/Materials/Textures/baseTexture.js';\nimport {\n getPlanarShadowShaderAttributes,\n getPlanarShadowShaderSamplers,\n getPlanarShadowShaderUniforms,\n getPlanarShadowSkeletonDefines,\n PLANAR_SHADOW_SHADER_NAME,\n registerPlanarShadowShaders,\n} from './planar-shadow-shaders.js';\nimport {\n DEFAULT_PLANAR_SHADOW_OPTIONS,\n type PlanarShadowCasterDebugInfo,\n type PlanarShadowCasterInfo,\n type PlanarShadowOptions,\n type PlanarShadowProjectionStrategy,\n type PlanarShadowReceiverInfo,\n type PlanarShadowSystem,\n type ResolvedPlanarShadowOptions,\n} from './types.js';\n\nconst PLANAR_SHADOW_ALPHA_INDEX = 4;\nconst DEFAULT_SHADOW_DIRECTION = new Vector3(-0.3, -1, -0.2).normalize();\nconst STANDARD_ALPHA_LUMINANCE_WEIGHTS = new Vector3(0.3, 0.59, 0.11);\nconst PBR_ALPHA_LUMINANCE_WEIGHTS = new Vector3(0.2126, 0.7152, 0.0722);\n\ntype StencilStateLike = {\n enabled: boolean;\n func?: number;\n funcRef?: number;\n funcMask?: number;\n mask?: number;\n opStencilDepthPass?: number;\n opStencilFail?: number;\n opDepthFail?: number;\n};\n\ntype MaterialLike = {\n stencil?: StencilStateLike;\n};\n\ntype PlanarShadowMeshPair =\n | {\n mode: 'projected-mesh';\n source: Mesh | InstancedMesh;\n shadow: Mesh;\n alphaCutout: boolean;\n alphaCutoutChannels: Array<'alpha' | 'luminance' | 'red'>;\n alphaCutoutUvSets: Array<0 | 1 | 2 | 3 | 4 | 5>;\n alphaCutoutLevels: number[];\n alphaCutoutLuminanceWeights: Vector3[];\n }\n | {\n mode: 'flat-hull';\n source: Mesh | InstancedMesh;\n shadow: Mesh;\n alphaCutout: false;\n alphaCutoutChannels: [];\n alphaCutoutUvSets: [];\n alphaCutoutLevels: [];\n alphaCutoutLuminanceWeights: [];\n };\n\ntype PlanarShadowAlphaCutoutLayer = {\n texture: BaseTexture;\n channel: 'alpha' | 'luminance' | 'red';\n coordinatesIndex: 0 | 1 | 2 | 3 | 4 | 5;\n level: number;\n luminanceWeights: Vector3;\n};\n\ntype PlanarShadowAlphaCutout = {\n cutoff: number;\n layers: [PlanarShadowAlphaCutoutLayer, PlanarShadowAlphaCutoutLayer?];\n};\n\ntype PlanarShadowInstancingEligibility =\n | {\n eligible: true;\n batchKey: string;\n geometrySource: Mesh;\n alphaCutout: PlanarShadowAlphaCutout | null;\n alphaCutoutSignature: string;\n }\n | {\n eligible: false;\n reason: string;\n alphaCutout: PlanarShadowAlphaCutout | null;\n };\n\ntype PlanarShadowInstancedBatchEntry = {\n root: AbstractMesh;\n source: Mesh | InstancedMesh;\n geometrySource: Mesh;\n instanceIndex: number;\n batchKey: string;\n};\n\ntype PlanarShadowInstancedBatch = {\n key: string;\n shadow: Mesh;\n material: ShaderMaterial;\n geometrySource: Mesh;\n alphaCutout: PlanarShadowAlphaCutout | null;\n entries: PlanarShadowInstancedBatchEntry[];\n matrixData: Float32Array;\n visibilityData: Float32Array;\n buffersDirty: boolean;\n};\n\ntype PlanarShadowHullGeometry = {\n positions: number[];\n indices: number[];\n normals: number[];\n};\n\ntype PlanarShadowHullPoint = {\n x: number;\n y: number;\n point: Vector3;\n};\n\nexport function createPlanarShadowSystem(\n scene: Scene,\n directionalLight: DirectionalLight,\n options: Partial<PlanarShadowOptions> = {},\n): PlanarShadowSystem {\n return new BabylonPlanarShadowSystem(scene, directionalLight, options);\n}\n\nclass BabylonPlanarShadowSystem implements PlanarShadowSystem {\n private options: ResolvedPlanarShadowOptions;\n private baseMaterial: ShaderMaterial | null = null;\n private flatMaterial: StandardMaterial | null = null;\n private readonly materials = new Set<ShaderMaterial>();\n private readonly casters = new Map<AbstractMesh, PlanarShadowCasterInfo>();\n private readonly receivers = new Map<AbstractMesh, PlanarShadowReceiverInfo>();\n private readonly syncObservers = new Map<AbstractMesh, Observer<Scene>>();\n private readonly instancedBatches = new Map<string, PlanarShadowInstancedBatch>();\n private readonly instancedEntriesByRoot = new Map<AbstractMesh, PlanarShadowInstancedBatchEntry[]>();\n private renderObserver: Observer<Scene> | null = null;\n private instancedBatchSyncObserver: Observer<Scene> | null = null;\n private meshAddedObserver: Observer<AbstractMesh> | null = null;\n private initialized = false;\n private casterPatterns: string[] = [];\n private resolvedPlaneNormal = Vector3.Up();\n private resolvedPlaneHeight = 0;\n private patternNameCache: WeakMap<object, string[]> | null = null;\n\n constructor(\n private readonly scene: Scene,\n private readonly directionalLight: DirectionalLight,\n options: Partial<PlanarShadowOptions>,\n ) {\n this.options = resolvePlanarShadowOptions(options);\n this.casterPatterns = [...this.options.casters.includePatterns];\n }\n\n initialize(): void {\n if (this.initialized || !this.options.enabled) return;\n registerPlanarShadowShaders();\n if (this.options.stencil.enabled) this.setupStencil();\n this.baseMaterial = this.createShadowMaterial();\n this.materials.add(this.baseMaterial);\n this.renderObserver = this.scene.onBeforeRenderObservable.add(() => this.updateUniforms());\n this.instancedBatchSyncObserver = this.scene.onBeforeRenderObservable.add(() => this.syncInstancedBatches());\n this.initialized = true;\n this.refresh();\n }\n\n addCaster(mesh: AbstractMesh): boolean {\n const root = this.findCasterRoot(mesh);\n if (!this.initialized || this.casters.has(root)) return false;\n if (this.getInvalidShadowSourceReason(mesh)) return false;\n const shadow = this.createShadowForNode(root);\n if (!shadow) return false;\n this.casters.set(shadow.source, shadow);\n return true;\n }\n\n removeCaster(mesh: AbstractMesh): void {\n const root = this.findCasterRoot(mesh);\n this.disposeCaster(root);\n }\n\n addReceiver(mesh: AbstractMesh): void {\n this.registerReceiver(mesh, true);\n }\n\n private registerReceiver(mesh: AbstractMesh, manual: boolean): void {\n if (!this.options.stencil.enabled || this.hasDisabledReceiver(mesh)) return;\n const existing = this.receivers.get(mesh);\n if (existing) {\n existing.manual = existing.manual || manual;\n return;\n }\n const originalRenderingGroup = mesh instanceof Mesh ? mesh.renderingGroupId : 0;\n if (mesh instanceof Mesh) mesh.renderingGroupId = this.options.stencil.receiverRenderingGroup;\n const material = readMeshMaterial(mesh);\n if (material?.stencil) {\n const stencil = material.stencil;\n stencil.enabled = true;\n stencil.func = Constants.ALWAYS;\n stencil.funcRef = 1;\n stencil.funcMask = 0xff;\n stencil.mask = 0xff;\n stencil.opStencilDepthPass = Constants.REPLACE;\n stencil.opStencilFail = Constants.KEEP;\n stencil.opDepthFail = Constants.KEEP;\n }\n this.receivers.set(mesh, { mesh, originalRenderingGroup, material, manual });\n }\n\n removeReceiver(mesh: AbstractMesh): void {\n const info = this.receivers.get(mesh);\n if (!info) return;\n if (mesh instanceof Mesh) mesh.renderingGroupId = info.originalRenderingGroup;\n if (info.material?.stencil) info.material.stencil.enabled = false;\n this.receivers.delete(mesh);\n }\n\n enableCasterAutoDetection(patterns: string[]): void {\n this.options = {\n ...this.options,\n casters: {\n ...this.options.casters,\n autoDetectAll: false,\n includePatterns: [...patterns],\n },\n };\n this.casterPatterns = [...patterns];\n this.refresh();\n this.ensureMeshObserver();\n }\n\n enableAutoDetectionForAll(): void {\n this.options = {\n ...this.options,\n casters: {\n ...this.options.casters,\n autoDetectAll: true,\n },\n };\n this.casterPatterns = [];\n this.refresh();\n this.ensureMeshObserver();\n }\n\n refresh(): void {\n if (!this.initialized) return;\n const previousPatternNameCache = this.patternNameCache;\n this.patternNameCache = new WeakMap();\n try {\n this.pruneDisposedCasters();\n this.refreshReceivers();\n if (this.options.casters.autoDetectAll || this.casterPatterns.length > 0) {\n for (const mesh of this.scene.meshes) this.tryAutoAddCaster(mesh);\n }\n if (this.options.casters.autoDetectAll || this.casterPatterns.length > 0 || this.options.receivers.patterns.length > 0) {\n this.ensureMeshObserver();\n }\n } finally {\n this.patternNameCache = previousPatternNameCache;\n }\n }\n\n setOptions(options: Partial<PlanarShadowOptions>): void {\n const wasEnabled = this.options.enabled;\n const requiredUniqueMaterials = this.requiresPerShadowMaterial();\n const previousStrategy = this.options.projection.strategy;\n this.options = resolvePlanarShadowOptions(options, this.options);\n this.casterPatterns = [...this.options.casters.includePatterns];\n const requiresUniqueMaterials = this.requiresPerShadowMaterial();\n const strategyChanged = previousStrategy !== this.options.projection.strategy;\n if (!wasEnabled && this.options.enabled) this.initialize();\n else if (wasEnabled && !this.options.enabled) this.dispose();\n else {\n if (requiredUniqueMaterials !== requiresUniqueMaterials || strategyChanged) this.rebuildCasters();\n this.refresh();\n }\n }\n\n getOptions(): ResolvedPlanarShadowOptions {\n return cloneResolvedOptions(this.options);\n }\n\n getCasterCount(): number {\n return this.casters.size;\n }\n\n getReceiverCount(): number {\n return this.receivers.size;\n }\n\n getCasterDebugInfo(): PlanarShadowCasterDebugInfo[] {\n return [...this.casters.values()].map((info) => ({\n sourceName: info.source.name,\n sourceMeshNames: [...info.sourceMeshNames],\n sourceMeshUniqueIds: [...info.sourceMeshUniqueIds],\n shadowName: info.shadow.name,\n strategy: info.strategy,\n hasSkeleton: info.hasSkeleton,\n projectedMeshCount: info.projectedMeshCount,\n convexHullMeshCount: info.convexHullMeshCount,\n alphaCutoutMeshCount: info.alphaCutoutMeshCount,\n instancedCasterCount: info.instancedCasterCount,\n batchMeshCount: info.batchMeshCount,\n instancedBatchIds: [...info.instancedBatchIds],\n instancedBatchNames: [...info.instancedBatchNames],\n independentProjectedMeshCount: info.independentProjectedMeshCount,\n visibleInstanceCount: info.visibleInstanceCount,\n alphaCutoutChannels: [...info.alphaCutoutChannels],\n alphaCutoutUvSets: [...info.alphaCutoutUvSets],\n alphaCutoutLevels: [...info.alphaCutoutLevels],\n alphaCutoutLuminanceWeights: info.alphaCutoutLuminanceWeights.map((weights) => ({\n x: weights.x,\n y: weights.y,\n z: weights.z,\n })),\n fallbackReasons: [...info.fallbackReasons],\n instancingFallbackReasons: [...info.instancingFallbackReasons],\n }));\n }\n\n dispose(): void {\n if (this.renderObserver) {\n this.scene.onBeforeRenderObservable.remove(this.renderObserver);\n this.renderObserver = null;\n }\n if (this.instancedBatchSyncObserver) {\n this.scene.onBeforeRenderObservable.remove(this.instancedBatchSyncObserver);\n this.instancedBatchSyncObserver = null;\n }\n if (this.meshAddedObserver) {\n this.scene.onNewMeshAddedObservable.remove(this.meshAddedObserver);\n this.meshAddedObserver = null;\n }\n for (const [mesh, observer] of [...this.syncObservers]) {\n this.scene.onBeforeRenderObservable.remove(observer);\n this.syncObservers.delete(mesh);\n }\n for (const mesh of [...this.casters.keys()]) this.disposeCaster(mesh);\n for (const batch of [...this.instancedBatches.values()]) this.disposeInstancedBatch(batch);\n for (const mesh of [...this.receivers.keys()]) this.removeReceiver(mesh);\n for (const material of this.materials) material.dispose();\n this.materials.clear();\n this.baseMaterial = null;\n this.flatMaterial?.dispose();\n this.flatMaterial = null;\n this.initialized = false;\n }\n\n private setupStencil(): void {\n this.scene.getEngine().setStencilBuffer(true);\n this.scene.setRenderingAutoClearDepthStencil(this.options.stencil.receiverRenderingGroup, true, false, true);\n this.scene.setRenderingAutoClearDepthStencil(this.options.stencil.shadowRenderingGroup, false, false, false);\n }\n\n private createShadowMaterial(defines: string[] = [], alphaCutout: PlanarShadowAlphaCutout | null = null): ShaderMaterial {\n const materialDefines = alphaCutout\n ? [...defines, 'ALPHA_CUTOUT', ...(alphaCutout.layers[1] ? ['ALPHA_CUTOUT_SECONDARY'] : [])]\n : defines;\n const usesBoneTexture = materialDefines.includes('BONETEXTURE');\n const usesBones = materialDefines.includes('BONE');\n const material = new ShaderMaterial(\n `fps.planarShadow.${this.materials.size}`,\n this.scene,\n { vertex: PLANAR_SHADOW_SHADER_NAME, fragment: PLANAR_SHADOW_SHADER_NAME },\n {\n attributes: getPlanarShadowShaderAttributes(),\n uniforms: getPlanarShadowShaderUniforms(),\n samplers: getPlanarShadowShaderSamplers(),\n defines: materialDefines,\n },\n );\n material.backFaceCulling = false;\n material.disableDepthWrite = true;\n material.depthFunction = Constants.LEQUAL;\n material.needAlphaBlending = () => true;\n material.alphaMode = Constants.ALPHA_COMBINE;\n material.onBindObservable.add((mesh) => {\n if (mesh instanceof AbstractMesh) this.bindShadowProjectionUniforms(material, mesh);\n if (alphaCutout) {\n const primary = alphaCutout.layers[0];\n material.setTexture('shadowAlphaSampler', primary.texture);\n material.setFloat('u_shadowAlphaCutoff', alphaCutout.cutoff);\n bindPlanarShadowAlphaCutoutLayer(material, '', primary);\n const secondary = alphaCutout.layers[1];\n if (secondary) bindPlanarShadowAlphaCutoutLayer(material, '2', secondary);\n }\n });\n\n if (usesBones) {\n let lastBoundTexture: unknown = null;\n let lastTextureWidth = 0;\n material.onBindObservable.add((mesh) => {\n if (!mesh?.skeleton) return;\n const skeleton = mesh.skeleton;\n skeleton.prepare();\n if (usesBoneTexture) {\n const boneTexture = skeleton.getTransformMatrixTexture(mesh);\n if (!boneTexture) return;\n const textureWidth = boneTexture.getSize().width;\n if (boneTexture !== lastBoundTexture || textureWidth !== lastTextureWidth) {\n material.setTexture('boneSampler', boneTexture);\n material.setFloat('boneTextureWidth', textureWidth);\n lastBoundTexture = boneTexture;\n lastTextureWidth = textureWidth;\n }\n } else {\n const matrices = skeleton.getTransformMatrices(mesh);\n const effect = material.getEffect();\n if (matrices && effect) effect.setMatrices('mBones', matrices);\n }\n });\n }\n\n if (this.options.stencil.enabled && material.stencil) {\n const stencil = material.stencil;\n stencil.enabled = true;\n stencil.func = Constants.EQUAL;\n stencil.funcRef = 1;\n stencil.funcMask = 0xff;\n stencil.mask = 0xff;\n stencil.opStencilDepthPass = Constants.INCR;\n stencil.opStencilFail = Constants.KEEP;\n stencil.opDepthFail = Constants.KEEP;\n stencil.backFunc = stencil.func;\n stencil.backOpStencilDepthPass = stencil.opStencilDepthPass;\n stencil.backOpStencilFail = stencil.opStencilFail;\n stencil.backOpDepthFail = stencil.opDepthFail;\n }\n\n return material;\n }\n\n private getFlatShadowMaterial(): StandardMaterial {\n if (this.flatMaterial) return this.flatMaterial;\n const material = new StandardMaterial(`fps.planarShadow.flat`, this.scene);\n material.backFaceCulling = false;\n material.disableLighting = true;\n material.disableDepthWrite = true;\n material.diffuseColor = Color3.Black();\n material.emissiveColor = Color3.Black();\n material.alpha = clamp01(this.options.appearance.color.a);\n material.alphaMode = Constants.ALPHA_COMBINE;\n\n if (this.options.stencil.enabled && material.stencil) {\n const stencil = material.stencil;\n stencil.enabled = true;\n stencil.func = Constants.EQUAL;\n stencil.funcRef = 1;\n stencil.funcMask = 0xff;\n stencil.mask = 0xff;\n stencil.opStencilDepthPass = Constants.INCR;\n stencil.opStencilFail = Constants.KEEP;\n stencil.opDepthFail = Constants.KEEP;\n stencil.backFunc = stencil.func;\n stencil.backOpStencilDepthPass = stencil.opStencilDepthPass;\n stencil.backOpStencilFail = stencil.opStencilFail;\n stencil.backOpDepthFail = stencil.opDepthFail;\n }\n\n this.flatMaterial = material;\n return material;\n }\n\n private updateUniforms(): void {\n if (this.materials.size === 0) return;\n const planeNormal = new Vector3(\n this.options.plane.normal.x,\n this.options.plane.normal.y,\n this.options.plane.normal.z,\n ).normalize();\n const planeHeight = this.resolvePlaneHeight(planeNormal);\n this.resolvedPlaneNormal = planeNormal;\n this.resolvedPlaneHeight = planeHeight;\n const lightDir = this.resolveShadowDirection();\n const shadowColor = new Color4(\n clamp01(this.options.appearance.color.r),\n clamp01(this.options.appearance.color.g),\n clamp01(this.options.appearance.color.b),\n clamp01(this.options.appearance.color.a),\n );\n\n for (const material of this.materials) {\n material.setVector3('u_lightDir', lightDir);\n material.setVector3('u_planeNormal', planeNormal);\n material.setVector3('u_shadowCenter', new Vector3(0, planeHeight, 0));\n material.setFloat('u_planeHeight', planeHeight);\n material.setFloat('u_planeBias', this.options.plane.bias);\n material.setFloat('u_footprintScale', this.options.projection.footprintScale);\n material.setColor4('u_shadowColor', shadowColor);\n }\n\n if (this.flatMaterial) {\n const color = new Color3(shadowColor.r, shadowColor.g, shadowColor.b);\n this.flatMaterial.diffuseColor = color;\n this.flatMaterial.emissiveColor = color;\n this.flatMaterial.alpha = shadowColor.a;\n }\n }\n\n private bindShadowProjectionUniforms(material: ShaderMaterial, mesh: AbstractMesh): void {\n mesh.computeWorldMatrix(true);\n const center = mesh.getBoundingInfo()?.boundingBox.centerWorld.clone() ?? Vector3.Zero();\n const offset = Vector3.Dot(this.resolvedPlaneNormal, center) - this.resolvedPlaneHeight;\n const projectedCenter = center.subtract(this.resolvedPlaneNormal.scale(offset));\n material.setVector3('u_shadowCenter', projectedCenter);\n }\n\n private requiresPerShadowMaterial(): boolean {\n return Math.abs(this.options.projection.footprintScale - 1) > 1e-6;\n }\n\n private resolvePlaneHeight(planeNormal: Vector3): number {\n const fallbackHeight = this.options.plane.height;\n if (this.options.plane.heightMode !== 'receiver') return fallbackHeight;\n\n let totalHeight = 0;\n let receiverCount = 0;\n for (const mesh of this.receivers.keys()) {\n if (isDisposedNode(mesh)) continue;\n mesh.computeWorldMatrix(true);\n const vectorsWorld = mesh.getBoundingInfo()?.boundingBox?.vectorsWorld;\n if (!vectorsWorld || vectorsWorld.length === 0) continue;\n\n let receiverSurfaceHeight = -Infinity;\n for (const point of vectorsWorld) {\n const height = Vector3.Dot(planeNormal, point);\n if (Number.isFinite(height)) receiverSurfaceHeight = Math.max(receiverSurfaceHeight, height);\n }\n if (!Number.isFinite(receiverSurfaceHeight)) continue;\n totalHeight += receiverSurfaceHeight;\n receiverCount += 1;\n }\n\n return receiverCount > 0 ? totalHeight / receiverCount : fallbackHeight;\n }\n\n private resolveShadowDirection(): Vector3 {\n const direction = this.directionalLight.direction;\n if (direction?.lengthSquared?.() > 1e-6) return direction.clone().normalize();\n return DEFAULT_SHADOW_DIRECTION.clone();\n }\n\n private refreshReceivers(): void {\n if (!this.options.stencil.enabled) return;\n for (const [mesh, info] of [...this.receivers]) {\n if (info.manual) {\n if (this.hasDisabledReceiver(mesh) || this.matchesExcludePattern(mesh) || this.hasExcludedAncestor(mesh)) {\n this.removeReceiver(mesh);\n }\n continue;\n }\n if (!this.matchesReceiver(mesh)) this.removeReceiver(mesh);\n }\n for (const mesh of this.scene.meshes) {\n if (this.matchesReceiver(mesh)) this.registerReceiver(mesh, false);\n }\n }\n\n private pruneDisposedCasters(): void {\n for (const [root, info] of [...this.casters]) {\n if (isDisposedNode(root) || isDisposedNode(info.shadow)) {\n this.disposeCaster(root);\n }\n }\n }\n\n private disposeCaster(root: AbstractMesh): void {\n const info = this.casters.get(root);\n if (!info) return;\n const observer = this.syncObservers.get(root);\n if (observer) {\n this.scene.onBeforeRenderObservable.remove(observer);\n this.syncObservers.delete(root);\n }\n this.removeInstancedEntriesForRoot(root);\n if (info.independentProjectedMeshCount > 0 || info.convexHullMeshCount > 0) {\n for (const shadowMesh of info.shadow.getChildMeshes(false)) {\n if (\n shadowMesh instanceof Mesh\n && shadowMesh.material\n && shadowMesh.material !== this.baseMaterial\n && shadowMesh.material !== this.flatMaterial\n ) {\n this.materials.delete(shadowMesh.material as ShaderMaterial);\n shadowMesh.material.dispose();\n }\n }\n info.shadow.dispose();\n }\n this.casters.delete(root);\n }\n\n private removeInstancedEntriesForRoot(root: AbstractMesh): void {\n const entries = this.instancedEntriesByRoot.get(root);\n if (!entries || entries.length === 0) return;\n const entriesByBatch = new Map<string, Set<PlanarShadowInstancedBatchEntry>>();\n for (const entry of entries) {\n const batchEntries = entriesByBatch.get(entry.batchKey) ?? new Set<PlanarShadowInstancedBatchEntry>();\n batchEntries.add(entry);\n entriesByBatch.set(entry.batchKey, batchEntries);\n }\n for (const [batchKey, batchEntries] of entriesByBatch) {\n const batch = this.instancedBatches.get(batchKey);\n if (!batch) continue;\n batch.entries = batch.entries.filter(candidate => !batchEntries.has(candidate));\n batch.entries.forEach((candidate, index) => {\n candidate.instanceIndex = index;\n });\n if (batch.entries.length === 0) {\n this.disposeInstancedBatch(batch);\n } else {\n this.markInstancedBatchBuffersDirty(batch);\n }\n }\n this.instancedEntriesByRoot.delete(root);\n }\n\n private disposeInstancedBatch(batch: PlanarShadowInstancedBatch): void {\n this.instancedBatches.delete(batch.key);\n batch.shadow.thinInstanceSetBuffer('shadowVisibility', null);\n batch.shadow.thinInstanceSetBuffer('matrix', null);\n if (batch.material !== this.baseMaterial) {\n this.materials.delete(batch.material);\n batch.material.dispose();\n }\n batch.shadow.dispose();\n }\n\n private rebuildCasters(): void {\n const roots = [...this.casters.keys()].filter((root) => !isDisposedNode(root));\n for (const root of roots) this.disposeCaster(root);\n for (const root of roots) this.addCaster(root);\n }\n\n private tryAutoAddCaster(mesh: AbstractMesh): void {\n if (!this.initialized || this.casters.has(mesh)) return;\n if (!this.options.casters.autoDetectAll && !this.matchesCasterPattern(mesh)) return;\n if (!this.isValidShadowSource(mesh)) return;\n const root = this.findCasterRoot(mesh);\n if (this.isAlreadyCoveredByCaster(root)) return;\n const shadow = this.createShadowForNode(root);\n if (shadow) this.casters.set(shadow.source, shadow);\n }\n\n private ensureMeshObserver(): void {\n if (this.meshAddedObserver) return;\n this.meshAddedObserver = this.scene.onNewMeshAddedObservable.add((mesh) => {\n queueMicrotask(() => {\n if (!this.initialized || mesh.isDisposed()) return;\n if (this.matchesReceiver(mesh)) this.addReceiver(mesh);\n this.tryAutoAddCaster(mesh);\n });\n });\n }\n\n private createShadowForNode(root: AbstractMesh): PlanarShadowCasterInfo | null {\n const validMeshes = collectNodeMeshes(root).filter((mesh) => this.isValidShadowSource(mesh));\n if (validMeshes.length === 0) return null;\n let shadowRoot: AbstractMesh | null = null;\n const ensureShadowRoot = () => {\n shadowRoot ??= new TransformNode(`${root.name}_planarShadowRoot`, this.scene) as unknown as AbstractMesh;\n return shadowRoot;\n };\n let hasSkeleton = false;\n const pairs: PlanarShadowMeshPair[] = [];\n const instancedEntries: PlanarShadowInstancedBatchEntry[] = [];\n const fallbackReasons: string[] = [];\n const instancingFallbackReasons: string[] = [];\n let sharedSkeleton: unknown = null;\n let sharedMaterial: ShaderMaterial | null = null;\n\n for (const mesh of validMeshes) {\n if (!(mesh instanceof Mesh) && !(mesh instanceof InstancedMesh)) continue;\n const geometrySource = mesh instanceof InstancedMesh ? mesh.sourceMesh : mesh;\n const strategy = this.options.projection.strategy;\n const instancingEligibility = this.resolveInstancingEligibility(mesh);\n\n if (instancingEligibility.eligible) {\n const instanced = this.addInstancedShadowMesh(root, mesh, instancingEligibility);\n if (instanced) {\n instancedEntries.push(instanced);\n continue;\n }\n instancingFallbackReasons.push(`${mesh.name}: instanced projected batch unavailable`);\n } else {\n instancingFallbackReasons.push(`${mesh.name}: ${instancingEligibility.reason}`);\n }\n\n if (strategy !== 'convex-hull') {\n const alphaCutout = instancingEligibility.alphaCutout;\n const material = this.resolveShadowMaterial(geometrySource, sharedSkeleton, sharedMaterial, alphaCutout);\n if (geometrySource.skeleton) {\n hasSkeleton = true;\n sharedSkeleton = geometrySource.skeleton;\n if (!alphaCutout) sharedMaterial = material;\n }\n const shadowMesh = material ? this.createProjectedShadowMesh(mesh, material) : null;\n if (shadowMesh) {\n const alphaCutoutLayers = alphaCutout?.layers.filter((layer): layer is PlanarShadowAlphaCutoutLayer => !!layer) ?? [];\n shadowMesh.parent = ensureShadowRoot();\n pairs.push({\n mode: 'projected-mesh',\n source: mesh,\n shadow: shadowMesh,\n alphaCutout: !!alphaCutout,\n alphaCutoutChannels: alphaCutoutLayers.map((layer) => layer.channel),\n alphaCutoutUvSets: alphaCutoutLayers.map((layer) => layer.coordinatesIndex),\n alphaCutoutLevels: alphaCutoutLayers.map((layer) => layer.level),\n alphaCutoutLuminanceWeights: alphaCutoutLayers.map((layer) => layer.luminanceWeights),\n });\n continue;\n }\n fallbackReasons.push(`${mesh.name}: projected mesh clone unavailable`);\n if (strategy === 'projected-mesh') continue;\n }\n\n const shadowMesh = this.createHullShadowMesh(mesh);\n if (shadowMesh) {\n shadowMesh.parent = ensureShadowRoot();\n pairs.push({\n mode: 'flat-hull',\n source: mesh,\n shadow: shadowMesh,\n alphaCutout: false,\n alphaCutoutChannels: [],\n alphaCutoutUvSets: [],\n alphaCutoutLevels: [],\n alphaCutoutLuminanceWeights: [],\n });\n } else {\n fallbackReasons.push(`${mesh.name}: convex hull geometry unavailable`);\n }\n }\n\n if (pairs.length === 0 && instancedEntries.length === 0) {\n this.removeInstancedEntriesForRoot(root);\n return null;\n }\n\n if (pairs.length > 0 && shadowRoot) {\n const sync = () => {\n if (!shadowRoot || shadowRoot.isDisposed()) return;\n for (const pair of pairs) {\n if (pair.source.isDisposed() || pair.shadow.isDisposed()) continue;\n if (pair.mode === 'flat-hull') {\n this.updateHullShadowMesh(pair.source, pair.shadow);\n } else {\n pair.shadow.setEnabled(pair.source.isEnabled());\n pair.shadow.isVisible = pair.source.isVisible;\n pair.source.computeWorldMatrix(true).decompose(\n pair.shadow.scaling,\n pair.shadow.rotationQuaternion!,\n pair.shadow.position,\n );\n }\n }\n };\n sync();\n const observer = this.scene.onBeforeRenderObservable.add(sync);\n this.syncObservers.set(root, observer);\n }\n\n const instancedBatchKeys = uniqueStrings(instancedEntries.map((entry) => entry.batchKey));\n const instancedBatchNames = uniqueStrings(instancedBatchKeys.map((key) => this.instancedBatches.get(key)?.shadow.name ?? ''));\n const instancedAlphaCutoutLayers = instancedEntries.flatMap((entry) => {\n const batch = this.instancedBatches.get(entry.batchKey);\n return batch?.alphaCutout?.layers.filter((layer): layer is PlanarShadowAlphaCutoutLayer => !!layer) ?? [];\n });\n const instancedAlphaCutoutMeshCount = instancedEntries.filter((entry) => {\n const batch = this.instancedBatches.get(entry.batchKey);\n return !!batch?.alphaCutout;\n }).length;\n const independentProjectedMeshCount = pairs.filter((pair) => pair.mode === 'projected-mesh').length;\n const visibleInstanceCount = instancedEntries.filter((entry) => readPlanarShadowEffectiveVisibility(entry.source)).length;\n\n return {\n source: root,\n shadow: shadowRoot ?? this.instancedBatches.get(instancedEntries[0]?.batchKey)?.shadow ?? root,\n sourceMeshNames: uniqueStrings([\n ...pairs.map((pair) => pair.source.name),\n ...instancedEntries.map((entry) => entry.source.name),\n ]),\n sourceMeshUniqueIds: uniqueNumbers([\n ...pairs.map((pair) => pair.source.uniqueId),\n ...instancedEntries.map((entry) => entry.source.uniqueId),\n ]),\n hasSkeleton,\n strategy: summarizePlanarShadowStrategy(pairs, instancedEntries.length),\n projectedMeshCount: independentProjectedMeshCount + instancedBatchKeys.length,\n convexHullMeshCount: pairs.filter((pair) => pair.mode === 'flat-hull').length,\n alphaCutoutMeshCount: pairs.filter((pair) => pair.alphaCutout).length + instancedAlphaCutoutMeshCount,\n instancedCasterCount: instancedEntries.length,\n batchMeshCount: instancedBatchKeys.length,\n instancedBatchIds: instancedBatchKeys,\n instancedBatchNames,\n independentProjectedMeshCount,\n visibleInstanceCount,\n alphaCutoutChannels: [\n ...pairs.flatMap((pair) => pair.alphaCutoutChannels),\n ...instancedAlphaCutoutLayers.map((layer) => layer.channel),\n ],\n alphaCutoutUvSets: [\n ...pairs.flatMap((pair) => pair.alphaCutoutUvSets),\n ...instancedAlphaCutoutLayers.map((layer) => layer.coordinatesIndex),\n ],\n alphaCutoutLevels: [\n ...pairs.flatMap((pair) => pair.alphaCutoutLevels),\n ...instancedAlphaCutoutLayers.map((layer) => layer.level),\n ],\n alphaCutoutLuminanceWeights: [\n ...pairs.flatMap((pair) => pair.alphaCutoutLuminanceWeights),\n ...instancedAlphaCutoutLayers.map((layer) => layer.luminanceWeights),\n ],\n fallbackReasons,\n instancingFallbackReasons,\n };\n }\n\n private resolveInstancingEligibility(source: Mesh | InstancedMesh): PlanarShadowInstancingEligibility {\n const geometrySource = source instanceof InstancedMesh ? source.sourceMesh : source;\n const alphaCutout = resolvePlanarShadowAlphaCutout(geometrySource);\n if (this.options.projection.strategy !== 'auto') {\n return {\n eligible: false,\n reason: `projection strategy ${this.options.projection.strategy} bypasses instanced backend`,\n alphaCutout,\n };\n }\n if (this.requiresPerShadowMaterial()) {\n return {\n eligible: false,\n reason: 'footprintScale requires per-caster projected material',\n alphaCutout,\n };\n }\n if (!geometrySource.geometry) {\n return {\n eligible: false,\n reason: 'geometry unavailable',\n alphaCutout,\n };\n }\n if (geometrySource.skeleton) {\n return {\n eligible: false,\n reason: 'skinned caster requires independent projected mesh',\n alphaCutout,\n };\n }\n if (geometrySource.morphTargetManager) {\n return {\n eligible: false,\n reason: 'morph target caster requires independent projected mesh',\n alphaCutout,\n };\n }\n if (geometrySource.hasThinInstances) {\n return {\n eligible: false,\n reason: 'source mesh thin instances require independent projected mesh',\n alphaCutout,\n };\n }\n const alphaSignature = createPlanarShadowInstancedAlphaCutoutSignature(alphaCutout);\n if (!alphaSignature.signature) {\n return {\n eligible: false,\n reason: alphaSignature.reason,\n alphaCutout,\n };\n }\n const geometryId = readPlanarShadowGeometryIdentity(geometrySource);\n return {\n eligible: true,\n batchKey: [\n 'projected',\n `geometry:${geometryId}`,\n `alpha:${alphaSignature.signature}`,\n `shadowGroup:${this.options.stencil.shadowRenderingGroup}`,\n `stencil:${this.options.stencil.enabled ? 1 : 0}`,\n ].join('|'),\n geometrySource,\n alphaCutout,\n alphaCutoutSignature: alphaSignature.signature,\n };\n }\n\n private addInstancedShadowMesh(\n root: AbstractMesh,\n source: Mesh | InstancedMesh,\n eligibility: Extract<PlanarShadowInstancingEligibility, { eligible: true }>,\n ): PlanarShadowInstancedBatchEntry | null {\n const batch = this.getOrCreateInstancedBatch(eligibility);\n if (!batch) return null;\n const entry: PlanarShadowInstancedBatchEntry = {\n root,\n source,\n geometrySource: eligibility.geometrySource,\n instanceIndex: batch.entries.length,\n batchKey: eligibility.batchKey,\n };\n batch.entries.push(entry);\n const entries = this.instancedEntriesByRoot.get(root) ?? [];\n entries.push(entry);\n this.instancedEntriesByRoot.set(root, entries);\n this.markInstancedBatchBuffersDirty(batch);\n return entry;\n }\n\n private getOrCreateInstancedBatch(\n eligibility: Extract<PlanarShadowInstancingEligibility, { eligible: true }>,\n ): PlanarShadowInstancedBatch | null {\n const existing = this.instancedBatches.get(eligibility.batchKey);\n if (existing) return existing;\n const material = this.resolveShadowMaterial(eligibility.geometrySource, null, null, eligibility.alphaCutout);\n if (!material) return null;\n const shadow = this.createInstancedProjectedShadowMesh(eligibility.geometrySource, material);\n if (!shadow) {\n if (material !== this.baseMaterial) {\n this.materials.delete(material);\n material.dispose();\n }\n return null;\n }\n const batch: PlanarShadowInstancedBatch = {\n key: eligibility.batchKey,\n shadow,\n material,\n geometrySource: eligibility.geometrySource,\n alphaCutout: eligibility.alphaCutout,\n entries: [],\n matrixData: new Float32Array(0),\n visibilityData: new Float32Array(0),\n buffersDirty: true,\n };\n this.instancedBatches.set(batch.key, batch);\n return batch;\n }\n\n private createInstancedProjectedShadowMesh(geometrySource: Mesh, material: ShaderMaterial): Mesh | null {\n const shadowMesh = geometrySource.clone(`${geometrySource.name}_planarShadowBatch`, null, true, false) as Mesh | null;\n if (!shadowMesh) return null;\n shadowMesh.parent = null;\n shadowMesh.position.setAll(0);\n shadowMesh.rotation.setAll(0);\n shadowMesh.scaling.setAll(1);\n shadowMesh.rotationQuaternion = null;\n shadowMesh.material = material;\n shadowMesh.isPickable = false;\n shadowMesh.receiveShadows = false;\n shadowMesh.renderingGroupId = this.options.stencil.shadowRenderingGroup;\n shadowMesh.alphaIndex = PLANAR_SHADOW_ALPHA_INDEX;\n shadowMesh.renderOutline = false;\n shadowMesh.renderOverlay = false;\n shadowMesh.alwaysSelectAsActiveMesh = true;\n shadowMesh.metadata = {\n ...(shadowMesh.metadata && typeof shadowMesh.metadata === 'object' ? shadowMesh.metadata : {}),\n disablePlanarShadow: true,\n planarShadowInternal: true,\n planarShadowInstancedBatch: true,\n };\n shadowMesh.thinInstanceSetBuffer('matrix', new Float32Array(0), 16, false);\n shadowMesh.thinInstanceSetBuffer('shadowVisibility', new Float32Array(0), 1, false);\n return shadowMesh;\n }\n\n private rebuildInstancedBatchBuffers(batch: PlanarShadowInstancedBatch): void {\n const instanceCount = batch.entries.length;\n batch.matrixData = new Float32Array(instanceCount * 16);\n batch.visibilityData = new Float32Array(instanceCount);\n this.writeInstancedBatchData(batch);\n batch.shadow.thinInstanceSetBuffer('matrix', batch.matrixData, 16, false);\n batch.shadow.thinInstanceSetBuffer('shadowVisibility', batch.visibilityData, 1, false);\n batch.shadow.thinInstanceCount = instanceCount;\n batch.buffersDirty = false;\n batch.shadow.isVisible = instanceCount > 0;\n }\n\n private syncInstancedBatches(): void {\n for (const batch of this.instancedBatches.values()) {\n if (this.shouldRebuildInstancedBatchBuffers(batch)) {\n this.rebuildInstancedBatchBuffers(batch);\n } else {\n this.writeInstancedBatchData(batch);\n batch.shadow.thinInstanceBufferUpdated('matrix');\n batch.shadow.thinInstanceBufferUpdated('shadowVisibility');\n }\n batch.shadow.isVisible = batch.entries.length > 0 && batch.visibilityData.some(value => value >= 0.5);\n }\n }\n\n private markInstancedBatchBuffersDirty(batch: PlanarShadowInstancedBatch): void {\n batch.buffersDirty = true;\n batch.shadow.thinInstanceCount = batch.entries.length;\n }\n\n private shouldRebuildInstancedBatchBuffers(batch: PlanarShadowInstancedBatch): boolean {\n return batch.buffersDirty\n || batch.matrixData.length !== batch.entries.length * 16\n || batch.visibilityData.length !== batch.entries.length;\n }\n\n private writeInstancedBatchData(batch: PlanarShadowInstancedBatch): void {\n batch.entries.forEach((entry, index) => {\n entry.instanceIndex = index;\n if (entry.source.isDisposed()) {\n Matrix.Identity().copyToArray(batch.matrixData, index * 16);\n batch.visibilityData[index] = 0;\n return;\n }\n entry.source.computeWorldMatrix(true);\n entry.source.getWorldMatrix().copyToArray(batch.matrixData, index * 16);\n batch.visibilityData[index] = readPlanarShadowEffectiveVisibility(entry.source) ? 1 : 0;\n });\n for (const [root, info] of this.casters) {\n const entries = this.instancedEntriesByRoot.get(root);\n if (!entries?.some((entry) => entry.batchKey === batch.key)) continue;\n info.visibleInstanceCount = entries.filter((entry) => readPlanarShadowEffectiveVisibility(entry.source)).length;\n }\n }\n\n private resolveSkeletonShadowMaterial(\n geometrySource: Mesh,\n sharedSkeleton: unknown,\n sharedMaterial: ShaderMaterial | null,\n ): ShaderMaterial | null {\n if (geometrySource.skeleton === sharedSkeleton && sharedMaterial) return sharedMaterial;\n const numBones = geometrySource.skeleton?.bones.length ?? 0;\n const useTexture = !!this.scene.getEngine().getCaps().textureFloat && numBones > 4;\n const hasExtra = geometrySource.isVerticesDataPresent('matricesIndicesExtra');\n const material = this.createShadowMaterial(getPlanarShadowSkeletonDefines(numBones, useTexture, hasExtra));\n this.materials.add(material);\n return material;\n }\n\n private resolveShadowMaterial(\n geometrySource: Mesh,\n sharedSkeleton: unknown,\n sharedMaterial: ShaderMaterial | null,\n alphaCutout: PlanarShadowAlphaCutout | null = null,\n ): ShaderMaterial | null {\n if (alphaCutout) {\n const material = geometrySource.skeleton\n ? this.createShadowMaterial(getPlanarShadowSkeletonDefines(\n geometrySource.skeleton?.bones.length ?? 0,\n !!this.scene.getEngine().getCaps().textureFloat && (geometrySource.skeleton?.bones.length ?? 0) > 4,\n geometrySource.isVerticesDataPresent('matricesIndicesExtra'),\n ), alphaCutout)\n : this.createShadowMaterial([], alphaCutout);\n this.materials.add(material);\n return material;\n }\n if (this.requiresPerShadowMaterial()) {\n const material = geometrySource.skeleton\n ? this.createShadowMaterial(getPlanarShadowSkeletonDefines(\n geometrySource.skeleton?.bones.length ?? 0,\n !!this.scene.getEngine().getCaps().textureFloat && (geometrySource.skeleton?.bones.length ?? 0) > 4,\n geometrySource.isVerticesDataPresent('matricesIndicesExtra'),\n ))\n : this.createShadowMaterial();\n this.materials.add(material);\n return material;\n }\n return geometrySource.skeleton\n ? this.resolveSkeletonShadowMaterial(geometrySource, sharedSkeleton, sharedMaterial)\n : this.baseMaterial;\n }\n\n private createProjectedShadowMesh(source: Mesh | InstancedMesh, material: ShaderMaterial): Mesh | null {\n const geometrySource = source instanceof InstancedMesh ? source.sourceMesh : source;\n const shadowMesh = geometrySource.clone(`${source.name}_planarShadow`, null, true, false) as Mesh | null;\n if (!shadowMesh) return null;\n if (geometrySource.skeleton) {\n shadowMesh.skeleton = geometrySource.skeleton;\n geometrySource.skeleton.prepare();\n }\n shadowMesh.material = material;\n shadowMesh.isPickable = false;\n shadowMesh.receiveShadows = false;\n shadowMesh.renderingGroupId = this.options.stencil.shadowRenderingGroup;\n shadowMesh.alphaIndex = PLANAR_SHADOW_ALPHA_INDEX;\n shadowMesh.renderOutline = false;\n shadowMesh.renderOverlay = false;\n shadowMesh.metadata = {\n ...(shadowMesh.metadata && typeof shadowMesh.metadata === 'object' ? shadowMesh.metadata : {}),\n disablePlanarShadow: true,\n planarShadowInternal: true,\n };\n if (!shadowMesh.rotationQuaternion) shadowMesh.rotationQuaternion = shadowMesh.rotation.toQuaternion();\n return shadowMesh;\n }\n\n private createHullShadowMesh(source: Mesh | InstancedMesh): Mesh | null {\n const shadowMesh = new Mesh(`${source.name}_planarShadow`, this.scene);\n shadowMesh.material = this.getFlatShadowMaterial();\n shadowMesh.isPickable = false;\n shadowMesh.receiveShadows = false;\n shadowMesh.renderingGroupId = this.options.stencil.shadowRenderingGroup;\n shadowMesh.alphaIndex = PLANAR_SHADOW_ALPHA_INDEX;\n shadowMesh.renderOutline = false;\n shadowMesh.renderOverlay = false;\n shadowMesh.metadata = {\n ...(shadowMesh.metadata && typeof shadowMesh.metadata === 'object' ? shadowMesh.metadata : {}),\n disablePlanarShadow: true,\n planarShadowInternal: true,\n };\n this.updateHullShadowMesh(source, shadowMesh);\n return shadowMesh;\n }\n\n private updateHullShadowMesh(source: Mesh | InstancedMesh, shadowMesh: Mesh): void {\n const geometry = buildPlanarShadowHullGeometry(source, {\n lightDir: this.resolveShadowDirection(),\n planeNormal: this.resolvedPlaneNormal,\n planeHeight: this.resolvedPlaneHeight,\n planeBias: this.options.plane.bias,\n footprintScale: this.options.projection.footprintScale,\n });\n if (!geometry) {\n shadowMesh.isVisible = false;\n return;\n }\n\n const vertexData = new VertexData();\n vertexData.positions = geometry.positions;\n vertexData.indices = geometry.indices;\n vertexData.normals = geometry.normals;\n vertexData.applyToMesh(shadowMesh, true);\n shadowMesh.isVisible = true;\n }\n\n private isValidShadowSource(mesh: AbstractMesh): boolean {\n return this.getInvalidShadowSourceReason(mesh) === null;\n }\n\n private getInvalidShadowSourceReason(mesh: AbstractMesh): string | null {\n if (isDisposedNode(mesh)) return 'source disposed';\n if (!(mesh instanceof Mesh) && !(mesh instanceof InstancedMesh)) return 'source is not a mesh';\n if (mesh instanceof Mesh && !mesh.geometry) return 'geometry unavailable';\n if (mesh instanceof InstancedMesh && !mesh.sourceMesh.geometry) return 'instance source geometry unavailable';\n if (hasDisablePlanarShadowMetadata(mesh)) return 'planar shadow disabled by metadata';\n if (this.matchesExcludePattern(mesh)) return 'source matches exclude pattern';\n if (this.hasExcludedAncestor(mesh)) return 'ancestor matches exclude or disabled pattern';\n if (this.matchesReceiverPattern(mesh)) return 'source matches receiver pattern';\n mesh.computeWorldMatrix(true);\n const size = mesh.getBoundingInfo()?.boundingBox.extendSizeWorld;\n if (!size) return null;\n const volume = size.x * size.y * size.z;\n if (volume >= this.options.casters.minVolume) return null;\n const maxProjectedArea = Math.max(size.x * size.y, size.x * size.z, size.y * size.z);\n return maxProjectedArea >= this.options.casters.minVolume\n ? null\n : `bounds below minVolume volume=${volume} maxProjectedArea=${maxProjectedArea}`;\n }\n\n private findCasterRoot(mesh: AbstractMesh): AbstractMesh {\n let topmost: AbstractMesh = mesh;\n let current = mesh.parent;\n while (current) {\n if (this.matchesRootBoundaryPattern(current) || hasDisablePlanarShadowMetadata(current)) break;\n if (!(current instanceof AbstractMesh)) {\n current = current.parent;\n continue;\n }\n if (this.matchesExcludePattern(current)) break;\n topmost = current;\n current = current.parent;\n }\n return topmost;\n }\n\n private matchesCasterPattern(mesh: AbstractMesh): boolean {\n return this.casterPatterns.some((pattern) => this.nodeOrAncestorNameIncludes(mesh, pattern));\n }\n\n private matchesReceiver(mesh: AbstractMesh): boolean {\n return this.options.stencil.enabled\n && !hasDisablePlanarShadowMetadata(mesh)\n && !this.hasDisabledReceiver(mesh)\n && !this.matchesExcludePattern(mesh)\n && !this.hasExcludedAncestor(mesh)\n && this.matchesReceiverPattern(mesh);\n }\n\n private matchesReceiverPattern(mesh: AbstractMesh): boolean {\n return this.options.receivers.patterns.some((pattern) => this.nodeOrAncestorNameIncludes(mesh, pattern));\n }\n\n private matchesExcludePattern(node: { name?: string }): boolean {\n const name = node.name?.toLowerCase() ?? '';\n return this.options.casters.excludePatterns.some((pattern) => pattern && name.includes(pattern.toLowerCase()));\n }\n\n private matchesRootBoundaryPattern(node: { name?: string }): boolean {\n const name = node.name?.toLowerCase() ?? '';\n return this.options.casters.rootBoundaryPatterns.some((pattern) => pattern && name.includes(pattern.toLowerCase()));\n }\n\n private hasExcludedAncestor(mesh: AbstractMesh): boolean {\n let current = mesh.parent;\n while (current) {\n if (this.matchesRootBoundaryPattern(current)) return false;\n if (hasDisablePlanarShadowMetadata(current) || this.matchesExcludePattern(current)) return true;\n current = current.parent;\n }\n return false;\n }\n\n private hasDisabledReceiver(mesh: AbstractMesh): boolean {\n return hasDisabledPlanarShadowReceiver(mesh, node => this.matchesRootBoundaryPattern(node));\n }\n\n private isAlreadyCoveredByCaster(node: AbstractMesh): boolean {\n if (this.casters.has(node)) return true;\n let current = node.parent;\n while (current) {\n if (current instanceof AbstractMesh && this.casters.has(current)) return true;\n current = current.parent;\n }\n for (const descendant of node.getChildMeshes(false)) {\n if (this.casters.has(descendant)) return true;\n }\n return false;\n }\n\n private nodeOrAncestorNameIncludes(mesh: AbstractMesh, pattern: string): boolean {\n const normalized = pattern.toLowerCase();\n if (!normalized) return false;\n return this.readNodeAndAncestorNames(mesh).some(name => name.includes(normalized));\n }\n\n private readNodeAndAncestorNames(mesh: AbstractMesh): string[] {\n const cache = this.patternNameCache;\n const cached = cache?.get(mesh);\n if (cached) return cached;\n const names: string[] = [];\n let current: unknown = mesh;\n const seen = new Set<unknown>();\n while (current && typeof current === 'object' && !seen.has(current)) {\n seen.add(current);\n const name = (current as { name?: unknown }).name;\n if (typeof name === 'string') names.push(name.toLowerCase());\n current = (current as { parent?: unknown }).parent;\n }\n cache?.set(mesh, names);\n return names;\n }\n}\n\nfunction buildPlanarShadowHullGeometry(\n source: Mesh | InstancedMesh,\n options: {\n lightDir: Vector3;\n planeNormal: Vector3;\n planeHeight: number;\n planeBias: number;\n footprintScale: number;\n },\n): PlanarShadowHullGeometry | null {\n const geometrySource = source instanceof InstancedMesh ? source.sourceMesh : source;\n const positions = geometrySource.getVerticesData(VertexBuffer.PositionKind);\n if (!positions || positions.length < 9) return null;\n\n const planeNormal = options.planeNormal.clone().normalize();\n const lightDir = options.lightDir.clone().normalize();\n const denom = Vector3.Dot(planeNormal, lightDir);\n if (Math.abs(denom) < 1e-5) return null;\n\n source.computeWorldMatrix(true);\n const worldMatrix = source.getWorldMatrix();\n const projectedPoints: Vector3[] = [];\n for (let index = 0; index < positions.length; index += 3) {\n const localPoint = new Vector3(\n Number(positions[index]),\n Number(positions[index + 1]),\n Number(positions[index + 2]),\n );\n const worldPoint = Vector3.TransformCoordinates(localPoint, worldMatrix);\n const t = (options.planeHeight - Vector3.Dot(planeNormal, worldPoint)) / denom;\n if (t < -1e-4) continue;\n const projectedPoint = worldPoint.add(lightDir.scale(Math.max(0, t)));\n projectedPoints.push(projectedPoint);\n }\n if (projectedPoints.length < 3) return null;\n\n const scaleCenter = averageVector3(projectedPoints);\n const footprintScale = Number.isFinite(options.footprintScale) ? Math.max(0, options.footprintScale) : 1;\n const biasedPoints = projectedPoints.map((point) => {\n const scaled = footprintScale === 1\n ? point\n : scaleCenter.add(point.subtract(scaleCenter).scale(footprintScale));\n return scaled.add(planeNormal.scale(options.planeBias * 0.002));\n });\n\n const basis = buildPlaneBasis(planeNormal);\n const points2d = dedupeHullPoints(biasedPoints.map((point) => ({\n x: Vector3.Dot(point, basis.tangent),\n y: Vector3.Dot(point, basis.bitangent),\n point,\n })));\n if (points2d.length < 3) return null;\n\n const hull = buildConvexHull(points2d);\n if (hull.length < 3) return null;\n\n const center = averageVector3(hull.map((point) => point.point));\n const positionsOut = [center.x, center.y, center.z];\n const normalsOut = [planeNormal.x, planeNormal.y, planeNormal.z];\n for (const hullPoint of hull) {\n positionsOut.push(hullPoint.point.x, hullPoint.point.y, hullPoint.point.z);\n normalsOut.push(planeNormal.x, planeNormal.y, planeNormal.z);\n }\n\n const indicesOut: number[] = [];\n for (let index = 1; index <= hull.length; index += 1) {\n indicesOut.push(0, index, index === hull.length ? 1 : index + 1);\n }\n\n return {\n positions: positionsOut,\n indices: indicesOut,\n normals: normalsOut,\n };\n}\n\nfunction bindPlanarShadowAlphaCutoutLayer(\n material: ShaderMaterial,\n suffix: '' | '2',\n layer: PlanarShadowAlphaCutoutLayer,\n): void {\n material.setFloat(`u_shadowAlphaLevel${suffix}`, layer.level);\n material.setFloat(`u_shadowAlphaChannelMode${suffix}`, layer.channel === 'red' ? 2 : layer.channel === 'luminance' ? 1 : 0);\n material.setVector3(`u_shadowAlphaLuminanceWeights${suffix}`, layer.luminanceWeights);\n material.setFloat(`u_shadowAlphaUvSet${suffix}`, layer.coordinatesIndex);\n material.setMatrix(`u_shadowAlphaMatrix${suffix}`, layer.texture.getTextureMatrix?.() ?? Matrix.Identity());\n material.setTexture(`shadowAlphaSampler${suffix}`, layer.texture);\n}\n\nfunction createPlanarShadowInstancedAlphaCutoutSignature(\n alphaCutout: PlanarShadowAlphaCutout | null,\n): { signature: string; reason: string } | { signature: null; reason: string } {\n if (!alphaCutout) return { signature: 'opaque', reason: '' };\n const layers = alphaCutout.layers.filter((layer): layer is PlanarShadowAlphaCutoutLayer => !!layer);\n if (layers.length !== 1) {\n return {\n signature: null,\n reason: 'multi-layer alpha cutout requires independent projected mesh',\n };\n }\n const [layer] = layers;\n const textureIdentity = readPlanarShadowTextureIdentity(layer.texture);\n if (!textureIdentity) {\n return {\n signature: null,\n reason: 'alpha cutout texture identity unavailable',\n };\n }\n return {\n signature: [\n 'cutout',\n `texture:${textureIdentity}`,\n `channel:${layer.channel}`,\n `uv:${layer.coordinatesIndex}`,\n `level:${formatPlanarShadowSignatureNumber(layer.level)}`,\n `cutoff:${formatPlanarShadowSignatureNumber(alphaCutout.cutoff)}`,\n `weights:${formatPlanarShadowSignatureNumber(layer.luminanceWeights.x)},${formatPlanarShadowSignatureNumber(layer.luminanceWeights.y)},${formatPlanarShadowSignatureNumber(layer.luminanceWeights.z)}`,\n `matrix:${serializePlanarShadowTextureMatrix(layer.texture)}`,\n ].join('|'),\n reason: '',\n };\n}\n\nfunction readPlanarShadowGeometryIdentity(mesh: Mesh): string {\n const geometry = mesh.geometry as { uniqueId?: unknown } | null;\n const geometryUniqueId = geometry?.uniqueId;\n if (typeof geometryUniqueId === 'number' && Number.isFinite(geometryUniqueId)) return `id:${geometryUniqueId}`;\n if (typeof geometryUniqueId === 'string' && geometryUniqueId.length > 0) return `id:${geometryUniqueId}`;\n return `mesh:${mesh.uniqueId}`;\n}\n\nfunction readPlanarShadowTextureIdentity(texture: BaseTexture): string | null {\n const record = texture as { uniqueId?: unknown; uid?: unknown; name?: unknown; url?: unknown };\n if (typeof record.uniqueId === 'number' && Number.isFinite(record.uniqueId)) return `id:${record.uniqueId}`;\n if (typeof record.uniqueId === 'string' && record.uniqueId.length > 0) return `id:${record.uniqueId}`;\n if (typeof record.uid === 'string' && record.uid.length > 0) return `uid:${record.uid}`;\n if (typeof record.url === 'string' && record.url.length > 0) return `url:${record.url}`;\n if (typeof record.name === 'string' && record.name.length > 0) return `name:${record.name}`;\n return null;\n}\n\nfunction serializePlanarShadowTextureMatrix(texture: BaseTexture): string {\n const matrix = texture.getTextureMatrix?.() ?? Matrix.Identity();\n return [...matrix.m].map(formatPlanarShadowSignatureNumber).join(',');\n}\n\nfunction formatPlanarShadowSignatureNumber(value: number): string {\n if (!Number.isFinite(value)) return '0';\n return String(Math.round(value * 1000000) / 1000000);\n}\n\nfunction readPlanarShadowEffectiveVisibility(node: AbstractMesh): boolean {\n let current: {\n parent?: unknown;\n isDisposed?: () => boolean;\n isEnabled?: () => boolean;\n isVisible?: boolean;\n visibility?: number;\n } | null = node;\n while (current) {\n if (isDisposedNode(current)) return false;\n if (current.isEnabled?.() === false) return false;\n if (current.isVisible === false) return false;\n if (typeof current.visibility === 'number' && current.visibility <= 0) return false;\n current = current.parent && typeof current.parent === 'object'\n ? current.parent as {\n parent?: unknown;\n isDisposed?: () => boolean;\n isEnabled?: () => boolean;\n isVisible?: boolean;\n visibility?: number;\n }\n : null;\n }\n return true;\n}\n\nfunction buildPlaneBasis(normal: Vector3): { tangent: Vector3; bitangent: Vector3 } {\n const seed = Math.abs(Vector3.Dot(normal, Vector3.Up())) > 0.95\n ? Vector3.Right()\n : Vector3.Up();\n const tangent = Vector3.Cross(seed, normal).normalize();\n const bitangent = Vector3.Cross(normal, tangent).normalize();\n return { tangent, bitangent };\n}\n\nfunction dedupeHullPoints(points: PlanarShadowHullPoint[]): PlanarShadowHullPoint[] {\n const seen = new Map<string, PlanarShadowHullPoint>();\n for (const point of points) {\n const key = `${Math.round(point.x * 100000)}:${Math.round(point.y * 100000)}`;\n if (!seen.has(key)) seen.set(key, point);\n }\n return [...seen.values()];\n}\n\nfunction buildConvexHull(points: PlanarShadowHullPoint[]): PlanarShadowHullPoint[] {\n const sorted = [...points].sort((a, b) => (a.x === b.x ? a.y - b.y : a.x - b.x));\n const lower: PlanarShadowHullPoint[] = [];\n for (const point of sorted) {\n while (lower.length >= 2 && hullCross(lower[lower.length - 2], lower[lower.length - 1], point) <= 1e-7) {\n lower.pop();\n }\n lower.push(point);\n }\n\n const upper: PlanarShadowHullPoint[] = [];\n for (let index = sorted.length - 1; index >= 0; index -= 1) {\n const point = sorted[index];\n while (upper.length >= 2 && hullCross(upper[upper.length - 2], upper[upper.length - 1], point) <= 1e-7) {\n upper.pop();\n }\n upper.push(point);\n }\n\n lower.pop();\n upper.pop();\n return lower.concat(upper);\n}\n\nfunction hullCross(origin: PlanarShadowHullPoint, a: PlanarShadowHullPoint, b: PlanarShadowHullPoint): number {\n return (a.x - origin.x) * (b.y - origin.y) - (a.y - origin.y) * (b.x - origin.x);\n}\n\nfunction averageVector3(points: Vector3[]): Vector3 {\n const total = points.reduce((sum, point) => sum.addInPlace(point), Vector3.Zero());\n return total.scale(1 / points.length);\n}\n\nfunction resolvePlanarShadowOptions(\n override: Partial<PlanarShadowOptions>,\n base: ResolvedPlanarShadowOptions = DEFAULT_PLANAR_SHADOW_OPTIONS,\n): ResolvedPlanarShadowOptions {\n return {\n enabled: override.enabled ?? base.enabled,\n plane: {\n ...base.plane,\n ...override.plane,\n heightMode: readPlaneHeightMode(override.plane?.heightMode, base.plane.heightMode),\n },\n appearance: {\n color: { ...base.appearance.color, ...override.appearance?.color },\n },\n direction: { mode: 'follow-light' },\n projection: {\n footprintScale: readNonNegativeFiniteNumber(\n override.projection?.footprintScale,\n base.projection.footprintScale,\n ),\n strategy: readPlanarShadowProjectionStrategy(\n override.projection?.strategy,\n base.projection.strategy,\n ),\n },\n stencil: {\n enabled: override.stencil?.enabled ?? base.stencil.enabled,\n receiverRenderingGroup: override.stencil?.receiverRenderingGroup ?? base.stencil.receiverRenderingGroup,\n shadowRenderingGroup: override.stencil?.shadowRenderingGroup ?? base.stencil.shadowRenderingGroup,\n },\n casters: {\n autoDetectAll: override.casters?.autoDetectAll ?? base.casters.autoDetectAll,\n includePatterns: override.casters?.includePatterns ? [...override.casters.includePatterns] : [...base.casters.includePatterns],\n excludePatterns: override.casters?.excludePatterns ? [...override.casters.excludePatterns] : [...base.casters.excludePatterns],\n rootBoundaryPatterns: override.casters?.rootBoundaryPatterns\n ? [...override.casters.rootBoundaryPatterns]\n : [...base.casters.rootBoundaryPatterns],\n minVolume: override.casters?.minVolume ?? base.casters.minVolume,\n },\n receivers: {\n patterns: override.receivers?.patterns ? [...override.receivers.patterns] : [...base.receivers.patterns],\n },\n debug: override.debug ?? base.debug,\n };\n}\n\nfunction summarizePlanarShadowStrategy(\n pairs: readonly PlanarShadowMeshPair[],\n instancedProjectedCount = 0,\n): PlanarShadowProjectionStrategy {\n const projectedCount = pairs.filter((pair) => pair.mode === 'projected-mesh').length + instancedProjectedCount;\n const hullCount = pairs.filter((pair) => pair.mode === 'flat-hull').length;\n if (projectedCount > 0 && hullCount === 0) return 'projected-mesh';\n if (hullCount > 0 && projectedCount === 0) return 'convex-hull';\n return 'auto';\n}\n\nfunction uniqueStrings(values: readonly string[]): string[] {\n return [...new Set(values.filter(value => value.length > 0))];\n}\n\nfunction uniqueNumbers(values: readonly number[]): number[] {\n return [...new Set(values.filter(value => Number.isFinite(value)))];\n}\n\nfunction readPlanarShadowProjectionStrategy(\n value: unknown,\n fallback: PlanarShadowProjectionStrategy,\n): PlanarShadowProjectionStrategy {\n return value === 'auto' || value === 'projected-mesh' || value === 'convex-hull'\n ? value\n : fallback;\n}\n\nfunction cloneResolvedOptions(options: ResolvedPlanarShadowOptions): ResolvedPlanarShadowOptions {\n return resolvePlanarShadowOptions(options);\n}\n\nfunction readPlaneHeightMode(\n value: PlanarShadowOptions['plane']['heightMode'] | undefined,\n fallback: PlanarShadowOptions['plane']['heightMode'] | undefined,\n): NonNullable<PlanarShadowOptions['plane']['heightMode']> {\n return value === 'fixed' || value === 'receiver'\n ? value\n : fallback === 'fixed' || fallback === 'receiver'\n ? fallback\n : 'receiver';\n}\n\nfunction collectNodeMeshes(root: AbstractMesh): AbstractMesh[] {\n const meshes = root.getChildMeshes(false);\n if (root instanceof Mesh || root instanceof InstancedMesh) meshes.unshift(root);\n return meshes;\n}\n\nfunction hasDisablePlanarShadowMetadata(node: { metadata?: unknown }): boolean {\n const metadata = node.metadata;\n return !!metadata\n && typeof metadata === 'object'\n && ((metadata as { disablePlanarShadow?: unknown }).disablePlanarShadow === true\n || (metadata as { planarShadowInternal?: unknown }).planarShadowInternal === true);\n}\n\nfunction hasDisabledPlanarShadowReceiver(\n node: AbstractMesh,\n isRootBoundary: (node: { name?: string }) => boolean,\n): boolean {\n let current: AbstractMesh | null = node;\n while (current) {\n if (readEditorProjectionShadowReceive(current) === 'none') return true;\n current = current.parent instanceof AbstractMesh && !isRootBoundary(current.parent)\n ? current.parent\n : null;\n }\n return false;\n}\n\nfunction readEditorProjectionShadowReceive(node: { metadata?: unknown }): unknown {\n const metadata = node.metadata;\n if (!metadata || typeof metadata !== 'object') return undefined;\n const editorProjection = (metadata as { editorProjection?: unknown }).editorProjection;\n if (!editorProjection || typeof editorProjection !== 'object') return undefined;\n const shadow = (editorProjection as { shadow?: unknown }).shadow;\n if (!shadow || typeof shadow !== 'object') return undefined;\n return (shadow as { receive?: unknown }).receive;\n}\n\nfunction isDisposedNode(node: { isDisposed?: () => boolean }): boolean {\n return typeof node.isDisposed === 'function' && node.isDisposed();\n}\n\nfunction readNonNegativeFiniteNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : fallback;\n}\n\nfunction readMeshMaterial(mesh: AbstractMesh): MaterialLike | null {\n const material = (mesh as { material?: unknown }).material;\n return material && typeof material === 'object'\n ? material as MaterialLike\n : null;\n}\n\nfunction resolvePlanarShadowAlphaCutout(mesh: Mesh): PlanarShadowAlphaCutout | null {\n return findAlphaCutout(mesh.material);\n}\n\nfunction findAlphaCutout(material: unknown): PlanarShadowAlphaCutout | null {\n if (!material || typeof material !== 'object') return null;\n const record = material as Record<string, unknown>;\n const cutoff = readAlphaCutoff(record.alphaCutOff ?? record.alphaCutoff);\n const geometryOpacityTexture = readBaseTexture(record.geometryOpacityTexture);\n if (geometryOpacityTexture && materialUsesOpacityAlpha(record)) {\n const layer = createPlanarShadowAlphaCutoutLayer(\n geometryOpacityTexture,\n 'red',\n PBR_ALPHA_LUMINANCE_WEIGHTS,\n );\n return layer ? {\n cutoff,\n layers: [layer],\n } : null;\n }\n const surfaceLayer = resolvePlanarShadowSurfaceAlphaLayer(record);\n const opacityTexture = readBaseTexture(record.opacityTexture);\n if (opacityTexture && materialUsesOpacityAlpha(record)) {\n const opacityLayer = createPlanarShadowAlphaCutoutLayer(\n opacityTexture,\n opacityTexture.getAlphaFromRGB ? 'luminance' : 'alpha',\n resolveOpacityLuminanceWeights(record),\n );\n if (!opacityLayer) return surfaceLayer ? { cutoff, layers: [surfaceLayer] } : null;\n return {\n cutoff,\n layers: surfaceLayer ? [opacityLayer, surfaceLayer] : [opacityLayer],\n };\n }\n if (surfaceLayer) return { cutoff, layers: [surfaceLayer] };\n const subMaterials = Array.isArray(record.subMaterials) ? record.subMaterials : [];\n for (const subMaterial of subMaterials) {\n const resolved = findAlphaCutout(subMaterial);\n if (resolved) return resolved;\n }\n return null;\n}\n\nfunction resolvePlanarShadowSurfaceAlphaLayer(material: Record<string, unknown>): PlanarShadowAlphaCutoutLayer | null {\n const albedoTexture = readBaseTexture(material.albedoTexture);\n if (albedoTexture && materialUsesAlbedoAlpha(material, albedoTexture)) {\n return createPlanarShadowAlphaCutoutLayer(albedoTexture, 'alpha', STANDARD_ALPHA_LUMINANCE_WEIGHTS, 1);\n }\n const diffuseTexture = readBaseTexture(material.diffuseTexture);\n if (diffuseTexture && materialUsesDiffuseAlpha(material, diffuseTexture)) {\n return createPlanarShadowAlphaCutoutLayer(diffuseTexture, 'alpha', STANDARD_ALPHA_LUMINANCE_WEIGHTS, 1);\n }\n const baseColorTexture = readBaseTexture(material.baseColorTexture);\n if (baseColorTexture && materialUsesBaseAlpha(material, baseColorTexture)) {\n return createPlanarShadowAlphaCutoutLayer(baseColorTexture, 'alpha', STANDARD_ALPHA_LUMINANCE_WEIGHTS, 1);\n }\n const baseTexture = readBaseTexture(material.baseTexture);\n if (baseTexture && materialUsesBaseAlpha(material, baseTexture)) {\n return createPlanarShadowAlphaCutoutLayer(baseTexture, 'alpha', STANDARD_ALPHA_LUMINANCE_WEIGHTS, 1);\n }\n return null;\n}\n\nfunction createPlanarShadowAlphaCutoutLayer(\n texture: BaseTexture,\n channel: PlanarShadowAlphaCutoutLayer['channel'],\n luminanceWeights: Vector3,\n level = readTextureLevel(texture),\n): PlanarShadowAlphaCutoutLayer | null {\n const coordinatesIndex = readSupportedTextureCoordinatesIndex(texture);\n return coordinatesIndex == null\n ? null\n : {\n texture,\n channel,\n coordinatesIndex,\n level,\n luminanceWeights,\n };\n}\n\nfunction readBaseTexture(value: unknown): BaseTexture | null {\n return value && typeof value === 'object' && typeof (value as { getClassName?: unknown }).getClassName === 'function'\n ? value as BaseTexture\n : null;\n}\n\nfunction readSupportedTextureCoordinatesIndex(texture: BaseTexture): 0 | 1 | 2 | 3 | 4 | 5 | null {\n return texture.coordinatesIndex === 0\n || texture.coordinatesIndex === 1\n || texture.coordinatesIndex === 2\n || texture.coordinatesIndex === 3\n || texture.coordinatesIndex === 4\n || texture.coordinatesIndex === 5\n ? texture.coordinatesIndex\n : null;\n}\n\nfunction readTextureLevel(texture: BaseTexture): number {\n return typeof texture.level === 'number' && Number.isFinite(texture.level) ? Math.max(0, texture.level) : 1;\n}\n\nfunction resolveOpacityLuminanceWeights(material: Record<string, unknown>): Vector3 {\n const className = typeof material.getClassName === 'function'\n ? String(material.getClassName.call(material))\n : '';\n return className.includes('PBR') ? PBR_ALPHA_LUMINANCE_WEIGHTS : STANDARD_ALPHA_LUMINANCE_WEIGHTS;\n}\n\nfunction materialUsesDiffuseAlpha(material: Record<string, unknown>, texture: BaseTexture): boolean {\n return materialAllowsTextureAlpha(material)\n && texture.hasAlpha === true\n && (material.useAlphaFromDiffuseTexture === true || materialUsesTextureAlpha(material, texture));\n}\n\nfunction materialUsesAlbedoAlpha(material: Record<string, unknown>, texture: BaseTexture): boolean {\n return materialAllowsTextureAlpha(material)\n && texture.hasAlpha === true\n && (material.useAlphaFromAlbedoTexture === true || materialUsesTextureAlpha(material, texture));\n}\n\nfunction materialUsesBaseAlpha(material: Record<string, unknown>, texture: BaseTexture): boolean {\n return materialAllowsTextureAlpha(material)\n && texture.hasAlpha === true\n && (material.useAlphaFromBaseColorTexture === true\n || material._useAlphaFromBaseColorTexture === true\n || materialUsesTextureAlpha(material, texture));\n}\n\nfunction materialUsesTextureAlpha(material: Record<string, unknown>, texture: BaseTexture): boolean {\n if (texture.hasAlpha !== true) return false;\n const needAlphaTesting = material.needAlphaTesting;\n if (typeof needAlphaTesting === 'function' && needAlphaTesting.call(material) === true) return true;\n return material.transparencyMode === Material.MATERIAL_ALPHATEST\n || material.transparencyMode === Material.MATERIAL_ALPHATESTANDBLEND;\n}\n\nfunction materialUsesOpacityAlpha(material: Record<string, unknown>): boolean {\n if (material.transparencyMode === Material.MATERIAL_OPAQUE) return false;\n const needAlphaTesting = material.needAlphaTesting;\n if (typeof needAlphaTesting === 'function' && needAlphaTesting.call(material) === true) return true;\n const needAlphaBlending = material.needAlphaBlending;\n if (typeof needAlphaBlending === 'function' && needAlphaBlending.call(material) === true) return true;\n return material.transparencyMode === Material.MATERIAL_ALPHATEST\n || material.transparencyMode === Material.MATERIAL_ALPHABLEND\n || material.transparencyMode === Material.MATERIAL_ALPHATESTANDBLEND;\n}\n\nfunction materialAllowsTextureAlpha(material: Record<string, unknown>): boolean {\n return material.transparencyMode !== Material.MATERIAL_OPAQUE;\n}\n\nfunction readAlphaCutoff(value: unknown): number {\n return typeof value === 'number' && Number.isFinite(value)\n ? Math.min(1, Math.max(0, value))\n : 0.1;\n}\n\nfunction clamp01(value: number): number {\n return Math.min(1, Math.max(0, value));\n}\n"]}
|