@fps-games/editor 0.2.1-beta.3 → 0.2.1-beta.4
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/build-info.json +44 -44
- package/dist/editor-commands/capabilities/assets.d.ts +8 -0
- package/dist/editor-commands/capabilities/assets.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/assets.js +41 -41
- package/dist/editor-commands/capabilities/assets.js.map +1 -0
- package/dist/editor-commands/capabilities/editor-state.d.ts +5 -0
- package/dist/editor-commands/capabilities/editor-state.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/editor-state.js +22 -22
- package/dist/editor-commands/capabilities/editor-state.js.map +1 -0
- package/dist/editor-commands/capabilities/hierarchy.d.ts +4 -0
- package/dist/editor-commands/capabilities/hierarchy.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/hierarchy.js +5 -5
- package/dist/editor-commands/capabilities/hierarchy.js.map +1 -0
- package/dist/editor-commands/capabilities/host-lifecycle.d.ts +11 -0
- package/dist/editor-commands/capabilities/host-lifecycle.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/host-lifecycle.js +149 -0
- package/dist/editor-commands/capabilities/host-lifecycle.js.map +1 -0
- package/dist/editor-commands/capabilities/prefabs.d.ts +5 -0
- package/dist/editor-commands/capabilities/prefabs.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/prefabs.js +93 -93
- package/dist/editor-commands/capabilities/prefabs.js.map +1 -0
- package/dist/editor-commands/capabilities/scene-objects.d.ts +8 -0
- package/dist/editor-commands/capabilities/scene-objects.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/scene-objects.js +480 -0
- package/dist/editor-commands/capabilities/scene-objects.js.map +1 -0
- package/dist/editor-commands/capabilities/selection.d.ts +5 -0
- package/dist/editor-commands/capabilities/selection.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/selection.js +60 -0
- package/dist/editor-commands/capabilities/selection.js.map +1 -0
- package/dist/editor-commands/capabilities/shadows.d.ts +5 -0
- package/dist/editor-commands/capabilities/shadows.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/shadows.js +74 -74
- package/dist/editor-commands/capabilities/shadows.js.map +1 -0
- package/dist/editor-commands/capabilities/transform.d.ts +5 -0
- package/dist/editor-commands/capabilities/transform.d.ts.map +1 -0
- package/dist/editor-commands/capabilities/transform.js +164 -0
- package/dist/editor-commands/capabilities/transform.js.map +1 -0
- package/dist/editor-commands/capabilities/ui-regions.d.ts +4 -0
- package/dist/editor-commands/capabilities/ui-regions.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/ui-regions.js +55 -57
- package/dist/editor-commands/capabilities/ui-regions.js.map +1 -0
- package/dist/editor-commands/capabilities/viewport.d.ts +5 -0
- package/dist/editor-commands/capabilities/viewport.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/capabilities/viewport.js +100 -100
- package/dist/editor-commands/capabilities/viewport.js.map +1 -0
- package/dist/editor-commands/command-sources.d.ts +7 -0
- package/dist/editor-commands/command-sources.d.ts.map +1 -0
- package/dist/editor-commands/command-sources.js +34 -0
- package/dist/editor-commands/command-sources.js.map +1 -0
- package/dist/editor-commands/diagnostics.d.ts +12 -0
- package/dist/editor-commands/diagnostics.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/diagnostics.js +4 -4
- package/dist/editor-commands/diagnostics.js.map +1 -0
- package/dist/{agent-bridge → editor-commands}/index.d.ts +1 -1
- package/dist/editor-commands/index.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/index.js +1 -1
- package/dist/editor-commands/index.js.map +1 -0
- package/dist/editor-commands/register.d.ts +4 -0
- package/dist/editor-commands/register.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/register.js +323 -286
- package/dist/editor-commands/register.js.map +1 -0
- package/dist/{agent-bridge → editor-commands}/shared.d.ts +80 -80
- package/dist/editor-commands/shared.d.ts.map +1 -0
- package/dist/{agent-bridge → editor-commands}/shared.js +29 -29
- package/dist/editor-commands/shared.js.map +1 -0
- package/dist/editor-commands/source-types.d.ts +110 -0
- package/dist/editor-commands/source-types.d.ts.map +1 -0
- package/dist/editor-commands/source-types.js.map +1 -0
- package/dist/editor-plugin-commands.d.ts +4 -0
- package/dist/editor-plugin-commands.d.ts.map +1 -0
- package/dist/editor-plugin-commands.js +18 -0
- package/dist/editor-plugin-commands.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/local-editor-commands.d.ts +2 -0
- package/dist/local-editor-commands.d.ts.map +1 -0
- package/dist/local-editor-commands.js +2 -0
- package/dist/local-editor-commands.js.map +1 -0
- package/dist/local-editor-harness.d.ts +35 -21
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +1721 -367
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/local-editor-prefab-stage-transaction.d.ts +2 -1
- package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -1
- package/dist/local-editor-prefab-stage-transaction.js +6 -5
- package/dist/local-editor-prefab-stage-transaction.js.map +1 -1
- package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
- package/dist/local-editor-scene-view-interaction-runtime.js +2 -5
- package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
- package/dist/playable-local-editor-entry.d.ts +10 -0
- package/dist/playable-local-editor-entry.d.ts.map +1 -1
- package/dist/playable-local-editor-entry.js +10 -2
- package/dist/playable-local-editor-entry.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +3 -32
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js +6 -70
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-product-local-editor.d.ts +1 -2
- package/dist/playable-product-local-editor.d.ts.map +1 -1
- package/dist/playable-product-local-editor.js +0 -1
- package/dist/playable-product-local-editor.js.map +1 -1
- package/dist/playable-product-projection-preview.d.ts.map +1 -1
- package/dist/playable-product-projection-preview.js +1 -1
- package/dist/playable-product-projection-preview.js.map +1 -1
- package/dist/playable-product-scene-capabilities.d.ts +0 -2
- package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
- package/dist/playable-product-scene-capabilities.js +33 -6
- package/dist/playable-product-scene-capabilities.js.map +1 -1
- package/dist/playable-runtime-babylon.d.ts +4 -0
- package/dist/playable-runtime-babylon.d.ts.map +1 -1
- package/dist/playable-runtime-babylon.js +4 -0
- package/dist/playable-runtime-babylon.js.map +1 -1
- package/dist/playable-sdk.d.ts +1 -1
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js.map +1 -1
- package/dist/playable-standard-project.d.ts +0 -2
- package/dist/playable-standard-project.d.ts.map +1 -1
- package/dist/playable-standard-project.js +1 -2
- package/dist/playable-standard-project.js.map +1 -1
- package/dist/project-service-projection.d.ts +16 -0
- package/dist/project-service-projection.d.ts.map +1 -0
- package/dist/project-service-projection.js +67 -0
- package/dist/project-service-projection.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +18 -0
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +54 -18
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +9 -9
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +127 -13
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +66 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +6 -6
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts +32 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js +254 -0
- package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts +68 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js +650 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +22 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +8 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +117 -6
- 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-view.d.ts +14 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +100 -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-panels.d.ts +8 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +75 -2
- 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-types.d.ts +37 -12
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.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.d.ts +25 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +332 -107
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/package.json +7 -7
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts +107 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js +1211 -0
- package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts +34 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js +260 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts +9 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js +14 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts +18 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js +113 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts +82 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.js +1098 -0
- package/node_modules/@fps-games/editor-core/dist/editor-command-system.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -7
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +62 -103
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts +30 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js +540 -0
- package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts +9 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js +61 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +55 -0
- 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 +247 -6
- package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/index.d.ts +6 -2
- package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/index.js +6 -2
- package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-core/package.json +6 -6
- package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-forge-play/dist/index.js +0 -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/bridge-command/protocol.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +41 -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/local-harness/forge-play-types.d.ts +27 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.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 +214 -7
- 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.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +11 -3
- 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 +2 -4
- 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 +0 -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.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +77 -31
- 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/types.d.ts +8 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.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/material-binding/asset-fields.d.ts +21 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js +90 -4
- 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.d.ts +27 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +161 -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/inspector.d.ts +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js +5 -92
- 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/scene-inspector.d.ts +7 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js +26 -9
- 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 +9 -0
- 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 +19 -8
- 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/prefab-stage/material-override-inspector.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js +16 -4
- 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/stage-inspector.d.ts +9 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +12 -2
- 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/product/ground-decal.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js +10 -5
- 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.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +1 -0
- 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 +17 -82
- 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 +53 -57
- 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.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js +3 -2
- 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/standard-authoring-commands.d.ts +10 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js +256 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +7 -5
- 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/scene-source/client.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +8 -0
- 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/types.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.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/upgrade-doctor/inspectors.js +134 -12
- 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/vite/editor-scene-workflow.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +47 -0
- 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/editor-service-vite.d.ts +27 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js +592 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +2 -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/plugin.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +61 -6
- 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 +0 -2
- 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 +1 -10
- 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-authoring-api.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +21 -0
- 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/project-authoring-backend.d.ts +13 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js +18 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts +28 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js +863 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +2 -0
- 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 +6 -6
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts +1626 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/{agent-bridge.js → editor-command-capabilities.js} +766 -620
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts +69 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js +22 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts +136 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.js +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-command.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts +225 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.js +4 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-service.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +6 -3
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.js +6 -3
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/package.json +2 -2
- package/node_modules/@fps-games/editor-tooling/package.json +3 -3
- package/node_modules/@fps-games/editor-ui/package.json +1 -1
- package/node_modules/@fps-games/playable-assets/package.json +1 -1
- package/node_modules/@fps-games/playable-contracts/package.json +1 -1
- package/node_modules/@fps-games/playable-rendering/package.json +2 -2
- package/node_modules/@fps-games/playable-runtime/package.json +12 -12
- package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
- package/node_modules/@fps-games/playable-scene/package.json +2 -2
- package/node_modules/@fps-games/plugin-api/package.json +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 +6 -6
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +78 -4
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
- package/node_modules/@fps-games/plugin-host/package.json +2 -2
- 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/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/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/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-shadow-map-experiment/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
- 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 +23 -23
- package/dist/agent-bridge/capabilities/assets.d.ts +0 -8
- package/dist/agent-bridge/capabilities/assets.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/assets.js.map +0 -1
- package/dist/agent-bridge/capabilities/editor-state.d.ts +0 -5
- package/dist/agent-bridge/capabilities/editor-state.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/editor-state.js.map +0 -1
- package/dist/agent-bridge/capabilities/hierarchy.d.ts +0 -4
- package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/hierarchy.js.map +0 -1
- package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +0 -11
- package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/host-lifecycle.js +0 -149
- package/dist/agent-bridge/capabilities/host-lifecycle.js.map +0 -1
- package/dist/agent-bridge/capabilities/prefabs.d.ts +0 -5
- package/dist/agent-bridge/capabilities/prefabs.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/prefabs.js.map +0 -1
- package/dist/agent-bridge/capabilities/scene-objects.d.ts +0 -8
- package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/scene-objects.js +0 -480
- package/dist/agent-bridge/capabilities/scene-objects.js.map +0 -1
- package/dist/agent-bridge/capabilities/selection.d.ts +0 -5
- package/dist/agent-bridge/capabilities/selection.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/selection.js +0 -60
- package/dist/agent-bridge/capabilities/selection.js.map +0 -1
- package/dist/agent-bridge/capabilities/shadows.d.ts +0 -5
- package/dist/agent-bridge/capabilities/shadows.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/shadows.js.map +0 -1
- package/dist/agent-bridge/capabilities/transform.d.ts +0 -5
- package/dist/agent-bridge/capabilities/transform.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/transform.js +0 -164
- package/dist/agent-bridge/capabilities/transform.js.map +0 -1
- package/dist/agent-bridge/capabilities/ui-regions.d.ts +0 -4
- package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/ui-regions.js.map +0 -1
- package/dist/agent-bridge/capabilities/viewport.d.ts +0 -5
- package/dist/agent-bridge/capabilities/viewport.d.ts.map +0 -1
- package/dist/agent-bridge/capabilities/viewport.js.map +0 -1
- package/dist/agent-bridge/capability-sources.d.ts +0 -7
- package/dist/agent-bridge/capability-sources.d.ts.map +0 -1
- package/dist/agent-bridge/capability-sources.js +0 -34
- package/dist/agent-bridge/capability-sources.js.map +0 -1
- package/dist/agent-bridge/diagnostics.d.ts +0 -12
- package/dist/agent-bridge/diagnostics.d.ts.map +0 -1
- package/dist/agent-bridge/diagnostics.js.map +0 -1
- package/dist/agent-bridge/index.d.ts.map +0 -1
- package/dist/agent-bridge/index.js.map +0 -1
- package/dist/agent-bridge/register.d.ts +0 -4
- package/dist/agent-bridge/register.d.ts.map +0 -1
- package/dist/agent-bridge/register.js.map +0 -1
- package/dist/agent-bridge/shared.d.ts.map +0 -1
- package/dist/agent-bridge/shared.js.map +0 -1
- package/dist/agent-bridge/source-types.d.ts +0 -110
- package/dist/agent-bridge/source-types.d.ts.map +0 -1
- package/dist/agent-bridge/source-types.js.map +0 -1
- package/dist/editor-plugin-agent-capabilities.d.ts +0 -4
- package/dist/editor-plugin-agent-capabilities.d.ts.map +0 -1
- package/dist/editor-plugin-agent-capabilities.js +0 -64
- package/dist/editor-plugin-agent-capabilities.js.map +0 -1
- package/dist/local-editor-agent-actions.d.ts +0 -43
- package/dist/local-editor-agent-actions.d.ts.map +0 -1
- package/dist/local-editor-agent-actions.js +0 -321
- package/dist/local-editor-agent-actions.js.map +0 -1
- package/dist/local-editor-agent-bridge-transport.d.ts +0 -129
- package/dist/local-editor-agent-bridge-transport.d.ts.map +0 -1
- package/dist/local-editor-agent-bridge-transport.js +0 -403
- package/dist/local-editor-agent-bridge-transport.js.map +0 -1
- package/dist/local-editor-agent-bridge.d.ts +0 -2
- package/dist/local-editor-agent-bridge.d.ts.map +0 -1
- package/dist/local-editor-agent-bridge.js +0 -2
- package/dist/local-editor-agent-bridge.js.map +0 -1
- package/dist/local-editor-agent-context.d.ts +0 -68
- package/dist/local-editor-agent-context.d.ts.map +0 -1
- package/dist/local-editor-agent-context.js +0 -716
- package/dist/local-editor-agent-context.js.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +0 -22
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +0 -106
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts +0 -17
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.js +0 -14
- package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts +0 -23
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js +0 -47
- package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts +0 -112
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js +0 -159
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts +0 -15
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js +0 -76
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +0 -1622
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +0 -68
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +0 -23
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +0 -187
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.js +0 -5
- package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +0 -1
- /package/dist/{agent-bridge → editor-commands}/source-types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/document/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n mergeArtistMaterialProfiles,\n type ArtistMaterialProfile,\n type SpatialMarkerTargetRef,\n type SpatialMarkerTypeDefinition,\n} from '@fps-games/editor-protocol';\nimport type {\n EditorSceneMaterialBinding,\n} from '../material-binding/types';\nimport {\n isEditorSceneArtistMaterialPatchPath,\n normalizeEditorSceneMaterialSlotOwnerPath,\n readEditorSceneMaterialSlotBindingSlotId,\n} from '../material-binding/paths';\nimport {\n readEditorSceneMaterialBindingConfig,\n} from '../material-binding/binding';\nimport type {\n EditorSceneComponent,\n EditorSceneAsset,\n EditorSceneDocument,\n EditorSceneGameObject,\n EditorSceneGameObjectRenderingGroupId,\n EditorSceneMarkerConfig,\n EditorSceneModelRendererComponent,\n EditorSceneNodeKind,\n EditorScenePrefabNode,\n EditorScenePrefabDefaults,\n EditorScenePrefabDefinition,\n EditorScenePrefabAgentSummary,\n EditorScenePrefabAgentMaterialTarget,\n EditorScenePrefabMutationDiagnostic,\n EditorScenePrefabMutationResult,\n EditorScenePrefabOverrides,\n EditorScenePrefabInstanceRelation,\n EditorScenePrefabRelationDiagnostic,\n EditorScenePrefabInstance,\n EditorSceneResolvedGameObjectRendering,\n EditorSceneTransformComponent,\n EditorSceneColorRgb,\n} from './types';\nimport type {\n EditorShadowMapExperimentObjectOverride,\n EditorShadowSettings,\n} from '@fps-games/playable-rendering';\n\nexport const EDITOR_SCENE_PREFAB_COMPOSITION_VERSION = 1;\nexport const EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID = 'prefab-root';\nexport const EDITOR_SCENE_PREFAB_DEFAULT_MODEL_NODE_ID = 'prefab-model';\n\nconst EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX = 'prefab.';\nconst EDITOR_SCENE_PREFAB_CORE_MATERIAL_OVERRIDE_PROFILE_FIELD_PATHS = new Set([\n 'profile.baseColor.color',\n 'profile.baseColor.texture.textureAssetId',\n 'profile.normal.texture.textureAssetId',\n 'profile.normal.strength',\n 'profile.metallic',\n 'profile.roughness',\n 'profile.emission.color',\n 'profile.emission.intensity',\n 'profile.emission.texture.textureAssetId',\n]);\n\nexport function cloneEditorSceneDocument<TDocument extends EditorSceneDocument>(\n document: TDocument,\n): TDocument {\n return structuredClone(document) as TDocument;\n}\n\nexport function findEditorSceneTransform(\n gameObject: Pick<EditorSceneGameObject, 'components'>,\n): EditorSceneTransformComponent | null {\n return gameObject.components.find(isEditorSceneTransformComponent) ?? null;\n}\n\nexport function findEditorSceneModelRenderer(\n gameObject: Pick<EditorSceneGameObject, 'components'>,\n): EditorSceneModelRendererComponent | null {\n return gameObject.components.find(isEditorSceneModelRendererComponent) ?? null;\n}\n\nexport function isEditorScenePrefabAsset(\n asset: Pick<EditorSceneAsset, 'type' | 'prefab'> | null | undefined,\n): asset is Pick<EditorSceneAsset, 'type'> & { prefab: EditorScenePrefabDefinition } {\n return asset?.type === 'prefab' && readEditorSceneNonEmptyString(asset.prefab?.sourceAssetId) != null;\n}\n\nexport function findEditorScenePrefabAsset<TAsset extends EditorSceneAsset = EditorSceneAsset>(\n document: Pick<EditorSceneDocument<EditorSceneGameObject, TAsset>, 'assets'>,\n assetId: string,\n): TAsset | null {\n const asset = document.assets.find(candidate => candidate.id === assetId);\n return asset && isEditorScenePrefabAsset(asset) ? asset : null;\n}\n\nexport function hasEditorScenePrefabForSourceAsset(\n document: Pick<EditorSceneDocument, 'assets'>,\n sourceAssetId: unknown,\n): boolean {\n return typeof sourceAssetId === 'string' && sourceAssetId.trim().length > 0\n ? document.assets.some(asset => isEditorScenePrefabAsset(asset) && asset.prefab.sourceAssetId === sourceAssetId)\n : false;\n}\n\nexport function isEditorScenePrefabInstance(\n gameObject: Pick<EditorSceneGameObject, 'prefab'> | null | undefined,\n): gameObject is Pick<EditorSceneGameObject, 'prefab'> & { prefab: EditorScenePrefabInstance } {\n return readEditorSceneNonEmptyString(gameObject?.prefab?.prefabId) != null;\n}\n\nexport function resolveEditorScenePrefabSourceAssetId(\n prefabAsset: Pick<EditorSceneAsset, 'prefab'> | null | undefined,\n): string | null {\n return readEditorSceneNonEmptyString(prefabAsset?.prefab?.sourceAssetId);\n}\n\nexport function readEditorScenePrefabRootNodeId(\n prefabAsset: Pick<EditorSceneAsset, 'prefab' | 'displayName'> | null | undefined,\n): string | null {\n if (!prefabAsset?.prefab) return null;\n const nodes = readEditorScenePrefabExplicitNodes(prefabAsset.prefab);\n const explicitRootNodeId = readEditorSceneNonEmptyString(prefabAsset.prefab.rootNodeId);\n if (explicitRootNodeId && nodes.some(node => node.id === explicitRootNodeId)) return explicitRootNodeId;\n const explicitRoot = nodes.find(node => node.kind === 'root' && !node.parentId);\n if (explicitRoot) return explicitRoot.id;\n return null;\n}\n\nexport function readEditorScenePrefabNodes(\n prefabAsset: Pick<EditorSceneAsset, 'prefab' | 'displayName'> | null | undefined,\n): EditorScenePrefabNode[] {\n if (!prefabAsset?.prefab) return [];\n return readEditorScenePrefabExplicitNodes(prefabAsset.prefab);\n}\n\nexport function findEditorScenePrefabNode(\n prefabAsset: Pick<EditorSceneAsset, 'prefab' | 'displayName'> | null | undefined,\n nodeId: string,\n): EditorScenePrefabNode | null {\n const normalizedNodeId = readEditorSceneNonEmptyString(nodeId);\n if (!normalizedNodeId) return null;\n return readEditorScenePrefabNodes(prefabAsset).find(node => node.id === normalizedNodeId) ?? null;\n}\n\nexport function readEditorScenePrefabNodeChildren(\n prefabAsset: Pick<EditorSceneAsset, 'prefab' | 'displayName'> | null | undefined,\n parentNodeId: string | null | undefined,\n): EditorScenePrefabNode[] {\n const normalizedParentId = readEditorSceneNonEmptyString(parentNodeId);\n return readEditorScenePrefabNodes(prefabAsset).filter((node) => {\n const parentId = readEditorSceneNonEmptyString(node.parentId);\n return normalizedParentId ? parentId === normalizedParentId : !parentId;\n });\n}\n\nexport function ensureEditorScenePrefabComposition<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n): EditorScenePrefabMutationResult<TAsset> {\n if (!isEditorScenePrefabAsset(prefabAsset)) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'prefab.invalidDefinition',\n severity: 'error',\n message: `Asset \"${prefabAsset.id}\" is not a valid prefab definition.`,\n assetId: prefabAsset.id,\n }]);\n }\n\n const nodes = readEditorScenePrefabExplicitNodes(prefabAsset.prefab);\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n if (prefabAsset.prefab.compositionVersion !== EDITOR_SCENE_PREFAB_COMPOSITION_VERSION\n || nodes.length === 0\n || !rootNodeId) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'schema.unsupportedVersion',\n severity: 'error',\n message: `Prefab asset \"${prefabAsset.id}\" must use composition version ${EDITOR_SCENE_PREFAB_COMPOSITION_VERSION} with an explicit root node.`,\n assetId: prefabAsset.id,\n }]);\n }\n\n const next = cloneEditorScenePrefabAssetWithComposition(prefabAsset);\n return createEditorScenePrefabMutationResult(next, JSON.stringify(next.prefab) !== JSON.stringify(prefabAsset.prefab));\n}\n\nexport function selectEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const normalizedNodeId = readEditorSceneNonEmptyString(nodeId);\n const node = normalizedNodeId ? findEditorScenePrefabNode(prepared.prefabAsset, normalizedNodeId) : null;\n if (!node) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [], {\n selectedNodeId: node.id,\n });\n}\n\nexport function renameEditorScenePrefabAsset<\n TDocument extends Pick<EditorSceneDocument, 'assets'>,\n>(\n document: TDocument,\n assetId: string,\n displayName: unknown,\n): EditorScenePrefabMutationResult<EditorSceneAsset> {\n const normalizedAssetId = readEditorSceneNonEmptyString(assetId);\n const prefabAsset = normalizedAssetId\n ? document.assets.find(asset => asset.id === normalizedAssetId && isEditorScenePrefabAsset(asset))\n : null;\n if (!prefabAsset) {\n return createEditorScenePrefabMutationResult({\n id: normalizedAssetId ?? String(assetId ?? ''),\n type: 'prefab',\n prefab: { sourceAssetId: '' },\n }, false, null, [{\n code: 'prefab.invalidDefinition',\n severity: 'error',\n message: `Prefab asset \"${assetId}\" was not found.`,\n assetId,\n }]);\n }\n const nameResult = normalizeEditorScenePrefabEditableName(displayName);\n if (!nameResult.ok) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'prefab.invalidName',\n severity: 'error',\n message: nameResult.message,\n assetId: prefabAsset.id,\n }]);\n }\n const normalizedDisplayName = nameResult.name;\n const lowerName = normalizedDisplayName.toLowerCase();\n const conflict = document.assets.find(candidate => (\n candidate.id !== prefabAsset.id\n && isEditorScenePrefabAsset(candidate)\n && readEditorSceneNonEmptyString(candidate.displayName)?.toLowerCase() === lowerName\n ));\n if (conflict) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'prefab.nameConflict',\n severity: 'error',\n message: `Prefab asset name \"${normalizedDisplayName}\" is already used by \"${conflict.id}\".`,\n assetId: prefabAsset.id,\n }]);\n }\n if (prefabAsset.displayName === normalizedDisplayName) {\n return createEditorScenePrefabMutationResult(prefabAsset, false);\n }\n const next = cloneEditorScenePrefabAssetWithComposition({\n ...structuredClone(prefabAsset),\n displayName: normalizedDisplayName,\n });\n const rootNodeId = readEditorScenePrefabRootNodeId(next);\n if (rootNodeId && Array.isArray(next.prefab?.nodes)) {\n const rootIndex = next.prefab.nodes.findIndex(node => node.id === rootNodeId);\n if (rootIndex >= 0) {\n next.prefab.nodes = [...next.prefab.nodes];\n next.prefab.nodes[rootIndex] = {\n ...structuredClone(next.prefab.nodes[rootIndex]!),\n name: normalizedDisplayName,\n };\n }\n }\n return createEditorScenePrefabMutationResult(next, true);\n}\n\nexport function renameEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n name: unknown,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const normalizedNodeId = readEditorSceneNonEmptyString(nodeId);\n const node = normalizedNodeId ? findEditorScenePrefabNode(prepared.prefabAsset, normalizedNodeId) : null;\n if (!node) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const rootNodeId = readEditorScenePrefabRootNodeId(prepared.prefabAsset);\n if (node.id === rootNodeId) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [{\n code: 'prefab.rootRenameRejected',\n severity: 'error',\n message: 'Prefab root node name follows the prefab asset displayName; use prefab.asset.rename instead.',\n assetId: prefabAsset.id,\n nodeId: node.id,\n }]);\n }\n const nameResult = normalizeEditorScenePrefabEditableName(name);\n if (!nameResult.ok) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [{\n code: 'prefab.invalidName',\n severity: 'error',\n message: nameResult.message,\n assetId: prefabAsset.id,\n nodeId: node.id,\n }]);\n }\n const normalizedName = nameResult.name;\n const siblings = readEditorScenePrefabNodeChildren(prepared.prefabAsset, node.parentId);\n const conflict = siblings.find(candidate => (\n candidate.id !== node.id\n && readEditorSceneNonEmptyString(candidate.name)?.toLowerCase() === normalizedName.toLowerCase()\n ));\n if (conflict) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [{\n code: 'prefab.nameConflict',\n severity: 'error',\n message: `Prefab node name \"${normalizedName}\" is already used by sibling \"${conflict.id}\".`,\n assetId: prefabAsset.id,\n nodeId: node.id,\n parentId: node.parentId,\n }]);\n }\n return updateEditorScenePrefabNode(prepared.prefabAsset, node.id, (candidate) => ({\n ...candidate,\n name: normalizedName,\n }));\n}\n\nexport function createEditorScenePrefabNodeFromAsset<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n asset: EditorSceneAsset,\n options: {\n id?: string;\n guid?: string;\n name?: string;\n parentId?: string;\n transform?: EditorSceneTransformComponent;\n sourceNodePath?: string;\n } = {},\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n if (asset.id === prefabAsset.id) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.selfReferenceRejected',\n severity: 'error',\n message: `Prefab \"${prefabAsset.id}\" cannot contain itself directly.`,\n assetId: asset.id,\n }]);\n }\n\n const parentResult = resolveEditorScenePrefabMutationParent(prepared.prefabAsset, options.parentId);\n if (!parentResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, parentResult.diagnostics);\n\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const isChildPrefab = isEditorScenePrefabAsset(asset);\n const isModel = asset.type !== 'prefab' && (asset.type === 'glb' || asset.type === 'model' || asset.type === 'gltf');\n if (!isChildPrefab && !isModel) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.assetUnsupported',\n severity: 'error',\n message: `Asset \"${asset.id}\" cannot be added to a prefab composition.`,\n assetId: asset.id,\n }]);\n }\n\n const node: EditorScenePrefabNode = {\n id: options.id ?? createUniqueEditorScenePrefabNodeId(nodes, `${isChildPrefab ? 'prefab' : 'model'}-${asset.id}`),\n ...(options.guid ? { guid: options.guid } : {}),\n name: options.name ?? asset.displayName ?? asset.id,\n parentId: parentResult.parentId,\n kind: isChildPrefab ? 'prefabInstance' : 'model',\n ...(options.transform ? { transform: structuredClone(options.transform) } : {}),\n ...(isChildPrefab ? { childPrefabId: asset.id } : { sourceAssetId: asset.id }),\n ...(readEditorSceneNonEmptyString(options.sourceNodePath) ? { sourceNodePath: readEditorSceneNonEmptyString(options.sourceNodePath)! } : {}),\n };\n return appendEditorScenePrefabNode(prepared.prefabAsset, node);\n}\n\nexport function createEditorScenePrefabPrimitiveNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n options: {\n id?: string;\n guid?: string;\n name?: string;\n parentId?: string;\n shape: string;\n transform?: EditorSceneTransformComponent;\n },\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const parentResult = resolveEditorScenePrefabMutationParent(prepared.prefabAsset, options.parentId);\n if (!parentResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, parentResult.diagnostics);\n const shape = readEditorSceneNonEmptyString(options.shape);\n if (!shape) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.assetUnsupported',\n severity: 'error',\n message: 'Prefab primitive shape must be a non-empty string.',\n assetId: prefabAsset.id,\n }]);\n }\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const node: EditorScenePrefabNode = {\n id: options.id ?? createUniqueEditorScenePrefabNodeId(nodes, `primitive-${shape}`),\n ...(options.guid ? { guid: options.guid } : {}),\n name: options.name ?? `${shape[0]!.toUpperCase()}${shape.slice(1)}`,\n parentId: parentResult.parentId,\n kind: 'primitive',\n primitive: { shape },\n ...(options.transform ? { transform: structuredClone(options.transform) } : {}),\n };\n return appendEditorScenePrefabNode(prepared.prefabAsset, node);\n}\n\nexport function createEditorScenePrefabGroupNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n options: {\n id?: string;\n guid?: string;\n name?: string;\n parentId?: string;\n transform?: EditorSceneTransformComponent;\n } = {},\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const parentResult = resolveEditorScenePrefabMutationParent(prepared.prefabAsset, options.parentId);\n if (!parentResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, parentResult.diagnostics);\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const node: EditorScenePrefabNode = {\n id: options.id ?? createUniqueEditorScenePrefabNodeId(nodes, 'group'),\n ...(options.guid ? { guid: options.guid } : {}),\n name: options.name ?? 'Empty',\n parentId: parentResult.parentId,\n kind: 'group',\n ...(options.transform ? { transform: structuredClone(options.transform) } : {}),\n };\n return appendEditorScenePrefabNode(prepared.prefabAsset, node);\n}\n\nexport function createEditorScenePrefabMarkerNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n options: {\n id?: string;\n guid?: string;\n name?: string;\n parentId?: string;\n markerType: SpatialMarkerTypeDefinition;\n target?: SpatialMarkerTargetRef | null;\n tags?: string[];\n note?: string;\n color?: EditorSceneColorRgb;\n transform?: EditorSceneTransformComponent;\n },\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const markerType = readEditorScenePrefabMarkerTypeDefinition(options.markerType);\n if (!markerType) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.invalidMarkerType',\n severity: 'error',\n message: 'Prefab Marker type must be a valid catalog definition.',\n assetId: prefabAsset.id,\n }]);\n }\n const parentResult = resolveEditorScenePrefabMutationParent(prepared.prefabAsset, options.parentId);\n if (!parentResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, parentResult.diagnostics);\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const nodeId = createUniqueEditorScenePrefabNodeId(nodes, options.id ?? `marker-${markerType.type}`);\n const targetResult = resolveEditorScenePrefabMarkerTarget(nodes, nodeId, options.target ?? null);\n if (!targetResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [targetResult.diagnostic]);\n const valuesResult = readEditorScenePrefabMarkerValues(options);\n if (!valuesResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [valuesResult.diagnostic]);\n const marker = createEditorScenePrefabMarkerConfig(markerType, targetResult.target, valuesResult.values);\n const node: EditorScenePrefabNode = {\n id: nodeId,\n ...(options.guid ? { guid: options.guid } : {}),\n name: options.name?.trim() || markerType.label,\n parentId: parentResult.parentId,\n kind: 'marker',\n transform: structuredClone(options.transform ?? createIdentityEditorSceneTransform()),\n marker,\n };\n return appendEditorScenePrefabNode(prepared.prefabAsset, node);\n}\n\nexport function setEditorScenePrefabNodeMarker<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n patch: {\n markerType?: SpatialMarkerTypeDefinition;\n target?: SpatialMarkerTargetRef | null;\n tags?: string[];\n note?: string | null;\n color?: EditorSceneColorRgb | null;\n },\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const currentNode = nodes.find(node => node.id === nodeId);\n if (!currentNode) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n if (currentNode.kind !== 'marker' || !currentNode.marker) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.markerNodeRequired',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" is not a Marker node.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const markerType = patch.markerType === undefined\n ? { type: currentNode.marker.type, label: currentNode.name ?? currentNode.marker.type, kind: currentNode.marker.kind }\n : readEditorScenePrefabMarkerTypeDefinition(patch.markerType);\n if (!markerType) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.invalidMarkerType',\n severity: 'error',\n message: 'Prefab Marker type must be a valid catalog definition.',\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const currentTarget = readEditorScenePrefabMarkerConfigTarget(currentNode.marker);\n const targetResult = Object.prototype.hasOwnProperty.call(patch, 'target')\n ? resolveEditorScenePrefabMarkerTarget(nodes, nodeId, patch.target ?? null)\n : { ok: true as const, target: currentTarget };\n if (!targetResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [targetResult.diagnostic]);\n const valuesResult = readEditorScenePrefabMarkerValues({\n ...(Object.prototype.hasOwnProperty.call(patch, 'tags') ? { tags: patch.tags } : {}),\n ...(patch.note !== null && Object.prototype.hasOwnProperty.call(patch, 'note') ? { note: patch.note } : {}),\n ...(patch.color !== null && Object.prototype.hasOwnProperty.call(patch, 'color') ? { color: patch.color } : {}),\n });\n if (!valuesResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [valuesResult.diagnostic]);\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, node => ({\n ...node,\n marker: patchEditorScenePrefabMarkerConfig(node.marker!, markerType, targetResult.target, patch),\n }));\n}\n\nfunction patchEditorScenePrefabMarkerConfig(\n current: EditorSceneMarkerConfig,\n markerType: SpatialMarkerTypeDefinition,\n target: SpatialMarkerTargetRef | null,\n patch: {\n markerType?: SpatialMarkerTypeDefinition;\n target?: SpatialMarkerTargetRef | null;\n tags?: string[];\n note?: string | null;\n color?: EditorSceneColorRgb | null;\n },\n): EditorSceneMarkerConfig {\n const next = structuredClone(current);\n if (patch.markerType !== undefined || Object.prototype.hasOwnProperty.call(patch, 'target')) {\n const derived = createEditorScenePrefabMarkerConfig(markerType, target, {});\n next.schemaVersion = derived.schemaVersion;\n next.type = derived.type;\n next.kind = derived.kind;\n next.geometry = derived.geometry;\n if (derived.target) next.target = derived.target;\n else delete next.target;\n }\n if (Object.prototype.hasOwnProperty.call(patch, 'tags')) {\n const tags = patch.tags?.map(tag => tag.trim()).filter(Boolean) ?? [];\n if (tags.length > 0) next.tags = tags;\n else delete next.tags;\n }\n if (Object.prototype.hasOwnProperty.call(patch, 'note')) {\n if (patch.note !== null) next.note = patch.note;\n else delete next.note;\n }\n if (Object.prototype.hasOwnProperty.call(patch, 'color')) {\n if (patch.color != null) next.color = { ...patch.color };\n else delete next.color;\n }\n return next;\n}\n\nfunction createEditorScenePrefabMarkerConfig(\n markerType: SpatialMarkerTypeDefinition,\n target: SpatialMarkerTargetRef | null,\n values: { tags?: string[]; note?: string; color?: EditorSceneColorRgb },\n): EditorSceneMarkerConfig {\n const kind = normalizeEditorScenePrefabMarkerKind(markerType.kind);\n const targetRef = target ? structuredClone(target) : null;\n const geometry: EditorSceneMarkerConfig['geometry'] = kind === 'region'\n ? { kind: 'box' }\n : kind === 'object' && targetRef\n ? { kind: 'object-bounds', target: structuredClone(targetRef) }\n : { kind: 'point', ...(targetRef ? { target: structuredClone(targetRef) } : {}) };\n return {\n schemaVersion: 1,\n type: markerType.type,\n kind,\n ...(values.tags?.length ? { tags: [...values.tags] } : {}),\n ...(values.note !== undefined ? { note: values.note } : {}),\n ...(values.color ? { color: { ...values.color } } : {}),\n ...(targetRef ? { target: targetRef } : {}),\n geometry,\n };\n}\n\nfunction readEditorScenePrefabMarkerTypeDefinition(\n value: SpatialMarkerTypeDefinition | null | undefined,\n): SpatialMarkerTypeDefinition | null {\n const type = readEditorSceneNonEmptyString(value?.type);\n const label = readEditorSceneNonEmptyString(value?.label);\n if (!type || !label) return null;\n return {\n type,\n label,\n kind: normalizeEditorScenePrefabMarkerKind(value?.kind),\n };\n}\n\nfunction normalizeEditorScenePrefabMarkerKind(value: unknown): string {\n const kind = readEditorSceneNonEmptyString(value);\n if (kind === 'object-bound' || kind === 'object-bounds') return 'object';\n return kind ?? 'point';\n}\n\nfunction resolveEditorScenePrefabMarkerTarget(\n nodes: readonly EditorScenePrefabNode[],\n markerNodeId: string,\n target: SpatialMarkerTargetRef | null,\n): { ok: true; target: SpatialMarkerTargetRef | null } | { ok: false; diagnostic: EditorScenePrefabMutationDiagnostic } {\n if (!target) return { ok: true, target: null };\n const targetId = readEditorSceneNonEmptyString(target.id);\n const targetNode = targetId ? nodes.find(node => node.id === targetId) : null;\n const expectedKind = targetNode?.kind === 'marker' ? 'marker' : 'scene-object';\n if (!targetId || !targetNode || targetId === markerNodeId || target.kind !== expectedKind) {\n return {\n ok: false,\n diagnostic: {\n code: 'prefab.invalidMarkerTarget',\n severity: 'error',\n message: `Prefab Marker target \"${targetId ?? ''}\" must resolve to another node in the same composition.`,\n nodeId: markerNodeId,\n ...(targetId ? { parentId: targetId } : {}),\n },\n };\n }\n return {\n ok: true,\n target: {\n kind: expectedKind,\n id: targetId,\n ...(typeof target.label === 'string' ? { label: target.label } : {}),\n },\n };\n}\n\nfunction readEditorScenePrefabMarkerConfigTarget(marker: EditorSceneMarkerConfig): SpatialMarkerTargetRef | null {\n if (marker.target) return structuredClone(marker.target);\n if (marker.geometry.kind === 'point' && marker.geometry.target) return structuredClone(marker.geometry.target);\n if (marker.geometry.kind === 'object-bounds') return structuredClone(marker.geometry.target);\n return null;\n}\n\nfunction readEditorScenePrefabMarkerValues(value: {\n tags?: unknown;\n note?: unknown;\n color?: unknown;\n}): { ok: true; values: { tags?: string[]; note?: string; color?: EditorSceneColorRgb } } | { ok: false; diagnostic: EditorScenePrefabMutationDiagnostic } {\n const tags = value.tags === undefined\n ? undefined\n : Array.isArray(value.tags) && value.tags.every(tag => typeof tag === 'string')\n ? value.tags.map(tag => tag.trim()).filter(Boolean)\n : null;\n const note = value.note === undefined ? undefined : typeof value.note === 'string' ? value.note : null;\n const color = value.color === undefined ? undefined : readEditorScenePrefabMarkerColor(value.color);\n if (tags === null || note === null || (value.color !== undefined && !color)) {\n return {\n ok: false,\n diagnostic: {\n code: 'prefab.invalidMarkerValue',\n severity: 'error',\n message: 'Prefab Marker tags, note, or color payload is invalid.',\n },\n };\n }\n return {\n ok: true,\n values: {\n ...(tags?.length ? { tags } : {}),\n ...(note !== undefined ? { note } : {}),\n ...(color ? { color } : {}),\n },\n };\n}\n\nfunction readEditorScenePrefabMarkerColor(value: unknown): EditorSceneColorRgb | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const color = value as Partial<EditorSceneColorRgb>;\n const { r, g, b } = color;\n return isEditorSceneMarkerColorChannel(r)\n && isEditorSceneMarkerColorChannel(g)\n && isEditorSceneMarkerColorChannel(b)\n ? { r, g, b }\n : null;\n}\n\nfunction isEditorSceneMarkerColorChannel(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1;\n}\n\nfunction createIdentityEditorSceneTransform(): EditorSceneTransformComponent {\n return {\n type: 'Transform',\n position: { x: 0, y: 0, z: 0 },\n rotation: { x: 0, y: 0, z: 0 },\n scale: { x: 1, y: 1, z: 1 },\n };\n}\n\nexport function setEditorScenePrefabNodeTransform<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n transform: EditorSceneTransformComponent,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n if (!transform || transform.type !== 'Transform') {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.invalidTransform',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" requires a Transform component payload.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, (node) => ({\n ...node,\n transform: structuredClone(transform),\n }));\n}\n\nexport function setEditorScenePrefabNodeShadow<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n shadow: EditorShadowSettings | null | undefined,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const node = findEditorScenePrefabNode(prepared.prefabAsset, nodeId);\n if (node?.kind === 'marker') {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [{\n code: 'prefab.markerShadowUnsupported',\n severity: 'error',\n message: `Prefab Marker node \"${nodeId}\" does not support shadow defaults.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, (node) => {\n const defaults = { ...(node.defaults ?? {}) };\n if (shadow && Object.keys(shadow).length > 0) defaults.shadow = structuredClone(shadow);\n else delete defaults.shadow;\n if (Object.keys(defaults).length > 0) return { ...node, defaults };\n const { defaults: _defaults, ...rest } = node;\n return rest;\n });\n}\n\nexport function setEditorScenePrefabNodeShadowMapExperiment<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n profile: EditorShadowMapExperimentObjectOverride | null | undefined,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, (node) => {\n const defaults = { ...(node.defaults ?? {}) };\n if (profile?.behaviorProfile) defaults.shadowMapExperiment = structuredClone(profile);\n else delete defaults.shadowMapExperiment;\n if (Object.keys(defaults).length > 0) return { ...node, defaults };\n const { defaults: _defaults, ...rest } = node;\n return rest;\n });\n}\n\nexport function reparentEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n parentId: string,\n options: {\n placement?: 'inside' | 'before' | 'after' | 'root';\n beforeId?: string | null;\n afterId?: string | null;\n } = {},\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const rootNodeId = readEditorScenePrefabRootNodeId(prepared.prefabAsset);\n if (nodeId === rootNodeId) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.rootReparentRejected',\n severity: 'error',\n message: 'Prefab root node cannot be reparented.',\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const sourceNode = nodes.find(node => node.id === nodeId);\n if (!sourceNode) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n if (!nodes.some(node => node.id === parentId)) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.parentNotFound',\n severity: 'error',\n message: `Prefab parent node \"${parentId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n parentId,\n }]);\n }\n if (nodeId === parentId || isEditorScenePrefabNodeDescendant(nodes, parentId, nodeId)) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.cycleReparentRejected',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" cannot be parented under its own descendant \"${parentId}\".`,\n assetId: prefabAsset.id,\n nodeId,\n parentId,\n }]);\n }\n const beforeId = options.beforeId ?? null;\n const afterId = options.afterId ?? null;\n if (beforeId && afterId) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, sourceNode, [{\n code: 'prefab.moveAnchorAmbiguous',\n severity: 'error',\n message: 'Prefab node move accepts either beforeId or afterId, not both.',\n assetId: prefabAsset.id,\n nodeId,\n parentId,\n }]);\n }\n const anchorId = beforeId ?? afterId;\n const anchorNode = anchorId ? nodes.find(node => node.id === anchorId) : null;\n if (anchorId && (!anchorNode || anchorNode.id === nodeId || anchorNode.parentId !== parentId)) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, sourceNode, [{\n code: 'prefab.moveAnchorInvalid',\n severity: 'error',\n message: `Prefab move anchor \"${anchorId}\" is not a sibling under parent \"${parentId}\".`,\n assetId: prefabAsset.id,\n nodeId,\n parentId,\n }]);\n }\n if (!anchorId && options.placement === undefined) {\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, node => ({ ...node, parentId }));\n }\n\n const movedNode = { ...structuredClone(sourceNode), parentId };\n const nextNodes = nodes.filter(node => node.id !== nodeId);\n const insertionIndex = anchorId\n ? nextNodes.findIndex(node => node.id === anchorId) + (afterId ? 1 : 0)\n : nextNodes.length;\n nextNodes.splice(insertionIndex, 0, movedNode);\n const next = structuredClone(prepared.prefabAsset) as TAsset;\n next.prefab = structuredClone(next.prefab);\n next.prefab!.compositionVersion = EDITOR_SCENE_PREFAB_COMPOSITION_VERSION;\n next.prefab!.nodes = nextNodes;\n return createEditorScenePrefabMutationResult(\n next,\n JSON.stringify(nodes) !== JSON.stringify(nextNodes),\n movedNode,\n [],\n { selectedNodeId: nodeId },\n );\n}\n\nexport function deleteEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const rootNodeId = readEditorScenePrefabRootNodeId(prepared.prefabAsset);\n if (nodeId === rootNodeId) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.rootDeleteRejected',\n severity: 'error',\n message: 'Prefab root node cannot be deleted.',\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const target = nodes.find(node => node.id === nodeId);\n if (!target) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const deleted = new Set<string>();\n collectEditorScenePrefabNodeSubtree(nodes, nodeId, deleted);\n const next = structuredClone(prepared.prefabAsset) as TAsset;\n next.prefab = structuredClone(next.prefab);\n next.prefab!.nodes = nodes.filter(node => !deleted.has(node.id));\n return createEditorScenePrefabMutationResult(next, true, target, [], {\n deletedNodeIds: [...deleted],\n });\n}\n\nfunction createEditorScenePrefabMutationResult<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n changed: boolean,\n node: EditorScenePrefabNode | null = null,\n diagnostics: EditorScenePrefabMutationDiagnostic[] = [],\n extra: Partial<Pick<EditorScenePrefabMutationResult<TAsset>, 'selectedNodeId' | 'createdNodeId' | 'deletedNodeIds'>> = {},\n): EditorScenePrefabMutationResult<TAsset> {\n return {\n ok: diagnostics.every(diagnostic => diagnostic.severity !== 'error'),\n changed,\n prefabAsset,\n ...(extra.selectedNodeId ? { selectedNodeId: extra.selectedNodeId } : {}),\n ...(extra.createdNodeId ? { createdNodeId: extra.createdNodeId } : {}),\n ...(extra.deletedNodeIds ? { deletedNodeIds: [...extra.deletedNodeIds] } : {}),\n ...(node ? { node: structuredClone(node) } : {}),\n diagnostics: diagnostics.map(diagnostic => ({ ...diagnostic })),\n };\n}\n\nfunction cloneEditorScenePrefabAssetWithComposition<TAsset extends EditorSceneAsset>(prefabAsset: TAsset): TAsset {\n const next = structuredClone(prefabAsset) as TAsset;\n const nodes = readEditorScenePrefabNodes(prefabAsset);\n next.prefab = structuredClone(next.prefab);\n next.prefab!.compositionVersion = EDITOR_SCENE_PREFAB_COMPOSITION_VERSION;\n next.prefab!.nodes = nodes;\n const rootNodeId = readEditorScenePrefabRootNodeId({ ...prefabAsset, prefab: { ...prefabAsset.prefab!, nodes } });\n if (rootNodeId) next.prefab!.rootNodeId = rootNodeId;\n else delete next.prefab!.rootNodeId;\n return next;\n}\n\nfunction resolveEditorScenePrefabMutationParent<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n parentId: string | null | undefined,\n): { ok: true; parentId: string } | { ok: false; diagnostics: EditorScenePrefabMutationDiagnostic[] } {\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n const normalizedParentId = readEditorSceneNonEmptyString(parentId) ?? rootNodeId;\n if (!normalizedParentId || !findEditorScenePrefabNode(prefabAsset, normalizedParentId)) {\n return {\n ok: false,\n diagnostics: [{\n code: 'prefab.parentNotFound',\n severity: 'error',\n message: `Prefab parent node \"${normalizedParentId ?? parentId ?? 'root'}\" was not found.`,\n assetId: prefabAsset.id,\n ...(normalizedParentId ? { parentId: normalizedParentId } : {}),\n }],\n };\n }\n return { ok: true, parentId: normalizedParentId };\n}\n\nfunction appendEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n node: EditorScenePrefabNode,\n): EditorScenePrefabMutationResult<TAsset> {\n const next = structuredClone(prefabAsset) as TAsset;\n const nodes = readEditorScenePrefabNodes(prefabAsset);\n const nodeId = createUniqueEditorScenePrefabNodeId(nodes, node.id);\n const nextNode: EditorScenePrefabNode = {\n ...structuredClone(node),\n id: nodeId,\n };\n next.prefab = structuredClone(next.prefab);\n next.prefab!.compositionVersion = EDITOR_SCENE_PREFAB_COMPOSITION_VERSION;\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n if (rootNodeId) next.prefab!.rootNodeId = rootNodeId;\n else delete next.prefab!.rootNodeId;\n next.prefab!.nodes = [...nodes, nextNode];\n return createEditorScenePrefabMutationResult(next, true, nextNode, [], {\n createdNodeId: nextNode.id,\n selectedNodeId: nextNode.id,\n });\n}\n\nfunction updateEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n update: (node: EditorScenePrefabNode) => EditorScenePrefabNode,\n): EditorScenePrefabMutationResult<TAsset> {\n const nodes = readEditorScenePrefabNodes(prefabAsset);\n const index = nodes.findIndex(node => node.id === nodeId);\n if (index < 0) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const updated = update(structuredClone(nodes[index]!));\n const nextNodes = [...nodes];\n nextNodes[index] = updated;\n const next = structuredClone(prefabAsset) as TAsset;\n next.prefab = structuredClone(next.prefab);\n next.prefab!.compositionVersion = EDITOR_SCENE_PREFAB_COMPOSITION_VERSION;\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n if (rootNodeId) next.prefab!.rootNodeId = rootNodeId;\n else delete next.prefab!.rootNodeId;\n next.prefab!.nodes = nextNodes;\n return createEditorScenePrefabMutationResult(next, JSON.stringify(nodes[index]) !== JSON.stringify(updated), updated, [], {\n selectedNodeId: updated.id,\n });\n}\n\nfunction createUniqueEditorScenePrefabNodeId(nodes: readonly EditorScenePrefabNode[], preferredId: string): string {\n const used = new Set(nodes.map(node => node.id));\n const base = normalizeEditorScenePrefabIdentifierPart(preferredId) ?? 'prefab_node';\n if (!used.has(base)) return base;\n let suffix = 1;\n let candidate = `${base}_${suffix}`;\n while (used.has(candidate)) {\n suffix += 1;\n candidate = `${base}_${suffix}`;\n }\n return candidate;\n}\n\nfunction isEditorScenePrefabNodeDescendant(\n nodes: readonly EditorScenePrefabNode[],\n candidateNodeId: string,\n ancestorNodeId: string,\n): boolean {\n let current = nodes.find(node => node.id === candidateNodeId);\n const visited = new Set<string>();\n while (current?.parentId) {\n if (current.parentId === ancestorNodeId) return true;\n if (visited.has(current.parentId)) return false;\n visited.add(current.parentId);\n current = nodes.find(node => node.id === current?.parentId);\n }\n return false;\n}\n\nfunction collectEditorScenePrefabNodeSubtree(\n nodes: readonly EditorScenePrefabNode[],\n nodeId: string,\n output: Set<string>,\n): void {\n if (output.has(nodeId)) return;\n output.add(nodeId);\n for (const child of nodes.filter(node => node.parentId === nodeId)) {\n collectEditorScenePrefabNodeSubtree(nodes, child.id, output);\n }\n}\n\nexport function createEditorScenePrefabDefinitionFromAsset<\n TAsset extends Pick<EditorSceneAsset, 'id' | 'guid' | 'displayName'>,\n>(\n sourceAsset: TAsset,\n options: {\n id?: string;\n guid?: string;\n displayName?: string;\n category?: string;\n defaults?: EditorScenePrefabDefaults;\n metadata?: Record<string, unknown>;\n } = {},\n): EditorSceneAsset<unknown> {\n return {\n id: options.id ?? `${sourceAsset.id}-prefab`,\n ...(options.guid ? { guid: options.guid } : {}),\n type: 'prefab',\n displayName: options.displayName ?? createEditorScenePrefabDisplayName(sourceAsset),\n category: options.category ?? 'Prefab',\n prefab: {\n sourceAssetId: sourceAsset.id,\n ...(sourceAsset.guid ? { sourceAssetGuid: sourceAsset.guid } : {}),\n ...(options.defaults ? { defaults: { ...options.defaults } } : {}),\n compositionVersion: EDITOR_SCENE_PREFAB_COMPOSITION_VERSION,\n rootNodeId: EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID,\n nodes: [\n {\n id: EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID,\n name: options.displayName ?? createEditorScenePrefabDisplayName(sourceAsset),\n kind: 'root',\n ...(options.defaults ? { defaults: { ...options.defaults } } : {}),\n },\n {\n id: EDITOR_SCENE_PREFAB_DEFAULT_MODEL_NODE_ID,\n name: sourceAsset.displayName ?? sourceAsset.id,\n parentId: EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID,\n kind: 'model',\n sourceAssetId: sourceAsset.id,\n },\n ],\n },\n ...(options.metadata ? { metadata: { ...options.metadata } } : {}),\n };\n}\n\nfunction readEditorScenePrefabExplicitNodes(\n prefab: Pick<EditorScenePrefabDefinition, 'nodes'>,\n): EditorScenePrefabNode[] {\n if (!Array.isArray(prefab.nodes)) return [];\n const nodes: EditorScenePrefabNode[] = [];\n for (const rawNode of prefab.nodes) {\n const node = readEditorScenePrefabNode(rawNode);\n if (node && !nodes.some(existing => existing.id === node.id)) nodes.push(node);\n }\n return structuredClone(nodes);\n}\n\nfunction readEditorScenePrefabNode(value: unknown): EditorScenePrefabNode | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const record = value as Partial<EditorScenePrefabNode>;\n const id = readEditorSceneNonEmptyString(record.id);\n if (!id || !isEditorScenePrefabNodeKind(record.kind)) return null;\n return {\n id,\n ...(readEditorSceneNonEmptyString(record.guid) ? { guid: readEditorSceneNonEmptyString(record.guid)! } : {}),\n ...(readEditorSceneNonEmptyString(record.name) ? { name: readEditorSceneNonEmptyString(record.name)! } : {}),\n ...(readEditorSceneNonEmptyString(record.parentId) ? { parentId: readEditorSceneNonEmptyString(record.parentId)! } : {}),\n kind: record.kind,\n ...(record.transform ? { transform: structuredClone(record.transform) } : {}),\n ...(readEditorSceneNonEmptyString(record.sourceAssetId) ? { sourceAssetId: readEditorSceneNonEmptyString(record.sourceAssetId)! } : {}),\n ...(readEditorSceneNonEmptyString(record.sourceNodePath) ? { sourceNodePath: readEditorSceneNonEmptyString(record.sourceNodePath)! } : {}),\n ...(readEditorSceneNonEmptyString(record.childPrefabId) ? { childPrefabId: readEditorSceneNonEmptyString(record.childPrefabId)! } : {}),\n ...(record.primitive ? { primitive: structuredClone(record.primitive) } : {}),\n ...(record.light ? { light: structuredClone(record.light) } : {}),\n ...(record.marker ? { marker: structuredClone(record.marker) } : {}),\n ...(record.defaults ? { defaults: structuredClone(record.defaults) } : {}),\n ...(record.overrides ? { overrides: structuredClone(record.overrides) } : {}),\n ...(record.metadata ? { metadata: structuredClone(record.metadata) } : {}),\n };\n}\n\nfunction isEditorScenePrefabNodeKind(value: unknown): value is EditorScenePrefabNode['kind'] {\n return value === 'root'\n || value === 'group'\n || value === 'model'\n || value === 'primitive'\n || value === 'light'\n || value === 'prefabInstance'\n || value === 'marker'\n || value === 'collision';\n}\n\nexport function createEditorScenePrefabInstanceGameObject(input: {\n id: string;\n guid?: string;\n name?: string;\n parentId?: string;\n prefabAsset: Pick<EditorSceneAsset, 'id' | 'guid' | 'displayName' | 'prefab'>;\n transform: EditorSceneTransformComponent;\n active?: boolean;\n shadow?: EditorScenePrefabDefaults['shadow'];\n metadata?: Record<string, unknown>;\n overrides?: unknown;\n}): EditorSceneGameObject {\n const sourceAssetId = resolveEditorScenePrefabSourceAssetId(input.prefabAsset);\n if (!sourceAssetId) {\n throw new Error(`Prefab asset \"${input.prefabAsset.id}\" does not define a source asset.`);\n }\n\n const defaults = input.prefabAsset.prefab?.defaults;\n return {\n id: input.id,\n ...(input.guid ? { guid: input.guid } : {}),\n name: input.name ?? input.prefabAsset.displayName ?? input.prefabAsset.id,\n kind: 'instance',\n ...(input.parentId ? { parentId: input.parentId } : {}),\n active: input.active ?? defaults?.active ?? true,\n ...(input.shadow ?? defaults?.shadow ? { shadow: structuredClone(input.shadow ?? defaults?.shadow) } : {}),\n prefab: {\n prefabId: input.prefabAsset.id,\n ...(input.prefabAsset.guid ? { prefabGuid: input.prefabAsset.guid } : {}),\n sourceAssetId,\n },\n ...(input.metadata ? { metadata: { ...input.metadata } } : {}),\n ...(input.overrides !== undefined ? { overrides: input.overrides } : {}),\n components: [\n input.transform,\n {\n type: 'ModelRenderer',\n assetId: sourceAssetId,\n },\n ],\n };\n}\n\nexport function createEditorScenePrefabDefinitionFromGameObject<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n gameObjectId: string,\n options: {\n id?: string;\n guid?: string;\n createGuid?: () => string;\n displayName?: string;\n category?: string;\n defaults?: EditorScenePrefabDefaults;\n metadata?: Record<string, unknown>;\n } = {},\n): EditorSceneAsset<unknown> | null {\n const gameObject = findEditorSceneGameObject(document, gameObjectId);\n if (!gameObject) return null;\n const modelRenderer = findEditorSceneModelRenderer(gameObject);\n const sourceAssetId = readEditorSceneNonEmptyString(modelRenderer?.assetId);\n if (!sourceAssetId) return null;\n const sourceAsset = document.assets.find(asset => asset.id === sourceAssetId);\n if (!sourceAsset || isEditorScenePrefabAsset(sourceAsset)) return null;\n\n const displayName = options.displayName\n ?? createEditorScenePrefabDisplayName({ id: gameObject.id, displayName: gameObject.name ?? sourceAsset.displayName });\n return createEditorScenePrefabDefinitionFromAsset(sourceAsset, {\n id: options.id ?? createUniqueEditorScenePrefabAssetId(document, `${gameObject.id}-prefab`),\n guid: options.guid ?? options.createGuid?.() ?? createEditorScenePrefabGuid(),\n displayName,\n category: options.category,\n defaults: options.defaults,\n metadata: options.metadata,\n });\n}\n\nexport function createEditorSceneDuplicatedPrefabDefinition<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n prefabAssetId: string,\n options: {\n id?: string;\n guid?: string;\n createGuid?: () => string;\n displayName?: string;\n category?: string;\n metadata?: Record<string, unknown>;\n } = {},\n): EditorSceneAsset<unknown> | null {\n const source = document.assets.find(asset => asset.id === prefabAssetId);\n if (!source || !isEditorScenePrefabAsset(source)) return null;\n const sourcePrefab = structuredClone(source.prefab);\n const displayName = options.displayName\n ?? createUniqueEditorScenePrefabDisplayName(\n document.assets.map(asset => asset.displayName ?? asset.id),\n `${source.displayName ?? source.id} Copy`,\n );\n return {\n ...structuredClone(source),\n id: options.id ?? createUniqueEditorScenePrefabAssetId(document, `${source.id}_copy`),\n guid: options.guid ?? options.createGuid?.() ?? createEditorScenePrefabGuid(),\n displayName,\n category: options.category ?? source.category,\n prefab: {\n ...sourcePrefab,\n ...(sourcePrefab.defaults ? { defaults: { ...sourcePrefab.defaults } } : {}),\n },\n ...(options.metadata ? { metadata: { ...options.metadata } } : {}),\n };\n}\n\nexport function readEditorScenePrefabOverrideMaterialPath(path: string): string | null {\n if (!path.startsWith(EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX)) return null;\n const materialPath = path.slice(EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX.length);\n return isEditorSceneArtistMaterialPatchPath(materialPath) ? materialPath : null;\n}\n\nexport function isEditorScenePrefabOverridePath(path: string): boolean {\n return readEditorScenePrefabOverrideMaterialPath(path) != null;\n}\n\nexport function isEditorScenePrefabCoreMaterialOverridePath(path: string): boolean {\n const materialPath = readEditorScenePrefabOverrideMaterialPath(path);\n if (!materialPath) return false;\n if (materialPath.endsWith('.materialAssetId')) return true;\n const profilePath = readEditorScenePrefabOverrideProfileFieldPath(path);\n return profilePath != null && EDITOR_SCENE_PREFAB_CORE_MATERIAL_OVERRIDE_PROFILE_FIELD_PATHS.has(profilePath);\n}\n\nexport function isEditorScenePrefabMaterialAssetIdOverridePath(path: string): boolean {\n return path.startsWith(EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX)\n && path.endsWith('.materialAssetId')\n && isEditorScenePrefabCoreMaterialOverridePath(path);\n}\n\nexport function readEditorScenePrefabMaterialOverrideBinding<\n TBinding extends EditorSceneMaterialBinding = EditorSceneMaterialBinding,\n>(\n prefabAsset: Pick<EditorSceneAsset, 'prefab'>,\n target: { slotId?: string; ownerNodePath?: string },\n): TBinding | undefined {\n if (target.slotId) {\n return readEditorSceneMaterialBindingConfig<TBinding>(prefabAsset.prefab?.overrides?.materialSlotBindings?.[target.slotId]);\n }\n return undefined;\n}\n\nexport function readEditorScenePrefabOverrideProfileFieldPath(path: string): string | null {\n const materialPath = readEditorScenePrefabOverrideMaterialPath(path);\n if (!materialPath) return null;\n const marker = '.override.';\n const markerIndex = materialPath.lastIndexOf(marker);\n if (markerIndex < 0) return null;\n const profilePath = materialPath.slice(markerIndex + marker.length);\n return profilePath ? `profile.${profilePath}` : null;\n}\n\nexport function patchEditorScenePrefabOverride<\n TAsset extends EditorSceneAsset = EditorSceneAsset,\n>(\n prefabAsset: TAsset,\n path: string,\n value: unknown,\n): TAsset {\n const materialPath = readEditorScenePrefabOverrideMaterialPath(path);\n if (!materialPath || !isEditorScenePrefabAsset(prefabAsset)) return prefabAsset;\n const segments = splitEditorScenePrefabOverrideFieldPath(materialPath);\n if (!segments) return prefabAsset;\n\n const next = structuredClone(prefabAsset) as TAsset;\n next.prefab = structuredClone(next.prefab ?? prefabAsset.prefab);\n applyEditorScenePrefabOverrideJsonPatch(next.prefab as unknown as Record<string, unknown>, segments, value);\n const prunedOverrides = pruneEditorScenePrefabOverrides(next.prefab?.overrides);\n if (prunedOverrides) {\n next.prefab!.overrides = prunedOverrides;\n } else {\n delete next.prefab!.overrides;\n }\n return JSON.stringify(next) === JSON.stringify(prefabAsset) ? prefabAsset : next;\n}\n\nexport function mergeEditorSceneMaterialBindingOverrides<TOverride = unknown>(\n base: EditorSceneMaterialBinding<TOverride> | null | undefined,\n override: EditorSceneMaterialBinding<TOverride> | null | undefined,\n): EditorSceneMaterialBinding<TOverride> | undefined {\n const baseMaterialAssetId = readEditorSceneNonEmptyString(base?.materialAssetId);\n const overrideMaterialAssetId = readEditorSceneNonEmptyString(override?.materialAssetId);\n const profile = mergeArtistMaterialProfiles(\n base?.override as ArtistMaterialProfile | null | undefined,\n override?.override as ArtistMaterialProfile | null | undefined,\n ) as TOverride;\n return pruneEditorSceneMaterialBinding({\n ...(overrideMaterialAssetId ?? baseMaterialAssetId\n ? { materialAssetId: overrideMaterialAssetId ?? baseMaterialAssetId }\n : {}),\n ...(hasEditorSceneObjectFields(profile) ? { override: profile } : {}),\n });\n}\n\nexport function mergeEditorScenePrefabOverrides<TOverride = unknown>(\n base: EditorScenePrefabOverrides<TOverride> | null | undefined,\n override: EditorScenePrefabOverrides<TOverride> | null | undefined,\n): EditorScenePrefabOverrides<TOverride> | undefined {\n const next: EditorScenePrefabOverrides<TOverride> = {};\n const materialBinding = mergeEditorSceneMaterialBindingOverrides(base?.materialBinding, override?.materialBinding);\n if (materialBinding) next.materialBinding = materialBinding;\n\n const materialSlotBindings = mergeEditorSceneMaterialBindingRecords(\n base?.materialSlotBindings,\n override?.materialSlotBindings,\n );\n if (materialSlotBindings) next.materialSlotBindings = materialSlotBindings;\n\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nexport function resolveEditorScenePrefabInstanceEffectiveOverrides<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n gameObjectId: string,\n): EditorScenePrefabOverrides | undefined {\n const relation = resolveEditorScenePrefabInstanceRelation(document, gameObjectId);\n if (!relation.gameObject || !relation.prefab) return undefined;\n return mergeEditorScenePrefabOverrides(\n relation.definition?.prefab?.overrides,\n readEditorScenePrefabOverrides(relation.gameObject.overrides),\n );\n}\n\nexport function createEditorScenePrefabAgentSummary<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n gameObjectId: string,\n): EditorScenePrefabAgentSummary | null {\n const relation = resolveEditorScenePrefabInstanceRelation(document, gameObjectId);\n if (!relation.gameObject || !relation.prefab) return null;\n const errorCount = relation.diagnostics.filter(diagnostic => diagnostic.severity === 'error').length;\n const warningCount = relation.diagnostics.filter(diagnostic => diagnostic.severity === 'warning').length;\n const sourceAssetId = resolveEditorScenePrefabSourceAssetId(relation.definition)\n ?? readEditorSceneNonEmptyString(relation.prefab.sourceAssetId)\n ?? undefined;\n const effectiveOverrides = resolveEditorScenePrefabInstanceEffectiveOverrides(document, gameObjectId);\n const summary: EditorScenePrefabAgentSummary = {\n kind: 'prefab-instance',\n status: errorCount > 0 ? 'error' : warningCount > 0 ? 'warning' : 'ok',\n prefabId: relation.prefab.prefabId,\n ...(relation.prefab.prefabGuid ? { prefabGuid: relation.prefab.prefabGuid } : {}),\n ...(readEditorSceneNonEmptyString(relation.definition?.displayName)\n ? { prefabDisplayName: readEditorSceneNonEmptyString(relation.definition?.displayName)! }\n : {}),\n ...(sourceAssetId ? { sourceAssetId } : {}),\n ...(readEditorSceneNonEmptyString(relation.sourceAsset?.guid) ? { sourceAssetGuid: readEditorSceneNonEmptyString(relation.sourceAsset?.guid)! } : {}),\n ...(readEditorSceneNonEmptyString(relation.sourceAsset?.displayName)\n ? { sourceAssetDisplayName: readEditorSceneNonEmptyString(relation.sourceAsset?.displayName)! }\n : {}),\n ...(readEditorSceneNonEmptyString(relation.prefab.sourceAssetId) ? { instanceSourceAssetId: readEditorSceneNonEmptyString(relation.prefab.sourceAssetId)! } : {}),\n diagnostics: relation.diagnostics.map(diagnostic => ({ ...diagnostic })),\n materialTargets: createEditorScenePrefabAgentMaterialTargets(relation.sourceAsset),\n ...(effectiveOverrides ? { effectiveOverrides } : {}),\n };\n return summary;\n}\n\nexport function resolveEditorScenePrefabInstanceRelation<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n gameObjectId: string,\n): EditorScenePrefabInstanceRelation<TDocument['scene']['gameObjects'][number], TDocument['assets'][number]> {\n const gameObject = findEditorSceneGameObject(document, gameObjectId) as TDocument['scene']['gameObjects'][number] | null;\n const diagnostics: EditorScenePrefabRelationDiagnostic[] = [];\n const prefab = isEditorScenePrefabInstance(gameObject) ? gameObject.prefab : null;\n if (!gameObject || !prefab) {\n diagnostics.push({\n code: 'not-prefab-instance',\n severity: 'info',\n message: gameObject\n ? `GameObject \"${gameObject.id}\" is not a prefab instance.`\n : `GameObject \"${gameObjectId}\" was not found.`,\n });\n return {\n gameObject,\n prefab: null,\n definition: null,\n sourceAsset: null,\n diagnostics,\n };\n }\n\n const definition = document.assets.find(asset => asset.id === prefab.prefabId && isEditorScenePrefabAsset(asset)) as (\n TDocument['assets'][number] | undefined\n );\n if (!definition) {\n diagnostics.push({\n code: 'missing-prefab-definition',\n severity: 'error',\n message: `Prefab definition \"${prefab.prefabId}\" was not found.`,\n prefabId: prefab.prefabId,\n });\n }\n\n const expectedSourceAssetId = resolveEditorScenePrefabSourceAssetId(definition) ?? readEditorSceneNonEmptyString(prefab.sourceAssetId);\n if (definition && prefab.sourceAssetId && expectedSourceAssetId && prefab.sourceAssetId !== expectedSourceAssetId) {\n diagnostics.push({\n code: 'source-asset-mismatch',\n severity: 'warning',\n message: `Prefab instance source \"${prefab.sourceAssetId}\" does not match definition source \"${expectedSourceAssetId}\".`,\n prefabId: prefab.prefabId,\n expectedSourceAssetId,\n actualSourceAssetId: prefab.sourceAssetId,\n });\n }\n\n const sourceAsset = expectedSourceAssetId\n ? document.assets.find(asset => asset.id === expectedSourceAssetId) as (TDocument['assets'][number] | undefined)\n : undefined;\n if (expectedSourceAssetId && !sourceAsset) {\n diagnostics.push({\n code: 'missing-source-asset',\n severity: 'error',\n message: `Prefab source asset \"${expectedSourceAssetId}\" was not found.`,\n prefabId: prefab.prefabId,\n sourceAssetId: expectedSourceAssetId,\n });\n }\n\n if (expectedSourceAssetId) {\n const sourcePrefabIds = document.assets\n .filter(asset => isEditorScenePrefabAsset(asset) && resolveEditorScenePrefabSourceAssetId(asset) === expectedSourceAssetId)\n .map(asset => asset.id);\n if (sourcePrefabIds.length > 1) {\n diagnostics.push({\n code: 'duplicate-source-prefab',\n severity: 'info',\n message: `Source asset \"${expectedSourceAssetId}\" is referenced by ${sourcePrefabIds.length} prefab definitions.`,\n prefabId: prefab.prefabId,\n sourceAssetId: expectedSourceAssetId,\n });\n }\n }\n\n return {\n gameObject,\n prefab,\n definition: definition ?? null,\n sourceAsset: sourceAsset ?? null,\n diagnostics,\n };\n}\n\nfunction createEditorScenePrefabAgentMaterialTargets(\n sourceAsset: EditorSceneAsset | null,\n): EditorScenePrefabAgentMaterialTarget[] {\n const rawSlots = Array.isArray(sourceAsset?.metadata?.materialSlots) ? sourceAsset.metadata.materialSlots : [];\n const targets: EditorScenePrefabAgentMaterialTarget[] = [];\n for (const [index, rawSlot] of rawSlots.entries()) {\n const slot = readEditorScenePrefabAgentMaterialSlot(rawSlot);\n if (!slot) continue;\n const bindingPath = `prefab.overrides.materialSlotBindings.${slot.slotId}`;\n targets.push({\n kind: 'material-slot',\n label: slot.label ?? slot.materialName ?? slot.ownerNodePath ?? `Material Slot ${index + 1}`,\n bindingPath,\n materialAssetIdPath: `${bindingPath}.materialAssetId`,\n overridePath: `${bindingPath}.override`,\n slotId: slot.slotId,\n ownerNodePath: slot.ownerNodePath,\n ...(slot.sourceMaterialIndex != null ? { sourceMaterialIndex: slot.sourceMaterialIndex } : {}),\n ...(slot.materialName ? { sourceMaterialName: slot.materialName } : {}),\n });\n }\n return targets;\n}\n\nfunction readEditorScenePrefabAgentMaterialSlot(value: unknown): {\n slotId: string;\n ownerNodePath: string;\n label?: string;\n materialName?: string;\n sourceMaterialIndex?: number;\n} | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const record = value as Record<string, unknown>;\n const ownerNodePath = normalizeEditorSceneMaterialSlotOwnerPath(\n readEditorSceneNonEmptyString(record.ownerNodePath) ?? '',\n );\n const slotId = readEditorSceneNonEmptyString(record.slotId);\n if (!slotId || !ownerNodePath) return null;\n const label = readEditorSceneNonEmptyString(record.label) ?? undefined;\n const materialName = readEditorSceneNonEmptyString(record.materialName) ?? undefined;\n const sourceMaterialIndex = Number.isInteger(record.sourceMaterialIndex) ? record.sourceMaterialIndex as number : undefined;\n return {\n slotId,\n ownerNodePath,\n ...(label ? { label } : {}),\n ...(materialName ? { materialName } : {}),\n ...(sourceMaterialIndex != null ? { sourceMaterialIndex } : {}),\n };\n}\n\nexport function readEditorSceneNodeKind(gameObject: EditorSceneGameObject): EditorSceneNodeKind {\n if (\n gameObject.kind === 'group'\n || gameObject.kind === 'instance'\n || gameObject.kind === 'transform'\n || gameObject.kind === 'primitive'\n ) {\n return gameObject.kind;\n }\n if (isEditorScenePrefabInstance(gameObject)) return 'instance';\n if (gameObject.primitive) return 'primitive';\n if (findEditorSceneModelRenderer(gameObject)) return 'instance';\n if (gameObject.transformType) return 'transform';\n return 'group';\n}\n\nexport function resolveEditorSceneGameObjectRendering(\n gameObject: Pick<EditorSceneGameObject, 'rendering'>,\n): EditorSceneResolvedGameObjectRendering | undefined {\n const rendering = gameObject.rendering && typeof gameObject.rendering === 'object' && !Array.isArray(gameObject.rendering)\n ? gameObject.rendering\n : undefined;\n const renderingGroupId = readEditorSceneGameObjectRenderingGroupId(rendering?.renderingGroupId);\n const alphaIndex = readEditorSceneFiniteNumber(rendering?.alphaIndex);\n const resolved: EditorSceneResolvedGameObjectRendering = {};\n if (renderingGroupId != null) resolved.renderingGroupId = renderingGroupId;\n if (alphaIndex != null) resolved.alphaIndex = alphaIndex;\n return Object.keys(resolved).length > 0 ? resolved : undefined;\n}\n\nexport function readEditorSceneGameObjectRenderingGroupId(\n value: unknown,\n): EditorSceneGameObjectRenderingGroupId | null {\n return value === 0 || value === 1 || value === 2 || value === 3 ? value : null;\n}\n\nexport function readEditorSceneGameObjectAlphaIndex(value: unknown): number | null {\n return readEditorSceneFiniteNumber(value);\n}\n\nfunction isEditorSceneTransformComponent(\n component: EditorSceneComponent,\n): component is EditorSceneTransformComponent {\n return component.type === 'Transform';\n}\n\nfunction isEditorSceneModelRendererComponent(\n component: EditorSceneComponent,\n): component is EditorSceneModelRendererComponent {\n return component.type === 'ModelRenderer';\n}\n\nfunction readEditorSceneFiniteNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\n\nfunction readEditorSceneNonEmptyString(value: unknown): string | null {\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;\n}\n\nfunction normalizeEditorScenePrefabEditableName(value: unknown): { ok: true; name: string } | { ok: false; message: string } {\n if (typeof value !== 'string') return { ok: false, message: 'Prefab name must be a string.' };\n const name = value.trim();\n if (!name) return { ok: false, message: 'Prefab name cannot be empty.' };\n if (name.length > 80) return { ok: false, message: 'Prefab name cannot be longer than 80 characters.' };\n if (/[\\u0000-\\u001f\\u007f/\\\\]/u.test(name)) {\n return { ok: false, message: 'Prefab name cannot contain control characters, /, or \\\\.' };\n }\n return { ok: true, name };\n}\n\nfunction findEditorSceneGameObject(\n document: EditorSceneDocument,\n gameObjectId: string,\n): EditorSceneGameObject | null {\n return document.scene.gameObjects.find(gameObject => gameObject.id === gameObjectId) ?? null;\n}\n\nfunction createEditorScenePrefabDisplayName(sourceAsset: Pick<EditorSceneAsset, 'id' | 'displayName'>): string {\n const displayName = readEditorSceneNonEmptyString(sourceAsset.displayName)\n ?? readEditorSceneNonEmptyString(sourceAsset.id)\n ?? 'Prefab';\n return `${displayName} Prefab`;\n}\n\nexport function createEditorScenePrefabGuid(): string {\n const randomId = globalThis.crypto?.randomUUID?.() ?? `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n return `prefab_${randomId}`;\n}\n\nexport function createUniqueEditorScenePrefabAssetId(\n document: EditorSceneDocument,\n preferredId: string,\n): string {\n const used = new Set(document.assets.map(asset => asset.id));\n const base = normalizeEditorScenePrefabIdentifierPart(preferredId) ?? 'prefab';\n if (!used.has(base)) return base;\n let suffix = 1;\n let candidate = `${base}_${suffix}`;\n while (used.has(candidate)) {\n suffix += 1;\n candidate = `${base}_${suffix}`;\n }\n return candidate;\n}\n\nfunction createUniqueEditorScenePrefabDisplayName(\n existingNames: readonly unknown[],\n preferredName: string,\n): string {\n const used = new Set(\n existingNames\n .map(name => readEditorSceneNonEmptyString(name))\n .filter((name): name is string => !!name),\n );\n if (!used.has(preferredName)) return preferredName;\n let suffix = 1;\n let candidate = `${preferredName} ${suffix}`;\n while (used.has(candidate)) {\n suffix += 1;\n candidate = `${preferredName} ${suffix}`;\n }\n return candidate;\n}\n\nexport function normalizeEditorScenePrefabIdentifierPart(value: unknown): string | null {\n const raw = readEditorSceneNonEmptyString(value);\n if (!raw) return null;\n const normalized = raw\n .replace(/\\s+/g, '_')\n .replace(/[^a-zA-Z0-9_:-]/g, '_')\n .replace(/_+/g, '_')\n .replace(/^_+|_+$/g, '');\n return normalized || null;\n}\n\nfunction splitEditorScenePrefabOverrideFieldPath(path: string): string[] | null {\n if (path === 'overrides.materialBinding.materialAssetId') {\n return ['overrides', 'materialBinding', 'materialAssetId'];\n }\n const rootOverridePrefix = 'overrides.materialBinding.override.';\n if (path.startsWith(rootOverridePrefix)) {\n const profilePath = path.slice(rootOverridePrefix.length);\n return splitEditorScenePrefabProfilePath(['overrides', 'materialBinding', 'override'], profilePath);\n }\n\n const slotMaterialAssetId = readEditorSceneMaterialSlotBindingSlotId(path, 'materialAssetId');\n if (slotMaterialAssetId) {\n return ['overrides', 'materialSlotBindings', slotMaterialAssetId, 'materialAssetId'];\n }\n const slotOverrideId = readEditorSceneMaterialSlotBindingSlotId(path, 'override');\n if (slotOverrideId) {\n const profilePath = readEditorSceneBindingOverrideProfilePath(path);\n return profilePath\n ? splitEditorScenePrefabProfilePath(['overrides', 'materialSlotBindings', slotOverrideId, 'override'], profilePath)\n : null;\n }\n\n return null;\n}\n\nfunction readEditorSceneBindingOverrideProfilePath(path: string): string | null {\n const marker = '.override.';\n const markerIndex = path.lastIndexOf(marker);\n if (markerIndex < 0) return null;\n const profilePath = path.slice(markerIndex + marker.length);\n return profilePath ? profilePath : null;\n}\n\nfunction splitEditorScenePrefabProfilePath(prefix: string[], profilePath: string): string[] | null {\n const profileSegments = profilePath.split('.').filter(Boolean);\n if (profileSegments.length === 0 || profileSegments.some(isUnsafeEditorScenePrefabOverridePathSegment)) return null;\n return [...prefix, ...profileSegments];\n}\n\nfunction applyEditorScenePrefabOverrideJsonPatch(\n target: Record<string, unknown>,\n segments: string[],\n value: unknown,\n): void {\n if (segments.some(isUnsafeEditorScenePrefabOverridePathSegment)) return;\n let cursor = target;\n for (const segment of segments.slice(0, -1)) {\n const current = cursor[segment];\n if (!current || typeof current !== 'object' || Array.isArray(current)) {\n cursor[segment] = {};\n }\n cursor = cursor[segment] as Record<string, unknown>;\n }\n const leaf = segments[segments.length - 1];\n if (!leaf) return;\n if (value == null) delete cursor[leaf];\n else cursor[leaf] = structuredClone(value);\n}\n\nfunction pruneEditorScenePrefabOverrides<TOverride = unknown>(\n overrides: unknown,\n): EditorScenePrefabOverrides<TOverride> | undefined {\n if (!overrides || typeof overrides !== 'object' || Array.isArray(overrides)) return undefined;\n const source = overrides as EditorScenePrefabOverrides<TOverride>;\n const next: EditorScenePrefabOverrides<TOverride> = {};\n\n const materialBinding = pruneEditorSceneMaterialBinding<TOverride>(source.materialBinding);\n if (materialBinding) next.materialBinding = materialBinding;\n\n const materialSlotBindings = pruneEditorSceneMaterialBindingRecord<TOverride>(source.materialSlotBindings);\n if (materialSlotBindings) next.materialSlotBindings = materialSlotBindings;\n\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nfunction pruneEditorSceneMaterialBinding<TOverride = unknown>(\n binding: unknown,\n): EditorSceneMaterialBinding<TOverride> | undefined {\n if (!binding || typeof binding !== 'object' || Array.isArray(binding)) return undefined;\n const source = binding as EditorSceneMaterialBinding<TOverride>;\n const materialAssetId = readEditorSceneNonEmptyString(source.materialAssetId);\n const profile = mergeArtistMaterialProfiles(source.override as ArtistMaterialProfile | null | undefined) as TOverride;\n const next: EditorSceneMaterialBinding<TOverride> = {\n ...(materialAssetId ? { materialAssetId } : {}),\n ...(hasEditorSceneObjectFields(profile) ? { override: profile } : {}),\n };\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nfunction pruneEditorSceneMaterialBindingRecord<TOverride = unknown>(\n record: unknown,\n): Record<string, EditorSceneMaterialBinding<TOverride>> | undefined {\n if (!record || typeof record !== 'object' || Array.isArray(record)) return undefined;\n const next: Record<string, EditorSceneMaterialBinding<TOverride>> = {};\n for (const [key, binding] of Object.entries(record)) {\n const normalizedKey = readEditorSceneNonEmptyString(key);\n if (!normalizedKey) continue;\n const prunedBinding = pruneEditorSceneMaterialBinding<TOverride>(binding);\n if (prunedBinding) next[normalizedKey] = prunedBinding;\n }\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nfunction mergeEditorSceneMaterialBindingRecords<TOverride = unknown>(\n base: Record<string, EditorSceneMaterialBinding<TOverride> | undefined> | null | undefined,\n override: Record<string, EditorSceneMaterialBinding<TOverride> | undefined> | null | undefined,\n): Record<string, EditorSceneMaterialBinding<TOverride>> | undefined {\n const keys = new Set([\n ...Object.keys(base ?? {}),\n ...Object.keys(override ?? {}),\n ]);\n const next: Record<string, EditorSceneMaterialBinding<TOverride>> = {};\n for (const key of keys) {\n const binding = mergeEditorSceneMaterialBindingOverrides(base?.[key], override?.[key]);\n if (binding) next[key] = binding;\n }\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nfunction readEditorScenePrefabOverrides(value: unknown): EditorScenePrefabOverrides | undefined {\n return pruneEditorScenePrefabOverrides(value);\n}\n\nfunction hasEditorSceneObjectFields(value: unknown): boolean {\n return !!value && typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length > 0;\n}\n\nfunction isUnsafeEditorScenePrefabOverridePathSegment(segment: string): boolean {\n return segment === '__proto__' || segment === 'prototype' || segment === 'constructor';\n}\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/document/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n mergeArtistMaterialProfiles,\n type ArtistMaterialProfile,\n type SpatialMarkerTargetRef,\n type SpatialMarkerTypeDefinition,\n} from '@fps-games/editor-protocol';\nimport type {\n EditorSceneMaterialBinding,\n} from '../material-binding/types';\nimport {\n isEditorSceneArtistMaterialPatchPath,\n normalizeEditorSceneMaterialSlotOwnerPath,\n readEditorSceneMaterialSlotBindingSlotId,\n} from '../material-binding/paths';\nimport {\n readEditorSceneMaterialBindingConfig,\n} from '../material-binding/binding';\nimport type {\n EditorSceneComponent,\n EditorSceneAsset,\n EditorSceneDocument,\n EditorSceneGameObject,\n EditorSceneGameObjectRenderingGroupId,\n EditorSceneMarkerConfig,\n EditorSceneModelRendererComponent,\n EditorSceneNodeKind,\n EditorScenePrefabNode,\n EditorScenePrefabDefaults,\n EditorScenePrefabDefinition,\n EditorScenePrefabAgentSummary,\n EditorScenePrefabAgentMaterialTarget,\n EditorScenePrefabMutationDiagnostic,\n EditorScenePrefabMutationResult,\n EditorScenePrefabOverrides,\n EditorScenePrefabInstanceRelation,\n EditorScenePrefabRelationDiagnostic,\n EditorScenePrefabInstance,\n EditorSceneResolvedGameObjectRendering,\n EditorSceneTransformComponent,\n EditorSceneColorRgb,\n} from './types';\nimport type {\n EditorShadowMapExperimentObjectOverride,\n EditorShadowSettings,\n} from '@fps-games/playable-rendering';\n\nexport const EDITOR_SCENE_PREFAB_COMPOSITION_VERSION = 1;\nexport const EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID = 'prefab-root';\nexport const EDITOR_SCENE_PREFAB_DEFAULT_MODEL_NODE_ID = 'prefab-model';\n\nconst EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX = 'prefab.';\nconst EDITOR_SCENE_PREFAB_CORE_MATERIAL_OVERRIDE_PROFILE_FIELD_PATHS = new Set([\n 'profile.baseColor.color',\n 'profile.baseColor.texture.textureAssetId',\n 'profile.normal.texture.textureAssetId',\n 'profile.normal.strength',\n 'profile.metallic',\n 'profile.roughness',\n 'profile.emission.color',\n 'profile.emission.intensity',\n 'profile.emission.texture.textureAssetId',\n]);\n\nexport function cloneEditorSceneDocument<TDocument extends EditorSceneDocument>(\n document: TDocument,\n): TDocument {\n try {\n return cloneEditorSceneAuthoredValue(document, new WeakMap()) as TDocument;\n } catch (error) {\n if (error !== UNSUPPORTED_EDITOR_SCENE_AUTHORED_CLONE_VALUE) throw error;\n return structuredClone(document) as TDocument;\n }\n}\n\nconst UNSUPPORTED_EDITOR_SCENE_AUTHORED_CLONE_VALUE = Symbol(\n 'unsupported-editor-scene-authored-clone-value',\n);\n\nfunction cloneEditorSceneAuthoredValue(\n value: unknown,\n clones: WeakMap<object, unknown>,\n): unknown {\n const valueType = typeof value;\n if (valueType === 'function' || valueType === 'symbol') {\n throw UNSUPPORTED_EDITOR_SCENE_AUTHORED_CLONE_VALUE;\n }\n if (value === null || valueType !== 'object') return value;\n const objectValue = value as object;\n const existing = clones.get(objectValue);\n if (existing !== undefined) return existing;\n if (Array.isArray(value)) {\n const clone = new Array(value.length);\n clones.set(objectValue, clone);\n for (let index = 0; index < value.length; index += 1) {\n if (index in value) clone[index] = cloneEditorSceneAuthoredValue(value[index], clones);\n }\n return clone;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw UNSUPPORTED_EDITOR_SCENE_AUTHORED_CLONE_VALUE;\n }\n const recordValue = value as Record<string, unknown>;\n const clone = prototype === null ? Object.create(null) as Record<string, unknown> : {};\n clones.set(objectValue, clone);\n for (const key of Object.keys(recordValue)) {\n clone[key] = cloneEditorSceneAuthoredValue(recordValue[key], clones);\n }\n return clone;\n}\n\nexport function findEditorSceneTransform(\n gameObject: Pick<EditorSceneGameObject, 'components'>,\n): EditorSceneTransformComponent | null {\n return gameObject.components.find(isEditorSceneTransformComponent) ?? null;\n}\n\nexport function findEditorSceneModelRenderer(\n gameObject: Pick<EditorSceneGameObject, 'components'>,\n): EditorSceneModelRendererComponent | null {\n return gameObject.components.find(isEditorSceneModelRendererComponent) ?? null;\n}\n\nexport function isEditorScenePrefabAsset(\n asset: Pick<EditorSceneAsset, 'type' | 'prefab'> | null | undefined,\n): asset is Pick<EditorSceneAsset, 'type'> & { prefab: EditorScenePrefabDefinition } {\n return asset?.type === 'prefab' && readEditorSceneNonEmptyString(asset.prefab?.sourceAssetId) != null;\n}\n\nexport function findEditorScenePrefabAsset<TAsset extends EditorSceneAsset = EditorSceneAsset>(\n document: Pick<EditorSceneDocument<EditorSceneGameObject, TAsset>, 'assets'>,\n assetId: string,\n): TAsset | null {\n const asset = document.assets.find(candidate => candidate.id === assetId);\n return asset && isEditorScenePrefabAsset(asset) ? asset : null;\n}\n\nexport function hasEditorScenePrefabForSourceAsset(\n document: Pick<EditorSceneDocument, 'assets'>,\n sourceAssetId: unknown,\n): boolean {\n return typeof sourceAssetId === 'string' && sourceAssetId.trim().length > 0\n ? document.assets.some(asset => isEditorScenePrefabAsset(asset) && asset.prefab.sourceAssetId === sourceAssetId)\n : false;\n}\n\nexport function isEditorScenePrefabInstance(\n gameObject: Pick<EditorSceneGameObject, 'prefab'> | null | undefined,\n): gameObject is Pick<EditorSceneGameObject, 'prefab'> & { prefab: EditorScenePrefabInstance } {\n return readEditorSceneNonEmptyString(gameObject?.prefab?.prefabId) != null;\n}\n\nexport function resolveEditorScenePrefabSourceAssetId(\n prefabAsset: Pick<EditorSceneAsset, 'prefab'> | null | undefined,\n): string | null {\n return readEditorSceneNonEmptyString(prefabAsset?.prefab?.sourceAssetId);\n}\n\nexport function readEditorScenePrefabRootNodeId(\n prefabAsset: Pick<EditorSceneAsset, 'prefab' | 'displayName'> | null | undefined,\n): string | null {\n if (!prefabAsset?.prefab) return null;\n const nodes = readEditorScenePrefabExplicitNodes(prefabAsset.prefab);\n const explicitRootNodeId = readEditorSceneNonEmptyString(prefabAsset.prefab.rootNodeId);\n if (explicitRootNodeId && nodes.some(node => node.id === explicitRootNodeId)) return explicitRootNodeId;\n const explicitRoot = nodes.find(node => node.kind === 'root' && !node.parentId);\n if (explicitRoot) return explicitRoot.id;\n return null;\n}\n\nexport function readEditorScenePrefabNodes(\n prefabAsset: Pick<EditorSceneAsset, 'prefab' | 'displayName'> | null | undefined,\n): EditorScenePrefabNode[] {\n if (!prefabAsset?.prefab) return [];\n return readEditorScenePrefabExplicitNodes(prefabAsset.prefab);\n}\n\nexport function findEditorScenePrefabNode(\n prefabAsset: Pick<EditorSceneAsset, 'prefab' | 'displayName'> | null | undefined,\n nodeId: string,\n): EditorScenePrefabNode | null {\n const normalizedNodeId = readEditorSceneNonEmptyString(nodeId);\n if (!normalizedNodeId) return null;\n return readEditorScenePrefabNodes(prefabAsset).find(node => node.id === normalizedNodeId) ?? null;\n}\n\nexport function readEditorScenePrefabNodeChildren(\n prefabAsset: Pick<EditorSceneAsset, 'prefab' | 'displayName'> | null | undefined,\n parentNodeId: string | null | undefined,\n): EditorScenePrefabNode[] {\n const normalizedParentId = readEditorSceneNonEmptyString(parentNodeId);\n return readEditorScenePrefabNodes(prefabAsset).filter((node) => {\n const parentId = readEditorSceneNonEmptyString(node.parentId);\n return normalizedParentId ? parentId === normalizedParentId : !parentId;\n });\n}\n\nexport function ensureEditorScenePrefabComposition<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n): EditorScenePrefabMutationResult<TAsset> {\n if (!isEditorScenePrefabAsset(prefabAsset)) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'prefab.invalidDefinition',\n severity: 'error',\n message: `Asset \"${prefabAsset.id}\" is not a valid prefab definition.`,\n assetId: prefabAsset.id,\n }]);\n }\n\n const nodes = readEditorScenePrefabExplicitNodes(prefabAsset.prefab);\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n if (prefabAsset.prefab.compositionVersion !== EDITOR_SCENE_PREFAB_COMPOSITION_VERSION\n || nodes.length === 0\n || !rootNodeId) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'schema.unsupportedVersion',\n severity: 'error',\n message: `Prefab asset \"${prefabAsset.id}\" must use composition version ${EDITOR_SCENE_PREFAB_COMPOSITION_VERSION} with an explicit root node.`,\n assetId: prefabAsset.id,\n }]);\n }\n\n const next = cloneEditorScenePrefabAssetWithComposition(prefabAsset);\n return createEditorScenePrefabMutationResult(next, JSON.stringify(next.prefab) !== JSON.stringify(prefabAsset.prefab));\n}\n\nexport function selectEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const normalizedNodeId = readEditorSceneNonEmptyString(nodeId);\n const node = normalizedNodeId ? findEditorScenePrefabNode(prepared.prefabAsset, normalizedNodeId) : null;\n if (!node) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [], {\n selectedNodeId: node.id,\n });\n}\n\nexport function renameEditorScenePrefabAsset<\n TDocument extends Pick<EditorSceneDocument, 'assets'>,\n>(\n document: TDocument,\n assetId: string,\n displayName: unknown,\n): EditorScenePrefabMutationResult<EditorSceneAsset> {\n const normalizedAssetId = readEditorSceneNonEmptyString(assetId);\n const prefabAsset = normalizedAssetId\n ? document.assets.find(asset => asset.id === normalizedAssetId && isEditorScenePrefabAsset(asset))\n : null;\n if (!prefabAsset) {\n return createEditorScenePrefabMutationResult({\n id: normalizedAssetId ?? String(assetId ?? ''),\n type: 'prefab',\n prefab: { sourceAssetId: '' },\n }, false, null, [{\n code: 'prefab.invalidDefinition',\n severity: 'error',\n message: `Prefab asset \"${assetId}\" was not found.`,\n assetId,\n }]);\n }\n const nameResult = normalizeEditorScenePrefabEditableName(displayName);\n if (!nameResult.ok) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'prefab.invalidName',\n severity: 'error',\n message: nameResult.message,\n assetId: prefabAsset.id,\n }]);\n }\n const normalizedDisplayName = nameResult.name;\n const lowerName = normalizedDisplayName.toLowerCase();\n const conflict = document.assets.find(candidate => (\n candidate.id !== prefabAsset.id\n && isEditorScenePrefabAsset(candidate)\n && readEditorSceneNonEmptyString(candidate.displayName)?.toLowerCase() === lowerName\n ));\n if (conflict) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'prefab.nameConflict',\n severity: 'error',\n message: `Prefab asset name \"${normalizedDisplayName}\" is already used by \"${conflict.id}\".`,\n assetId: prefabAsset.id,\n }]);\n }\n if (prefabAsset.displayName === normalizedDisplayName) {\n return createEditorScenePrefabMutationResult(prefabAsset, false);\n }\n const next = cloneEditorScenePrefabAssetWithComposition({\n ...structuredClone(prefabAsset),\n displayName: normalizedDisplayName,\n });\n const rootNodeId = readEditorScenePrefabRootNodeId(next);\n if (rootNodeId && Array.isArray(next.prefab?.nodes)) {\n const rootIndex = next.prefab.nodes.findIndex(node => node.id === rootNodeId);\n if (rootIndex >= 0) {\n next.prefab.nodes = [...next.prefab.nodes];\n next.prefab.nodes[rootIndex] = {\n ...structuredClone(next.prefab.nodes[rootIndex]!),\n name: normalizedDisplayName,\n };\n }\n }\n return createEditorScenePrefabMutationResult(next, true);\n}\n\nexport function renameEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n name: unknown,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const normalizedNodeId = readEditorSceneNonEmptyString(nodeId);\n const node = normalizedNodeId ? findEditorScenePrefabNode(prepared.prefabAsset, normalizedNodeId) : null;\n if (!node) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const rootNodeId = readEditorScenePrefabRootNodeId(prepared.prefabAsset);\n if (node.id === rootNodeId) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [{\n code: 'prefab.rootRenameRejected',\n severity: 'error',\n message: 'Prefab root node name follows the prefab asset displayName; use prefab.asset.rename instead.',\n assetId: prefabAsset.id,\n nodeId: node.id,\n }]);\n }\n const nameResult = normalizeEditorScenePrefabEditableName(name);\n if (!nameResult.ok) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [{\n code: 'prefab.invalidName',\n severity: 'error',\n message: nameResult.message,\n assetId: prefabAsset.id,\n nodeId: node.id,\n }]);\n }\n const normalizedName = nameResult.name;\n const siblings = readEditorScenePrefabNodeChildren(prepared.prefabAsset, node.parentId);\n const conflict = siblings.find(candidate => (\n candidate.id !== node.id\n && readEditorSceneNonEmptyString(candidate.name)?.toLowerCase() === normalizedName.toLowerCase()\n ));\n if (conflict) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [{\n code: 'prefab.nameConflict',\n severity: 'error',\n message: `Prefab node name \"${normalizedName}\" is already used by sibling \"${conflict.id}\".`,\n assetId: prefabAsset.id,\n nodeId: node.id,\n parentId: node.parentId,\n }]);\n }\n return updateEditorScenePrefabNode(prepared.prefabAsset, node.id, (candidate) => ({\n ...candidate,\n name: normalizedName,\n }));\n}\n\nexport function createEditorScenePrefabNodeFromAsset<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n asset: EditorSceneAsset,\n options: {\n id?: string;\n guid?: string;\n name?: string;\n parentId?: string;\n transform?: EditorSceneTransformComponent;\n sourceNodePath?: string;\n } = {},\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n if (asset.id === prefabAsset.id) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.selfReferenceRejected',\n severity: 'error',\n message: `Prefab \"${prefabAsset.id}\" cannot contain itself directly.`,\n assetId: asset.id,\n }]);\n }\n\n const parentResult = resolveEditorScenePrefabMutationParent(prepared.prefabAsset, options.parentId);\n if (!parentResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, parentResult.diagnostics);\n\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const isChildPrefab = isEditorScenePrefabAsset(asset);\n const isModel = asset.type !== 'prefab' && (asset.type === 'glb' || asset.type === 'model' || asset.type === 'gltf');\n if (!isChildPrefab && !isModel) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.assetUnsupported',\n severity: 'error',\n message: `Asset \"${asset.id}\" cannot be added to a prefab composition.`,\n assetId: asset.id,\n }]);\n }\n\n const node: EditorScenePrefabNode = {\n id: options.id ?? createUniqueEditorScenePrefabNodeId(nodes, `${isChildPrefab ? 'prefab' : 'model'}-${asset.id}`),\n ...(options.guid ? { guid: options.guid } : {}),\n name: options.name ?? asset.displayName ?? asset.id,\n parentId: parentResult.parentId,\n kind: isChildPrefab ? 'prefabInstance' : 'model',\n ...(options.transform ? { transform: structuredClone(options.transform) } : {}),\n ...(isChildPrefab ? { childPrefabId: asset.id } : { sourceAssetId: asset.id }),\n ...(readEditorSceneNonEmptyString(options.sourceNodePath) ? { sourceNodePath: readEditorSceneNonEmptyString(options.sourceNodePath)! } : {}),\n };\n return appendEditorScenePrefabNode(prepared.prefabAsset, node);\n}\n\nexport function createEditorScenePrefabPrimitiveNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n options: {\n id?: string;\n guid?: string;\n name?: string;\n parentId?: string;\n shape: string;\n transform?: EditorSceneTransformComponent;\n },\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const parentResult = resolveEditorScenePrefabMutationParent(prepared.prefabAsset, options.parentId);\n if (!parentResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, parentResult.diagnostics);\n const shape = readEditorSceneNonEmptyString(options.shape);\n if (!shape) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.assetUnsupported',\n severity: 'error',\n message: 'Prefab primitive shape must be a non-empty string.',\n assetId: prefabAsset.id,\n }]);\n }\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const node: EditorScenePrefabNode = {\n id: options.id ?? createUniqueEditorScenePrefabNodeId(nodes, `primitive-${shape}`),\n ...(options.guid ? { guid: options.guid } : {}),\n name: options.name ?? `${shape[0]!.toUpperCase()}${shape.slice(1)}`,\n parentId: parentResult.parentId,\n kind: 'primitive',\n primitive: { shape },\n ...(options.transform ? { transform: structuredClone(options.transform) } : {}),\n };\n return appendEditorScenePrefabNode(prepared.prefabAsset, node);\n}\n\nexport function createEditorScenePrefabGroupNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n options: {\n id?: string;\n guid?: string;\n name?: string;\n parentId?: string;\n transform?: EditorSceneTransformComponent;\n } = {},\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const parentResult = resolveEditorScenePrefabMutationParent(prepared.prefabAsset, options.parentId);\n if (!parentResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, parentResult.diagnostics);\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const node: EditorScenePrefabNode = {\n id: options.id ?? createUniqueEditorScenePrefabNodeId(nodes, 'group'),\n ...(options.guid ? { guid: options.guid } : {}),\n name: options.name ?? 'Empty',\n parentId: parentResult.parentId,\n kind: 'group',\n ...(options.transform ? { transform: structuredClone(options.transform) } : {}),\n };\n return appendEditorScenePrefabNode(prepared.prefabAsset, node);\n}\n\nexport function createEditorScenePrefabMarkerNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n options: {\n id?: string;\n guid?: string;\n name?: string;\n parentId?: string;\n markerType: SpatialMarkerTypeDefinition;\n target?: SpatialMarkerTargetRef | null;\n tags?: string[];\n note?: string;\n color?: EditorSceneColorRgb;\n transform?: EditorSceneTransformComponent;\n },\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const markerType = readEditorScenePrefabMarkerTypeDefinition(options.markerType);\n if (!markerType) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.invalidMarkerType',\n severity: 'error',\n message: 'Prefab Marker type must be a valid catalog definition.',\n assetId: prefabAsset.id,\n }]);\n }\n const parentResult = resolveEditorScenePrefabMutationParent(prepared.prefabAsset, options.parentId);\n if (!parentResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, parentResult.diagnostics);\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const nodeId = createUniqueEditorScenePrefabNodeId(nodes, options.id ?? `marker-${markerType.type}`);\n const targetResult = resolveEditorScenePrefabMarkerTarget(nodes, nodeId, options.target ?? null);\n if (!targetResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [targetResult.diagnostic]);\n const valuesResult = readEditorScenePrefabMarkerValues(options);\n if (!valuesResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [valuesResult.diagnostic]);\n const marker = createEditorScenePrefabMarkerConfig(markerType, targetResult.target, valuesResult.values);\n const node: EditorScenePrefabNode = {\n id: nodeId,\n ...(options.guid ? { guid: options.guid } : {}),\n name: options.name?.trim() || markerType.label,\n parentId: parentResult.parentId,\n kind: 'marker',\n transform: structuredClone(options.transform ?? createIdentityEditorSceneTransform()),\n marker,\n };\n return appendEditorScenePrefabNode(prepared.prefabAsset, node);\n}\n\nexport function setEditorScenePrefabNodeMarker<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n patch: {\n markerType?: SpatialMarkerTypeDefinition;\n target?: SpatialMarkerTargetRef | null;\n tags?: string[];\n note?: string | null;\n color?: EditorSceneColorRgb | null;\n },\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const currentNode = nodes.find(node => node.id === nodeId);\n if (!currentNode) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n if (currentNode.kind !== 'marker' || !currentNode.marker) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.markerNodeRequired',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" is not a Marker node.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const markerType = patch.markerType === undefined\n ? { type: currentNode.marker.type, label: currentNode.name ?? currentNode.marker.type, kind: currentNode.marker.kind }\n : readEditorScenePrefabMarkerTypeDefinition(patch.markerType);\n if (!markerType) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.invalidMarkerType',\n severity: 'error',\n message: 'Prefab Marker type must be a valid catalog definition.',\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const currentTarget = readEditorScenePrefabMarkerConfigTarget(currentNode.marker);\n const targetResult = Object.prototype.hasOwnProperty.call(patch, 'target')\n ? resolveEditorScenePrefabMarkerTarget(nodes, nodeId, patch.target ?? null)\n : { ok: true as const, target: currentTarget };\n if (!targetResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [targetResult.diagnostic]);\n const valuesResult = readEditorScenePrefabMarkerValues({\n ...(Object.prototype.hasOwnProperty.call(patch, 'tags') ? { tags: patch.tags } : {}),\n ...(patch.note !== null && Object.prototype.hasOwnProperty.call(patch, 'note') ? { note: patch.note } : {}),\n ...(patch.color !== null && Object.prototype.hasOwnProperty.call(patch, 'color') ? { color: patch.color } : {}),\n });\n if (!valuesResult.ok) return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [valuesResult.diagnostic]);\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, node => ({\n ...node,\n marker: patchEditorScenePrefabMarkerConfig(node.marker!, markerType, targetResult.target, patch),\n }));\n}\n\nfunction patchEditorScenePrefabMarkerConfig(\n current: EditorSceneMarkerConfig,\n markerType: SpatialMarkerTypeDefinition,\n target: SpatialMarkerTargetRef | null,\n patch: {\n markerType?: SpatialMarkerTypeDefinition;\n target?: SpatialMarkerTargetRef | null;\n tags?: string[];\n note?: string | null;\n color?: EditorSceneColorRgb | null;\n },\n): EditorSceneMarkerConfig {\n const next = structuredClone(current);\n if (patch.markerType !== undefined || Object.prototype.hasOwnProperty.call(patch, 'target')) {\n const derived = createEditorScenePrefabMarkerConfig(markerType, target, {});\n next.schemaVersion = derived.schemaVersion;\n next.type = derived.type;\n next.kind = derived.kind;\n next.geometry = derived.geometry;\n if (derived.target) next.target = derived.target;\n else delete next.target;\n }\n if (Object.prototype.hasOwnProperty.call(patch, 'tags')) {\n const tags = patch.tags?.map(tag => tag.trim()).filter(Boolean) ?? [];\n if (tags.length > 0) next.tags = tags;\n else delete next.tags;\n }\n if (Object.prototype.hasOwnProperty.call(patch, 'note')) {\n if (patch.note !== null) next.note = patch.note;\n else delete next.note;\n }\n if (Object.prototype.hasOwnProperty.call(patch, 'color')) {\n if (patch.color != null) next.color = { ...patch.color };\n else delete next.color;\n }\n return next;\n}\n\nfunction createEditorScenePrefabMarkerConfig(\n markerType: SpatialMarkerTypeDefinition,\n target: SpatialMarkerTargetRef | null,\n values: { tags?: string[]; note?: string; color?: EditorSceneColorRgb },\n): EditorSceneMarkerConfig {\n const kind = normalizeEditorScenePrefabMarkerKind(markerType.kind);\n const targetRef = target ? structuredClone(target) : null;\n const geometry: EditorSceneMarkerConfig['geometry'] = kind === 'region'\n ? { kind: 'box' }\n : kind === 'object' && targetRef\n ? { kind: 'object-bounds', target: structuredClone(targetRef) }\n : { kind: 'point', ...(targetRef ? { target: structuredClone(targetRef) } : {}) };\n return {\n schemaVersion: 1,\n type: markerType.type,\n kind,\n ...(values.tags?.length ? { tags: [...values.tags] } : {}),\n ...(values.note !== undefined ? { note: values.note } : {}),\n ...(values.color ? { color: { ...values.color } } : {}),\n ...(targetRef ? { target: targetRef } : {}),\n geometry,\n };\n}\n\nfunction readEditorScenePrefabMarkerTypeDefinition(\n value: SpatialMarkerTypeDefinition | null | undefined,\n): SpatialMarkerTypeDefinition | null {\n const type = readEditorSceneNonEmptyString(value?.type);\n const label = readEditorSceneNonEmptyString(value?.label);\n if (!type || !label) return null;\n return {\n type,\n label,\n kind: normalizeEditorScenePrefabMarkerKind(value?.kind),\n };\n}\n\nfunction normalizeEditorScenePrefabMarkerKind(value: unknown): string {\n const kind = readEditorSceneNonEmptyString(value);\n if (kind === 'object-bound' || kind === 'object-bounds') return 'object';\n return kind ?? 'point';\n}\n\nfunction resolveEditorScenePrefabMarkerTarget(\n nodes: readonly EditorScenePrefabNode[],\n markerNodeId: string,\n target: SpatialMarkerTargetRef | null,\n): { ok: true; target: SpatialMarkerTargetRef | null } | { ok: false; diagnostic: EditorScenePrefabMutationDiagnostic } {\n if (!target) return { ok: true, target: null };\n const targetId = readEditorSceneNonEmptyString(target.id);\n const targetNode = targetId ? nodes.find(node => node.id === targetId) : null;\n const expectedKind = targetNode?.kind === 'marker' ? 'marker' : 'scene-object';\n if (!targetId || !targetNode || targetId === markerNodeId || target.kind !== expectedKind) {\n return {\n ok: false,\n diagnostic: {\n code: 'prefab.invalidMarkerTarget',\n severity: 'error',\n message: `Prefab Marker target \"${targetId ?? ''}\" must resolve to another node in the same composition.`,\n nodeId: markerNodeId,\n ...(targetId ? { parentId: targetId } : {}),\n },\n };\n }\n return {\n ok: true,\n target: {\n kind: expectedKind,\n id: targetId,\n ...(typeof target.label === 'string' ? { label: target.label } : {}),\n },\n };\n}\n\nfunction readEditorScenePrefabMarkerConfigTarget(marker: EditorSceneMarkerConfig): SpatialMarkerTargetRef | null {\n if (marker.target) return structuredClone(marker.target);\n if (marker.geometry.kind === 'point' && marker.geometry.target) return structuredClone(marker.geometry.target);\n if (marker.geometry.kind === 'object-bounds') return structuredClone(marker.geometry.target);\n return null;\n}\n\nfunction readEditorScenePrefabMarkerValues(value: {\n tags?: unknown;\n note?: unknown;\n color?: unknown;\n}): { ok: true; values: { tags?: string[]; note?: string; color?: EditorSceneColorRgb } } | { ok: false; diagnostic: EditorScenePrefabMutationDiagnostic } {\n const tags = value.tags === undefined\n ? undefined\n : Array.isArray(value.tags) && value.tags.every(tag => typeof tag === 'string')\n ? value.tags.map(tag => tag.trim()).filter(Boolean)\n : null;\n const note = value.note === undefined ? undefined : typeof value.note === 'string' ? value.note : null;\n const color = value.color === undefined ? undefined : readEditorScenePrefabMarkerColor(value.color);\n if (tags === null || note === null || (value.color !== undefined && !color)) {\n return {\n ok: false,\n diagnostic: {\n code: 'prefab.invalidMarkerValue',\n severity: 'error',\n message: 'Prefab Marker tags, note, or color payload is invalid.',\n },\n };\n }\n return {\n ok: true,\n values: {\n ...(tags?.length ? { tags } : {}),\n ...(note !== undefined ? { note } : {}),\n ...(color ? { color } : {}),\n },\n };\n}\n\nfunction readEditorScenePrefabMarkerColor(value: unknown): EditorSceneColorRgb | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const color = value as Partial<EditorSceneColorRgb>;\n const { r, g, b } = color;\n return isEditorSceneMarkerColorChannel(r)\n && isEditorSceneMarkerColorChannel(g)\n && isEditorSceneMarkerColorChannel(b)\n ? { r, g, b }\n : null;\n}\n\nfunction isEditorSceneMarkerColorChannel(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1;\n}\n\nfunction createIdentityEditorSceneTransform(): EditorSceneTransformComponent {\n return {\n type: 'Transform',\n position: { x: 0, y: 0, z: 0 },\n rotation: { x: 0, y: 0, z: 0 },\n scale: { x: 1, y: 1, z: 1 },\n };\n}\n\nexport function setEditorScenePrefabNodeTransform<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n transform: EditorSceneTransformComponent,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n if (!transform || transform.type !== 'Transform') {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.invalidTransform',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" requires a Transform component payload.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, (node) => ({\n ...node,\n transform: structuredClone(transform),\n }));\n}\n\nexport function setEditorScenePrefabNodeShadow<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n shadow: EditorShadowSettings | null | undefined,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const node = findEditorScenePrefabNode(prepared.prefabAsset, nodeId);\n if (node?.kind === 'marker') {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, node, [{\n code: 'prefab.markerShadowUnsupported',\n severity: 'error',\n message: `Prefab Marker node \"${nodeId}\" does not support shadow defaults.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, (node) => {\n const defaults = { ...(node.defaults ?? {}) };\n if (shadow && Object.keys(shadow).length > 0) defaults.shadow = structuredClone(shadow);\n else delete defaults.shadow;\n if (Object.keys(defaults).length > 0) return { ...node, defaults };\n const { defaults: _defaults, ...rest } = node;\n return rest;\n });\n}\n\nexport function setEditorScenePrefabNodeShadowMapExperiment<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n profile: EditorShadowMapExperimentObjectOverride | null | undefined,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, (node) => {\n const defaults = { ...(node.defaults ?? {}) };\n if (profile?.behaviorProfile) defaults.shadowMapExperiment = structuredClone(profile);\n else delete defaults.shadowMapExperiment;\n if (Object.keys(defaults).length > 0) return { ...node, defaults };\n const { defaults: _defaults, ...rest } = node;\n return rest;\n });\n}\n\nexport function reparentEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n parentId: string,\n options: {\n placement?: 'inside' | 'before' | 'after' | 'root';\n beforeId?: string | null;\n afterId?: string | null;\n } = {},\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const rootNodeId = readEditorScenePrefabRootNodeId(prepared.prefabAsset);\n if (nodeId === rootNodeId) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.rootReparentRejected',\n severity: 'error',\n message: 'Prefab root node cannot be reparented.',\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const sourceNode = nodes.find(node => node.id === nodeId);\n if (!sourceNode) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n if (!nodes.some(node => node.id === parentId)) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.parentNotFound',\n severity: 'error',\n message: `Prefab parent node \"${parentId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n parentId,\n }]);\n }\n if (nodeId === parentId || isEditorScenePrefabNodeDescendant(nodes, parentId, nodeId)) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.cycleReparentRejected',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" cannot be parented under its own descendant \"${parentId}\".`,\n assetId: prefabAsset.id,\n nodeId,\n parentId,\n }]);\n }\n const beforeId = options.beforeId ?? null;\n const afterId = options.afterId ?? null;\n if (beforeId && afterId) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, sourceNode, [{\n code: 'prefab.moveAnchorAmbiguous',\n severity: 'error',\n message: 'Prefab node move accepts either beforeId or afterId, not both.',\n assetId: prefabAsset.id,\n nodeId,\n parentId,\n }]);\n }\n const anchorId = beforeId ?? afterId;\n const anchorNode = anchorId ? nodes.find(node => node.id === anchorId) : null;\n if (anchorId && (!anchorNode || anchorNode.id === nodeId || anchorNode.parentId !== parentId)) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, sourceNode, [{\n code: 'prefab.moveAnchorInvalid',\n severity: 'error',\n message: `Prefab move anchor \"${anchorId}\" is not a sibling under parent \"${parentId}\".`,\n assetId: prefabAsset.id,\n nodeId,\n parentId,\n }]);\n }\n if (!anchorId && options.placement === undefined) {\n return updateEditorScenePrefabNode(prepared.prefabAsset, nodeId, node => ({ ...node, parentId }));\n }\n\n const movedNode = { ...structuredClone(sourceNode), parentId };\n const nextNodes = nodes.filter(node => node.id !== nodeId);\n const insertionIndex = anchorId\n ? nextNodes.findIndex(node => node.id === anchorId) + (afterId ? 1 : 0)\n : nextNodes.length;\n nextNodes.splice(insertionIndex, 0, movedNode);\n const next = structuredClone(prepared.prefabAsset) as TAsset;\n next.prefab = structuredClone(next.prefab);\n next.prefab!.compositionVersion = EDITOR_SCENE_PREFAB_COMPOSITION_VERSION;\n next.prefab!.nodes = nextNodes;\n return createEditorScenePrefabMutationResult(\n next,\n JSON.stringify(nodes) !== JSON.stringify(nextNodes),\n movedNode,\n [],\n { selectedNodeId: nodeId },\n );\n}\n\nexport function deleteEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n): EditorScenePrefabMutationResult<TAsset> {\n const prepared = ensureEditorScenePrefabComposition(prefabAsset);\n if (!prepared.ok) return prepared;\n const rootNodeId = readEditorScenePrefabRootNodeId(prepared.prefabAsset);\n if (nodeId === rootNodeId) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.rootDeleteRejected',\n severity: 'error',\n message: 'Prefab root node cannot be deleted.',\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const nodes = readEditorScenePrefabNodes(prepared.prefabAsset);\n const target = nodes.find(node => node.id === nodeId);\n if (!target) {\n return createEditorScenePrefabMutationResult(prepared.prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const deleted = new Set<string>();\n collectEditorScenePrefabNodeSubtree(nodes, nodeId, deleted);\n const next = structuredClone(prepared.prefabAsset) as TAsset;\n next.prefab = structuredClone(next.prefab);\n next.prefab!.nodes = nodes.filter(node => !deleted.has(node.id));\n return createEditorScenePrefabMutationResult(next, true, target, [], {\n deletedNodeIds: [...deleted],\n });\n}\n\nfunction createEditorScenePrefabMutationResult<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n changed: boolean,\n node: EditorScenePrefabNode | null = null,\n diagnostics: EditorScenePrefabMutationDiagnostic[] = [],\n extra: Partial<Pick<EditorScenePrefabMutationResult<TAsset>, 'selectedNodeId' | 'createdNodeId' | 'deletedNodeIds'>> = {},\n): EditorScenePrefabMutationResult<TAsset> {\n return {\n ok: diagnostics.every(diagnostic => diagnostic.severity !== 'error'),\n changed,\n prefabAsset,\n ...(extra.selectedNodeId ? { selectedNodeId: extra.selectedNodeId } : {}),\n ...(extra.createdNodeId ? { createdNodeId: extra.createdNodeId } : {}),\n ...(extra.deletedNodeIds ? { deletedNodeIds: [...extra.deletedNodeIds] } : {}),\n ...(node ? { node: structuredClone(node) } : {}),\n diagnostics: diagnostics.map(diagnostic => ({ ...diagnostic })),\n };\n}\n\nfunction cloneEditorScenePrefabAssetWithComposition<TAsset extends EditorSceneAsset>(prefabAsset: TAsset): TAsset {\n const next = structuredClone(prefabAsset) as TAsset;\n const nodes = readEditorScenePrefabNodes(prefabAsset);\n next.prefab = structuredClone(next.prefab);\n next.prefab!.compositionVersion = EDITOR_SCENE_PREFAB_COMPOSITION_VERSION;\n next.prefab!.nodes = nodes;\n const rootNodeId = readEditorScenePrefabRootNodeId({ ...prefabAsset, prefab: { ...prefabAsset.prefab!, nodes } });\n if (rootNodeId) next.prefab!.rootNodeId = rootNodeId;\n else delete next.prefab!.rootNodeId;\n return next;\n}\n\nfunction resolveEditorScenePrefabMutationParent<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n parentId: string | null | undefined,\n): { ok: true; parentId: string } | { ok: false; diagnostics: EditorScenePrefabMutationDiagnostic[] } {\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n const normalizedParentId = readEditorSceneNonEmptyString(parentId) ?? rootNodeId;\n if (!normalizedParentId || !findEditorScenePrefabNode(prefabAsset, normalizedParentId)) {\n return {\n ok: false,\n diagnostics: [{\n code: 'prefab.parentNotFound',\n severity: 'error',\n message: `Prefab parent node \"${normalizedParentId ?? parentId ?? 'root'}\" was not found.`,\n assetId: prefabAsset.id,\n ...(normalizedParentId ? { parentId: normalizedParentId } : {}),\n }],\n };\n }\n return { ok: true, parentId: normalizedParentId };\n}\n\nfunction appendEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n node: EditorScenePrefabNode,\n): EditorScenePrefabMutationResult<TAsset> {\n const next = structuredClone(prefabAsset) as TAsset;\n const nodes = readEditorScenePrefabNodes(prefabAsset);\n const nodeId = createUniqueEditorScenePrefabNodeId(nodes, node.id);\n const nextNode: EditorScenePrefabNode = {\n ...structuredClone(node),\n id: nodeId,\n };\n next.prefab = structuredClone(next.prefab);\n next.prefab!.compositionVersion = EDITOR_SCENE_PREFAB_COMPOSITION_VERSION;\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n if (rootNodeId) next.prefab!.rootNodeId = rootNodeId;\n else delete next.prefab!.rootNodeId;\n next.prefab!.nodes = [...nodes, nextNode];\n return createEditorScenePrefabMutationResult(next, true, nextNode, [], {\n createdNodeId: nextNode.id,\n selectedNodeId: nextNode.id,\n });\n}\n\nfunction updateEditorScenePrefabNode<TAsset extends EditorSceneAsset>(\n prefabAsset: TAsset,\n nodeId: string,\n update: (node: EditorScenePrefabNode) => EditorScenePrefabNode,\n): EditorScenePrefabMutationResult<TAsset> {\n const nodes = readEditorScenePrefabNodes(prefabAsset);\n const index = nodes.findIndex(node => node.id === nodeId);\n if (index < 0) {\n return createEditorScenePrefabMutationResult(prefabAsset, false, null, [{\n code: 'prefab.nodeNotFound',\n severity: 'error',\n message: `Prefab node \"${nodeId}\" was not found.`,\n assetId: prefabAsset.id,\n nodeId,\n }]);\n }\n const updated = update(structuredClone(nodes[index]!));\n const nextNodes = [...nodes];\n nextNodes[index] = updated;\n const next = structuredClone(prefabAsset) as TAsset;\n next.prefab = structuredClone(next.prefab);\n next.prefab!.compositionVersion = EDITOR_SCENE_PREFAB_COMPOSITION_VERSION;\n const rootNodeId = readEditorScenePrefabRootNodeId(prefabAsset);\n if (rootNodeId) next.prefab!.rootNodeId = rootNodeId;\n else delete next.prefab!.rootNodeId;\n next.prefab!.nodes = nextNodes;\n return createEditorScenePrefabMutationResult(next, JSON.stringify(nodes[index]) !== JSON.stringify(updated), updated, [], {\n selectedNodeId: updated.id,\n });\n}\n\nfunction createUniqueEditorScenePrefabNodeId(nodes: readonly EditorScenePrefabNode[], preferredId: string): string {\n const used = new Set(nodes.map(node => node.id));\n const base = normalizeEditorScenePrefabIdentifierPart(preferredId) ?? 'prefab_node';\n if (!used.has(base)) return base;\n let suffix = 1;\n let candidate = `${base}_${suffix}`;\n while (used.has(candidate)) {\n suffix += 1;\n candidate = `${base}_${suffix}`;\n }\n return candidate;\n}\n\nfunction isEditorScenePrefabNodeDescendant(\n nodes: readonly EditorScenePrefabNode[],\n candidateNodeId: string,\n ancestorNodeId: string,\n): boolean {\n let current = nodes.find(node => node.id === candidateNodeId);\n const visited = new Set<string>();\n while (current?.parentId) {\n if (current.parentId === ancestorNodeId) return true;\n if (visited.has(current.parentId)) return false;\n visited.add(current.parentId);\n current = nodes.find(node => node.id === current?.parentId);\n }\n return false;\n}\n\nfunction collectEditorScenePrefabNodeSubtree(\n nodes: readonly EditorScenePrefabNode[],\n nodeId: string,\n output: Set<string>,\n): void {\n if (output.has(nodeId)) return;\n output.add(nodeId);\n for (const child of nodes.filter(node => node.parentId === nodeId)) {\n collectEditorScenePrefabNodeSubtree(nodes, child.id, output);\n }\n}\n\nexport function createEditorScenePrefabDefinitionFromAsset<\n TAsset extends Pick<EditorSceneAsset, 'id' | 'guid' | 'displayName'>,\n>(\n sourceAsset: TAsset,\n options: {\n id?: string;\n guid?: string;\n displayName?: string;\n category?: string;\n defaults?: EditorScenePrefabDefaults;\n metadata?: Record<string, unknown>;\n } = {},\n): EditorSceneAsset<unknown> {\n return {\n id: options.id ?? `${sourceAsset.id}-prefab`,\n ...(options.guid ? { guid: options.guid } : {}),\n type: 'prefab',\n displayName: options.displayName ?? createEditorScenePrefabDisplayName(sourceAsset),\n category: options.category ?? 'Prefab',\n prefab: {\n sourceAssetId: sourceAsset.id,\n ...(sourceAsset.guid ? { sourceAssetGuid: sourceAsset.guid } : {}),\n ...(options.defaults ? { defaults: { ...options.defaults } } : {}),\n compositionVersion: EDITOR_SCENE_PREFAB_COMPOSITION_VERSION,\n rootNodeId: EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID,\n nodes: [\n {\n id: EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID,\n name: options.displayName ?? createEditorScenePrefabDisplayName(sourceAsset),\n kind: 'root',\n ...(options.defaults ? { defaults: { ...options.defaults } } : {}),\n },\n {\n id: EDITOR_SCENE_PREFAB_DEFAULT_MODEL_NODE_ID,\n name: sourceAsset.displayName ?? sourceAsset.id,\n parentId: EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID,\n kind: 'model',\n sourceAssetId: sourceAsset.id,\n },\n ],\n },\n ...(options.metadata ? { metadata: { ...options.metadata } } : {}),\n };\n}\n\nfunction readEditorScenePrefabExplicitNodes(\n prefab: Pick<EditorScenePrefabDefinition, 'nodes'>,\n): EditorScenePrefabNode[] {\n if (!Array.isArray(prefab.nodes)) return [];\n const nodes: EditorScenePrefabNode[] = [];\n for (const rawNode of prefab.nodes) {\n const node = readEditorScenePrefabNode(rawNode);\n if (node && !nodes.some(existing => existing.id === node.id)) nodes.push(node);\n }\n return structuredClone(nodes);\n}\n\nfunction readEditorScenePrefabNode(value: unknown): EditorScenePrefabNode | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const record = value as Partial<EditorScenePrefabNode>;\n const id = readEditorSceneNonEmptyString(record.id);\n if (!id || !isEditorScenePrefabNodeKind(record.kind)) return null;\n return {\n id,\n ...(readEditorSceneNonEmptyString(record.guid) ? { guid: readEditorSceneNonEmptyString(record.guid)! } : {}),\n ...(readEditorSceneNonEmptyString(record.name) ? { name: readEditorSceneNonEmptyString(record.name)! } : {}),\n ...(readEditorSceneNonEmptyString(record.parentId) ? { parentId: readEditorSceneNonEmptyString(record.parentId)! } : {}),\n kind: record.kind,\n ...(record.transform ? { transform: structuredClone(record.transform) } : {}),\n ...(readEditorSceneNonEmptyString(record.sourceAssetId) ? { sourceAssetId: readEditorSceneNonEmptyString(record.sourceAssetId)! } : {}),\n ...(readEditorSceneNonEmptyString(record.sourceNodePath) ? { sourceNodePath: readEditorSceneNonEmptyString(record.sourceNodePath)! } : {}),\n ...(readEditorSceneNonEmptyString(record.childPrefabId) ? { childPrefabId: readEditorSceneNonEmptyString(record.childPrefabId)! } : {}),\n ...(record.primitive ? { primitive: structuredClone(record.primitive) } : {}),\n ...(record.light ? { light: structuredClone(record.light) } : {}),\n ...(record.marker ? { marker: structuredClone(record.marker) } : {}),\n ...(record.defaults ? { defaults: structuredClone(record.defaults) } : {}),\n ...(record.overrides ? { overrides: structuredClone(record.overrides) } : {}),\n ...(record.metadata ? { metadata: structuredClone(record.metadata) } : {}),\n };\n}\n\nfunction isEditorScenePrefabNodeKind(value: unknown): value is EditorScenePrefabNode['kind'] {\n return value === 'root'\n || value === 'group'\n || value === 'model'\n || value === 'primitive'\n || value === 'light'\n || value === 'prefabInstance'\n || value === 'marker'\n || value === 'collision';\n}\n\nexport function createEditorScenePrefabInstanceGameObject(input: {\n id: string;\n guid?: string;\n name?: string;\n parentId?: string;\n prefabAsset: Pick<EditorSceneAsset, 'id' | 'guid' | 'displayName' | 'prefab'>;\n transform: EditorSceneTransformComponent;\n active?: boolean;\n shadow?: EditorScenePrefabDefaults['shadow'];\n metadata?: Record<string, unknown>;\n overrides?: unknown;\n}): EditorSceneGameObject {\n const sourceAssetId = resolveEditorScenePrefabSourceAssetId(input.prefabAsset);\n if (!sourceAssetId) {\n throw new Error(`Prefab asset \"${input.prefabAsset.id}\" does not define a source asset.`);\n }\n\n const defaults = input.prefabAsset.prefab?.defaults;\n return {\n id: input.id,\n ...(input.guid ? { guid: input.guid } : {}),\n name: input.name ?? input.prefabAsset.displayName ?? input.prefabAsset.id,\n kind: 'instance',\n ...(input.parentId ? { parentId: input.parentId } : {}),\n active: input.active ?? defaults?.active ?? true,\n ...(input.shadow ?? defaults?.shadow ? { shadow: structuredClone(input.shadow ?? defaults?.shadow) } : {}),\n prefab: {\n prefabId: input.prefabAsset.id,\n ...(input.prefabAsset.guid ? { prefabGuid: input.prefabAsset.guid } : {}),\n sourceAssetId,\n },\n ...(input.metadata ? { metadata: { ...input.metadata } } : {}),\n ...(input.overrides !== undefined ? { overrides: input.overrides } : {}),\n components: [\n input.transform,\n {\n type: 'ModelRenderer',\n assetId: sourceAssetId,\n },\n ],\n };\n}\n\nexport function createEditorScenePrefabDefinitionFromGameObject<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n gameObjectId: string,\n options: {\n id?: string;\n guid?: string;\n createGuid?: () => string;\n displayName?: string;\n category?: string;\n defaults?: EditorScenePrefabDefaults;\n metadata?: Record<string, unknown>;\n } = {},\n): EditorSceneAsset<unknown> | null {\n const gameObject = findEditorSceneGameObject(document, gameObjectId);\n if (!gameObject) return null;\n const modelRenderer = findEditorSceneModelRenderer(gameObject);\n const sourceAssetId = readEditorSceneNonEmptyString(modelRenderer?.assetId);\n if (!sourceAssetId) return null;\n const sourceAsset = document.assets.find(asset => asset.id === sourceAssetId);\n if (!sourceAsset || isEditorScenePrefabAsset(sourceAsset)) return null;\n\n const displayName = options.displayName\n ?? createEditorScenePrefabDisplayName({ id: gameObject.id, displayName: gameObject.name ?? sourceAsset.displayName });\n return createEditorScenePrefabDefinitionFromAsset(sourceAsset, {\n id: options.id ?? createUniqueEditorScenePrefabAssetId(document, `${gameObject.id}-prefab`),\n guid: options.guid ?? options.createGuid?.() ?? createEditorScenePrefabGuid(),\n displayName,\n category: options.category,\n defaults: options.defaults,\n metadata: options.metadata,\n });\n}\n\nexport function createEditorSceneDuplicatedPrefabDefinition<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n prefabAssetId: string,\n options: {\n id?: string;\n guid?: string;\n createGuid?: () => string;\n displayName?: string;\n category?: string;\n metadata?: Record<string, unknown>;\n } = {},\n): EditorSceneAsset<unknown> | null {\n const source = document.assets.find(asset => asset.id === prefabAssetId);\n if (!source || !isEditorScenePrefabAsset(source)) return null;\n const sourcePrefab = structuredClone(source.prefab);\n const displayName = options.displayName\n ?? createUniqueEditorScenePrefabDisplayName(\n document.assets.map(asset => asset.displayName ?? asset.id),\n `${source.displayName ?? source.id} Copy`,\n );\n return {\n ...structuredClone(source),\n id: options.id ?? createUniqueEditorScenePrefabAssetId(document, `${source.id}_copy`),\n guid: options.guid ?? options.createGuid?.() ?? createEditorScenePrefabGuid(),\n displayName,\n category: options.category ?? source.category,\n prefab: {\n ...sourcePrefab,\n ...(sourcePrefab.defaults ? { defaults: { ...sourcePrefab.defaults } } : {}),\n },\n ...(options.metadata ? { metadata: { ...options.metadata } } : {}),\n };\n}\n\nexport function readEditorScenePrefabOverrideMaterialPath(path: string): string | null {\n if (!path.startsWith(EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX)) return null;\n const materialPath = path.slice(EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX.length);\n return isEditorSceneArtistMaterialPatchPath(materialPath) ? materialPath : null;\n}\n\nexport function isEditorScenePrefabOverridePath(path: string): boolean {\n return readEditorScenePrefabOverrideMaterialPath(path) != null;\n}\n\nexport function isEditorScenePrefabCoreMaterialOverridePath(path: string): boolean {\n const materialPath = readEditorScenePrefabOverrideMaterialPath(path);\n if (!materialPath) return false;\n if (materialPath.endsWith('.materialAssetId')) return true;\n const profilePath = readEditorScenePrefabOverrideProfileFieldPath(path);\n return profilePath != null && EDITOR_SCENE_PREFAB_CORE_MATERIAL_OVERRIDE_PROFILE_FIELD_PATHS.has(profilePath);\n}\n\nexport function isEditorScenePrefabMaterialAssetIdOverridePath(path: string): boolean {\n return path.startsWith(EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX)\n && path.endsWith('.materialAssetId')\n && isEditorScenePrefabCoreMaterialOverridePath(path);\n}\n\nexport function readEditorScenePrefabMaterialOverrideBinding<\n TBinding extends EditorSceneMaterialBinding = EditorSceneMaterialBinding,\n>(\n prefabAsset: Pick<EditorSceneAsset, 'prefab'>,\n target: { slotId?: string; ownerNodePath?: string },\n): TBinding | undefined {\n if (target.slotId) {\n return readEditorSceneMaterialBindingConfig<TBinding>(prefabAsset.prefab?.overrides?.materialSlotBindings?.[target.slotId]);\n }\n return undefined;\n}\n\nexport function readEditorScenePrefabOverrideProfileFieldPath(path: string): string | null {\n const materialPath = readEditorScenePrefabOverrideMaterialPath(path);\n if (!materialPath) return null;\n const marker = '.override.';\n const markerIndex = materialPath.lastIndexOf(marker);\n if (markerIndex < 0) return null;\n const profilePath = materialPath.slice(markerIndex + marker.length);\n return profilePath ? `profile.${profilePath}` : null;\n}\n\nexport function patchEditorScenePrefabOverride<\n TAsset extends EditorSceneAsset = EditorSceneAsset,\n>(\n prefabAsset: TAsset,\n path: string,\n value: unknown,\n): TAsset {\n const materialPath = readEditorScenePrefabOverrideMaterialPath(path);\n if (!materialPath || !isEditorScenePrefabAsset(prefabAsset)) return prefabAsset;\n const segments = splitEditorScenePrefabOverrideFieldPath(materialPath);\n if (!segments) return prefabAsset;\n\n const next = structuredClone(prefabAsset) as TAsset;\n next.prefab = structuredClone(next.prefab ?? prefabAsset.prefab);\n applyEditorScenePrefabOverrideJsonPatch(next.prefab as unknown as Record<string, unknown>, segments, value);\n const prunedOverrides = pruneEditorScenePrefabOverrides(next.prefab?.overrides);\n if (prunedOverrides) {\n next.prefab!.overrides = prunedOverrides;\n } else {\n delete next.prefab!.overrides;\n }\n return JSON.stringify(next) === JSON.stringify(prefabAsset) ? prefabAsset : next;\n}\n\nexport function mergeEditorSceneMaterialBindingOverrides<TOverride = unknown>(\n base: EditorSceneMaterialBinding<TOverride> | null | undefined,\n override: EditorSceneMaterialBinding<TOverride> | null | undefined,\n): EditorSceneMaterialBinding<TOverride> | undefined {\n const baseMaterialAssetId = readEditorSceneNonEmptyString(base?.materialAssetId);\n const overrideMaterialAssetId = readEditorSceneNonEmptyString(override?.materialAssetId);\n const profile = mergeArtistMaterialProfiles(\n base?.override as ArtistMaterialProfile | null | undefined,\n override?.override as ArtistMaterialProfile | null | undefined,\n ) as TOverride;\n return pruneEditorSceneMaterialBinding({\n ...(overrideMaterialAssetId ?? baseMaterialAssetId\n ? { materialAssetId: overrideMaterialAssetId ?? baseMaterialAssetId }\n : {}),\n ...(hasEditorSceneObjectFields(profile) ? { override: profile } : {}),\n });\n}\n\nexport function mergeEditorScenePrefabOverrides<TOverride = unknown>(\n base: EditorScenePrefabOverrides<TOverride> | null | undefined,\n override: EditorScenePrefabOverrides<TOverride> | null | undefined,\n): EditorScenePrefabOverrides<TOverride> | undefined {\n const next: EditorScenePrefabOverrides<TOverride> = {};\n const materialBinding = mergeEditorSceneMaterialBindingOverrides(base?.materialBinding, override?.materialBinding);\n if (materialBinding) next.materialBinding = materialBinding;\n\n const materialSlotBindings = mergeEditorSceneMaterialBindingRecords(\n base?.materialSlotBindings,\n override?.materialSlotBindings,\n );\n if (materialSlotBindings) next.materialSlotBindings = materialSlotBindings;\n\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nexport function resolveEditorScenePrefabInstanceEffectiveOverrides<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n gameObjectId: string,\n): EditorScenePrefabOverrides | undefined {\n const relation = resolveEditorScenePrefabInstanceRelation(document, gameObjectId);\n if (!relation.gameObject || !relation.prefab) return undefined;\n return mergeEditorScenePrefabOverrides(\n relation.definition?.prefab?.overrides,\n readEditorScenePrefabOverrides(relation.gameObject.overrides),\n );\n}\n\nexport function createEditorScenePrefabAgentSummary<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n gameObjectId: string,\n): EditorScenePrefabAgentSummary | null {\n const relation = resolveEditorScenePrefabInstanceRelation(document, gameObjectId);\n if (!relation.gameObject || !relation.prefab) return null;\n const errorCount = relation.diagnostics.filter(diagnostic => diagnostic.severity === 'error').length;\n const warningCount = relation.diagnostics.filter(diagnostic => diagnostic.severity === 'warning').length;\n const sourceAssetId = resolveEditorScenePrefabSourceAssetId(relation.definition)\n ?? readEditorSceneNonEmptyString(relation.prefab.sourceAssetId)\n ?? undefined;\n const effectiveOverrides = resolveEditorScenePrefabInstanceEffectiveOverrides(document, gameObjectId);\n const summary: EditorScenePrefabAgentSummary = {\n kind: 'prefab-instance',\n status: errorCount > 0 ? 'error' : warningCount > 0 ? 'warning' : 'ok',\n prefabId: relation.prefab.prefabId,\n ...(relation.prefab.prefabGuid ? { prefabGuid: relation.prefab.prefabGuid } : {}),\n ...(readEditorSceneNonEmptyString(relation.definition?.displayName)\n ? { prefabDisplayName: readEditorSceneNonEmptyString(relation.definition?.displayName)! }\n : {}),\n ...(sourceAssetId ? { sourceAssetId } : {}),\n ...(readEditorSceneNonEmptyString(relation.sourceAsset?.guid) ? { sourceAssetGuid: readEditorSceneNonEmptyString(relation.sourceAsset?.guid)! } : {}),\n ...(readEditorSceneNonEmptyString(relation.sourceAsset?.displayName)\n ? { sourceAssetDisplayName: readEditorSceneNonEmptyString(relation.sourceAsset?.displayName)! }\n : {}),\n ...(readEditorSceneNonEmptyString(relation.prefab.sourceAssetId) ? { instanceSourceAssetId: readEditorSceneNonEmptyString(relation.prefab.sourceAssetId)! } : {}),\n diagnostics: relation.diagnostics.map(diagnostic => ({ ...diagnostic })),\n materialTargets: createEditorScenePrefabAgentMaterialTargets(relation.sourceAsset),\n ...(effectiveOverrides ? { effectiveOverrides } : {}),\n };\n return summary;\n}\n\nexport function resolveEditorScenePrefabInstanceRelation<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n gameObjectId: string,\n): EditorScenePrefabInstanceRelation<TDocument['scene']['gameObjects'][number], TDocument['assets'][number]> {\n const gameObject = findEditorSceneGameObject(document, gameObjectId) as TDocument['scene']['gameObjects'][number] | null;\n const diagnostics: EditorScenePrefabRelationDiagnostic[] = [];\n const prefab = isEditorScenePrefabInstance(gameObject) ? gameObject.prefab : null;\n if (!gameObject || !prefab) {\n diagnostics.push({\n code: 'not-prefab-instance',\n severity: 'info',\n message: gameObject\n ? `GameObject \"${gameObject.id}\" is not a prefab instance.`\n : `GameObject \"${gameObjectId}\" was not found.`,\n });\n return {\n gameObject,\n prefab: null,\n definition: null,\n sourceAsset: null,\n diagnostics,\n };\n }\n\n const definition = document.assets.find(asset => asset.id === prefab.prefabId && isEditorScenePrefabAsset(asset)) as (\n TDocument['assets'][number] | undefined\n );\n if (!definition) {\n diagnostics.push({\n code: 'missing-prefab-definition',\n severity: 'error',\n message: `Prefab definition \"${prefab.prefabId}\" was not found.`,\n prefabId: prefab.prefabId,\n });\n }\n\n const expectedSourceAssetId = resolveEditorScenePrefabSourceAssetId(definition) ?? readEditorSceneNonEmptyString(prefab.sourceAssetId);\n if (definition && prefab.sourceAssetId && expectedSourceAssetId && prefab.sourceAssetId !== expectedSourceAssetId) {\n diagnostics.push({\n code: 'source-asset-mismatch',\n severity: 'warning',\n message: `Prefab instance source \"${prefab.sourceAssetId}\" does not match definition source \"${expectedSourceAssetId}\".`,\n prefabId: prefab.prefabId,\n expectedSourceAssetId,\n actualSourceAssetId: prefab.sourceAssetId,\n });\n }\n\n const sourceAsset = expectedSourceAssetId\n ? document.assets.find(asset => asset.id === expectedSourceAssetId) as (TDocument['assets'][number] | undefined)\n : undefined;\n if (expectedSourceAssetId && !sourceAsset) {\n diagnostics.push({\n code: 'missing-source-asset',\n severity: 'error',\n message: `Prefab source asset \"${expectedSourceAssetId}\" was not found.`,\n prefabId: prefab.prefabId,\n sourceAssetId: expectedSourceAssetId,\n });\n }\n\n if (expectedSourceAssetId) {\n const sourcePrefabIds = document.assets\n .filter(asset => isEditorScenePrefabAsset(asset) && resolveEditorScenePrefabSourceAssetId(asset) === expectedSourceAssetId)\n .map(asset => asset.id);\n if (sourcePrefabIds.length > 1) {\n diagnostics.push({\n code: 'duplicate-source-prefab',\n severity: 'info',\n message: `Source asset \"${expectedSourceAssetId}\" is referenced by ${sourcePrefabIds.length} prefab definitions.`,\n prefabId: prefab.prefabId,\n sourceAssetId: expectedSourceAssetId,\n });\n }\n }\n\n return {\n gameObject,\n prefab,\n definition: definition ?? null,\n sourceAsset: sourceAsset ?? null,\n diagnostics,\n };\n}\n\nfunction createEditorScenePrefabAgentMaterialTargets(\n sourceAsset: EditorSceneAsset | null,\n): EditorScenePrefabAgentMaterialTarget[] {\n const rawSlots = Array.isArray(sourceAsset?.metadata?.materialSlots) ? sourceAsset.metadata.materialSlots : [];\n const targets: EditorScenePrefabAgentMaterialTarget[] = [];\n for (const [index, rawSlot] of rawSlots.entries()) {\n const slot = readEditorScenePrefabAgentMaterialSlot(rawSlot);\n if (!slot) continue;\n const bindingPath = `prefab.overrides.materialSlotBindings.${slot.slotId}`;\n targets.push({\n kind: 'material-slot',\n label: slot.label ?? slot.materialName ?? slot.ownerNodePath ?? `Material Slot ${index + 1}`,\n bindingPath,\n materialAssetIdPath: `${bindingPath}.materialAssetId`,\n overridePath: `${bindingPath}.override`,\n slotId: slot.slotId,\n ownerNodePath: slot.ownerNodePath,\n ...(slot.sourceMaterialIndex != null ? { sourceMaterialIndex: slot.sourceMaterialIndex } : {}),\n ...(slot.materialName ? { sourceMaterialName: slot.materialName } : {}),\n });\n }\n return targets;\n}\n\nfunction readEditorScenePrefabAgentMaterialSlot(value: unknown): {\n slotId: string;\n ownerNodePath: string;\n label?: string;\n materialName?: string;\n sourceMaterialIndex?: number;\n} | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const record = value as Record<string, unknown>;\n const ownerNodePath = normalizeEditorSceneMaterialSlotOwnerPath(\n readEditorSceneNonEmptyString(record.ownerNodePath) ?? '',\n );\n const slotId = readEditorSceneNonEmptyString(record.slotId);\n if (!slotId || !ownerNodePath) return null;\n const label = readEditorSceneNonEmptyString(record.label) ?? undefined;\n const materialName = readEditorSceneNonEmptyString(record.materialName) ?? undefined;\n const sourceMaterialIndex = Number.isInteger(record.sourceMaterialIndex) ? record.sourceMaterialIndex as number : undefined;\n return {\n slotId,\n ownerNodePath,\n ...(label ? { label } : {}),\n ...(materialName ? { materialName } : {}),\n ...(sourceMaterialIndex != null ? { sourceMaterialIndex } : {}),\n };\n}\n\nexport function readEditorSceneNodeKind(gameObject: EditorSceneGameObject): EditorSceneNodeKind {\n if (\n gameObject.kind === 'group'\n || gameObject.kind === 'instance'\n || gameObject.kind === 'transform'\n || gameObject.kind === 'primitive'\n ) {\n return gameObject.kind;\n }\n if (isEditorScenePrefabInstance(gameObject)) return 'instance';\n if (gameObject.primitive) return 'primitive';\n if (findEditorSceneModelRenderer(gameObject)) return 'instance';\n if (gameObject.transformType) return 'transform';\n return 'group';\n}\n\nexport function resolveEditorSceneGameObjectRendering(\n gameObject: Pick<EditorSceneGameObject, 'rendering'>,\n): EditorSceneResolvedGameObjectRendering | undefined {\n const rendering = gameObject.rendering && typeof gameObject.rendering === 'object' && !Array.isArray(gameObject.rendering)\n ? gameObject.rendering\n : undefined;\n const renderingGroupId = readEditorSceneGameObjectRenderingGroupId(rendering?.renderingGroupId);\n const alphaIndex = readEditorSceneFiniteNumber(rendering?.alphaIndex);\n const resolved: EditorSceneResolvedGameObjectRendering = {};\n if (renderingGroupId != null) resolved.renderingGroupId = renderingGroupId;\n if (alphaIndex != null) resolved.alphaIndex = alphaIndex;\n return Object.keys(resolved).length > 0 ? resolved : undefined;\n}\n\nexport function readEditorSceneGameObjectRenderingGroupId(\n value: unknown,\n): EditorSceneGameObjectRenderingGroupId | null {\n return value === 0 || value === 1 || value === 2 || value === 3 ? value : null;\n}\n\nexport function readEditorSceneGameObjectAlphaIndex(value: unknown): number | null {\n return readEditorSceneFiniteNumber(value);\n}\n\nfunction isEditorSceneTransformComponent(\n component: EditorSceneComponent,\n): component is EditorSceneTransformComponent {\n return component.type === 'Transform';\n}\n\nfunction isEditorSceneModelRendererComponent(\n component: EditorSceneComponent,\n): component is EditorSceneModelRendererComponent {\n return component.type === 'ModelRenderer';\n}\n\nfunction readEditorSceneFiniteNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\n\nfunction readEditorSceneNonEmptyString(value: unknown): string | null {\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;\n}\n\nfunction normalizeEditorScenePrefabEditableName(value: unknown): { ok: true; name: string } | { ok: false; message: string } {\n if (typeof value !== 'string') return { ok: false, message: 'Prefab name must be a string.' };\n const name = value.trim();\n if (!name) return { ok: false, message: 'Prefab name cannot be empty.' };\n if (name.length > 80) return { ok: false, message: 'Prefab name cannot be longer than 80 characters.' };\n if (/[\\u0000-\\u001f\\u007f/\\\\]/u.test(name)) {\n return { ok: false, message: 'Prefab name cannot contain control characters, /, or \\\\.' };\n }\n return { ok: true, name };\n}\n\nfunction findEditorSceneGameObject(\n document: EditorSceneDocument,\n gameObjectId: string,\n): EditorSceneGameObject | null {\n return document.scene.gameObjects.find(gameObject => gameObject.id === gameObjectId) ?? null;\n}\n\nfunction createEditorScenePrefabDisplayName(sourceAsset: Pick<EditorSceneAsset, 'id' | 'displayName'>): string {\n const displayName = readEditorSceneNonEmptyString(sourceAsset.displayName)\n ?? readEditorSceneNonEmptyString(sourceAsset.id)\n ?? 'Prefab';\n return `${displayName} Prefab`;\n}\n\nexport function createEditorScenePrefabGuid(): string {\n const randomId = globalThis.crypto?.randomUUID?.() ?? `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n return `prefab_${randomId}`;\n}\n\nexport function createUniqueEditorScenePrefabAssetId(\n document: EditorSceneDocument,\n preferredId: string,\n): string {\n const used = new Set(document.assets.map(asset => asset.id));\n const base = normalizeEditorScenePrefabIdentifierPart(preferredId) ?? 'prefab';\n if (!used.has(base)) return base;\n let suffix = 1;\n let candidate = `${base}_${suffix}`;\n while (used.has(candidate)) {\n suffix += 1;\n candidate = `${base}_${suffix}`;\n }\n return candidate;\n}\n\nfunction createUniqueEditorScenePrefabDisplayName(\n existingNames: readonly unknown[],\n preferredName: string,\n): string {\n const used = new Set(\n existingNames\n .map(name => readEditorSceneNonEmptyString(name))\n .filter((name): name is string => !!name),\n );\n if (!used.has(preferredName)) return preferredName;\n let suffix = 1;\n let candidate = `${preferredName} ${suffix}`;\n while (used.has(candidate)) {\n suffix += 1;\n candidate = `${preferredName} ${suffix}`;\n }\n return candidate;\n}\n\nexport function normalizeEditorScenePrefabIdentifierPart(value: unknown): string | null {\n const raw = readEditorSceneNonEmptyString(value);\n if (!raw) return null;\n const normalized = raw\n .replace(/\\s+/g, '_')\n .replace(/[^a-zA-Z0-9_:-]/g, '_')\n .replace(/_+/g, '_')\n .replace(/^_+|_+$/g, '');\n return normalized || null;\n}\n\nfunction splitEditorScenePrefabOverrideFieldPath(path: string): string[] | null {\n if (path === 'overrides.materialBinding.materialAssetId') {\n return ['overrides', 'materialBinding', 'materialAssetId'];\n }\n const rootOverridePrefix = 'overrides.materialBinding.override.';\n if (path.startsWith(rootOverridePrefix)) {\n const profilePath = path.slice(rootOverridePrefix.length);\n return splitEditorScenePrefabProfilePath(['overrides', 'materialBinding', 'override'], profilePath);\n }\n\n const slotMaterialAssetId = readEditorSceneMaterialSlotBindingSlotId(path, 'materialAssetId');\n if (slotMaterialAssetId) {\n return ['overrides', 'materialSlotBindings', slotMaterialAssetId, 'materialAssetId'];\n }\n const slotOverrideId = readEditorSceneMaterialSlotBindingSlotId(path, 'override');\n if (slotOverrideId) {\n const profilePath = readEditorSceneBindingOverrideProfilePath(path);\n return profilePath\n ? splitEditorScenePrefabProfilePath(['overrides', 'materialSlotBindings', slotOverrideId, 'override'], profilePath)\n : null;\n }\n\n return null;\n}\n\nfunction readEditorSceneBindingOverrideProfilePath(path: string): string | null {\n const marker = '.override.';\n const markerIndex = path.lastIndexOf(marker);\n if (markerIndex < 0) return null;\n const profilePath = path.slice(markerIndex + marker.length);\n return profilePath ? profilePath : null;\n}\n\nfunction splitEditorScenePrefabProfilePath(prefix: string[], profilePath: string): string[] | null {\n const profileSegments = profilePath.split('.').filter(Boolean);\n if (profileSegments.length === 0 || profileSegments.some(isUnsafeEditorScenePrefabOverridePathSegment)) return null;\n return [...prefix, ...profileSegments];\n}\n\nfunction applyEditorScenePrefabOverrideJsonPatch(\n target: Record<string, unknown>,\n segments: string[],\n value: unknown,\n): void {\n if (segments.some(isUnsafeEditorScenePrefabOverridePathSegment)) return;\n let cursor = target;\n for (const segment of segments.slice(0, -1)) {\n const current = cursor[segment];\n if (!current || typeof current !== 'object' || Array.isArray(current)) {\n cursor[segment] = {};\n }\n cursor = cursor[segment] as Record<string, unknown>;\n }\n const leaf = segments[segments.length - 1];\n if (!leaf) return;\n if (value == null) delete cursor[leaf];\n else cursor[leaf] = structuredClone(value);\n}\n\nfunction pruneEditorScenePrefabOverrides<TOverride = unknown>(\n overrides: unknown,\n): EditorScenePrefabOverrides<TOverride> | undefined {\n if (!overrides || typeof overrides !== 'object' || Array.isArray(overrides)) return undefined;\n const source = overrides as EditorScenePrefabOverrides<TOverride>;\n const next: EditorScenePrefabOverrides<TOverride> = {};\n\n const materialBinding = pruneEditorSceneMaterialBinding<TOverride>(source.materialBinding);\n if (materialBinding) next.materialBinding = materialBinding;\n\n const materialSlotBindings = pruneEditorSceneMaterialBindingRecord<TOverride>(source.materialSlotBindings);\n if (materialSlotBindings) next.materialSlotBindings = materialSlotBindings;\n\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nfunction pruneEditorSceneMaterialBinding<TOverride = unknown>(\n binding: unknown,\n): EditorSceneMaterialBinding<TOverride> | undefined {\n if (!binding || typeof binding !== 'object' || Array.isArray(binding)) return undefined;\n const source = binding as EditorSceneMaterialBinding<TOverride>;\n const materialAssetId = readEditorSceneNonEmptyString(source.materialAssetId);\n const profile = mergeArtistMaterialProfiles(source.override as ArtistMaterialProfile | null | undefined) as TOverride;\n const next: EditorSceneMaterialBinding<TOverride> = {\n ...(materialAssetId ? { materialAssetId } : {}),\n ...(hasEditorSceneObjectFields(profile) ? { override: profile } : {}),\n };\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nfunction pruneEditorSceneMaterialBindingRecord<TOverride = unknown>(\n record: unknown,\n): Record<string, EditorSceneMaterialBinding<TOverride>> | undefined {\n if (!record || typeof record !== 'object' || Array.isArray(record)) return undefined;\n const next: Record<string, EditorSceneMaterialBinding<TOverride>> = {};\n for (const [key, binding] of Object.entries(record)) {\n const normalizedKey = readEditorSceneNonEmptyString(key);\n if (!normalizedKey) continue;\n const prunedBinding = pruneEditorSceneMaterialBinding<TOverride>(binding);\n if (prunedBinding) next[normalizedKey] = prunedBinding;\n }\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nfunction mergeEditorSceneMaterialBindingRecords<TOverride = unknown>(\n base: Record<string, EditorSceneMaterialBinding<TOverride> | undefined> | null | undefined,\n override: Record<string, EditorSceneMaterialBinding<TOverride> | undefined> | null | undefined,\n): Record<string, EditorSceneMaterialBinding<TOverride>> | undefined {\n const keys = new Set([\n ...Object.keys(base ?? {}),\n ...Object.keys(override ?? {}),\n ]);\n const next: Record<string, EditorSceneMaterialBinding<TOverride>> = {};\n for (const key of keys) {\n const binding = mergeEditorSceneMaterialBindingOverrides(base?.[key], override?.[key]);\n if (binding) next[key] = binding;\n }\n return hasEditorSceneObjectFields(next) ? next : undefined;\n}\n\nfunction readEditorScenePrefabOverrides(value: unknown): EditorScenePrefabOverrides | undefined {\n return pruneEditorScenePrefabOverrides(value);\n}\n\nfunction hasEditorSceneObjectFields(value: unknown): boolean {\n return !!value && typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length > 0;\n}\n\nfunction isUnsafeEditorScenePrefabOverridePathSegment(segment: string): boolean {\n return segment === '__proto__' || segment === 'prototype' || segment === 'constructor';\n}\n"]}
|