@fps-games/editor 0.1.6-beta.1 → 0.1.7-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-bridge/capabilities/assets.d.ts +8 -0
- package/dist/agent-bridge/capabilities/assets.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/assets.js +226 -0
- package/dist/agent-bridge/capabilities/assets.js.map +1 -0
- package/dist/agent-bridge/capabilities/editor-state.d.ts +5 -0
- package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/editor-state.js +72 -0
- package/dist/agent-bridge/capabilities/editor-state.js.map +1 -0
- package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +4 -0
- package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/host-lifecycle.js +87 -0
- package/dist/agent-bridge/capabilities/host-lifecycle.js.map +1 -0
- package/dist/agent-bridge/capabilities/prefabs.d.ts +5 -0
- package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/prefabs.js +735 -0
- package/dist/agent-bridge/capabilities/prefabs.js.map +1 -0
- package/dist/agent-bridge/capabilities/scene-objects.d.ts +9 -0
- package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/scene-objects.js +394 -0
- package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -0
- package/dist/agent-bridge/capabilities/selection.d.ts +5 -0
- package/dist/agent-bridge/capabilities/selection.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/selection.js +57 -0
- package/dist/agent-bridge/capabilities/selection.js.map +1 -0
- package/dist/agent-bridge/capabilities/shadows.d.ts +5 -0
- package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/shadows.js +1876 -0
- package/dist/agent-bridge/capabilities/shadows.js.map +1 -0
- package/dist/agent-bridge/capabilities/transform.d.ts +5 -0
- package/dist/agent-bridge/capabilities/transform.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/transform.js +162 -0
- package/dist/agent-bridge/capabilities/transform.js.map +1 -0
- package/dist/agent-bridge/capabilities/ui-regions.d.ts +4 -0
- package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/ui-regions.js +168 -0
- package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -0
- package/dist/agent-bridge/capabilities/viewport.d.ts +5 -0
- package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/viewport.js +407 -0
- package/dist/agent-bridge/capabilities/viewport.js.map +1 -0
- package/dist/agent-bridge/capability-sources.d.ts +6 -0
- package/dist/agent-bridge/capability-sources.d.ts.map +1 -0
- package/dist/agent-bridge/capability-sources.js +26 -0
- package/dist/agent-bridge/capability-sources.js.map +1 -0
- package/dist/agent-bridge/diagnostics.d.ts +12 -0
- package/dist/agent-bridge/diagnostics.d.ts.map +1 -0
- package/dist/agent-bridge/diagnostics.js +45 -0
- package/dist/agent-bridge/diagnostics.js.map +1 -0
- package/dist/agent-bridge/index.d.ts +5 -0
- package/dist/agent-bridge/index.d.ts.map +1 -0
- package/dist/agent-bridge/index.js +5 -0
- package/dist/agent-bridge/index.js.map +1 -0
- package/dist/agent-bridge/register.d.ts +4 -0
- package/dist/agent-bridge/register.d.ts.map +1 -0
- package/dist/agent-bridge/register.js +908 -0
- package/dist/agent-bridge/register.js.map +1 -0
- package/dist/agent-bridge/shared.d.ts +189 -0
- package/dist/agent-bridge/shared.d.ts.map +1 -0
- package/dist/agent-bridge/shared.js +39 -0
- package/dist/agent-bridge/shared.js.map +1 -0
- package/dist/agent-bridge/source-types.d.ts +90 -0
- package/dist/agent-bridge/source-types.d.ts.map +1 -0
- package/dist/agent-bridge/source-types.js +2 -0
- package/dist/agent-bridge/source-types.js.map +1 -0
- package/dist/build-info.json +17 -17
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/local-editor-agent-bridge-transport.d.ts +95 -0
- package/dist/local-editor-agent-bridge-transport.d.ts.map +1 -0
- package/dist/local-editor-agent-bridge-transport.js +340 -0
- package/dist/local-editor-agent-bridge-transport.js.map +1 -0
- package/dist/local-editor-agent-bridge.d.ts +2 -0
- package/dist/local-editor-agent-bridge.d.ts.map +1 -0
- package/dist/local-editor-agent-bridge.js +2 -0
- package/dist/local-editor-agent-bridge.js.map +1 -0
- package/dist/local-editor-harness.d.ts +26 -2
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +773 -75
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/playable-babylon-rendering.js +20 -0
- package/dist/playable-babylon-rendering.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +5 -0
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js +2 -0
- package/dist/playable-local-editor-host.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/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js +6 -4
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.js +103 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js +330 -27
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js +159 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js +8 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts +53 -2
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +30 -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 +346 -11
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +11 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +113 -29
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +13 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +543 -3
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +5 -5
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts +5 -2
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/index.js +3 -1
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +7 -9
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +2 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +21 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +75 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +1 -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 +288 -71
- 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-scope.d.ts +5 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +92 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +3 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +22 -7
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +4 -0
- 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 +21 -14
- 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.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +6 -4
- 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-prefab-stage.d.ts +19 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +79 -39
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +2 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +68 -1
- 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-workbench.d.ts +2 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +10 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +3 -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 +401 -241
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-camera-debug-panel.d.ts +1 -0
- package/node_modules/@fps-games/editor-browser/dist/runtime-camera-debug-panel.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-camera-debug-panel.js +1 -0
- package/node_modules/@fps-games/editor-browser/dist/runtime-camera-debug-panel.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug-panel-shell.d.ts +2 -0
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug-panel-shell.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug-panel-shell.js +27 -13
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug-panel-shell.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-lighting-debug-panel.d.ts +1 -0
- package/node_modules/@fps-games/editor-browser/dist/runtime-lighting-debug-panel.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-lighting-debug-panel.js +1 -0
- package/node_modules/@fps-games/editor-browser/dist/runtime-lighting-debug-panel.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/package.json +3 -3
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +18 -0
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +102 -0
- package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/index.js +1 -0
- package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
- package/node_modules/@fps-games/editor-core/package.json +2 -2
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.d.ts +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.js +9 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.d.ts +6 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js +89 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/identity.d.ts +18 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/identity.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/identity.js +121 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/identity.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.d.ts +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.d.ts +27 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +782 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +80 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +600 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.d.ts +51 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.js +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts +0 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js +4 -42
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/types.d.ts +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +42 -2
- 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 +612 -8
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +42 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js +16 -9
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js +28 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts +82 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +396 -22
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.js +0 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.d.ts +29 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.js +143 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +99 -11
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +4 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.js +19 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +19 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.d.ts +1 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js +0 -14
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.d.ts +1 -7
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.js +3 -32
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +16 -32
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +5 -22
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +996 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +152 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js +224 -12
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +158 -50
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.js +45 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.js +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/legacy.d.ts +21 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/legacy.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/legacy.js +158 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/legacy.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/quality.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/quality.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/quality.js +83 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/quality.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.d.ts +35 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.js +363 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/types.d.ts +105 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/types.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/types.js +6 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/types.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.d.ts +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js +44 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.d.ts +26 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.js +105 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -0
- 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 +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/package.json +3 -3
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +1127 -0
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +2180 -0
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +68 -0
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +23 -0
- package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.js +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/package.json +1 -1
- package/package.json +8 -8
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { createLocalEditorHierarchyBlankMenu, createLocalEditorHierarchyCopyShortcutAction, createLocalEditorHierarchyDeleteShortcutAction, createLocalEditorHierarchyDuplicateShortcutAction, createLocalEditorHierarchyNodeMenu, createLocalEditorHierarchyPasteShortcutAction, createLocalEditorHierarchySelectAllShortcutAction, } from './local-editor-ui-hierarchy-actions.js';
|
|
2
|
-
import { canLocalEditorHierarchyNodeHaveChildren, createLocalEditorHierarchyTreeModel, isLocalEditorHierarchyNodeSelectable, isLocalEditorHierarchyNodeMovable, } from './local-editor-ui-hierarchy-tree.js';
|
|
2
|
+
import { canLocalEditorHierarchyNodeHaveChildren, canLocalEditorHierarchyNodeRename, canLocalEditorHierarchyNodeToggleEnabled, createLocalEditorHierarchyTreeModel, isLocalEditorHierarchyNodeSelectable, isLocalEditorHierarchyNodeMovable, } from './local-editor-ui-hierarchy-tree.js';
|
|
3
3
|
import { resolveLocalEditorHierarchyDragOperation, } from './local-editor-ui-hierarchy-drag-policy.js';
|
|
4
4
|
import { resolveLocalEditorHierarchyAutoScroll, } from './local-editor-ui-hierarchy-auto-scroll.js';
|
|
5
5
|
import { clearLocalEditorStructuredDragSession, createLocalEditorStructuredDragSession, hasLocalEditorStructuredDragSessionFeedback, } from './local-editor-ui-structured-drag-session.js';
|
|
6
6
|
import { renderLocalEditorHierarchyPanel, syncLocalEditorHierarchyDropPreview, } from './local-editor-ui-hierarchy-view.js';
|
|
7
|
+
import { createLocalEditorActiveHierarchyScope, } from './local-editor-ui-hierarchy-scope.js';
|
|
8
|
+
import { resolveLocalEditorHierarchyCommandAdapter, } from './local-editor-ui-hierarchy-command-adapter.js';
|
|
7
9
|
import { createLocalEditorViewportRevealController, } from './local-editor-ui-dock-panel.js';
|
|
8
10
|
import { createLocalEditorHierarchyAttachDialog, } from './local-editor-ui-hierarchy-attach-dialog.js';
|
|
9
11
|
const HIERARCHY_DRAG_INDENT_WIDTH = 16;
|
|
@@ -14,7 +16,8 @@ export function resolveLocalEditorHierarchyCreateMarkerParentId(activeNode) {
|
|
|
14
16
|
}
|
|
15
17
|
export function createLocalEditorHierarchyController(options) {
|
|
16
18
|
const { doc, panel, callbacks, inputRouter, contextMenu, getState, requestRender } = options;
|
|
17
|
-
const
|
|
19
|
+
const collapsedIdsByScope = new Map();
|
|
20
|
+
const hierarchySearchByScope = new Map();
|
|
18
21
|
let hierarchyRename = null;
|
|
19
22
|
let hierarchyDrag = null;
|
|
20
23
|
let hierarchyDrop = null;
|
|
@@ -22,10 +25,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
22
25
|
const hierarchyDragSession = createLocalEditorStructuredDragSession();
|
|
23
26
|
let hierarchyShortcutScopeActive = false;
|
|
24
27
|
let hierarchyClipboard = null;
|
|
25
|
-
let hierarchySearch = '';
|
|
26
28
|
let hierarchySearchComposing = false;
|
|
27
29
|
let currentModel = null;
|
|
28
30
|
let lastRenderedActiveId;
|
|
31
|
+
let lastRenderedScopeId;
|
|
29
32
|
let pendingHierarchyScrollId = null;
|
|
30
33
|
let hierarchySelectionAnchorId = null;
|
|
31
34
|
const attachDialog = createLocalEditorHierarchyAttachDialog({
|
|
@@ -45,15 +48,18 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
45
48
|
return currentModel;
|
|
46
49
|
};
|
|
47
50
|
const render = (state) => {
|
|
48
|
-
|
|
51
|
+
const scope = resolveScope(state);
|
|
52
|
+
const commandAdapter = resolveHierarchyCommandAdapter(scope);
|
|
53
|
+
if (hierarchyRename && !scope.nodes.some(item => item.id === hierarchyRename?.id))
|
|
49
54
|
hierarchyRename = null;
|
|
50
|
-
const
|
|
55
|
+
const scopeChanged = scope.scopeId !== lastRenderedScopeId;
|
|
56
|
+
const activeIdChanged = scope.activeId !== lastRenderedActiveId || scopeChanged;
|
|
51
57
|
const treeScrollSnapshot = treeViewportReveal.captureScrollSnapshot();
|
|
52
58
|
if (activeIdChanged) {
|
|
53
59
|
pendingHierarchyScrollId = null;
|
|
54
|
-
expandActiveHierarchyPath(state);
|
|
60
|
+
expandActiveHierarchyPath(state, scope);
|
|
55
61
|
}
|
|
56
|
-
currentModel = createModel(state);
|
|
62
|
+
currentModel = createModel(state, scope);
|
|
57
63
|
if (hierarchySelectionAnchorId && !currentModel.getNode(hierarchySelectionAnchorId)) {
|
|
58
64
|
hierarchySelectionAnchorId = null;
|
|
59
65
|
}
|
|
@@ -63,16 +69,21 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
63
69
|
drop: hierarchyDrop,
|
|
64
70
|
dropPreview: hierarchyDragSession.preview,
|
|
65
71
|
rootDrop: hierarchyRootDrop,
|
|
66
|
-
searchQuery:
|
|
72
|
+
searchQuery: getScopeSearch(scope.scopeId),
|
|
73
|
+
title: scope.title,
|
|
74
|
+
searchPlaceholder: scope.searchPlaceholder,
|
|
75
|
+
showCreateGroup: commandAdapter.showCreateGroupToolbar,
|
|
76
|
+
showCreateMarker: commandAdapter.kind === 'scene',
|
|
67
77
|
});
|
|
68
78
|
treeViewportReveal.restoreScrollSnapshot(treeScrollSnapshot);
|
|
69
|
-
const suppressActiveScroll =
|
|
70
|
-
? treeViewportReveal.consumeRevealSuppression(
|
|
79
|
+
const suppressActiveScroll = scope.activeId
|
|
80
|
+
? treeViewportReveal.consumeRevealSuppression(scope.activeId, { clearWhenDifferent: activeIdChanged })
|
|
71
81
|
: false;
|
|
72
|
-
if (activeIdChanged &&
|
|
73
|
-
scheduleActiveHierarchyScroll(
|
|
82
|
+
if (activeIdChanged && scope.activeId && !suppressActiveScroll && shouldAutoScrollActiveHierarchyNode()) {
|
|
83
|
+
scheduleActiveHierarchyScroll(scope.activeId);
|
|
74
84
|
}
|
|
75
|
-
lastRenderedActiveId =
|
|
85
|
+
lastRenderedActiveId = scope.activeId;
|
|
86
|
+
lastRenderedScopeId = scope.scopeId;
|
|
76
87
|
};
|
|
77
88
|
const onClick = (event) => {
|
|
78
89
|
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
@@ -100,7 +111,9 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
100
111
|
const createGroupButton = target?.closest('[data-editor-hierarchy-create-group]');
|
|
101
112
|
if (createGroupButton) {
|
|
102
113
|
const state = getState();
|
|
103
|
-
|
|
114
|
+
if (!state || resolveScope(state).commandSurface !== 'scene-graph')
|
|
115
|
+
return;
|
|
116
|
+
const parentId = state.activeId ?? null;
|
|
104
117
|
if (parentId)
|
|
105
118
|
expandNode(parentId);
|
|
106
119
|
callbacks.onSceneGraphCreateGroup?.({
|
|
@@ -131,7 +144,7 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
131
144
|
if (shouldClearSelectionFromBlankClick(event, target)) {
|
|
132
145
|
event.preventDefault();
|
|
133
146
|
hierarchySelectionAnchorId = null;
|
|
134
|
-
submitSelectionCommand({ type: 'selection.clear', label: 'Clear Selection' });
|
|
147
|
+
submitSelectionCommand({ type: 'selection.clear', label: 'Clear Selection' }, getState() ?? undefined);
|
|
135
148
|
}
|
|
136
149
|
};
|
|
137
150
|
const onContextMenu = (event) => {
|
|
@@ -154,13 +167,15 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
154
167
|
event.preventDefault();
|
|
155
168
|
event.stopPropagation();
|
|
156
169
|
hierarchySelectionAnchorId = id;
|
|
157
|
-
|
|
158
|
-
|
|
170
|
+
selectSingleHierarchyItem(id);
|
|
171
|
+
if (resolveScopeForCurrentState()?.kind === 'scene')
|
|
172
|
+
callbacks.onFocusSelection?.();
|
|
159
173
|
};
|
|
160
174
|
const onInput = (event) => {
|
|
161
175
|
const input = event.target instanceof HTMLInputElement ? event.target : null;
|
|
162
176
|
if (input?.dataset.editorHierarchySearch != null) {
|
|
163
|
-
|
|
177
|
+
const scopeId = resolveScopeForCurrentState()?.scopeId ?? 'scene';
|
|
178
|
+
hierarchySearchByScope.set(scopeId, input.value);
|
|
164
179
|
if (!hierarchySearchComposing && !isComposingInputEvent(event))
|
|
165
180
|
requestRender();
|
|
166
181
|
return;
|
|
@@ -177,10 +192,11 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
177
192
|
if (input?.dataset.editorHierarchySearch != null) {
|
|
178
193
|
if (event.isComposing || hierarchySearchComposing)
|
|
179
194
|
return;
|
|
180
|
-
|
|
195
|
+
const scopeId = resolveScopeForCurrentState()?.scopeId ?? 'scene';
|
|
196
|
+
if (event.key !== 'Escape' || getScopeSearch(scopeId).length === 0)
|
|
181
197
|
return;
|
|
182
198
|
event.preventDefault();
|
|
183
|
-
|
|
199
|
+
hierarchySearchByScope.set(scopeId, '');
|
|
184
200
|
requestRender();
|
|
185
201
|
return;
|
|
186
202
|
}
|
|
@@ -208,7 +224,8 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
208
224
|
if (input?.dataset.editorHierarchySearch == null)
|
|
209
225
|
return;
|
|
210
226
|
hierarchySearchComposing = false;
|
|
211
|
-
|
|
227
|
+
const scopeId = resolveScopeForCurrentState()?.scopeId ?? 'scene';
|
|
228
|
+
hierarchySearchByScope.set(scopeId, input.value);
|
|
212
229
|
requestRender();
|
|
213
230
|
};
|
|
214
231
|
const onFocusOut = (event) => {
|
|
@@ -224,6 +241,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
224
241
|
const id = button?.dataset.editorHierarchyId;
|
|
225
242
|
if (!id || !state)
|
|
226
243
|
return;
|
|
244
|
+
if (!resolveHierarchyCommandAdapter(resolveScope(state)).menuCapabilities.hasMoveHandler) {
|
|
245
|
+
event.preventDefault();
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
227
248
|
const model = getModel(state);
|
|
228
249
|
const node = model.getNode(id);
|
|
229
250
|
if (!isLocalEditorHierarchyNodeMovable(node)) {
|
|
@@ -244,6 +265,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
244
265
|
clearHierarchyDragFeedbackAndRender();
|
|
245
266
|
return;
|
|
246
267
|
}
|
|
268
|
+
if (!resolveHierarchyCommandAdapter(resolveScope(state)).menuCapabilities.hasMoveHandler) {
|
|
269
|
+
clearHierarchyDragFeedbackAndRender();
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
247
272
|
const model = getModel(state);
|
|
248
273
|
if (!isInsideHierarchyTreeViewport(target)) {
|
|
249
274
|
clearHierarchyDragFeedbackAndRender();
|
|
@@ -309,6 +334,11 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
309
334
|
clearHierarchyDragFeedbackAndRender();
|
|
310
335
|
return;
|
|
311
336
|
}
|
|
337
|
+
const scope = resolveScope(state);
|
|
338
|
+
if (!resolveHierarchyCommandAdapter(scope).menuCapabilities.hasMoveHandler) {
|
|
339
|
+
clearHierarchyDragFeedbackAndRender();
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
312
342
|
const model = getModel(state);
|
|
313
343
|
if (!isInsideHierarchyTreeViewport(target)) {
|
|
314
344
|
clearHierarchyDragFeedbackAndRender();
|
|
@@ -323,6 +353,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
323
353
|
hierarchyDrag = null;
|
|
324
354
|
clearHierarchyDragFeedback();
|
|
325
355
|
if (operation.slot.placement === 'root') {
|
|
356
|
+
if (scope.commandSurface === 'prefab-composition') {
|
|
357
|
+
requestRender();
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
326
360
|
submitResolvedRootDrop(operation.resolution);
|
|
327
361
|
return;
|
|
328
362
|
}
|
|
@@ -332,6 +366,15 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
332
366
|
return;
|
|
333
367
|
}
|
|
334
368
|
expandDropParent(operation.resolution);
|
|
369
|
+
if (scope.commandSurface === 'prefab-composition') {
|
|
370
|
+
if (operation.slot.placement !== 'inside') {
|
|
371
|
+
requestRender();
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
submitPrefabNodeReparent(scope, operation.resolution.draggedIds[0] ?? draggedIds[0], targetId);
|
|
375
|
+
requestRender();
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
335
378
|
submitResolvedDrop(operation.resolution, targetId, operation.slot.placement, draggedIds);
|
|
336
379
|
};
|
|
337
380
|
panel.addEventListener('click', onClick);
|
|
@@ -381,11 +424,14 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
381
424
|
const state = getState();
|
|
382
425
|
if (!state)
|
|
383
426
|
return false;
|
|
427
|
+
const scope = resolveScope(state);
|
|
428
|
+
if (scope.kind !== 'scene')
|
|
429
|
+
return false;
|
|
430
|
+
const commandAdapter = resolveHierarchyCommandAdapter(scope);
|
|
384
431
|
const action = createLocalEditorHierarchyDeleteShortcutAction({
|
|
385
432
|
state,
|
|
386
433
|
model: getModel(state),
|
|
387
|
-
|
|
388
|
-
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
434
|
+
...commandAdapter.menuCapabilities,
|
|
389
435
|
});
|
|
390
436
|
if (!action)
|
|
391
437
|
return false;
|
|
@@ -404,13 +450,16 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
404
450
|
const state = getState();
|
|
405
451
|
if (!state)
|
|
406
452
|
return false;
|
|
453
|
+
const scope = resolveScope(state);
|
|
454
|
+
if (scope.kind !== 'scene')
|
|
455
|
+
return false;
|
|
456
|
+
const commandAdapter = resolveHierarchyCommandAdapter(scope);
|
|
407
457
|
const input = {
|
|
408
458
|
state,
|
|
409
459
|
model: getModel(state),
|
|
410
460
|
clipboardIds: hierarchyClipboard?.ids ?? null,
|
|
411
461
|
clipboardActiveId: hierarchyClipboard?.activeId ?? null,
|
|
412
|
-
|
|
413
|
-
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
462
|
+
...commandAdapter.menuCapabilities,
|
|
414
463
|
};
|
|
415
464
|
const action = key === 'd'
|
|
416
465
|
? createLocalEditorHierarchyDuplicateShortcutAction(input)
|
|
@@ -430,13 +479,34 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
430
479
|
function isComposingInputEvent(event) {
|
|
431
480
|
return event.isComposing === true;
|
|
432
481
|
}
|
|
433
|
-
function
|
|
434
|
-
return
|
|
435
|
-
|
|
482
|
+
function resolveScope(state) {
|
|
483
|
+
return createLocalEditorActiveHierarchyScope(state);
|
|
484
|
+
}
|
|
485
|
+
function resolveScopeForCurrentState() {
|
|
486
|
+
const state = getState();
|
|
487
|
+
return state ? resolveScope(state) : null;
|
|
488
|
+
}
|
|
489
|
+
function getScopeCollapsedIds(scopeId) {
|
|
490
|
+
const existing = collapsedIdsByScope.get(scopeId);
|
|
491
|
+
if (existing)
|
|
492
|
+
return existing;
|
|
493
|
+
const created = new Set();
|
|
494
|
+
collapsedIdsByScope.set(scopeId, created);
|
|
495
|
+
return created;
|
|
496
|
+
}
|
|
497
|
+
function getScopeSearch(scopeId) {
|
|
498
|
+
return hierarchySearchByScope.get(scopeId) ?? '';
|
|
499
|
+
}
|
|
500
|
+
function createModel(state, scope = resolveScope(state)) {
|
|
501
|
+
return createLocalEditorHierarchyTreeModel(scope.nodes, scope.selectedIds, scope.activeId, {
|
|
502
|
+
collapsedIds: getScopeCollapsedIds(scope.scopeId),
|
|
436
503
|
defaultExpanded: true,
|
|
437
504
|
});
|
|
438
505
|
}
|
|
439
506
|
function selectHierarchyItemFromClick(id, event) {
|
|
507
|
+
const scope = resolveScopeForCurrentState();
|
|
508
|
+
if (!scope)
|
|
509
|
+
return;
|
|
440
510
|
const toggle = event.metaKey || event.ctrlKey;
|
|
441
511
|
const range = event.shiftKey && !toggle;
|
|
442
512
|
if (range) {
|
|
@@ -444,11 +514,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
444
514
|
return;
|
|
445
515
|
}
|
|
446
516
|
hierarchySelectionAnchorId = id;
|
|
447
|
-
|
|
448
|
-
id
|
|
449
|
-
|
|
450
|
-
toggle
|
|
451
|
-
});
|
|
517
|
+
if (scope.kind === 'prefab-stage')
|
|
518
|
+
callbacks.onSelectPrefabStageItem?.(id);
|
|
519
|
+
else
|
|
520
|
+
callbacks.onSelectHierarchyItem?.({ id, additive: false, toggle });
|
|
452
521
|
}
|
|
453
522
|
function toggleHierarchyItemEnabled(id, toggle) {
|
|
454
523
|
if (toggle.dataset.editorHierarchyEnabledToggleDisabled === 'true')
|
|
@@ -456,10 +525,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
456
525
|
const state = getState();
|
|
457
526
|
if (!state)
|
|
458
527
|
return;
|
|
459
|
-
|
|
460
|
-
if (!node || typeof node.item.enabled !== 'boolean')
|
|
528
|
+
if (resolveScope(state).commandSurface !== 'scene-graph')
|
|
461
529
|
return;
|
|
462
|
-
|
|
530
|
+
const node = getModel(state).getNode(id);
|
|
531
|
+
if (!node || !canLocalEditorHierarchyNodeToggleEnabled(node))
|
|
463
532
|
return;
|
|
464
533
|
const directEnabled = typeof node.item.directEnabled === 'boolean'
|
|
465
534
|
? node.item.directEnabled
|
|
@@ -472,16 +541,22 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
472
541
|
function selectHierarchyVisibleRange(targetId) {
|
|
473
542
|
const state = getState();
|
|
474
543
|
if (!state) {
|
|
475
|
-
|
|
544
|
+
selectSingleHierarchyItem(targetId);
|
|
476
545
|
hierarchySelectionAnchorId = targetId;
|
|
477
546
|
return;
|
|
478
547
|
}
|
|
548
|
+
const scope = resolveScope(state);
|
|
549
|
+
if (scope.kind !== 'scene') {
|
|
550
|
+
hierarchySelectionAnchorId = targetId;
|
|
551
|
+
callbacks.onSelectPrefabStageItem?.(targetId);
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
479
554
|
const model = getModel(state);
|
|
480
|
-
const anchorId = hierarchySelectionAnchorId ??
|
|
555
|
+
const anchorId = hierarchySelectionAnchorId ?? scope.activeId ?? targetId;
|
|
481
556
|
const selectedIds = model.getVisibleRangeSelection(anchorId, targetId);
|
|
482
557
|
if (selectedIds.length === 0) {
|
|
483
558
|
hierarchySelectionAnchorId = targetId;
|
|
484
|
-
|
|
559
|
+
selectSingleHierarchyItem(targetId);
|
|
485
560
|
return;
|
|
486
561
|
}
|
|
487
562
|
const activeId = selectedIds.includes(targetId)
|
|
@@ -492,10 +567,11 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
492
567
|
label: 'Select Hierarchy Range',
|
|
493
568
|
selectedIds,
|
|
494
569
|
activeId,
|
|
495
|
-
});
|
|
570
|
+
}, state);
|
|
496
571
|
}
|
|
497
572
|
function resolveDraggedIds(state, model, draggedId) {
|
|
498
|
-
const
|
|
573
|
+
const scope = resolveScope(state);
|
|
574
|
+
const selectedIds = scope.selectedIds.includes(draggedId) ? scope.selectedIds : [draggedId];
|
|
499
575
|
return model.getTopLevelSelection(selectedIds);
|
|
500
576
|
}
|
|
501
577
|
function readDraggedIds(event) {
|
|
@@ -515,6 +591,8 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
515
591
|
requestRender();
|
|
516
592
|
}
|
|
517
593
|
function toggleExpanded(id) {
|
|
594
|
+
const scope = resolveScopeForCurrentState();
|
|
595
|
+
const collapsedIds = getScopeCollapsedIds(scope?.scopeId ?? 'scene');
|
|
518
596
|
if (collapsedIds.has(id))
|
|
519
597
|
collapsedIds.delete(id);
|
|
520
598
|
else
|
|
@@ -524,15 +602,17 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
524
602
|
function expandNode(id) {
|
|
525
603
|
if (!id)
|
|
526
604
|
return;
|
|
527
|
-
|
|
605
|
+
const scope = resolveScopeForCurrentState();
|
|
606
|
+
getScopeCollapsedIds(scope?.scopeId ?? 'scene').delete(id);
|
|
528
607
|
}
|
|
529
|
-
function expandActiveHierarchyPath(state) {
|
|
530
|
-
if (!
|
|
608
|
+
function expandActiveHierarchyPath(state, scope = resolveScope(state)) {
|
|
609
|
+
if (!scope.activeId)
|
|
531
610
|
return;
|
|
532
|
-
const model = createModel(state);
|
|
533
|
-
if (!model.getNode(
|
|
611
|
+
const model = createModel(state, scope);
|
|
612
|
+
if (!model.getNode(scope.activeId))
|
|
534
613
|
return;
|
|
535
|
-
|
|
614
|
+
const collapsedIds = getScopeCollapsedIds(scope.scopeId);
|
|
615
|
+
for (const ancestor of model.getAncestors(scope.activeId)) {
|
|
536
616
|
collapsedIds.delete(ancestor.id);
|
|
537
617
|
}
|
|
538
618
|
}
|
|
@@ -710,10 +790,19 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
710
790
|
return;
|
|
711
791
|
const trimmed = value.trim();
|
|
712
792
|
const state = getState();
|
|
713
|
-
const
|
|
793
|
+
const scope = state ? resolveScope(state) : null;
|
|
794
|
+
const item = scope?.nodes.find(candidate => candidate.id === id) ?? null;
|
|
714
795
|
hierarchyRename = null;
|
|
715
|
-
if (trimmed && item && trimmed !== item.label)
|
|
716
|
-
|
|
796
|
+
if (trimmed && item && trimmed !== item.label) {
|
|
797
|
+
if (scope?.commandSurface === 'scene-graph') {
|
|
798
|
+
callbacks.onSceneGraphRename?.({ id, name: trimmed });
|
|
799
|
+
}
|
|
800
|
+
else if (scope?.commandSurface === 'prefab-composition') {
|
|
801
|
+
callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.rename', resolvePrefabCommandTargetId(scope, id), {
|
|
802
|
+
value: trimmed,
|
|
803
|
+
}));
|
|
804
|
+
}
|
|
805
|
+
}
|
|
717
806
|
requestRender();
|
|
718
807
|
}
|
|
719
808
|
function openHierarchyContextMenu(event) {
|
|
@@ -732,42 +821,55 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
732
821
|
requestRender();
|
|
733
822
|
return;
|
|
734
823
|
}
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
options.onBeforeOpenContextMenu?.();
|
|
824
|
+
const scope = resolveScope(state);
|
|
825
|
+
const commandAdapter = resolveHierarchyCommandAdapter(scope);
|
|
738
826
|
const model = getModel(state);
|
|
739
827
|
const hierarchyButton = target.closest('[data-editor-hierarchy-id]');
|
|
740
828
|
const node = model.getNode(hierarchyButton?.dataset.editorHierarchyId);
|
|
741
|
-
if (node && !
|
|
829
|
+
if (node && !scope.selectedIds.includes(node.id) && isLocalEditorHierarchyNodeSelectable(node)) {
|
|
742
830
|
hierarchySelectionAnchorId = node.id;
|
|
743
|
-
|
|
831
|
+
if (scope.kind === 'prefab-stage')
|
|
832
|
+
callbacks.onSelectPrefabStageItem?.(node.id);
|
|
833
|
+
else
|
|
834
|
+
callbacks.onSelectHierarchyItem?.({ id: node.id, additive: false, toggle: false });
|
|
835
|
+
}
|
|
836
|
+
if (!commandAdapter.canOpenContextMenu) {
|
|
837
|
+
if (hadHierarchyFeedback)
|
|
838
|
+
requestRender();
|
|
839
|
+
return;
|
|
744
840
|
}
|
|
841
|
+
event.preventDefault();
|
|
842
|
+
event.stopPropagation();
|
|
843
|
+
options.onBeforeOpenContextMenu?.();
|
|
844
|
+
const menuState = createScopedHierarchyMenuState(state, scope);
|
|
745
845
|
const menu = node
|
|
746
846
|
? createLocalEditorHierarchyNodeMenu({
|
|
747
|
-
state,
|
|
847
|
+
state: menuState,
|
|
748
848
|
model,
|
|
749
849
|
node,
|
|
750
850
|
clipboardIds: hierarchyClipboard?.ids ?? null,
|
|
751
851
|
clipboardActiveId: hierarchyClipboard?.activeId ?? null,
|
|
752
|
-
|
|
753
|
-
hasMoveHandler: typeof callbacks.onSceneGraphMove === 'function',
|
|
754
|
-
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
852
|
+
...commandAdapter.menuCapabilities,
|
|
755
853
|
contextActions: options.contextActions,
|
|
756
854
|
})
|
|
757
855
|
: createLocalEditorHierarchyBlankMenu({
|
|
758
|
-
state,
|
|
856
|
+
state: menuState,
|
|
759
857
|
model,
|
|
760
858
|
clipboardIds: hierarchyClipboard?.ids ?? null,
|
|
761
859
|
clipboardActiveId: hierarchyClipboard?.activeId ?? null,
|
|
762
|
-
|
|
763
|
-
hasMoveHandler: typeof callbacks.onSceneGraphMove === 'function',
|
|
764
|
-
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
860
|
+
...commandAdapter.menuCapabilities,
|
|
765
861
|
contextActions: options.contextActions,
|
|
766
862
|
});
|
|
863
|
+
const menuItems = commandAdapter.filterMenuItems(menu.items);
|
|
864
|
+
if (menuItems.length === 0) {
|
|
865
|
+
if (hadHierarchyFeedback)
|
|
866
|
+
requestRender();
|
|
867
|
+
return;
|
|
868
|
+
}
|
|
767
869
|
contextMenu.open({
|
|
768
870
|
x: event.clientX,
|
|
769
871
|
y: event.clientY,
|
|
770
|
-
items:
|
|
872
|
+
items: menuItems,
|
|
771
873
|
onAction(item) {
|
|
772
874
|
const action = menu.actions.get(item.id);
|
|
773
875
|
if (action)
|
|
@@ -821,13 +923,25 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
821
923
|
}
|
|
822
924
|
submitHierarchyContextAction(action.action);
|
|
823
925
|
}
|
|
824
|
-
function
|
|
926
|
+
function createScopedHierarchyMenuState(state, scope) {
|
|
927
|
+
return {
|
|
928
|
+
...state,
|
|
929
|
+
hierarchy: scope.nodes,
|
|
930
|
+
selectedIds: scope.selectedIds,
|
|
931
|
+
activeId: scope.activeId,
|
|
932
|
+
};
|
|
933
|
+
}
|
|
934
|
+
function submitSelectionCommand(command, state = getState() ?? undefined) {
|
|
935
|
+
if (state && resolveScope(state).kind !== 'scene')
|
|
936
|
+
return;
|
|
825
937
|
callbacks.onSelectionCommand?.(command);
|
|
826
938
|
}
|
|
827
939
|
function openAttachPicker(targetIds, activeId) {
|
|
828
940
|
const state = getState();
|
|
829
941
|
if (!state || state.mode !== 'editor' || state.busy || targetIds.length === 0)
|
|
830
942
|
return;
|
|
943
|
+
if (!resolveHierarchyCommandAdapter(resolveScope(state)).menuCapabilities.hasMoveHandler)
|
|
944
|
+
return;
|
|
831
945
|
attachDialog.open({
|
|
832
946
|
model: getModel(state),
|
|
833
947
|
targetIds,
|
|
@@ -838,6 +952,11 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
838
952
|
const state = getState();
|
|
839
953
|
if (!state || state.mode !== 'editor' || state.busy)
|
|
840
954
|
return { ok: false, reason: 'Editor is not ready.' };
|
|
955
|
+
const scope = resolveScope(state);
|
|
956
|
+
if (scope.commandSurface === 'prefab-composition')
|
|
957
|
+
return submitPrefabAttachSelection(scope, selection);
|
|
958
|
+
if (scope.commandSurface !== 'scene-graph')
|
|
959
|
+
return { ok: false, reason: 'Hierarchy move pipeline is not connected yet.' };
|
|
841
960
|
const ids = selection.resolution.draggedIds;
|
|
842
961
|
if (ids.length === 0)
|
|
843
962
|
return { ok: false, reason: 'Select one or more movable nodes first.' };
|
|
@@ -867,6 +986,31 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
867
986
|
requestRender();
|
|
868
987
|
return result;
|
|
869
988
|
}
|
|
989
|
+
function submitPrefabAttachSelection(scope, selection) {
|
|
990
|
+
const ids = selection.resolution.draggedIds;
|
|
991
|
+
if (ids.length !== 1)
|
|
992
|
+
return { ok: false, reason: 'Move one prefab node at a time.' };
|
|
993
|
+
if (selection.placement !== 'inside')
|
|
994
|
+
return { ok: false, reason: 'Prefab node reparent supports inside placement only.' };
|
|
995
|
+
if (!selection.targetId)
|
|
996
|
+
return { ok: false, reason: 'Select a valid prefab parent first.' };
|
|
997
|
+
if (!submitPrefabNodeReparent(scope, ids[0], selection.targetId)) {
|
|
998
|
+
return { ok: false, reason: 'Select valid prefab nodes first.' };
|
|
999
|
+
}
|
|
1000
|
+
expandNode(selection.targetId);
|
|
1001
|
+
requestRender();
|
|
1002
|
+
return { ok: true };
|
|
1003
|
+
}
|
|
1004
|
+
function submitPrefabNodeReparent(scope, hierarchyId, parentHierarchyId) {
|
|
1005
|
+
const nodeId = resolvePrefabCommandTargetId(scope, hierarchyId);
|
|
1006
|
+
const parentNodeId = resolvePrefabCommandTargetId(scope, parentHierarchyId);
|
|
1007
|
+
if (!nodeId || !parentNodeId)
|
|
1008
|
+
return false;
|
|
1009
|
+
callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.reparent', nodeId, {
|
|
1010
|
+
parentNodeId,
|
|
1011
|
+
}));
|
|
1012
|
+
return true;
|
|
1013
|
+
}
|
|
870
1014
|
function normalizeAttachSceneGraphMoveResult(result) {
|
|
871
1015
|
if (typeof result === 'boolean')
|
|
872
1016
|
return { ok: result };
|
|
@@ -884,16 +1028,19 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
884
1028
|
if (hierarchyRename || hierarchyDrag || hasHierarchyDragFeedback())
|
|
885
1029
|
return false;
|
|
886
1030
|
const state = getState();
|
|
887
|
-
|
|
1031
|
+
if (!state)
|
|
1032
|
+
return false;
|
|
1033
|
+
const scope = resolveScope(state);
|
|
1034
|
+
return scope.kind === 'scene' && scope.selectedIds.length > 0;
|
|
888
1035
|
}
|
|
889
1036
|
function clearSelectionFromSearchClick(event) {
|
|
890
1037
|
if (event.button !== 0 || event.shiftKey || event.metaKey || event.ctrlKey || event.altKey)
|
|
891
1038
|
return;
|
|
892
1039
|
const state = getState();
|
|
893
|
-
if ((state
|
|
1040
|
+
if (!state || resolveScope(state).kind !== 'scene' || state.selectedIds.length === 0)
|
|
894
1041
|
return;
|
|
895
1042
|
hierarchySelectionAnchorId = null;
|
|
896
|
-
submitSelectionCommand({ type: 'selection.clear', label: 'Clear Selection' });
|
|
1043
|
+
submitSelectionCommand({ type: 'selection.clear', label: 'Clear Selection' }, state);
|
|
897
1044
|
}
|
|
898
1045
|
function isHierarchyShortcutScope(event) {
|
|
899
1046
|
const target = event.target instanceof Node ? event.target : null;
|
|
@@ -909,6 +1056,13 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
909
1056
|
function submitHierarchyContextAction(action) {
|
|
910
1057
|
if (action.action === 'rename')
|
|
911
1058
|
return;
|
|
1059
|
+
const scope = resolveScopeForCurrentState();
|
|
1060
|
+
if (scope?.commandSurface === 'prefab-composition') {
|
|
1061
|
+
submitPrefabHierarchyContextAction(scope, action);
|
|
1062
|
+
return;
|
|
1063
|
+
}
|
|
1064
|
+
if (scope?.commandSurface !== 'scene-graph')
|
|
1065
|
+
return;
|
|
912
1066
|
if (action.action === 'create-group' || action.action === 'create-primitive' || action.action === 'create-marker') {
|
|
913
1067
|
expandNode(action.parentId);
|
|
914
1068
|
}
|
|
@@ -960,8 +1114,64 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
960
1114
|
});
|
|
961
1115
|
}
|
|
962
1116
|
}
|
|
963
|
-
function
|
|
964
|
-
|
|
1117
|
+
function submitPrefabHierarchyContextAction(scope, action) {
|
|
1118
|
+
if (action.action === 'focus') {
|
|
1119
|
+
const targetId = action.activeId ?? action.targetIds[0] ?? null;
|
|
1120
|
+
if (targetId)
|
|
1121
|
+
callbacks.onSelectPrefabStageItem?.(targetId);
|
|
1122
|
+
return;
|
|
1123
|
+
}
|
|
1124
|
+
if (action.action === 'create-primitive') {
|
|
1125
|
+
if (action.parentId)
|
|
1126
|
+
expandNode(action.parentId);
|
|
1127
|
+
callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.createPrimitive', resolvePrefabCommandTargetId(scope, action.parentId ?? scope.activeId), {
|
|
1128
|
+
primitiveShape: action.shape,
|
|
1129
|
+
}));
|
|
1130
|
+
return;
|
|
1131
|
+
}
|
|
1132
|
+
if (action.action === 'create-group') {
|
|
1133
|
+
if (action.parentId)
|
|
1134
|
+
expandNode(action.parentId);
|
|
1135
|
+
callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.createGroup', resolvePrefabCommandTargetId(scope, action.parentId ?? scope.activeId), {
|
|
1136
|
+
value: { name: 'Empty' },
|
|
1137
|
+
}));
|
|
1138
|
+
return;
|
|
1139
|
+
}
|
|
1140
|
+
if (action.action === 'delete') {
|
|
1141
|
+
const nodeId = action.activeId && action.targetIds.includes(action.activeId)
|
|
1142
|
+
? action.activeId
|
|
1143
|
+
: action.targetIds[0] ?? null;
|
|
1144
|
+
if (!nodeId)
|
|
1145
|
+
return;
|
|
1146
|
+
callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.delete', resolvePrefabCommandTargetId(scope, nodeId)));
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
function resolvePrefabCommandTargetId(scope, hierarchyId) {
|
|
1150
|
+
if (!hierarchyId)
|
|
1151
|
+
return null;
|
|
1152
|
+
const node = scope.nodes.find(candidate => candidate.id === hierarchyId);
|
|
1153
|
+
return node?.commandTargetId ?? hierarchyId;
|
|
1154
|
+
}
|
|
1155
|
+
function createPrefabNodeAssetAction(scope, actionId, nodeId, extra = {}) {
|
|
1156
|
+
const stageAssetId = scope.scopeId.startsWith('prefab-stage:')
|
|
1157
|
+
? scope.scopeId.slice('prefab-stage:'.length)
|
|
1158
|
+
: undefined;
|
|
1159
|
+
return {
|
|
1160
|
+
actionId,
|
|
1161
|
+
assetId: stageAssetId,
|
|
1162
|
+
browserAssetId: stageAssetId ? `prefab:${stageAssetId}` : undefined,
|
|
1163
|
+
assetKind: 'prefab',
|
|
1164
|
+
targetPrefabAssetId: stageAssetId,
|
|
1165
|
+
...(nodeId ? { nodeId, parentNodeId: nodeId } : {}),
|
|
1166
|
+
...extra,
|
|
1167
|
+
};
|
|
1168
|
+
}
|
|
1169
|
+
function resolveHierarchyCommandAdapter(scope) {
|
|
1170
|
+
return resolveLocalEditorHierarchyCommandAdapter(scope, {
|
|
1171
|
+
hasDuplicateHandler: typeof callbacks.onSceneGraphDuplicate === 'function',
|
|
1172
|
+
hasMoveHandler: typeof callbacks.onSceneGraphMove === 'function',
|
|
1173
|
+
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
1174
|
+
});
|
|
965
1175
|
}
|
|
966
1176
|
function resolveActiveTheme() {
|
|
967
1177
|
const themed = panel.closest('.fps-editor-workbench[data-fps-editor-theme]');
|
|
@@ -972,11 +1182,18 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
972
1182
|
const state = getState();
|
|
973
1183
|
const model = state ? getModel(state) : null;
|
|
974
1184
|
const node = model?.getNode(id) ?? null;
|
|
975
|
-
if (!node || node
|
|
1185
|
+
if (!node || !canLocalEditorHierarchyNodeRename(node))
|
|
976
1186
|
return;
|
|
977
1187
|
hierarchyRename = { id, value: node.label };
|
|
978
1188
|
requestRender();
|
|
979
1189
|
}
|
|
1190
|
+
function selectSingleHierarchyItem(id) {
|
|
1191
|
+
const scope = resolveScopeForCurrentState();
|
|
1192
|
+
if (scope?.kind === 'prefab-stage')
|
|
1193
|
+
callbacks.onSelectPrefabStageItem?.(id);
|
|
1194
|
+
else
|
|
1195
|
+
callbacks.onSelectHierarchyItem?.({ id, additive: false, toggle: false });
|
|
1196
|
+
}
|
|
980
1197
|
function submitResolvedDrop(resolved, targetId, placement, draggedIds) {
|
|
981
1198
|
if (callbacks.onSceneGraphMove) {
|
|
982
1199
|
callbacks.onSceneGraphMove({
|