@fps-games/editor 0.2.0-beta.2 → 0.2.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) hide show
  1. package/dist/agent-bridge/capabilities/assets.js.map +1 -1
  2. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -1
  3. package/dist/agent-bridge/capabilities/editor-state.js +26 -17
  4. package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
  5. package/dist/agent-bridge/capabilities/host-lifecycle.js.map +1 -1
  6. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -1
  7. package/dist/agent-bridge/capabilities/prefabs.js +61 -13
  8. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
  9. package/dist/agent-bridge/capabilities/scene-objects.d.ts +1 -1
  10. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -1
  11. package/dist/agent-bridge/capabilities/scene-objects.js +110 -25
  12. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
  13. package/dist/agent-bridge/capabilities/selection.d.ts.map +1 -1
  14. package/dist/agent-bridge/capabilities/selection.js +8 -5
  15. package/dist/agent-bridge/capabilities/selection.js.map +1 -1
  16. package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -1
  17. package/dist/agent-bridge/capabilities/shadows.js +11 -2
  18. package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
  19. package/dist/agent-bridge/capabilities/transform.d.ts.map +1 -1
  20. package/dist/agent-bridge/capabilities/transform.js +6 -4
  21. package/dist/agent-bridge/capabilities/transform.js.map +1 -1
  22. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  23. package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -1
  24. package/dist/agent-bridge/capabilities/viewport.js +79 -47
  25. package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
  26. package/dist/agent-bridge/capability-sources.js.map +1 -1
  27. package/dist/agent-bridge/diagnostics.js.map +1 -1
  28. package/dist/agent-bridge/index.js.map +1 -1
  29. package/dist/agent-bridge/register.js.map +1 -1
  30. package/dist/agent-bridge/shared.d.ts +8 -3
  31. package/dist/agent-bridge/shared.d.ts.map +1 -1
  32. package/dist/agent-bridge/shared.js +32 -0
  33. package/dist/agent-bridge/shared.js.map +1 -1
  34. package/dist/agent-bridge/source-types.js.map +1 -1
  35. package/dist/authoring-apply.js.map +1 -1
  36. package/dist/build-info.json +48 -48
  37. package/dist/editor-plugin-agent-capabilities.js.map +1 -1
  38. package/dist/editor-plugin-hierarchy-command.js.map +1 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/internal/local-editor-lifecycle-operations.js.map +1 -1
  41. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  42. package/dist/local-editor-agent-actions.js +9 -5
  43. package/dist/local-editor-agent-actions.js.map +1 -1
  44. package/dist/local-editor-agent-bridge-transport.js.map +1 -1
  45. package/dist/local-editor-agent-bridge.js.map +1 -1
  46. package/dist/local-editor-agent-context.js.map +1 -1
  47. package/dist/local-editor-harness.d.ts +57 -1
  48. package/dist/local-editor-harness.d.ts.map +1 -1
  49. package/dist/local-editor-harness.js +393 -41
  50. package/dist/local-editor-harness.js.map +1 -1
  51. package/dist/local-editor-marker-graph.js.map +1 -1
  52. package/dist/local-editor-performance-stats.js.map +1 -1
  53. package/dist/local-editor-plugin-inspector.js.map +1 -1
  54. package/dist/local-editor-plugin-panel.js.map +1 -1
  55. package/dist/local-editor-scene-render-scheduler.js.map +1 -1
  56. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  57. package/dist/local-editor-viewport-render-coordinator.js.map +1 -1
  58. package/dist/playable-babylon-facade.js.map +1 -1
  59. package/dist/playable-babylon-outline-inspector.js.map +1 -1
  60. package/dist/playable-babylon-outline-runtime.js.map +1 -1
  61. package/dist/playable-babylon-rendering.js.map +1 -1
  62. package/dist/playable-local-editor-host.d.ts +36 -0
  63. package/dist/playable-local-editor-host.d.ts.map +1 -1
  64. package/dist/playable-local-editor-host.js.map +1 -1
  65. package/dist/playable-product-local-editor.js.map +1 -1
  66. package/dist/playable-product-projection-preview.js.map +1 -1
  67. package/dist/playable-product-rendering.js.map +1 -1
  68. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  69. package/dist/playable-product-scene-capabilities.js +49 -2
  70. package/dist/playable-product-scene-capabilities.js.map +1 -1
  71. package/dist/playable-runtime-babylon.js.map +1 -1
  72. package/dist/playable-runtime.js.map +1 -1
  73. package/dist/playable-sdk-upgrade-doctor.js.map +1 -1
  74. package/dist/playable-sdk-vite.js.map +1 -1
  75. package/dist/playable-sdk.js.map +1 -1
  76. package/dist/playable-standard-project.js.map +1 -1
  77. package/dist/static-shadow-cpu-worker.js.map +1 -1
  78. package/dist/vite.js.map +1 -1
  79. package/node_modules/@fps-games/babylon-renderer/dist/environment/environment-texture-controller.js.map +1 -1
  80. package/node_modules/@fps-games/babylon-renderer/dist/environment/index.js.map +1 -1
  81. package/node_modules/@fps-games/babylon-renderer/dist/environment/profile.js.map +1 -1
  82. package/node_modules/@fps-games/babylon-renderer/dist/environment/types.js.map +1 -1
  83. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  84. package/node_modules/@fps-games/babylon-renderer/dist/lighting/directional-light-angles.js.map +1 -1
  85. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/apply.js.map +1 -1
  86. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/index.js.map +1 -1
  87. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/types.js.map +1 -1
  88. package/node_modules/@fps-games/babylon-renderer/dist/outlines/index.js.map +1 -1
  89. package/node_modules/@fps-games/babylon-renderer/dist/outlines/types.js.map +1 -1
  90. package/node_modules/@fps-games/babylon-renderer/dist/placement/index.js.map +1 -1
  91. package/node_modules/@fps-games/babylon-renderer/dist/placement/runtime-drop-position.js.map +1 -1
  92. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  93. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  94. package/node_modules/@fps-games/babylon-renderer/dist/post-process/index.js.map +1 -1
  95. package/node_modules/@fps-games/babylon-renderer/dist/post-process/profile.js.map +1 -1
  96. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  97. package/node_modules/@fps-games/babylon-renderer/dist/post-process/volume-stack.js.map +1 -1
  98. package/node_modules/@fps-games/babylon-renderer/dist/reference.js.map +1 -1
  99. package/node_modules/@fps-games/babylon-renderer/dist/rendering/index.js.map +1 -1
  100. package/node_modules/@fps-games/babylon-renderer/dist/rendering/node-rendering.js.map +1 -1
  101. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js.map +1 -1
  102. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -1
  103. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  104. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.js.map +1 -1
  105. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js.map +1 -1
  106. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js.map +1 -1
  107. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-atlas.js.map +1 -1
  108. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-bake.js.map +1 -1
  109. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js.map +1 -1
  110. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-options.js.map +1 -1
  111. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-rendering.js.map +1 -1
  112. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
  113. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  114. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  115. package/node_modules/@fps-games/editor-babylon/dist/edit-session.js.map +1 -1
  116. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js.map +1 -1
  117. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -1
  118. package/node_modules/@fps-games/editor-babylon/dist/event-guard.js.map +1 -1
  119. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  120. package/node_modules/@fps-games/editor-babylon/dist/infinite-grid-layer.js.map +1 -1
  121. package/node_modules/@fps-games/editor-babylon/dist/infinite-grid.js.map +1 -1
  122. package/node_modules/@fps-games/editor-babylon/dist/input-controller.js.map +1 -1
  123. package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.js.map +1 -1
  124. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js.map +1 -1
  125. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  126. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
  127. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
  128. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  129. package/node_modules/@fps-games/editor-babylon/dist/monitor.js.map +1 -1
  130. package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.js.map +1 -1
  131. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.js.map +1 -1
  132. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +1 -1
  133. package/node_modules/@fps-games/editor-babylon/dist/primitive-projection-instancing.js.map +1 -1
  134. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  135. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js.map +1 -1
  136. package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.js.map +1 -1
  137. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js.map +1 -1
  138. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  139. package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.js.map +1 -1
  140. package/node_modules/@fps-games/editor-babylon/dist/scene-camera-preview.js.map +1 -1
  141. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  142. package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.js.map +1 -1
  143. package/node_modules/@fps-games/editor-babylon/dist/scene-view-measurement-controller.js.map +1 -1
  144. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
  145. package/node_modules/@fps-games/editor-babylon/dist/selection-controller.js.map +1 -1
  146. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  147. package/node_modules/@fps-games/editor-babylon/dist/tool-controller.js.map +1 -1
  148. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  149. package/node_modules/@fps-games/editor-babylon/dist/transform-solver.js.map +1 -1
  150. package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
  151. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  152. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
  153. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  154. package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
  155. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  156. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-clipboard.js.map +1 -1
  157. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  158. package/node_modules/@fps-games/editor-browser/dist/local-editor-rendering-actions.js.map +1 -1
  159. package/node_modules/@fps-games/editor-browser/dist/local-editor-root-ownership.js.map +1 -1
  160. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  161. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  162. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  163. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
  164. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +1 -1
  165. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-auto-scroll.js.map +1 -1
  166. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +1 -1
  167. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +2 -1
  168. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  169. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +260 -94
  170. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  171. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  172. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts +7 -0
  173. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts.map +1 -0
  174. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js +186 -0
  175. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js.map +1 -0
  176. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +2 -2
  177. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +1 -1
  178. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +14 -8
  179. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +1 -1
  180. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +1 -1
  181. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +23 -7
  182. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -1
  183. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  184. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  185. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  186. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +6 -0
  187. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  188. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts +3 -0
  189. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  190. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +60 -13
  191. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  192. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  193. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -1
  194. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  195. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-plugin-panel.js.map +1 -1
  196. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  197. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  198. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  199. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  200. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +24 -0
  201. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -0
  202. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +69 -0
  203. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -0
  204. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-auto-scroll.js.map +1 -1
  205. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  206. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-preview.js.map +1 -1
  207. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-session.js.map +1 -1
  208. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  209. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  210. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +58 -14
  211. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  212. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  213. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  214. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +1 -1
  215. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  216. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +196 -11
  217. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  218. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  219. package/node_modules/@fps-games/editor-browser/dist/runtime-camera-debug-panel.js.map +1 -1
  220. package/node_modules/@fps-games/editor-browser/dist/runtime-debug-panel-shell.js.map +1 -1
  221. package/node_modules/@fps-games/editor-browser/dist/runtime-lighting-debug-panel.js.map +1 -1
  222. package/node_modules/@fps-games/editor-browser/package.json +4 -4
  223. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +1 -1
  224. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +1 -1
  225. package/node_modules/@fps-games/editor-core/dist/authoring-source.js.map +1 -1
  226. package/node_modules/@fps-games/editor-core/dist/document-adapter.js.map +1 -1
  227. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  228. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +9 -1
  229. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  230. package/node_modules/@fps-games/editor-core/dist/editor-session.js +18 -0
  231. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  232. package/node_modules/@fps-games/editor-core/dist/events.d.ts +1 -1
  233. package/node_modules/@fps-games/editor-core/dist/events.d.ts.map +1 -1
  234. package/node_modules/@fps-games/editor-core/dist/events.js.map +1 -1
  235. package/node_modules/@fps-games/editor-core/dist/field-schema/index.js.map +1 -1
  236. package/node_modules/@fps-games/editor-core/dist/field-schema/resolver.js.map +1 -1
  237. package/node_modules/@fps-games/editor-core/dist/field-schema/schema.js.map +1 -1
  238. package/node_modules/@fps-games/editor-core/dist/field-schema/types.js.map +1 -1
  239. package/node_modules/@fps-games/editor-core/dist/field-schema/validators.js.map +1 -1
  240. package/node_modules/@fps-games/editor-core/dist/host-services.js.map +1 -1
  241. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  242. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  243. package/node_modules/@fps-games/editor-core/dist/lifecycle.js.map +1 -1
  244. package/node_modules/@fps-games/editor-core/dist/marker-graph.js.map +1 -1
  245. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  246. package/node_modules/@fps-games/editor-core/dist/scene-view-input.js.map +1 -1
  247. package/node_modules/@fps-games/editor-core/dist/selection-strategy.js.map +1 -1
  248. package/node_modules/@fps-games/editor-core/dist/serialized-object.js.map +1 -1
  249. package/node_modules/@fps-games/editor-core/dist/transform-command.js.map +1 -1
  250. package/node_modules/@fps-games/editor-core/dist/transform-gizmo.js.map +1 -1
  251. package/node_modules/@fps-games/editor-core/dist/transform-operation-policy.js.map +1 -1
  252. package/node_modules/@fps-games/editor-core/dist/transform-operations.js.map +1 -1
  253. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  254. package/node_modules/@fps-games/editor-core/package.json +6 -6
  255. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +1 -1
  256. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
  257. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  258. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/drop-cache.js.map +1 -1
  259. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/index.js.map +1 -1
  260. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.d.ts.map +1 -1
  261. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.js +28 -5
  262. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.js.map +1 -1
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.d.ts +1 -0
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.d.ts.map +1 -1
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.js.map +1 -1
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.js.map +1 -1
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js.map +1 -1
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js.map +1 -1
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/managed-facade.js.map +1 -1
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.d.ts.map +1 -1
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.js +13 -1
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.js.map +1 -1
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +1 -0
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +58 -23
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.js.map +1 -1
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.js.map +1 -1
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/identity.js.map +1 -1
  286. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js.map +1 -1
  287. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/managed-runtime-instance.js.map +1 -1
  288. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js.map +1 -1
  289. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/runtime-scene.js.map +1 -1
  290. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/types.js.map +1 -1
  291. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/index.js.map +1 -1
  292. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.d.ts.map +1 -1
  293. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.js +3 -0
  294. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.js.map +1 -1
  295. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/transport.js.map +1 -1
  296. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.d.ts +1 -0
  297. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.d.ts.map +1 -1
  298. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.js.map +1 -1
  299. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.d.ts +1 -0
  300. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.d.ts.map +1 -1
  301. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.js +7 -1
  302. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.js.map +1 -1
  303. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/constants.js.map +1 -1
  304. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/drift.js.map +1 -1
  305. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/index.js.map +1 -1
  306. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/runtime-transform-patch.js.map +1 -1
  307. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/source.js.map +1 -1
  308. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/client.js.map +1 -1
  309. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/index.js.map +1 -1
  310. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/types.js.map +1 -1
  311. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
  312. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/index.js.map +1 -1
  313. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/payload.js.map +1 -1
  314. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/response.js.map +1 -1
  315. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
  316. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
  317. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/adapter-dispatcher.js.map +1 -1
  318. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/index.js.map +1 -1
  319. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/payload.js.map +1 -1
  320. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/project-asset-adapter.js.map +1 -1
  321. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.js.map +1 -1
  322. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/readers.js.map +1 -1
  323. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/types.js.map +1 -1
  324. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/binding.js.map +1 -1
  325. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/fields.js.map +1 -1
  326. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/index.js.map +1 -1
  327. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/math.js.map +1 -1
  328. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/pan.js.map +1 -1
  329. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-format.js.map +1 -1
  330. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-state.js.map +1 -1
  331. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-storage.js.map +1 -1
  332. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-text.js.map +1 -1
  333. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/rig.js.map +1 -1
  334. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/save-patch.js.map +1 -1
  335. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/snapshot.js.map +1 -1
  336. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/types.js.map +1 -1
  337. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/index.js.map +1 -1
  338. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/transform.js.map +1 -1
  339. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/types.js.map +1 -1
  340. package/node_modules/@fps-games/editor-playable-sdk/dist/core-contracts/index.js.map +1 -1
  341. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  342. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  343. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  344. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
  345. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/resolver.js.map +1 -1
  346. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
  347. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/types.js.map +1 -1
  348. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
  349. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  350. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/camera-section.js.map +1 -1
  351. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-property.js.map +1 -1
  352. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  353. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/format.js.map +1 -1
  354. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js.map +1 -1
  355. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/light-fields.js.map +1 -1
  356. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/light-sections.js.map +1 -1
  357. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/marker-section.js.map +1 -1
  358. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/object-assembly.js.map +1 -1
  359. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/readonly.js.map +1 -1
  360. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime-sections.js.map +1 -1
  361. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime-summary.js.map +1 -1
  362. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime.js.map +1 -1
  363. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/safe-value.js.map +1 -1
  364. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/types.js.map +1 -1
  365. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.js.map +1 -1
  366. package/node_modules/@fps-games/editor-playable-sdk/dist/internal/local-harness.js.map +1 -1
  367. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/binding.js.map +1 -1
  368. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/fields.js.map +1 -1
  369. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/index.js.map +1 -1
  370. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.js.map +1 -1
  371. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/save-patch.js.map +1 -1
  372. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/snapshot.js.map +1 -1
  373. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/storage.js.map +1 -1
  374. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/text.js.map +1 -1
  375. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/types.js.map +1 -1
  376. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/index.js.map +1 -1
  377. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/math.js.map +1 -1
  378. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/profile.js.map +1 -1
  379. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/types.js.map +1 -1
  380. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +1 -1
  381. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  382. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
  383. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  384. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +5 -0
  385. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  386. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  387. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +1 -1
  388. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  389. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  390. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  391. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/loading-overlay.js.map +1 -1
  392. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +18 -0
  393. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  394. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +60 -1
  395. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  396. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/timing.js.map +1 -1
  397. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  398. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/facade.js.map +1 -1
  399. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/game-objects.js.map +1 -1
  400. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/geometry.js.map +1 -1
  401. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/index.js.map +1 -1
  402. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
  403. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  404. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/default-assets.js.map +1 -1
  405. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.d.ts.map +1 -1
  406. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.js +28 -2
  407. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.js.map +1 -1
  408. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/duplicate.js.map +1 -1
  409. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/index.js.map +1 -1
  410. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
  411. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/paths.js.map +1 -1
  412. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/preview.js.map +1 -1
  413. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/profile.js.map +1 -1
  414. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.d.ts.map +1 -1
  415. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.js +26 -9
  416. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.js.map +1 -1
  417. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/resolver.js.map +1 -1
  418. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
  419. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
  420. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +0 -3
  421. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
  422. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/text.js.map +1 -1
  423. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts +8 -1
  424. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts.map +1 -1
  425. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.js.map +1 -1
  426. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  427. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/index.js.map +1 -1
  428. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/json-field.js.map +1 -1
  429. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  430. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/rendering-alpha-index.js.map +1 -1
  431. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.js.map +1 -1
  432. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/types.js.map +1 -1
  433. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
  434. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  435. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -1
  436. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  437. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/index.js.map +1 -1
  438. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.d.ts +2 -0
  439. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.d.ts.map +1 -1
  440. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.js.map +1 -1
  441. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  442. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  443. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  444. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
  445. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  446. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/shadow-inspector.js.map +1 -1
  447. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/source-structure-inspector.js.map +1 -1
  448. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  449. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/structure.js.map +1 -1
  450. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/types.js.map +1 -1
  451. package/node_modules/@fps-games/editor-playable-sdk/dist/product/asset-manager.js.map +1 -1
  452. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal-scene-feature.js.map +1 -1
  453. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
  454. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  455. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +1 -0
  456. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  457. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +3 -1
  458. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  459. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
  460. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  461. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-asset-actions.js.map +1 -1
  462. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  463. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/draft.js.map +1 -1
  464. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/index.js.map +1 -1
  465. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  466. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/route.js.map +1 -1
  467. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  468. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js.map +1 -1
  469. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.js.map +1 -1
  470. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/index.js.map +1 -1
  471. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  472. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  473. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +13 -1
  474. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  475. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  476. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  477. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  478. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/artifacts.js.map +1 -1
  479. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  480. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/companion-configs.js.map +1 -1
  481. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  482. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/index.js.map +1 -1
  483. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  484. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  485. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/validation.js.map +1 -1
  486. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
  487. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/index.js.map +1 -1
  488. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  489. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
  490. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.js.map +1 -1
  491. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/types.js.map +1 -1
  492. package/node_modules/@fps-games/editor-playable-sdk/dist/session/classification.js.map +1 -1
  493. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  494. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
  495. package/node_modules/@fps-games/editor-playable-sdk/dist/session/identity.js.map +1 -1
  496. package/node_modules/@fps-games/editor-playable-sdk/dist/session/index.js.map +1 -1
  497. package/node_modules/@fps-games/editor-playable-sdk/dist/session/object-command-facade.js.map +1 -1
  498. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  499. package/node_modules/@fps-games/editor-playable-sdk/dist/session/property-patches.js.map +1 -1
  500. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  501. package/node_modules/@fps-games/editor-playable-sdk/dist/session/system-defaults.js.map +1 -1
  502. package/node_modules/@fps-games/editor-playable-sdk/dist/session/transform.js.map +1 -1
  503. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  504. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.js.map +1 -1
  505. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.js.map +1 -1
  506. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/http.js.map +1 -1
  507. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/json.js.map +1 -1
  508. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js.map +1 -1
  509. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/index.js.map +1 -1
  510. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/host.js.map +1 -1
  511. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js.map +1 -1
  512. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  513. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/report.js.map +1 -1
  514. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.js.map +1 -1
  515. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.js.map +1 -1
  516. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.d.ts +1 -0
  517. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.d.ts.map +1 -1
  518. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.js +1 -0
  519. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.js.map +1 -1
  520. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js.map +1 -1
  521. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js.map +1 -1
  522. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +6 -5
  523. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  524. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  525. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  526. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.d.ts +3 -1
  527. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.d.ts.map +1 -1
  528. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.js +37 -8
  529. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.js.map +1 -1
  530. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/path-write-coordinator.js.map +1 -1
  531. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts +4 -3
  532. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  533. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +14 -1
  534. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  535. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +5 -4
  536. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  537. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  538. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +3 -2
  539. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  540. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +2 -11
  541. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  542. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +8 -7
  543. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  544. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +84 -6
  545. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  546. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.d.ts +2 -1
  547. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.d.ts.map +1 -1
  548. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.js.map +1 -1
  549. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +4 -3
  550. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  551. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +1 -4
  552. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  553. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +1 -1
  554. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +0 -33
  555. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  556. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  557. package/node_modules/@fps-games/editor-playable-sdk/package.json +9 -6
  558. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  559. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +1 -1
  560. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  561. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  562. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js.map +1 -1
  563. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  564. package/node_modules/@fps-games/editor-tooling/dist/contributions.js.map +1 -1
  565. package/node_modules/@fps-games/editor-tooling/dist/data-object.js.map +1 -1
  566. package/node_modules/@fps-games/editor-tooling/dist/index.js.map +1 -1
  567. package/node_modules/@fps-games/editor-tooling/dist/migration.js.map +1 -1
  568. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  569. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  570. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  571. package/node_modules/@fps-games/playable-assets/dist/identity.js.map +1 -1
  572. package/node_modules/@fps-games/playable-assets/dist/index.d.ts +1 -0
  573. package/node_modules/@fps-games/playable-assets/dist/index.d.ts.map +1 -1
  574. package/node_modules/@fps-games/playable-assets/dist/index.js +1 -0
  575. package/node_modules/@fps-games/playable-assets/dist/index.js.map +1 -1
  576. package/node_modules/@fps-games/playable-assets/dist/portable-path.d.ts +2 -0
  577. package/node_modules/@fps-games/playable-assets/dist/portable-path.d.ts.map +1 -0
  578. package/node_modules/@fps-games/playable-assets/dist/portable-path.js +25 -0
  579. package/node_modules/@fps-games/playable-assets/dist/portable-path.js.map +1 -0
  580. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  581. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  582. package/node_modules/@fps-games/playable-contracts/dist/marker-graph-validation.js.map +1 -1
  583. package/node_modules/@fps-games/playable-contracts/dist/marker-graph.js.map +1 -1
  584. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  585. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  586. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-authoring.js.map +1 -1
  587. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-types.js.map +1 -1
  588. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  589. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-values.js.map +1 -1
  590. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile.js.map +1 -1
  591. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  592. package/node_modules/@fps-games/playable-rendering/dist/shadow-quality.js.map +1 -1
  593. package/node_modules/@fps-games/playable-rendering/dist/shadow-runtime.js.map +1 -1
  594. package/node_modules/@fps-games/playable-rendering/dist/shadow-settings.js.map +1 -1
  595. package/node_modules/@fps-games/playable-rendering/dist/shadow-types.js.map +1 -1
  596. package/node_modules/@fps-games/playable-rendering/dist/shadow-validation.js.map +1 -1
  597. package/node_modules/@fps-games/playable-rendering/dist/value.js.map +1 -1
  598. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  599. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  600. package/node_modules/@fps-games/playable-runtime/dist/index.js.map +1 -1
  601. package/node_modules/@fps-games/playable-runtime/dist/runtime-data.js.map +1 -1
  602. package/node_modules/@fps-games/playable-runtime/dist/runtime.js.map +1 -1
  603. package/node_modules/@fps-games/playable-runtime/dist/standard-plugins.js.map +1 -1
  604. package/node_modules/@fps-games/playable-runtime/dist/tokens.js.map +1 -1
  605. package/node_modules/@fps-games/playable-runtime/dist/types.js.map +1 -1
  606. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  607. package/node_modules/@fps-games/playable-runtime-data/dist/index.js.map +1 -1
  608. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  609. package/node_modules/@fps-games/playable-scene/dist/index.js.map +1 -1
  610. package/node_modules/@fps-games/playable-scene/dist/transform-math.js.map +1 -1
  611. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  612. package/node_modules/@fps-games/plugin-api/dist/index.js.map +1 -1
  613. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  614. package/node_modules/@fps-games/plugin-assets/dist/reference.js.map +1 -1
  615. package/node_modules/@fps-games/plugin-assets/dist/runtime.js.map +1 -1
  616. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  617. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  618. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  619. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  620. package/node_modules/@fps-games/plugin-host/dist/index.js.map +1 -1
  621. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  622. package/node_modules/@fps-games/plugin-markers/dist/reference.js.map +1 -1
  623. package/node_modules/@fps-games/plugin-markers/dist/runtime.js.map +1 -1
  624. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  625. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  626. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  627. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  628. package/node_modules/@fps-games/plugin-materials/dist/reference.js.map +1 -1
  629. package/node_modules/@fps-games/plugin-materials/dist/runtime.js.map +1 -1
  630. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  631. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  632. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  633. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  634. package/node_modules/@fps-games/plugin-rendering/dist/reference.js.map +1 -1
  635. package/node_modules/@fps-games/plugin-rendering/dist/runtime.js.map +1 -1
  636. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  637. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  638. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  639. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  640. package/node_modules/@fps-games/plugin-scene/dist/reference.js.map +1 -1
  641. package/node_modules/@fps-games/plugin-scene/dist/runtime.js.map +1 -1
  642. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  643. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  644. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  645. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  646. package/node_modules/@fps-games/plugin-shadows/dist/reference.js.map +1 -1
  647. package/node_modules/@fps-games/plugin-shadows/dist/runtime.js.map +1 -1
  648. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  649. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  650. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  651. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  652. package/package.json +27 -19
