@fps-games/editor 0.1.5-beta.5 → 0.1.7-beta.1
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/local-editor-agent-actions.d.ts +8 -1
- package/dist/local-editor-agent-actions.d.ts.map +1 -1
- package/dist/local-editor-agent-actions.js +171 -12
- package/dist/local-editor-agent-actions.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-agent-context.d.ts +29 -1
- package/dist/local-editor-agent-context.d.ts.map +1 -1
- package/dist/local-editor-agent-context.js +403 -0
- package/dist/local-editor-agent-context.js.map +1 -1
- package/dist/local-editor-harness.d.ts +128 -6
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +2730 -151
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/local-editor-marker-graph.d.ts +92 -0
- package/dist/local-editor-marker-graph.d.ts.map +1 -0
- package/dist/local-editor-marker-graph.js +1432 -0
- package/dist/local-editor-marker-graph.js.map +1 -0
- package/dist/local-editor-performance-stats.js +1 -1
- package/dist/local-editor-performance-stats.js.map +1 -1
- package/dist/playable-babylon-facade.d.ts +2 -2
- package/dist/playable-babylon-facade.d.ts.map +1 -1
- package/dist/playable-babylon-facade.js +1 -1
- package/dist/playable-babylon-facade.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 +57 -7
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js +25 -1
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-sdk.d.ts +4 -2
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js +2 -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/camera-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +11 -0
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.d.ts +3 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js +114 -18
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.js +3 -0
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +3 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.js +3 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.d.ts +52 -0
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +1395 -0
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js +4 -65
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts +28 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +235 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +37 -0
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +451 -0
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +14 -3
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js +20 -4
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.d.ts +3 -6
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js +4 -37
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +74 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +641 -52
- 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 +8 -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 +4 -0
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +5 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +23 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -0
- 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 +76 -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.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +3 -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 +2 -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 +326 -72
- 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 +4 -1
- 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 +24 -11
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +7 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +4 -0
- 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 +1471 -29
- 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 +70 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +171 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.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-shared.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +9 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +301 -3
- 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 +12 -1
- 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 +13 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +6 -4
- 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 +1501 -122
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.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/scene-graph.d.ts +1 -1
- package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +3 -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 +1 -0
- 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-library/catalog.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +17 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts +3 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts +1 -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 +48 -20
- 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 +97 -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 +1143 -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 +145 -2
- 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 +24 -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 +6 -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 +31 -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/local-harness/lifecycle.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +3 -7
- 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/material-binding/binding.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +6 -0
- 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/types.d.ts +2 -10
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +107 -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 +82 -63
- 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 +7 -23
- 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 +44 -2
- 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 +1 -0
- 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 +244 -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 +216 -67
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js +7 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.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/session/hierarchy.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/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/agent.d.ts +57 -3
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +21 -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 +3 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.d.ts +128 -0
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/package.json +1 -1
- package/package.json +8 -8
|
@@ -1,15 +1,23 @@
|
|
|
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;
|
|
12
|
+
export function resolveLocalEditorHierarchyCreateMarkerParentId(activeNode) {
|
|
13
|
+
return activeNode && activeNode.item.canHaveChildren === true && activeNode.item.role !== 'marker'
|
|
14
|
+
? activeNode.id
|
|
15
|
+
: null;
|
|
16
|
+
}
|
|
10
17
|
export function createLocalEditorHierarchyController(options) {
|
|
11
18
|
const { doc, panel, callbacks, inputRouter, contextMenu, getState, requestRender } = options;
|
|
12
|
-
const
|
|
19
|
+
const collapsedIdsByScope = new Map();
|
|
20
|
+
const hierarchySearchByScope = new Map();
|
|
13
21
|
let hierarchyRename = null;
|
|
14
22
|
let hierarchyDrag = null;
|
|
15
23
|
let hierarchyDrop = null;
|
|
@@ -17,10 +25,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
17
25
|
const hierarchyDragSession = createLocalEditorStructuredDragSession();
|
|
18
26
|
let hierarchyShortcutScopeActive = false;
|
|
19
27
|
let hierarchyClipboard = null;
|
|
20
|
-
let hierarchySearch = '';
|
|
21
28
|
let hierarchySearchComposing = false;
|
|
22
29
|
let currentModel = null;
|
|
23
30
|
let lastRenderedActiveId;
|
|
31
|
+
let lastRenderedScopeId;
|
|
24
32
|
let pendingHierarchyScrollId = null;
|
|
25
33
|
let hierarchySelectionAnchorId = null;
|
|
26
34
|
const attachDialog = createLocalEditorHierarchyAttachDialog({
|
|
@@ -40,15 +48,18 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
40
48
|
return currentModel;
|
|
41
49
|
};
|
|
42
50
|
const render = (state) => {
|
|
43
|
-
|
|
51
|
+
const scope = resolveScope(state);
|
|
52
|
+
const commandAdapter = resolveHierarchyCommandAdapter(scope);
|
|
53
|
+
if (hierarchyRename && !scope.nodes.some(item => item.id === hierarchyRename?.id))
|
|
44
54
|
hierarchyRename = null;
|
|
45
|
-
const
|
|
55
|
+
const scopeChanged = scope.scopeId !== lastRenderedScopeId;
|
|
56
|
+
const activeIdChanged = scope.activeId !== lastRenderedActiveId || scopeChanged;
|
|
46
57
|
const treeScrollSnapshot = treeViewportReveal.captureScrollSnapshot();
|
|
47
58
|
if (activeIdChanged) {
|
|
48
59
|
pendingHierarchyScrollId = null;
|
|
49
|
-
expandActiveHierarchyPath(state);
|
|
60
|
+
expandActiveHierarchyPath(state, scope);
|
|
50
61
|
}
|
|
51
|
-
currentModel = createModel(state);
|
|
62
|
+
currentModel = createModel(state, scope);
|
|
52
63
|
if (hierarchySelectionAnchorId && !currentModel.getNode(hierarchySelectionAnchorId)) {
|
|
53
64
|
hierarchySelectionAnchorId = null;
|
|
54
65
|
}
|
|
@@ -58,16 +69,21 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
58
69
|
drop: hierarchyDrop,
|
|
59
70
|
dropPreview: hierarchyDragSession.preview,
|
|
60
71
|
rootDrop: hierarchyRootDrop,
|
|
61
|
-
searchQuery:
|
|
72
|
+
searchQuery: getScopeSearch(scope.scopeId),
|
|
73
|
+
title: scope.title,
|
|
74
|
+
searchPlaceholder: scope.searchPlaceholder,
|
|
75
|
+
showCreateGroup: commandAdapter.showCreateGroupToolbar,
|
|
76
|
+
showCreateMarker: commandAdapter.kind === 'scene',
|
|
62
77
|
});
|
|
63
78
|
treeViewportReveal.restoreScrollSnapshot(treeScrollSnapshot);
|
|
64
|
-
const suppressActiveScroll =
|
|
65
|
-
? treeViewportReveal.consumeRevealSuppression(
|
|
79
|
+
const suppressActiveScroll = scope.activeId
|
|
80
|
+
? treeViewportReveal.consumeRevealSuppression(scope.activeId, { clearWhenDifferent: activeIdChanged })
|
|
66
81
|
: false;
|
|
67
|
-
if (activeIdChanged &&
|
|
68
|
-
scheduleActiveHierarchyScroll(
|
|
82
|
+
if (activeIdChanged && scope.activeId && !suppressActiveScroll && shouldAutoScrollActiveHierarchyNode()) {
|
|
83
|
+
scheduleActiveHierarchyScroll(scope.activeId);
|
|
69
84
|
}
|
|
70
|
-
lastRenderedActiveId =
|
|
85
|
+
lastRenderedActiveId = scope.activeId;
|
|
86
|
+
lastRenderedScopeId = scope.scopeId;
|
|
71
87
|
};
|
|
72
88
|
const onClick = (event) => {
|
|
73
89
|
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
@@ -95,7 +111,9 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
95
111
|
const createGroupButton = target?.closest('[data-editor-hierarchy-create-group]');
|
|
96
112
|
if (createGroupButton) {
|
|
97
113
|
const state = getState();
|
|
98
|
-
|
|
114
|
+
if (!state || resolveScope(state).commandSurface !== 'scene-graph')
|
|
115
|
+
return;
|
|
116
|
+
const parentId = state.activeId ?? null;
|
|
99
117
|
if (parentId)
|
|
100
118
|
expandNode(parentId);
|
|
101
119
|
callbacks.onSceneGraphCreateGroup?.({
|
|
@@ -105,6 +123,13 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
105
123
|
});
|
|
106
124
|
return;
|
|
107
125
|
}
|
|
126
|
+
const createMarkerButton = target?.closest('[data-editor-hierarchy-create-marker]');
|
|
127
|
+
if (createMarkerButton) {
|
|
128
|
+
event.preventDefault();
|
|
129
|
+
event.stopPropagation();
|
|
130
|
+
createHierarchyMarkerFromButton();
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
108
133
|
const hierarchyButton = target?.closest('[data-editor-hierarchy-id]');
|
|
109
134
|
const hierarchyId = hierarchyButton?.dataset.editorHierarchyId;
|
|
110
135
|
if (hierarchyId) {
|
|
@@ -119,7 +144,7 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
119
144
|
if (shouldClearSelectionFromBlankClick(event, target)) {
|
|
120
145
|
event.preventDefault();
|
|
121
146
|
hierarchySelectionAnchorId = null;
|
|
122
|
-
submitSelectionCommand({ type: 'selection.clear', label: 'Clear Selection' });
|
|
147
|
+
submitSelectionCommand({ type: 'selection.clear', label: 'Clear Selection' }, getState() ?? undefined);
|
|
123
148
|
}
|
|
124
149
|
};
|
|
125
150
|
const onContextMenu = (event) => {
|
|
@@ -142,13 +167,15 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
142
167
|
event.preventDefault();
|
|
143
168
|
event.stopPropagation();
|
|
144
169
|
hierarchySelectionAnchorId = id;
|
|
145
|
-
|
|
146
|
-
|
|
170
|
+
selectSingleHierarchyItem(id);
|
|
171
|
+
if (resolveScopeForCurrentState()?.kind === 'scene')
|
|
172
|
+
callbacks.onFocusSelection?.();
|
|
147
173
|
};
|
|
148
174
|
const onInput = (event) => {
|
|
149
175
|
const input = event.target instanceof HTMLInputElement ? event.target : null;
|
|
150
176
|
if (input?.dataset.editorHierarchySearch != null) {
|
|
151
|
-
|
|
177
|
+
const scopeId = resolveScopeForCurrentState()?.scopeId ?? 'scene';
|
|
178
|
+
hierarchySearchByScope.set(scopeId, input.value);
|
|
152
179
|
if (!hierarchySearchComposing && !isComposingInputEvent(event))
|
|
153
180
|
requestRender();
|
|
154
181
|
return;
|
|
@@ -165,10 +192,11 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
165
192
|
if (input?.dataset.editorHierarchySearch != null) {
|
|
166
193
|
if (event.isComposing || hierarchySearchComposing)
|
|
167
194
|
return;
|
|
168
|
-
|
|
195
|
+
const scopeId = resolveScopeForCurrentState()?.scopeId ?? 'scene';
|
|
196
|
+
if (event.key !== 'Escape' || getScopeSearch(scopeId).length === 0)
|
|
169
197
|
return;
|
|
170
198
|
event.preventDefault();
|
|
171
|
-
|
|
199
|
+
hierarchySearchByScope.set(scopeId, '');
|
|
172
200
|
requestRender();
|
|
173
201
|
return;
|
|
174
202
|
}
|
|
@@ -196,7 +224,8 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
196
224
|
if (input?.dataset.editorHierarchySearch == null)
|
|
197
225
|
return;
|
|
198
226
|
hierarchySearchComposing = false;
|
|
199
|
-
|
|
227
|
+
const scopeId = resolveScopeForCurrentState()?.scopeId ?? 'scene';
|
|
228
|
+
hierarchySearchByScope.set(scopeId, input.value);
|
|
200
229
|
requestRender();
|
|
201
230
|
};
|
|
202
231
|
const onFocusOut = (event) => {
|
|
@@ -212,6 +241,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
212
241
|
const id = button?.dataset.editorHierarchyId;
|
|
213
242
|
if (!id || !state)
|
|
214
243
|
return;
|
|
244
|
+
if (!resolveHierarchyCommandAdapter(resolveScope(state)).menuCapabilities.hasMoveHandler) {
|
|
245
|
+
event.preventDefault();
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
215
248
|
const model = getModel(state);
|
|
216
249
|
const node = model.getNode(id);
|
|
217
250
|
if (!isLocalEditorHierarchyNodeMovable(node)) {
|
|
@@ -232,6 +265,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
232
265
|
clearHierarchyDragFeedbackAndRender();
|
|
233
266
|
return;
|
|
234
267
|
}
|
|
268
|
+
if (!resolveHierarchyCommandAdapter(resolveScope(state)).menuCapabilities.hasMoveHandler) {
|
|
269
|
+
clearHierarchyDragFeedbackAndRender();
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
235
272
|
const model = getModel(state);
|
|
236
273
|
if (!isInsideHierarchyTreeViewport(target)) {
|
|
237
274
|
clearHierarchyDragFeedbackAndRender();
|
|
@@ -297,6 +334,11 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
297
334
|
clearHierarchyDragFeedbackAndRender();
|
|
298
335
|
return;
|
|
299
336
|
}
|
|
337
|
+
const scope = resolveScope(state);
|
|
338
|
+
if (!resolveHierarchyCommandAdapter(scope).menuCapabilities.hasMoveHandler) {
|
|
339
|
+
clearHierarchyDragFeedbackAndRender();
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
300
342
|
const model = getModel(state);
|
|
301
343
|
if (!isInsideHierarchyTreeViewport(target)) {
|
|
302
344
|
clearHierarchyDragFeedbackAndRender();
|
|
@@ -311,6 +353,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
311
353
|
hierarchyDrag = null;
|
|
312
354
|
clearHierarchyDragFeedback();
|
|
313
355
|
if (operation.slot.placement === 'root') {
|
|
356
|
+
if (scope.commandSurface === 'prefab-composition') {
|
|
357
|
+
requestRender();
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
314
360
|
submitResolvedRootDrop(operation.resolution);
|
|
315
361
|
return;
|
|
316
362
|
}
|
|
@@ -320,6 +366,15 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
320
366
|
return;
|
|
321
367
|
}
|
|
322
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
|
+
}
|
|
323
378
|
submitResolvedDrop(operation.resolution, targetId, operation.slot.placement, draggedIds);
|
|
324
379
|
};
|
|
325
380
|
panel.addEventListener('click', onClick);
|
|
@@ -369,11 +424,14 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
369
424
|
const state = getState();
|
|
370
425
|
if (!state)
|
|
371
426
|
return false;
|
|
427
|
+
const scope = resolveScope(state);
|
|
428
|
+
if (scope.kind !== 'scene')
|
|
429
|
+
return false;
|
|
430
|
+
const commandAdapter = resolveHierarchyCommandAdapter(scope);
|
|
372
431
|
const action = createLocalEditorHierarchyDeleteShortcutAction({
|
|
373
432
|
state,
|
|
374
433
|
model: getModel(state),
|
|
375
|
-
|
|
376
|
-
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
434
|
+
...commandAdapter.menuCapabilities,
|
|
377
435
|
});
|
|
378
436
|
if (!action)
|
|
379
437
|
return false;
|
|
@@ -392,13 +450,16 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
392
450
|
const state = getState();
|
|
393
451
|
if (!state)
|
|
394
452
|
return false;
|
|
453
|
+
const scope = resolveScope(state);
|
|
454
|
+
if (scope.kind !== 'scene')
|
|
455
|
+
return false;
|
|
456
|
+
const commandAdapter = resolveHierarchyCommandAdapter(scope);
|
|
395
457
|
const input = {
|
|
396
458
|
state,
|
|
397
459
|
model: getModel(state),
|
|
398
460
|
clipboardIds: hierarchyClipboard?.ids ?? null,
|
|
399
461
|
clipboardActiveId: hierarchyClipboard?.activeId ?? null,
|
|
400
|
-
|
|
401
|
-
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
462
|
+
...commandAdapter.menuCapabilities,
|
|
402
463
|
};
|
|
403
464
|
const action = key === 'd'
|
|
404
465
|
? createLocalEditorHierarchyDuplicateShortcutAction(input)
|
|
@@ -418,13 +479,34 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
418
479
|
function isComposingInputEvent(event) {
|
|
419
480
|
return event.isComposing === true;
|
|
420
481
|
}
|
|
421
|
-
function
|
|
422
|
-
return
|
|
423
|
-
|
|
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),
|
|
424
503
|
defaultExpanded: true,
|
|
425
504
|
});
|
|
426
505
|
}
|
|
427
506
|
function selectHierarchyItemFromClick(id, event) {
|
|
507
|
+
const scope = resolveScopeForCurrentState();
|
|
508
|
+
if (!scope)
|
|
509
|
+
return;
|
|
428
510
|
const toggle = event.metaKey || event.ctrlKey;
|
|
429
511
|
const range = event.shiftKey && !toggle;
|
|
430
512
|
if (range) {
|
|
@@ -432,11 +514,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
432
514
|
return;
|
|
433
515
|
}
|
|
434
516
|
hierarchySelectionAnchorId = id;
|
|
435
|
-
|
|
436
|
-
id
|
|
437
|
-
|
|
438
|
-
toggle
|
|
439
|
-
});
|
|
517
|
+
if (scope.kind === 'prefab-stage')
|
|
518
|
+
callbacks.onSelectPrefabStageItem?.(id);
|
|
519
|
+
else
|
|
520
|
+
callbacks.onSelectHierarchyItem?.({ id, additive: false, toggle });
|
|
440
521
|
}
|
|
441
522
|
function toggleHierarchyItemEnabled(id, toggle) {
|
|
442
523
|
if (toggle.dataset.editorHierarchyEnabledToggleDisabled === 'true')
|
|
@@ -444,10 +525,10 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
444
525
|
const state = getState();
|
|
445
526
|
if (!state)
|
|
446
527
|
return;
|
|
447
|
-
|
|
448
|
-
if (!node || typeof node.item.enabled !== 'boolean')
|
|
528
|
+
if (resolveScope(state).commandSurface !== 'scene-graph')
|
|
449
529
|
return;
|
|
450
|
-
|
|
530
|
+
const node = getModel(state).getNode(id);
|
|
531
|
+
if (!node || !canLocalEditorHierarchyNodeToggleEnabled(node))
|
|
451
532
|
return;
|
|
452
533
|
const directEnabled = typeof node.item.directEnabled === 'boolean'
|
|
453
534
|
? node.item.directEnabled
|
|
@@ -460,16 +541,22 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
460
541
|
function selectHierarchyVisibleRange(targetId) {
|
|
461
542
|
const state = getState();
|
|
462
543
|
if (!state) {
|
|
463
|
-
|
|
544
|
+
selectSingleHierarchyItem(targetId);
|
|
464
545
|
hierarchySelectionAnchorId = targetId;
|
|
465
546
|
return;
|
|
466
547
|
}
|
|
548
|
+
const scope = resolveScope(state);
|
|
549
|
+
if (scope.kind !== 'scene') {
|
|
550
|
+
hierarchySelectionAnchorId = targetId;
|
|
551
|
+
callbacks.onSelectPrefabStageItem?.(targetId);
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
467
554
|
const model = getModel(state);
|
|
468
|
-
const anchorId = hierarchySelectionAnchorId ??
|
|
555
|
+
const anchorId = hierarchySelectionAnchorId ?? scope.activeId ?? targetId;
|
|
469
556
|
const selectedIds = model.getVisibleRangeSelection(anchorId, targetId);
|
|
470
557
|
if (selectedIds.length === 0) {
|
|
471
558
|
hierarchySelectionAnchorId = targetId;
|
|
472
|
-
|
|
559
|
+
selectSingleHierarchyItem(targetId);
|
|
473
560
|
return;
|
|
474
561
|
}
|
|
475
562
|
const activeId = selectedIds.includes(targetId)
|
|
@@ -480,10 +567,11 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
480
567
|
label: 'Select Hierarchy Range',
|
|
481
568
|
selectedIds,
|
|
482
569
|
activeId,
|
|
483
|
-
});
|
|
570
|
+
}, state);
|
|
484
571
|
}
|
|
485
572
|
function resolveDraggedIds(state, model, draggedId) {
|
|
486
|
-
const
|
|
573
|
+
const scope = resolveScope(state);
|
|
574
|
+
const selectedIds = scope.selectedIds.includes(draggedId) ? scope.selectedIds : [draggedId];
|
|
487
575
|
return model.getTopLevelSelection(selectedIds);
|
|
488
576
|
}
|
|
489
577
|
function readDraggedIds(event) {
|
|
@@ -503,6 +591,8 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
503
591
|
requestRender();
|
|
504
592
|
}
|
|
505
593
|
function toggleExpanded(id) {
|
|
594
|
+
const scope = resolveScopeForCurrentState();
|
|
595
|
+
const collapsedIds = getScopeCollapsedIds(scope?.scopeId ?? 'scene');
|
|
506
596
|
if (collapsedIds.has(id))
|
|
507
597
|
collapsedIds.delete(id);
|
|
508
598
|
else
|
|
@@ -512,15 +602,17 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
512
602
|
function expandNode(id) {
|
|
513
603
|
if (!id)
|
|
514
604
|
return;
|
|
515
|
-
|
|
605
|
+
const scope = resolveScopeForCurrentState();
|
|
606
|
+
getScopeCollapsedIds(scope?.scopeId ?? 'scene').delete(id);
|
|
516
607
|
}
|
|
517
|
-
function expandActiveHierarchyPath(state) {
|
|
518
|
-
if (!
|
|
608
|
+
function expandActiveHierarchyPath(state, scope = resolveScope(state)) {
|
|
609
|
+
if (!scope.activeId)
|
|
519
610
|
return;
|
|
520
|
-
const model = createModel(state);
|
|
521
|
-
if (!model.getNode(
|
|
611
|
+
const model = createModel(state, scope);
|
|
612
|
+
if (!model.getNode(scope.activeId))
|
|
522
613
|
return;
|
|
523
|
-
|
|
614
|
+
const collapsedIds = getScopeCollapsedIds(scope.scopeId);
|
|
615
|
+
for (const ancestor of model.getAncestors(scope.activeId)) {
|
|
524
616
|
collapsedIds.delete(ancestor.id);
|
|
525
617
|
}
|
|
526
618
|
}
|
|
@@ -698,10 +790,19 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
698
790
|
return;
|
|
699
791
|
const trimmed = value.trim();
|
|
700
792
|
const state = getState();
|
|
701
|
-
const
|
|
793
|
+
const scope = state ? resolveScope(state) : null;
|
|
794
|
+
const item = scope?.nodes.find(candidate => candidate.id === id) ?? null;
|
|
702
795
|
hierarchyRename = null;
|
|
703
|
-
if (trimmed && item && trimmed !== item.label)
|
|
704
|
-
|
|
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
|
+
}
|
|
705
806
|
requestRender();
|
|
706
807
|
}
|
|
707
808
|
function openHierarchyContextMenu(event) {
|
|
@@ -720,42 +821,55 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
720
821
|
requestRender();
|
|
721
822
|
return;
|
|
722
823
|
}
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
options.onBeforeOpenContextMenu?.();
|
|
824
|
+
const scope = resolveScope(state);
|
|
825
|
+
const commandAdapter = resolveHierarchyCommandAdapter(scope);
|
|
726
826
|
const model = getModel(state);
|
|
727
827
|
const hierarchyButton = target.closest('[data-editor-hierarchy-id]');
|
|
728
828
|
const node = model.getNode(hierarchyButton?.dataset.editorHierarchyId);
|
|
729
|
-
if (node && !
|
|
829
|
+
if (node && !scope.selectedIds.includes(node.id) && isLocalEditorHierarchyNodeSelectable(node)) {
|
|
730
830
|
hierarchySelectionAnchorId = node.id;
|
|
731
|
-
|
|
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;
|
|
732
840
|
}
|
|
841
|
+
event.preventDefault();
|
|
842
|
+
event.stopPropagation();
|
|
843
|
+
options.onBeforeOpenContextMenu?.();
|
|
844
|
+
const menuState = createScopedHierarchyMenuState(state, scope);
|
|
733
845
|
const menu = node
|
|
734
846
|
? createLocalEditorHierarchyNodeMenu({
|
|
735
|
-
state,
|
|
847
|
+
state: menuState,
|
|
736
848
|
model,
|
|
737
849
|
node,
|
|
738
850
|
clipboardIds: hierarchyClipboard?.ids ?? null,
|
|
739
851
|
clipboardActiveId: hierarchyClipboard?.activeId ?? null,
|
|
740
|
-
|
|
741
|
-
hasMoveHandler: typeof callbacks.onSceneGraphMove === 'function',
|
|
742
|
-
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
852
|
+
...commandAdapter.menuCapabilities,
|
|
743
853
|
contextActions: options.contextActions,
|
|
744
854
|
})
|
|
745
855
|
: createLocalEditorHierarchyBlankMenu({
|
|
746
|
-
state,
|
|
856
|
+
state: menuState,
|
|
747
857
|
model,
|
|
748
858
|
clipboardIds: hierarchyClipboard?.ids ?? null,
|
|
749
859
|
clipboardActiveId: hierarchyClipboard?.activeId ?? null,
|
|
750
|
-
|
|
751
|
-
hasMoveHandler: typeof callbacks.onSceneGraphMove === 'function',
|
|
752
|
-
hasGroupSelectionHandler: typeof callbacks.onSceneGraphGroupSelection === 'function',
|
|
860
|
+
...commandAdapter.menuCapabilities,
|
|
753
861
|
contextActions: options.contextActions,
|
|
754
862
|
});
|
|
863
|
+
const menuItems = commandAdapter.filterMenuItems(menu.items);
|
|
864
|
+
if (menuItems.length === 0) {
|
|
865
|
+
if (hadHierarchyFeedback)
|
|
866
|
+
requestRender();
|
|
867
|
+
return;
|
|
868
|
+
}
|
|
755
869
|
contextMenu.open({
|
|
756
870
|
x: event.clientX,
|
|
757
871
|
y: event.clientY,
|
|
758
|
-
items:
|
|
872
|
+
items: menuItems,
|
|
759
873
|
onAction(item) {
|
|
760
874
|
const action = menu.actions.get(item.id);
|
|
761
875
|
if (action)
|
|
@@ -765,6 +879,22 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
765
879
|
if (hadHierarchyFeedback)
|
|
766
880
|
requestRender();
|
|
767
881
|
}
|
|
882
|
+
function createHierarchyMarkerFromButton() {
|
|
883
|
+
const state = getState();
|
|
884
|
+
if (!state || state.mode !== 'editor' || state.busy)
|
|
885
|
+
return;
|
|
886
|
+
const model = getModel(state);
|
|
887
|
+
const activeNode = model.getNode(state.activeId);
|
|
888
|
+
const parentId = resolveLocalEditorHierarchyCreateMarkerParentId(activeNode);
|
|
889
|
+
if (parentId)
|
|
890
|
+
expandNode(parentId);
|
|
891
|
+
callbacks.onSceneGraphCreateMarker?.({
|
|
892
|
+
parentId,
|
|
893
|
+
activeId: parentId ?? state.activeId ?? null,
|
|
894
|
+
name: 'Marker',
|
|
895
|
+
});
|
|
896
|
+
requestRender();
|
|
897
|
+
}
|
|
768
898
|
function submitHierarchyAction(action) {
|
|
769
899
|
if (action.kind === 'begin-rename') {
|
|
770
900
|
beginHierarchyRename(action.targetId);
|
|
@@ -793,13 +923,25 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
793
923
|
}
|
|
794
924
|
submitHierarchyContextAction(action.action);
|
|
795
925
|
}
|
|
796
|
-
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;
|
|
797
937
|
callbacks.onSelectionCommand?.(command);
|
|
798
938
|
}
|
|
799
939
|
function openAttachPicker(targetIds, activeId) {
|
|
800
940
|
const state = getState();
|
|
801
941
|
if (!state || state.mode !== 'editor' || state.busy || targetIds.length === 0)
|
|
802
942
|
return;
|
|
943
|
+
if (!resolveHierarchyCommandAdapter(resolveScope(state)).menuCapabilities.hasMoveHandler)
|
|
944
|
+
return;
|
|
803
945
|
attachDialog.open({
|
|
804
946
|
model: getModel(state),
|
|
805
947
|
targetIds,
|
|
@@ -810,6 +952,11 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
810
952
|
const state = getState();
|
|
811
953
|
if (!state || state.mode !== 'editor' || state.busy)
|
|
812
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.' };
|
|
813
960
|
const ids = selection.resolution.draggedIds;
|
|
814
961
|
if (ids.length === 0)
|
|
815
962
|
return { ok: false, reason: 'Select one or more movable nodes first.' };
|
|
@@ -839,6 +986,31 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
839
986
|
requestRender();
|
|
840
987
|
return result;
|
|
841
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
|
+
}
|
|
842
1014
|
function normalizeAttachSceneGraphMoveResult(result) {
|
|
843
1015
|
if (typeof result === 'boolean')
|
|
844
1016
|
return { ok: result };
|
|
@@ -856,16 +1028,19 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
856
1028
|
if (hierarchyRename || hierarchyDrag || hasHierarchyDragFeedback())
|
|
857
1029
|
return false;
|
|
858
1030
|
const state = getState();
|
|
859
|
-
|
|
1031
|
+
if (!state)
|
|
1032
|
+
return false;
|
|
1033
|
+
const scope = resolveScope(state);
|
|
1034
|
+
return scope.kind === 'scene' && scope.selectedIds.length > 0;
|
|
860
1035
|
}
|
|
861
1036
|
function clearSelectionFromSearchClick(event) {
|
|
862
1037
|
if (event.button !== 0 || event.shiftKey || event.metaKey || event.ctrlKey || event.altKey)
|
|
863
1038
|
return;
|
|
864
1039
|
const state = getState();
|
|
865
|
-
if ((state
|
|
1040
|
+
if (!state || resolveScope(state).kind !== 'scene' || state.selectedIds.length === 0)
|
|
866
1041
|
return;
|
|
867
1042
|
hierarchySelectionAnchorId = null;
|
|
868
|
-
submitSelectionCommand({ type: 'selection.clear', label: 'Clear Selection' });
|
|
1043
|
+
submitSelectionCommand({ type: 'selection.clear', label: 'Clear Selection' }, state);
|
|
869
1044
|
}
|
|
870
1045
|
function isHierarchyShortcutScope(event) {
|
|
871
1046
|
const target = event.target instanceof Node ? event.target : null;
|
|
@@ -881,8 +1056,16 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
881
1056
|
function submitHierarchyContextAction(action) {
|
|
882
1057
|
if (action.action === 'rename')
|
|
883
1058
|
return;
|
|
884
|
-
|
|
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;
|
|
1066
|
+
if (action.action === 'create-group' || action.action === 'create-primitive' || action.action === 'create-marker') {
|
|
885
1067
|
expandNode(action.parentId);
|
|
1068
|
+
}
|
|
886
1069
|
if (callbacks.onContextAction) {
|
|
887
1070
|
callbacks.onContextAction(action);
|
|
888
1071
|
return;
|
|
@@ -908,6 +1091,14 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
908
1091
|
name: 'Empty',
|
|
909
1092
|
});
|
|
910
1093
|
}
|
|
1094
|
+
else if (action.action === 'create-marker') {
|
|
1095
|
+
callbacks.onSceneGraphCreateMarker?.({
|
|
1096
|
+
parentId: action.parentId ?? null,
|
|
1097
|
+
activeId: action.activeId ?? null,
|
|
1098
|
+
markerType: action.markerType,
|
|
1099
|
+
name: action.name,
|
|
1100
|
+
});
|
|
1101
|
+
}
|
|
911
1102
|
else if (action.action === 'create-primitive') {
|
|
912
1103
|
callbacks.onSceneGraphCreatePrimitive?.({
|
|
913
1104
|
parentId: action.parentId ?? null,
|
|
@@ -923,8 +1114,64 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
923
1114
|
});
|
|
924
1115
|
}
|
|
925
1116
|
}
|
|
926
|
-
function
|
|
927
|
-
|
|
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
|
+
});
|
|
928
1175
|
}
|
|
929
1176
|
function resolveActiveTheme() {
|
|
930
1177
|
const themed = panel.closest('.fps-editor-workbench[data-fps-editor-theme]');
|
|
@@ -935,11 +1182,18 @@ export function createLocalEditorHierarchyController(options) {
|
|
|
935
1182
|
const state = getState();
|
|
936
1183
|
const model = state ? getModel(state) : null;
|
|
937
1184
|
const node = model?.getNode(id) ?? null;
|
|
938
|
-
if (!node || node
|
|
1185
|
+
if (!node || !canLocalEditorHierarchyNodeRename(node))
|
|
939
1186
|
return;
|
|
940
1187
|
hierarchyRename = { id, value: node.label };
|
|
941
1188
|
requestRender();
|
|
942
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
|
+
}
|
|
943
1197
|
function submitResolvedDrop(resolved, targetId, placement, draggedIds) {
|
|
944
1198
|
if (callbacks.onSceneGraphMove) {
|
|
945
1199
|
callbacks.onSceneGraphMove({
|