@@ -5,6 +5,7 @@ import { resolveLocalEditorHierarchyAutoScroll, } from './local-editor-ui-hierar
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
7
  import { createLocalEditorActiveHierarchyScope, } from './local-editor-ui-hierarchy-scope.js';
8
+ import { createLocalEditorHierarchyProjection, isLocalEditorHierarchyProjectionCurrent, } from './local-editor-ui-hierarchy-projection.js';
8
9
  import { resolveLocalEditorHierarchyCommandAdapter, } from './local-editor-ui-hierarchy-command-adapter.js';
9
10
  import { createLocalEditorViewportRevealController, } from './local-editor-ui-dock-panel.js';
10
11
  import { createLocalEditorHierarchyAttachDialog, } from './local-editor-ui-hierarchy-attach-dialog.js';
@@ -14,6 +15,11 @@ export function resolveLocalEditorHierarchyCreateMarkerParentId(activeNode) {
14
15
  ? activeNode.id
15
16
  : null;
16
17
  }
18
+ export function resolveLocalEditorHierarchyToolbarActiveId(scope) {
19
+ return scope.activeId && scope.nodes.some(node => node.id === scope.activeId)
20
+ ? scope.activeId
21
+ : null;
22
+ }
17
23
  export function createLocalEditorHierarchyController(options) {
18
24
  const { doc, panel, callbacks, inputRouter, contextMenu, getState, requestRender } = options;
19
25
  const collapsedIdsByScope = new Map();
@@ -29,6 +35,10 @@ export function createLocalEditorHierarchyController(options) {
29
35
  let currentModel = null;
30
36
  let lastRenderedActiveId;
31
37
  let lastRenderedScopeId;
38
+ let lastRenderedDocumentRevision = null;
39
+ let lastRenderedProjectionRevision = null;
40
+ let lastRenderedCommandPrecondition = null;
41
+ let attachDialogPrecondition = null;
32
42
  let pendingHierarchyScrollId = null;
33
43
  let hierarchySelectionAnchorId = null;
34
44
  const attachDialog = createLocalEditorHierarchyAttachDialog({
@@ -48,7 +58,23 @@ export function createLocalEditorHierarchyController(options) {
48
58
  return currentModel;
49
59
  };
50
60
  const render = (state) => {
51
- const scope = resolveScope(state);
61
+ const rawScope = resolveScope(state);
62
+ const projection = isLocalEditorHierarchyProjectionCurrent(state.hierarchyProjection, rawScope)
63
+ ? state.hierarchyProjection
64
+ : createLocalEditorHierarchyProjection(rawScope);
65
+ const scope = {
66
+ ...rawScope,
67
+ nodes: projection.nodes,
68
+ selectedIds: projection.selectedIds,
69
+ activeId: projection.activeId,
70
+ readonly: rawScope.readonly || !projection.interactive,
71
+ commandSurface: projection.interactive ? rawScope.commandSurface : 'readonly',
72
+ };
73
+ const projectionChanged = lastRenderedScopeId != null && (scope.scopeId !== lastRenderedScopeId
74
+ || scope.documentRevision !== lastRenderedDocumentRevision
75
+ || scope.projectionRevision !== lastRenderedProjectionRevision);
76
+ if (projectionChanged)
77
+ resetHierarchyTransientState();
52
78
  const commandAdapter = resolveHierarchyCommandAdapter(scope);
53
79
  if (hierarchyRename && !scope.nodes.some(item => item.id === hierarchyRename?.id))
54
80
  hierarchyRename = null;
@@ -84,6 +110,9 @@ export function createLocalEditorHierarchyController(options) {
84
110
  }
85
111
  lastRenderedActiveId = scope.activeId;
86
112
  lastRenderedScopeId = scope.scopeId;
113
+ lastRenderedDocumentRevision = scope.documentRevision;
114
+ lastRenderedProjectionRevision = scope.projectionRevision;
115
+ lastRenderedCommandPrecondition = createHierarchyCommandPrecondition(scope);
87
116
  };
88
117
  const onClick = (event) => {
89
118
  const target = event.target instanceof HTMLElement ? event.target : null;
@@ -111,16 +140,22 @@ export function createLocalEditorHierarchyController(options) {
111
140
  const createGroupButton = target?.closest('[data-editor-hierarchy-create-group]');
112
141
  if (createGroupButton) {
113
142
  const state = getState();
114
- if (!state || resolveScope(state).commandSurface !== 'scene-graph')
143
+ if (!state)
144
+ return;
145
+ const scope = resolveScope(state);
146
+ if (hasCurrentHierarchyProjection(scope) && scope.commandSurface !== 'scene-graph')
115
147
  return;
116
- const parentId = state.activeId ?? null;
148
+ const parentId = resolveLocalEditorHierarchyToolbarActiveId(scope);
117
149
  if (parentId)
118
150
  expandNode(parentId);
151
+ const precondition = lastRenderedCommandPrecondition;
152
+ if (!precondition)
153
+ return;
119
154
  callbacks.onSceneGraphCreateGroup?.({
120
155
  parentId,
121
156
  activeId: parentId,
122
157
  name: 'Empty',
123
- });
158
+ }, precondition);
124
159
  return;
125
160
  }
126
161
  const createMarkerButton = target?.closest('[data-editor-hierarchy-create-marker]');
@@ -185,6 +220,9 @@ export function createLocalEditorHierarchyController(options) {
185
220
  hierarchyRename = {
186
221
  id: input.dataset.editorHierarchyRenameInput,
187
222
  value: input.value,
223
+ initialValue: hierarchyRename.initialValue,
224
+ commandTargetId: hierarchyRename.commandTargetId,
225
+ precondition: hierarchyRename.precondition,
188
226
  };
189
227
  };
190
228
  const onKeyDown = (event) => {
@@ -251,7 +289,12 @@ export function createLocalEditorHierarchyController(options) {
251
289
  event.preventDefault();
252
290
  return;
253
291
  }
254
- hierarchyDrag = { id };
292
+ const precondition = lastRenderedCommandPrecondition;
293
+ if (!precondition) {
294
+ event.preventDefault();
295
+ return;
296
+ }
297
+ hierarchyDrag = { id, precondition };
255
298
  const draggedIds = resolveDraggedIds(state, model, id);
256
299
  event.dataTransfer?.setData('text/plain', draggedIds.join(','));
257
300
  if (event.dataTransfer)
@@ -329,8 +372,9 @@ export function createLocalEditorHierarchyController(options) {
329
372
  const onDrop = (event) => {
330
373
  const state = getState();
331
374
  const target = event.target instanceof HTMLElement ? event.target : null;
375
+ const activeDrag = hierarchyDrag;
332
376
  const draggedIds = readDraggedIds(event);
333
- if (!state || draggedIds.length === 0) {
377
+ if (!state || !activeDrag || draggedIds.length === 0) {
334
378
  clearHierarchyDragFeedbackAndRender();
335
379
  return;
336
380
  }
@@ -350,6 +394,7 @@ export function createLocalEditorHierarchyController(options) {
350
394
  return;
351
395
  }
352
396
  event.preventDefault();
397
+ const dropPrecondition = activeDrag.precondition;
353
398
  hierarchyDrag = null;
354
399
  clearHierarchyDragFeedback();
355
400
  if (operation.slot.placement === 'root') {
@@ -357,7 +402,7 @@ export function createLocalEditorHierarchyController(options) {
357
402
  requestRender();
358
403
  return;
359
404
  }
360
- submitResolvedRootDrop(operation.resolution);
405
+ submitResolvedRootDrop(operation.resolution, dropPrecondition);
361
406
  return;
362
407
  }
363
408
  const targetId = operation.slot.targetId;
@@ -371,11 +416,13 @@ export function createLocalEditorHierarchyController(options) {
371
416
  requestRender();
372
417
  return;
373
418
  }
374
- submitPrefabNodeReparent(scope, operation.resolution.draggedIds[0] ?? draggedIds[0], targetId);
419
+ if (dropPrecondition) {
420
+ submitPrefabNodeReparent(scope, operation.resolution.draggedIds[0] ?? draggedIds[0], targetId, dropPrecondition);
421
+ }
375
422
  requestRender();
376
423
  return;
377
424
  }
378
- submitResolvedDrop(operation.resolution, targetId, operation.slot.placement, draggedIds);
425
+ submitResolvedDrop(operation.resolution, targetId, operation.slot.placement, draggedIds, dropPrecondition);
379
426
  };
380
427
  panel.addEventListener('click', onClick);
381
428
  panel.addEventListener('contextmenu', onContextMenu);
@@ -436,7 +483,10 @@ export function createLocalEditorHierarchyController(options) {
436
483
  if (!action)
437
484
  return false;
438
485
  event.preventDefault();
439
- submitHierarchyAction(action);
486
+ const precondition = lastRenderedCommandPrecondition;
487
+ if (!precondition)
488
+ return false;
489
+ submitHierarchyAction(action, precondition);
440
490
  return true;
441
491
  }
442
492
  function handleEditShortcut(event) {
@@ -473,14 +523,33 @@ export function createLocalEditorHierarchyController(options) {
473
523
  if (!action)
474
524
  return false;
475
525
  event.preventDefault();
476
- submitHierarchyAction(action);
526
+ const precondition = lastRenderedCommandPrecondition;
527
+ if (!precondition)
528
+ return false;
529
+ submitHierarchyAction(action, precondition);
477
530
  return true;
478
531
  }
479
532
  function isComposingInputEvent(event) {
480
533
  return event.isComposing === true;
481
534
  }
482
535
  function resolveScope(state) {
483
- return createLocalEditorActiveHierarchyScope(state);
536
+ const scope = createLocalEditorActiveHierarchyScope(state);
537
+ const projection = isLocalEditorHierarchyProjectionCurrent(state.hierarchyProjection, scope)
538
+ ? state.hierarchyProjection
539
+ : createLocalEditorHierarchyProjection(scope);
540
+ return {
541
+ ...scope,
542
+ nodes: projection.nodes,
543
+ selectedIds: projection.selectedIds,
544
+ activeId: projection.activeId,
545
+ readonly: scope.readonly || !projection.interactive,
546
+ commandSurface: projection.interactive ? scope.commandSurface : 'readonly',
547
+ };
548
+ }
549
+ function hasCurrentHierarchyProjection(scope) {
550
+ return scope.scopeId === lastRenderedScopeId
551
+ && scope.documentRevision === lastRenderedDocumentRevision
552
+ && scope.projectionRevision === lastRenderedProjectionRevision;
484
553
  }
485
554
  function resolveScopeForCurrentState() {
486
555
  const state = getState();
@@ -505,7 +574,10 @@ export function createLocalEditorHierarchyController(options) {
505
574
  }
506
575
  function selectHierarchyItemFromClick(id, event) {
507
576
  const scope = resolveScopeForCurrentState();
508
- if (!scope)
577
+ const precondition = lastRenderedCommandPrecondition;
578
+ if (!scope || !precondition)
579
+ return;
580
+ if (hasCurrentHierarchyProjection(scope) && scope.commandSurface === 'readonly')
509
581
  return;
510
582
  const toggle = event.metaKey || event.ctrlKey;
511
583
  const range = event.shiftKey && !toggle;
@@ -514,10 +586,10 @@ export function createLocalEditorHierarchyController(options) {
514
586
  return;
515
587
  }
516
588
  hierarchySelectionAnchorId = id;
517
- if (scope.kind === 'prefab-stage')
518
- callbacks.onSelectPrefabStageItem?.(id);
589
+ if (precondition.scopeId.startsWith('prefab-stage:'))
590
+ callbacks.onSelectPrefabStageItem?.(id, precondition);
519
591
  else
520
- callbacks.onSelectHierarchyItem?.({ id, additive: false, toggle });
592
+ callbacks.onSelectHierarchyItem?.({ id, additive: false, toggle }, precondition);
521
593
  }
522
594
  function toggleHierarchyItemEnabled(id, toggle) {
523
595
  if (toggle.dataset.editorHierarchyEnabledToggleDisabled === 'true')
@@ -525,7 +597,8 @@ export function createLocalEditorHierarchyController(options) {
525
597
  const state = getState();
526
598
  if (!state)
527
599
  return;
528
- if (resolveScope(state).commandSurface !== 'scene-graph')
600
+ const scope = resolveScope(state);
601
+ if (hasCurrentHierarchyProjection(scope) && scope.commandSurface !== 'scene-graph')
529
602
  return;
530
603
  const node = getModel(state).getNode(id);
531
604
  if (!node || !canLocalEditorHierarchyNodeToggleEnabled(node))
@@ -533,10 +606,13 @@ export function createLocalEditorHierarchyController(options) {
533
606
  const directEnabled = typeof node.item.directEnabled === 'boolean'
534
607
  ? node.item.directEnabled
535
608
  : node.item.enabled;
609
+ const precondition = lastRenderedCommandPrecondition;
610
+ if (!precondition)
611
+ return;
536
612
  callbacks.onHierarchyItemEnabledChange?.({
537
613
  id,
538
614
  enabled: directEnabled === false,
539
- });
615
+ }, precondition);
540
616
  }
541
617
  function selectHierarchyVisibleRange(targetId) {
542
618
  const state = getState();
@@ -548,7 +624,10 @@ export function createLocalEditorHierarchyController(options) {
548
624
  const scope = resolveScope(state);
549
625
  if (scope.kind !== 'scene') {
550
626
  hierarchySelectionAnchorId = targetId;
551
- callbacks.onSelectPrefabStageItem?.(targetId);
627
+ const precondition = lastRenderedCommandPrecondition;
628
+ if (!precondition)
629
+ return;
630
+ callbacks.onSelectPrefabStageItem?.(targetId, precondition);
552
631
  return;
553
632
  }
554
633
  const model = getModel(state);
@@ -581,13 +660,21 @@ export function createLocalEditorHierarchyController(options) {
581
660
  .filter(Boolean) ?? [];
582
661
  return dataTransferIds.length > 0 ? dataTransferIds : hierarchyDrag?.id ? [hierarchyDrag.id] : [];
583
662
  }
584
- function submitResolvedRootDrop(resolved) {
663
+ function submitResolvedRootDrop(resolved, precondition) {
664
+ const state = getState();
665
+ if (!state)
666
+ return;
667
+ const scope = resolveScope(state);
668
+ if (hasCurrentHierarchyProjection(scope) && scope.commandSurface !== 'scene-graph')
669
+ return;
670
+ if (!precondition)
671
+ return;
585
672
  callbacks.onSceneGraphMove?.({
586
673
  ids: resolved.draggedIds,
587
674
  targetId: null,
588
675
  placement: 'root',
589
676
  preserveWorldTransform: true,
590
- });
677
+ }, precondition);
591
678
  requestRender();
592
679
  }
593
680
  function toggleExpanded(id) {
@@ -671,6 +758,18 @@ export function createLocalEditorHierarchyController(options) {
671
758
  stopHierarchyAutoScroll();
672
759
  clearLocalEditorStructuredDragSession(hierarchyDragSession);
673
760
  }
761
+ function resetHierarchyTransientState() {
762
+ hierarchyRename = null;
763
+ hierarchyDrag = null;
764
+ hierarchySelectionAnchorId = null;
765
+ hierarchyClipboard = null;
766
+ hierarchySearchComposing = false;
767
+ pendingHierarchyScrollId = null;
768
+ attachDialogPrecondition = null;
769
+ clearHierarchyDragFeedback();
770
+ attachDialog.close();
771
+ contextMenu.close();
772
+ }
674
773
  function hasHierarchyDragFeedback() {
675
774
  return hierarchyDrop !== null
676
775
  || hierarchyRootDrop
@@ -788,58 +887,71 @@ export function createLocalEditorHierarchyController(options) {
788
887
  function commitHierarchyRename(id, value) {
789
888
  if (!hierarchyRename || hierarchyRename.id !== id)
790
889
  return;
890
+ const precondition = hierarchyRename.precondition;
891
+ const initialValue = hierarchyRename.initialValue;
892
+ const commandTargetId = hierarchyRename.commandTargetId;
791
893
  const trimmed = value.trim();
792
894
  const state = getState();
793
895
  const scope = state ? resolveScope(state) : null;
794
- const item = scope?.nodes.find(candidate => candidate.id === id) ?? null;
795
896
  hierarchyRename = null;
796
- if (trimmed && item && trimmed !== item.label) {
797
- if (scope?.commandSurface === 'scene-graph') {
798
- callbacks.onSceneGraphRename?.({ id, name: trimmed });
897
+ if (trimmed && trimmed !== initialValue) {
898
+ if (!precondition.scopeId.startsWith('prefab-stage:')) {
899
+ callbacks.onSceneGraphRename?.({ id, name: trimmed }, precondition);
799
900
  }
800
- else if (scope?.commandSurface === 'prefab-composition') {
801
- callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.rename', resolvePrefabCommandTargetId(scope, id), {
901
+ else if (scope) {
902
+ callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.rename', commandTargetId, {
802
903
  value: trimmed,
803
- }));
904
+ }, precondition));
804
905
  }
805
906
  }
806
907
  requestRender();
807
908
  }
808
909
  function openHierarchyContextMenu(event) {
910
+ const target = inputRouter.claimContextMenu(event);
809
911
  const hadHierarchyFeedback = hasHierarchyDragFeedback();
810
912
  hierarchyDrag = null;
811
913
  clearHierarchyDragFeedback();
812
- const target = event.target instanceof HTMLElement ? event.target : null;
813
- if (!target || inputRouter.isEditableTarget(target)) {
914
+ if (!target) {
814
915
  if (hadHierarchyFeedback)
815
916
  requestRender();
816
917
  return;
817
918
  }
818
- const state = getState();
819
- if (!state || state.mode !== 'editor' || state.busy) {
919
+ const initialState = getState();
920
+ if (!initialState || initialState.mode !== 'editor' || initialState.busy) {
820
921
  if (hadHierarchyFeedback)
821
922
  requestRender();
822
923
  return;
823
924
  }
824
- const scope = resolveScope(state);
825
- const commandAdapter = resolveHierarchyCommandAdapter(scope);
826
- const model = getModel(state);
925
+ const initialScope = resolveScope(initialState);
926
+ const initialPrecondition = lastRenderedCommandPrecondition;
927
+ if (!initialPrecondition)
928
+ return;
929
+ const initialModel = getModel(initialState);
827
930
  const hierarchyButton = target.closest('[data-editor-hierarchy-id]');
828
- const node = model.getNode(hierarchyButton?.dataset.editorHierarchyId);
829
- if (node && !scope.selectedIds.includes(node.id) && isLocalEditorHierarchyNodeSelectable(node)) {
830
- hierarchySelectionAnchorId = node.id;
831
- if (scope.kind === 'prefab-stage')
832
- callbacks.onSelectPrefabStageItem?.(node.id);
931
+ const requestedNodeId = hierarchyButton?.dataset.editorHierarchyId;
932
+ const initialNode = initialModel.getNode(requestedNodeId);
933
+ if (initialNode && !initialScope.selectedIds.includes(initialNode.id) && isLocalEditorHierarchyNodeSelectable(initialNode)) {
934
+ hierarchySelectionAnchorId = initialNode.id;
935
+ if (initialScope.kind === 'prefab-stage')
936
+ callbacks.onSelectPrefabStageItem?.(initialNode.id, initialPrecondition);
833
937
  else
834
- callbacks.onSelectHierarchyItem?.({ id: node.id, additive: false, toggle: false });
938
+ callbacks.onSelectHierarchyItem?.({ id: initialNode.id, additive: false, toggle: false }, initialPrecondition);
835
939
  }
940
+ const state = getState();
941
+ if (!state || state.mode !== 'editor' || state.busy)
942
+ return;
943
+ const scope = resolveScope(state);
944
+ const precondition = lastRenderedCommandPrecondition;
945
+ if (!precondition)
946
+ return;
947
+ const commandAdapter = resolveHierarchyCommandAdapter(scope);
948
+ const model = getModel(state);
949
+ const node = model.getNode(requestedNodeId);
836
950
  if (!commandAdapter.canOpenContextMenu) {
837
951
  if (hadHierarchyFeedback)
838
952
  requestRender();
839
953
  return;
840
954
  }
841
- event.preventDefault();
842
- event.stopPropagation();
843
955
  options.onBeforeOpenContextMenu?.();
844
956
  const menuState = createScopedHierarchyMenuState(state, scope);
845
957
  const menu = node
@@ -873,7 +985,7 @@ export function createLocalEditorHierarchyController(options) {
873
985
  onAction(item) {
874
986
  const action = menu.actions.get(item.id);
875
987
  if (action)
876
- submitHierarchyAction(action);
988
+ submitHierarchyAction(action, precondition);
877
989
  },
878
990
  });
879
991
  if (hadHierarchyFeedback)
@@ -883,21 +995,34 @@ export function createLocalEditorHierarchyController(options) {
883
995
  const state = getState();
884
996
  if (!state || state.mode !== 'editor' || state.busy)
885
997
  return;
998
+ const scope = resolveScope(state);
999
+ if (hasCurrentHierarchyProjection(scope) && scope.commandSurface !== 'scene-graph')
1000
+ return;
1001
+ const precondition = lastRenderedCommandPrecondition;
1002
+ if (!precondition)
1003
+ return;
886
1004
  const model = getModel(state);
887
- const activeNode = model.getNode(state.activeId);
1005
+ const toolbarActiveId = resolveLocalEditorHierarchyToolbarActiveId(scope);
1006
+ const activeNode = model.getNode(toolbarActiveId);
888
1007
  const parentId = resolveLocalEditorHierarchyCreateMarkerParentId(activeNode);
889
1008
  if (parentId)
890
1009
  expandNode(parentId);
891
1010
  callbacks.onSceneGraphCreateMarker?.({
892
1011
  parentId,
893
- activeId: parentId ?? state.activeId ?? null,
1012
+ activeId: parentId ?? toolbarActiveId,
894
1013
  name: 'Marker',
895
- });
1014
+ }, precondition);
896
1015
  requestRender();
897
1016
  }
898
- function submitHierarchyAction(action) {
1017
+ function submitHierarchyAction(action, precondition) {
1018
+ const state = getState();
1019
+ if (!state || !precondition)
1020
+ return;
1021
+ const scope = resolveScope(state);
1022
+ if (hasCurrentHierarchyProjection(scope) && scope.commandSurface === 'readonly')
1023
+ return;
899
1024
  if (action.kind === 'begin-rename') {
900
- beginHierarchyRename(action.targetId);
1025
+ beginHierarchyRename(action.targetId, precondition);
901
1026
  return;
902
1027
  }
903
1028
  if (action.kind === 'copy-selection') {
@@ -910,18 +1035,18 @@ export function createLocalEditorHierarchyController(options) {
910
1035
  return;
911
1036
  }
912
1037
  if (action.kind === 'group-selection') {
913
- callbacks.onSceneGraphGroupSelection?.(action.intent);
1038
+ callbacks.onSceneGraphGroupSelection?.(action.intent, precondition);
914
1039
  return;
915
1040
  }
916
1041
  if (action.kind === 'open-attach-picker') {
917
- openAttachPicker(action.targetIds, action.activeId);
1042
+ openAttachPicker(action.targetIds, action.activeId, precondition);
918
1043
  return;
919
1044
  }
920
1045
  if (action.kind === 'selection-command') {
921
- submitSelectionCommand(action.command);
1046
+ submitSelectionCommand(action.command, state, precondition);
922
1047
  return;
923
1048
  }
924
- submitHierarchyContextAction(action.action);
1049
+ submitHierarchyContextAction(action.action, precondition);
925
1050
  }
926
1051
  function createScopedHierarchyMenuState(state, scope) {
927
1052
  return {
@@ -931,17 +1056,23 @@ export function createLocalEditorHierarchyController(options) {
931
1056
  activeId: scope.activeId,
932
1057
  };
933
1058
  }
934
- function submitSelectionCommand(command, state = getState() ?? undefined) {
935
- if (state && resolveScope(state).kind !== 'scene')
1059
+ function submitSelectionCommand(command, state = getState() ?? undefined, precondition = lastRenderedCommandPrecondition) {
1060
+ if (!state)
1061
+ return;
1062
+ const scope = resolveScope(state);
1063
+ if (!precondition)
1064
+ return;
1065
+ if (hasCurrentHierarchyProjection(scope) && scope.kind !== 'scene')
936
1066
  return;
937
- callbacks.onSelectionCommand?.(command);
1067
+ callbacks.onSelectionCommand?.(command, precondition);
938
1068
  }
939
- function openAttachPicker(targetIds, activeId) {
1069
+ function openAttachPicker(targetIds, activeId, precondition = lastRenderedCommandPrecondition) {
940
1070
  const state = getState();
941
- if (!state || state.mode !== 'editor' || state.busy || targetIds.length === 0)
1071
+ if (!state || !precondition || state.mode !== 'editor' || state.busy || targetIds.length === 0)
942
1072
  return;
943
1073
  if (!resolveHierarchyCommandAdapter(resolveScope(state)).menuCapabilities.hasMoveHandler)
944
1074
  return;
1075
+ attachDialogPrecondition = precondition;
945
1076
  attachDialog.open({
946
1077
  model: getModel(state),
947
1078
  targetIds,
@@ -950,11 +1081,14 @@ export function createLocalEditorHierarchyController(options) {
950
1081
  }
951
1082
  function submitAttachSelection(selection) {
952
1083
  const state = getState();
953
- if (!state || state.mode !== 'editor' || state.busy)
1084
+ const precondition = attachDialogPrecondition;
1085
+ attachDialogPrecondition = null;
1086
+ if (!state || !precondition || state.mode !== 'editor' || state.busy)
954
1087
  return { ok: false, reason: 'Editor is not ready.' };
955
1088
  const scope = resolveScope(state);
956
- if (scope.commandSurface === 'prefab-composition')
957
- return submitPrefabAttachSelection(scope, selection);
1089
+ if (scope.commandSurface === 'prefab-composition') {
1090
+ return submitPrefabAttachSelection(scope, selection, precondition);
1091
+ }
958
1092
  if (scope.commandSurface !== 'scene-graph')
959
1093
  return { ok: false, reason: 'Hierarchy move pipeline is not connected yet.' };
960
1094
  const ids = selection.resolution.draggedIds;
@@ -967,7 +1101,7 @@ export function createLocalEditorHierarchyController(options) {
967
1101
  ids,
968
1102
  placement: 'root',
969
1103
  preserveWorldTransform: true,
970
- }));
1104
+ }, precondition));
971
1105
  requestRender();
972
1106
  return result;
973
1107
  }
@@ -982,11 +1116,11 @@ export function createLocalEditorHierarchyController(options) {
982
1116
  beforeId: selection.resolution.beforeId,
983
1117
  afterId: selection.resolution.afterId,
984
1118
  preserveWorldTransform: true,
985
- }));
1119
+ }, precondition));
986
1120
  requestRender();
987
1121
  return result;
988
1122
  }
989
- function submitPrefabAttachSelection(scope, selection) {
1123
+ function submitPrefabAttachSelection(scope, selection, precondition) {
990
1124
  const ids = selection.resolution.draggedIds;
991
1125
  if (ids.length !== 1)
992
1126
  return { ok: false, reason: 'Move one prefab node at a time.' };
@@ -994,21 +1128,21 @@ export function createLocalEditorHierarchyController(options) {
994
1128
  return { ok: false, reason: 'Prefab node reparent supports inside placement only.' };
995
1129
  if (!selection.targetId)
996
1130
  return { ok: false, reason: 'Select a valid prefab parent first.' };
997
- if (!submitPrefabNodeReparent(scope, ids[0], selection.targetId)) {
1131
+ if (!submitPrefabNodeReparent(scope, ids[0], selection.targetId, precondition)) {
998
1132
  return { ok: false, reason: 'Select valid prefab nodes first.' };
999
1133
  }
1000
1134
  expandNode(selection.targetId);
1001
1135
  requestRender();
1002
1136
  return { ok: true };
1003
1137
  }
1004
- function submitPrefabNodeReparent(scope, hierarchyId, parentHierarchyId) {
1138
+ function submitPrefabNodeReparent(scope, hierarchyId, parentHierarchyId, precondition) {
1005
1139
  const nodeId = resolvePrefabCommandTargetId(scope, hierarchyId);
1006
1140
  const parentNodeId = resolvePrefabCommandTargetId(scope, parentHierarchyId);
1007
1141
  if (!nodeId || !parentNodeId)
1008
1142
  return false;
1009
1143
  callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.reparent', nodeId, {
1010
1144
  parentNodeId,
1011
- }));
1145
+ }, precondition));
1012
1146
  return true;
1013
1147
  }
1014
1148
  function normalizeAttachSceneGraphMoveResult(result) {
@@ -1053,21 +1187,26 @@ export function createLocalEditorHierarchyController(options) {
1053
1187
  const target = event.target instanceof Node ? event.target : null;
1054
1188
  return target !== null && panel.contains(target);
1055
1189
  }
1056
- function submitHierarchyContextAction(action) {
1190
+ function submitHierarchyContextAction(action, precondition) {
1057
1191
  if (action.action === 'rename')
1058
1192
  return;
1059
1193
  const scope = resolveScopeForCurrentState();
1060
- if (scope?.commandSurface === 'prefab-composition') {
1061
- submitPrefabHierarchyContextAction(scope, action);
1194
+ if (!scope)
1195
+ return;
1196
+ const current = hasCurrentHierarchyProjection(scope);
1197
+ if (precondition.scopeId.startsWith('prefab-stage:')) {
1198
+ if (current && scope.commandSurface !== 'prefab-composition')
1199
+ return;
1200
+ submitPrefabHierarchyContextAction(scope, action, precondition);
1062
1201
  return;
1063
1202
  }
1064
- if (scope?.commandSurface !== 'scene-graph')
1203
+ if (current && scope.commandSurface !== 'scene-graph')
1065
1204
  return;
1066
1205
  if (action.action === 'create-group' || action.action === 'create-primitive' || action.action === 'create-marker') {
1067
1206
  expandNode(action.parentId);
1068
1207
  }
1069
1208
  if (callbacks.onContextAction) {
1070
- callbacks.onContextAction(action);
1209
+ callbacks.onContextAction(action, precondition);
1071
1210
  return;
1072
1211
  }
1073
1212
  if (action.action === 'focus')
@@ -1076,20 +1215,20 @@ export function createLocalEditorHierarchyController(options) {
1076
1215
  callbacks.onSceneGraphDuplicate?.({
1077
1216
  targetIds: action.targetIds,
1078
1217
  activeId: action.activeId ?? null,
1079
- });
1218
+ }, precondition);
1080
1219
  }
1081
1220
  else if (action.action === 'paste') {
1082
1221
  callbacks.onSceneGraphDuplicate?.({
1083
1222
  targetIds: action.sourceIds,
1084
1223
  activeId: action.activeId ?? null,
1085
- });
1224
+ }, precondition);
1086
1225
  }
1087
1226
  else if (action.action === 'create-group') {
1088
1227
  callbacks.onSceneGraphCreateGroup?.({
1089
1228
  parentId: action.parentId ?? null,
1090
1229
  activeId: action.activeId ?? null,
1091
1230
  name: 'Empty',
1092
- });
1231
+ }, precondition);
1093
1232
  }
1094
1233
  else if (action.action === 'create-marker') {
1095
1234
  callbacks.onSceneGraphCreateMarker?.({
@@ -1097,7 +1236,7 @@ export function createLocalEditorHierarchyController(options) {
1097
1236
  activeId: action.activeId ?? null,
1098
1237
  markerType: action.markerType,
1099
1238
  name: action.name,
1100
- });
1239
+ }, precondition);
1101
1240
  }
1102
1241
  else if (action.action === 'create-primitive') {
1103
1242
  callbacks.onSceneGraphCreatePrimitive?.({
@@ -1105,20 +1244,20 @@ export function createLocalEditorHierarchyController(options) {
1105
1244
  activeId: action.activeId ?? null,
1106
1245
  shape: action.shape,
1107
1246
  name: action.name,
1108
- });
1247
+ }, precondition);
1109
1248
  }
1110
1249
  else if (action.action === 'delete') {
1111
1250
  callbacks.onSceneGraphDelete?.({
1112
1251
  ids: action.targetIds,
1113
1252
  activeId: action.activeId ?? null,
1114
- });
1253
+ }, precondition);
1115
1254
  }
1116
1255
  }
1117
- function submitPrefabHierarchyContextAction(scope, action) {
1256
+ function submitPrefabHierarchyContextAction(scope, action, precondition) {
1118
1257
  if (action.action === 'focus') {
1119
1258
  const targetId = action.activeId ?? action.targetIds[0] ?? null;
1120
1259
  if (targetId)
1121
- callbacks.onSelectPrefabStageItem?.(targetId);
1260
+ callbacks.onSelectPrefabStageItem?.(targetId, precondition);
1122
1261
  return;
1123
1262
  }
1124
1263
  if (action.action === 'create-primitive') {
@@ -1126,7 +1265,7 @@ export function createLocalEditorHierarchyController(options) {
1126
1265
  expandNode(action.parentId);
1127
1266
  callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.createPrimitive', resolvePrefabCommandTargetId(scope, action.parentId ?? scope.activeId), {
1128
1267
  primitiveShape: action.shape,
1129
- }));
1268
+ }, precondition));
1130
1269
  return;
1131
1270
  }
1132
1271
  if (action.action === 'create-group') {
@@ -1134,7 +1273,7 @@ export function createLocalEditorHierarchyController(options) {
1134
1273
  expandNode(action.parentId);
1135
1274
  callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.createGroup', resolvePrefabCommandTargetId(scope, action.parentId ?? scope.activeId), {
1136
1275
  value: { name: 'Empty' },
1137
- }));
1276
+ }, precondition));
1138
1277
  return;
1139
1278
  }
1140
1279
  if (action.action === 'delete') {
@@ -1143,7 +1282,7 @@ export function createLocalEditorHierarchyController(options) {
1143
1282
  : action.targetIds[0] ?? null;
1144
1283
  if (!nodeId)
1145
1284
  return;
1146
- callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.delete', resolvePrefabCommandTargetId(scope, nodeId)));
1285
+ callbacks.onAssetAction?.(createPrefabNodeAssetAction(scope, 'prefab.node.delete', resolvePrefabCommandTargetId(scope, nodeId), {}, precondition));
1147
1286
  }
1148
1287
  }
1149
1288
  function resolvePrefabCommandTargetId(scope, hierarchyId) {
@@ -1152,9 +1291,9 @@ export function createLocalEditorHierarchyController(options) {
1152
1291
  const node = scope.nodes.find(candidate => candidate.id === hierarchyId);
1153
1292
  return node?.commandTargetId ?? hierarchyId;
1154
1293
  }
1155
- function createPrefabNodeAssetAction(scope, actionId, nodeId, extra = {}) {
1156
- const stageAssetId = scope.scopeId.startsWith('prefab-stage:')
1157
- ? scope.scopeId.slice('prefab-stage:'.length)
1294
+ function createPrefabNodeAssetAction(scope, actionId, nodeId, extra = {}, precondition) {
1295
+ const stageAssetId = precondition.scopeId.startsWith('prefab-stage:')
1296
+ ? precondition.scopeId.slice('prefab-stage:'.length)
1158
1297
  : undefined;
1159
1298
  return {
1160
1299
  actionId,
@@ -1162,6 +1301,7 @@ export function createLocalEditorHierarchyController(options) {
1162
1301
  browserAssetId: stageAssetId ? `prefab:${stageAssetId}` : undefined,
1163
1302
  assetKind: 'prefab',
1164
1303
  targetPrefabAssetId: stageAssetId,
1304
+ hierarchyPrecondition: precondition,
1165
1305
  ...(nodeId ? { nodeId, parentNodeId: nodeId } : {}),
1166
1306
  ...extra,
1167
1307
  };
@@ -1178,23 +1318,42 @@ export function createLocalEditorHierarchyController(options) {
1178
1318
  const theme = themed?.dataset.fpsEditorTheme;
1179
1319
  return theme === 'light' || theme === 'dark' ? theme : undefined;
1180
1320
  }
1181
- function beginHierarchyRename(id) {
1321
+ function beginHierarchyRename(id, precondition) {
1182
1322
  const state = getState();
1323
+ const scope = state ? resolveScope(state) : null;
1183
1324
  const model = state ? getModel(state) : null;
1184
1325
  const node = model?.getNode(id) ?? null;
1185
1326
  if (!node || !canLocalEditorHierarchyNodeRename(node))
1186
1327
  return;
1187
- hierarchyRename = { id, value: node.label };
1328
+ hierarchyRename = {
1329
+ id,
1330
+ value: node.label,
1331
+ initialValue: node.label,
1332
+ commandTargetId: scope?.nodes.find(candidate => candidate.id === id)?.commandTargetId ?? id,
1333
+ precondition,
1334
+ };
1188
1335
  requestRender();
1189
1336
  }
1190
1337
  function selectSingleHierarchyItem(id) {
1191
1338
  const scope = resolveScopeForCurrentState();
1192
- if (scope?.kind === 'prefab-stage')
1193
- callbacks.onSelectPrefabStageItem?.(id);
1339
+ const precondition = lastRenderedCommandPrecondition;
1340
+ if (!scope || !precondition)
1341
+ return;
1342
+ if (hasCurrentHierarchyProjection(scope) && scope.commandSurface === 'readonly')
1343
+ return;
1344
+ if (precondition.scopeId.startsWith('prefab-stage:'))
1345
+ callbacks.onSelectPrefabStageItem?.(id, precondition);
1194
1346
  else
1195
- callbacks.onSelectHierarchyItem?.({ id, additive: false, toggle: false });
1347
+ callbacks.onSelectHierarchyItem?.({ id, additive: false, toggle: false }, precondition);
1196
1348
  }
1197
- function submitResolvedDrop(resolved, targetId, placement, draggedIds) {
1349
+ function submitResolvedDrop(resolved, targetId, placement, draggedIds, precondition) {
1350
+ const scope = resolveScopeForCurrentState();
1351
+ if (!scope)
1352
+ return;
1353
+ if (hasCurrentHierarchyProjection(scope) && scope.commandSurface !== 'scene-graph')
1354
+ return;
1355
+ if (!precondition)
1356
+ return;
1198
1357
  if (callbacks.onSceneGraphMove) {
1199
1358
  callbacks.onSceneGraphMove({
1200
1359
  ids: resolved.draggedIds,
@@ -1204,7 +1363,7 @@ export function createLocalEditorHierarchyController(options) {
1204
1363
  beforeId: resolved.beforeId,
1205
1364
  afterId: resolved.afterId,
1206
1365
  preserveWorldTransform: true,
1207
- });
1366
+ }, precondition);
1208
1367
  }
1209
1368
  else if (placement === 'inside') {
1210
1369
  callbacks.onSceneGraphDrop?.({
@@ -1212,11 +1371,18 @@ export function createLocalEditorHierarchyController(options) {
1212
1371
  targetId,
1213
1372
  placement,
1214
1373
  preserveWorldTransform: true,
1215
- });
1374
+ }, precondition);
1216
1375
  }
1217
1376
  else {
1218
1377
  requestRender();
1219
1378
  }
1220
1379
  }
1380
+ function createHierarchyCommandPrecondition(scope) {
1381
+ return {
1382
+ scopeId: scope.scopeId,
1383
+ documentRevision: scope.documentRevision,
1384
+ projectionRevision: scope.projectionRevision,
1385
+ };
1386
+ }
1221
1387
  }
1222
1388
  //# sourceMappingURL=local-editor-ui-hierarchy-controller.js.map