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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/dist/agent-bridge/capabilities/assets.js.map +1 -1
  2. package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
  3. package/dist/agent-bridge/capabilities/host-lifecycle.js.map +1 -1
  4. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
  5. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
  6. package/dist/agent-bridge/capabilities/selection.js.map +1 -1
  7. package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
  8. package/dist/agent-bridge/capabilities/transform.js.map +1 -1
  9. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  10. package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
  11. package/dist/agent-bridge/capability-sources.js.map +1 -1
  12. package/dist/agent-bridge/diagnostics.js.map +1 -1
  13. package/dist/agent-bridge/index.js.map +1 -1
  14. package/dist/agent-bridge/register.js.map +1 -1
  15. package/dist/agent-bridge/shared.js.map +1 -1
  16. package/dist/agent-bridge/source-types.js.map +1 -1
  17. package/dist/authoring-apply.js.map +1 -1
  18. package/dist/build-info.json +48 -48
  19. package/dist/editor-plugin-agent-capabilities.js.map +1 -1
  20. package/dist/editor-plugin-hierarchy-command.js.map +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/internal/local-editor-lifecycle-operations.js.map +1 -1
  23. package/dist/local-editor-agent-actions.js.map +1 -1
  24. package/dist/local-editor-agent-bridge-transport.js.map +1 -1
  25. package/dist/local-editor-agent-bridge.js.map +1 -1
  26. package/dist/local-editor-agent-context.js.map +1 -1
  27. package/dist/local-editor-harness.d.ts +57 -1
  28. package/dist/local-editor-harness.d.ts.map +1 -1
  29. package/dist/local-editor-harness.js +129 -0
  30. package/dist/local-editor-harness.js.map +1 -1
  31. package/dist/local-editor-marker-graph.js.map +1 -1
  32. package/dist/local-editor-performance-stats.js.map +1 -1
  33. package/dist/local-editor-plugin-inspector.js.map +1 -1
  34. package/dist/local-editor-plugin-panel.js.map +1 -1
  35. package/dist/local-editor-scene-render-scheduler.js.map +1 -1
  36. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  37. package/dist/local-editor-viewport-render-coordinator.js.map +1 -1
  38. package/dist/playable-babylon-facade.js.map +1 -1
  39. package/dist/playable-babylon-outline-inspector.js.map +1 -1
  40. package/dist/playable-babylon-outline-runtime.js.map +1 -1
  41. package/dist/playable-babylon-rendering.js.map +1 -1
  42. package/dist/playable-local-editor-host.d.ts +36 -0
  43. package/dist/playable-local-editor-host.d.ts.map +1 -1
  44. package/dist/playable-local-editor-host.js.map +1 -1
  45. package/dist/playable-product-local-editor.js.map +1 -1
  46. package/dist/playable-product-projection-preview.js.map +1 -1
  47. package/dist/playable-product-rendering.js.map +1 -1
  48. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  49. package/dist/playable-product-scene-capabilities.js +49 -2
  50. package/dist/playable-product-scene-capabilities.js.map +1 -1
  51. package/dist/playable-runtime-babylon.js.map +1 -1
  52. package/dist/playable-runtime.js.map +1 -1
  53. package/dist/playable-sdk-upgrade-doctor.js.map +1 -1
  54. package/dist/playable-sdk-vite.js.map +1 -1
  55. package/dist/playable-sdk.js.map +1 -1
  56. package/dist/playable-standard-project.js.map +1 -1
  57. package/dist/static-shadow-cpu-worker.js.map +1 -1
  58. package/dist/vite.js.map +1 -1
  59. package/node_modules/@fps-games/babylon-renderer/dist/environment/environment-texture-controller.js.map +1 -1
  60. package/node_modules/@fps-games/babylon-renderer/dist/environment/index.js.map +1 -1
  61. package/node_modules/@fps-games/babylon-renderer/dist/environment/profile.js.map +1 -1
  62. package/node_modules/@fps-games/babylon-renderer/dist/environment/types.js.map +1 -1
  63. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  64. package/node_modules/@fps-games/babylon-renderer/dist/lighting/directional-light-angles.js.map +1 -1
  65. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/apply.js.map +1 -1
  66. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/index.js.map +1 -1
  67. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/types.js.map +1 -1
  68. package/node_modules/@fps-games/babylon-renderer/dist/outlines/index.js.map +1 -1
  69. package/node_modules/@fps-games/babylon-renderer/dist/outlines/types.js.map +1 -1
  70. package/node_modules/@fps-games/babylon-renderer/dist/placement/index.js.map +1 -1
  71. package/node_modules/@fps-games/babylon-renderer/dist/placement/runtime-drop-position.js.map +1 -1
  72. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  73. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  74. package/node_modules/@fps-games/babylon-renderer/dist/post-process/index.js.map +1 -1
  75. package/node_modules/@fps-games/babylon-renderer/dist/post-process/profile.js.map +1 -1
  76. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  77. package/node_modules/@fps-games/babylon-renderer/dist/post-process/volume-stack.js.map +1 -1
  78. package/node_modules/@fps-games/babylon-renderer/dist/reference.js.map +1 -1
  79. package/node_modules/@fps-games/babylon-renderer/dist/rendering/index.js.map +1 -1
  80. package/node_modules/@fps-games/babylon-renderer/dist/rendering/node-rendering.js.map +1 -1
  81. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js.map +1 -1
  82. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -1
  83. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  84. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.js.map +1 -1
  85. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js.map +1 -1
  86. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js.map +1 -1
  87. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-atlas.js.map +1 -1
  88. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-bake.js.map +1 -1
  89. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js.map +1 -1
  90. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-options.js.map +1 -1
  91. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-rendering.js.map +1 -1
  92. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
  93. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  94. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  95. package/node_modules/@fps-games/editor-babylon/dist/edit-session.js.map +1 -1
  96. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js.map +1 -1
  97. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -1
  98. package/node_modules/@fps-games/editor-babylon/dist/event-guard.js.map +1 -1
  99. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  100. package/node_modules/@fps-games/editor-babylon/dist/infinite-grid-layer.js.map +1 -1
  101. package/node_modules/@fps-games/editor-babylon/dist/infinite-grid.js.map +1 -1
  102. package/node_modules/@fps-games/editor-babylon/dist/input-controller.js.map +1 -1
  103. package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.js.map +1 -1
  104. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js.map +1 -1
  105. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  106. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
  107. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
  108. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  109. package/node_modules/@fps-games/editor-babylon/dist/monitor.js.map +1 -1
  110. package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.js.map +1 -1
  111. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.js.map +1 -1
  112. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +1 -1
  113. package/node_modules/@fps-games/editor-babylon/dist/primitive-projection-instancing.js.map +1 -1
  114. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  115. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js.map +1 -1
  116. package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.js.map +1 -1
  117. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js.map +1 -1
  118. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  119. package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.js.map +1 -1
  120. package/node_modules/@fps-games/editor-babylon/dist/scene-camera-preview.js.map +1 -1
  121. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  122. package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.js.map +1 -1
  123. package/node_modules/@fps-games/editor-babylon/dist/scene-view-measurement-controller.js.map +1 -1
  124. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
  125. package/node_modules/@fps-games/editor-babylon/dist/selection-controller.js.map +1 -1
  126. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  127. package/node_modules/@fps-games/editor-babylon/dist/tool-controller.js.map +1 -1
  128. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  129. package/node_modules/@fps-games/editor-babylon/dist/transform-solver.js.map +1 -1
  130. package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
  131. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  132. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  133. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-clipboard.js.map +1 -1
  134. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  135. package/node_modules/@fps-games/editor-browser/dist/local-editor-rendering-actions.js.map +1 -1
  136. package/node_modules/@fps-games/editor-browser/dist/local-editor-root-ownership.js.map +1 -1
  137. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  138. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  139. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  140. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
  141. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +1 -1
  142. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-auto-scroll.js.map +1 -1
  143. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +1 -1
  144. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  145. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  146. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +1 -1
  147. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -1
  148. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  149. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  150. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  151. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  152. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -1
  153. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  154. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-plugin-panel.js.map +1 -1
  155. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  156. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  157. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  158. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  159. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-auto-scroll.js.map +1 -1
  160. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  161. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-preview.js.map +1 -1
  162. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-session.js.map +1 -1
  163. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  164. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  165. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  166. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  167. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  168. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  169. package/node_modules/@fps-games/editor-browser/dist/runtime-camera-debug-panel.js.map +1 -1
  170. package/node_modules/@fps-games/editor-browser/dist/runtime-debug-panel-shell.js.map +1 -1
  171. package/node_modules/@fps-games/editor-browser/dist/runtime-lighting-debug-panel.js.map +1 -1
  172. package/node_modules/@fps-games/editor-browser/package.json +4 -4
  173. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +1 -1
  174. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +1 -1
  175. package/node_modules/@fps-games/editor-core/dist/authoring-source.js.map +1 -1
  176. package/node_modules/@fps-games/editor-core/dist/document-adapter.js.map +1 -1
  177. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  178. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +6 -1
  179. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  180. package/node_modules/@fps-games/editor-core/dist/editor-session.js +9 -0
  181. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  182. package/node_modules/@fps-games/editor-core/dist/events.d.ts +1 -1
  183. package/node_modules/@fps-games/editor-core/dist/events.d.ts.map +1 -1
  184. package/node_modules/@fps-games/editor-core/dist/events.js.map +1 -1
  185. package/node_modules/@fps-games/editor-core/dist/field-schema/index.js.map +1 -1
  186. package/node_modules/@fps-games/editor-core/dist/field-schema/resolver.js.map +1 -1
  187. package/node_modules/@fps-games/editor-core/dist/field-schema/schema.js.map +1 -1
  188. package/node_modules/@fps-games/editor-core/dist/field-schema/types.js.map +1 -1
  189. package/node_modules/@fps-games/editor-core/dist/field-schema/validators.js.map +1 -1
  190. package/node_modules/@fps-games/editor-core/dist/host-services.js.map +1 -1
  191. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  192. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  193. package/node_modules/@fps-games/editor-core/dist/lifecycle.js.map +1 -1
  194. package/node_modules/@fps-games/editor-core/dist/marker-graph.js.map +1 -1
  195. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  196. package/node_modules/@fps-games/editor-core/dist/scene-view-input.js.map +1 -1
  197. package/node_modules/@fps-games/editor-core/dist/selection-strategy.js.map +1 -1
  198. package/node_modules/@fps-games/editor-core/dist/serialized-object.js.map +1 -1
  199. package/node_modules/@fps-games/editor-core/dist/transform-command.js.map +1 -1
  200. package/node_modules/@fps-games/editor-core/dist/transform-gizmo.js.map +1 -1
  201. package/node_modules/@fps-games/editor-core/dist/transform-operation-policy.js.map +1 -1
  202. package/node_modules/@fps-games/editor-core/dist/transform-operations.js.map +1 -1
  203. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  204. package/node_modules/@fps-games/editor-core/package.json +6 -6
  205. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +1 -1
  206. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
  207. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  208. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/drop-cache.js.map +1 -1
  209. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/index.js.map +1 -1
  210. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.d.ts.map +1 -1
  211. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.js +28 -5
  212. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.js.map +1 -1
  213. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.d.ts +1 -0
  214. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.d.ts.map +1 -1
  215. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.js.map +1 -1
  216. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.js.map +1 -1
  217. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js.map +1 -1
  218. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js.map +1 -1
  219. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/managed-facade.js.map +1 -1
  220. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.d.ts.map +1 -1
  221. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.js +13 -1
  222. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.js.map +1 -1
  223. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  224. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  225. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +1 -0
  226. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  227. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +58 -23
  228. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  229. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.js.map +1 -1
  230. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  231. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  232. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
  233. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.js.map +1 -1
  234. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
  235. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/identity.js.map +1 -1
  236. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js.map +1 -1
  237. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/managed-runtime-instance.js.map +1 -1
  238. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js.map +1 -1
  239. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/runtime-scene.js.map +1 -1
  240. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/types.js.map +1 -1
  241. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/index.js.map +1 -1
  242. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.d.ts.map +1 -1
  243. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.js +3 -0
  244. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.js.map +1 -1
  245. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/transport.js.map +1 -1
  246. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.d.ts +1 -0
  247. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.d.ts.map +1 -1
  248. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.js.map +1 -1
  249. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.d.ts +1 -0
  250. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.d.ts.map +1 -1
  251. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.js +7 -1
  252. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.js.map +1 -1
  253. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/constants.js.map +1 -1
  254. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/drift.js.map +1 -1
  255. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/index.js.map +1 -1
  256. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/runtime-transform-patch.js.map +1 -1
  257. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/source.js.map +1 -1
  258. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/client.js.map +1 -1
  259. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/index.js.map +1 -1
  260. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/types.js.map +1 -1
  261. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
  262. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/index.js.map +1 -1
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/payload.js.map +1 -1
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/response.js.map +1 -1
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/adapter-dispatcher.js.map +1 -1
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/index.js.map +1 -1
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/payload.js.map +1 -1
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/project-asset-adapter.js.map +1 -1
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.js.map +1 -1
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/readers.js.map +1 -1
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/types.js.map +1 -1
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/binding.js.map +1 -1
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/fields.js.map +1 -1
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/index.js.map +1 -1
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/math.js.map +1 -1
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/pan.js.map +1 -1
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-format.js.map +1 -1
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-state.js.map +1 -1
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-storage.js.map +1 -1
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-text.js.map +1 -1
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/rig.js.map +1 -1
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/save-patch.js.map +1 -1
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/snapshot.js.map +1 -1
  286. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/types.js.map +1 -1
  287. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/index.js.map +1 -1
  288. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/transform.js.map +1 -1
  289. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/types.js.map +1 -1
  290. package/node_modules/@fps-games/editor-playable-sdk/dist/core-contracts/index.js.map +1 -1
  291. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  292. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  293. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  294. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
  295. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/resolver.js.map +1 -1
  296. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
  297. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/types.js.map +1 -1
  298. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
  299. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  300. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/camera-section.js.map +1 -1
  301. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-property.js.map +1 -1
  302. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  303. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/format.js.map +1 -1
  304. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js.map +1 -1
  305. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/light-fields.js.map +1 -1
  306. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/light-sections.js.map +1 -1
  307. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/marker-section.js.map +1 -1
  308. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/object-assembly.js.map +1 -1
  309. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/readonly.js.map +1 -1
  310. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime-sections.js.map +1 -1
  311. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime-summary.js.map +1 -1
  312. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime.js.map +1 -1
  313. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/safe-value.js.map +1 -1
  314. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/types.js.map +1 -1
  315. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.js.map +1 -1
  316. package/node_modules/@fps-games/editor-playable-sdk/dist/internal/local-harness.js.map +1 -1
  317. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/binding.js.map +1 -1
  318. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/fields.js.map +1 -1
  319. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/index.js.map +1 -1
  320. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.js.map +1 -1
  321. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/save-patch.js.map +1 -1
  322. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/snapshot.js.map +1 -1
  323. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/storage.js.map +1 -1
  324. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/text.js.map +1 -1
  325. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/types.js.map +1 -1
  326. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/index.js.map +1 -1
  327. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/math.js.map +1 -1
  328. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/profile.js.map +1 -1
  329. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/types.js.map +1 -1
  330. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +1 -1
  331. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  332. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
  333. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  334. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +5 -0
  335. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  336. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  337. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +1 -1
  338. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  339. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  340. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  341. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/loading-overlay.js.map +1 -1
  342. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +18 -0
  343. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  344. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +60 -1
  345. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  346. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/timing.js.map +1 -1
  347. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  348. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/facade.js.map +1 -1
  349. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/game-objects.js.map +1 -1
  350. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/geometry.js.map +1 -1
  351. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/index.js.map +1 -1
  352. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
  353. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  354. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/default-assets.js.map +1 -1
  355. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.d.ts.map +1 -1
  356. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.js +28 -2
  357. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.js.map +1 -1
  358. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/duplicate.js.map +1 -1
  359. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/index.js.map +1 -1
  360. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
  361. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/paths.js.map +1 -1
  362. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/preview.js.map +1 -1
  363. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/profile.js.map +1 -1
  364. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.d.ts.map +1 -1
  365. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.js +26 -9
  366. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.js.map +1 -1
  367. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/resolver.js.map +1 -1
  368. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
  369. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
  370. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +0 -3
  371. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
  372. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/text.js.map +1 -1
  373. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts +8 -1
  374. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts.map +1 -1
  375. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.js.map +1 -1
  376. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  377. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/index.js.map +1 -1
  378. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/json-field.js.map +1 -1
  379. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  380. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/rendering-alpha-index.js.map +1 -1
  381. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.js.map +1 -1
  382. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/types.js.map +1 -1
  383. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
  384. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  385. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -1
  386. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  387. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/index.js.map +1 -1
  388. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.d.ts +2 -0
  389. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.d.ts.map +1 -1
  390. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.js.map +1 -1
  391. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  392. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  393. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  394. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
  395. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  396. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/shadow-inspector.js.map +1 -1
  397. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/source-structure-inspector.js.map +1 -1
  398. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  399. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/structure.js.map +1 -1
  400. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/types.js.map +1 -1
  401. package/node_modules/@fps-games/editor-playable-sdk/dist/product/asset-manager.js.map +1 -1
  402. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal-scene-feature.js.map +1 -1
  403. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
  404. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  405. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +1 -0
  406. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  407. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +3 -1
  408. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  409. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
  410. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  411. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-asset-actions.js.map +1 -1
  412. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  413. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/draft.js.map +1 -1
  414. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/index.js.map +1 -1
  415. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  416. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/route.js.map +1 -1
  417. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  418. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js.map +1 -1
  419. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.js.map +1 -1
  420. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/index.js.map +1 -1
  421. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  422. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  423. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +13 -1
  424. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  425. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  426. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  427. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  428. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/artifacts.js.map +1 -1
  429. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  430. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/companion-configs.js.map +1 -1
  431. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  432. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/index.js.map +1 -1
  433. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  434. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  435. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/validation.js.map +1 -1
  436. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
  437. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/index.js.map +1 -1
  438. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  439. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
  440. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.js.map +1 -1
  441. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/types.js.map +1 -1
  442. package/node_modules/@fps-games/editor-playable-sdk/dist/session/classification.js.map +1 -1
  443. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  444. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
  445. package/node_modules/@fps-games/editor-playable-sdk/dist/session/identity.js.map +1 -1
  446. package/node_modules/@fps-games/editor-playable-sdk/dist/session/index.js.map +1 -1
  447. package/node_modules/@fps-games/editor-playable-sdk/dist/session/object-command-facade.js.map +1 -1
  448. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  449. package/node_modules/@fps-games/editor-playable-sdk/dist/session/property-patches.js.map +1 -1
  450. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  451. package/node_modules/@fps-games/editor-playable-sdk/dist/session/system-defaults.js.map +1 -1
  452. package/node_modules/@fps-games/editor-playable-sdk/dist/session/transform.js.map +1 -1
  453. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  454. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.js.map +1 -1
  455. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.js.map +1 -1
  456. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/http.js.map +1 -1
  457. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/json.js.map +1 -1
  458. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js.map +1 -1
  459. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/index.js.map +1 -1
  460. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/host.js.map +1 -1
  461. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js.map +1 -1
  462. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  463. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/report.js.map +1 -1
  464. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.js.map +1 -1
  465. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.js.map +1 -1
  466. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.d.ts +1 -0
  467. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.d.ts.map +1 -1
  468. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.js +1 -0
  469. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.js.map +1 -1
  470. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js.map +1 -1
  471. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js.map +1 -1
  472. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +6 -5
  473. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  474. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  475. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  476. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.d.ts +3 -1
  477. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.d.ts.map +1 -1
  478. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.js +37 -8
  479. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.js.map +1 -1
  480. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/path-write-coordinator.js.map +1 -1
  481. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts +4 -3
  482. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  483. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +14 -1
  484. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  485. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +5 -4
  486. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  487. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  488. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +3 -2
  489. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  490. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +2 -11
  491. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  492. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +8 -7
  493. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  494. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +84 -6
  495. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  496. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.d.ts +2 -1
  497. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.d.ts.map +1 -1
  498. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.js.map +1 -1
  499. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +4 -3
  500. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  501. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +1 -4
  502. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  503. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +1 -1
  504. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +0 -33
  505. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  506. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  507. package/node_modules/@fps-games/editor-playable-sdk/package.json +9 -6
  508. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  509. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +1 -1
  510. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  511. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  512. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js.map +1 -1
  513. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  514. package/node_modules/@fps-games/editor-tooling/dist/contributions.js.map +1 -1
  515. package/node_modules/@fps-games/editor-tooling/dist/data-object.js.map +1 -1
  516. package/node_modules/@fps-games/editor-tooling/dist/index.js.map +1 -1
  517. package/node_modules/@fps-games/editor-tooling/dist/migration.js.map +1 -1
  518. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  519. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  520. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  521. package/node_modules/@fps-games/playable-assets/dist/identity.js.map +1 -1
  522. package/node_modules/@fps-games/playable-assets/dist/index.d.ts +1 -0
  523. package/node_modules/@fps-games/playable-assets/dist/index.d.ts.map +1 -1
  524. package/node_modules/@fps-games/playable-assets/dist/index.js +1 -0
  525. package/node_modules/@fps-games/playable-assets/dist/index.js.map +1 -1
  526. package/node_modules/@fps-games/playable-assets/dist/portable-path.d.ts +2 -0
  527. package/node_modules/@fps-games/playable-assets/dist/portable-path.d.ts.map +1 -0
  528. package/node_modules/@fps-games/playable-assets/dist/portable-path.js +25 -0
  529. package/node_modules/@fps-games/playable-assets/dist/portable-path.js.map +1 -0
  530. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  531. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  532. package/node_modules/@fps-games/playable-contracts/dist/marker-graph-validation.js.map +1 -1
  533. package/node_modules/@fps-games/playable-contracts/dist/marker-graph.js.map +1 -1
  534. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  535. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  536. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-authoring.js.map +1 -1
  537. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-types.js.map +1 -1
  538. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  539. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-values.js.map +1 -1
  540. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile.js.map +1 -1
  541. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  542. package/node_modules/@fps-games/playable-rendering/dist/shadow-quality.js.map +1 -1
  543. package/node_modules/@fps-games/playable-rendering/dist/shadow-runtime.js.map +1 -1
  544. package/node_modules/@fps-games/playable-rendering/dist/shadow-settings.js.map +1 -1
  545. package/node_modules/@fps-games/playable-rendering/dist/shadow-types.js.map +1 -1
  546. package/node_modules/@fps-games/playable-rendering/dist/shadow-validation.js.map +1 -1
  547. package/node_modules/@fps-games/playable-rendering/dist/value.js.map +1 -1
  548. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  549. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  550. package/node_modules/@fps-games/playable-runtime/dist/index.js.map +1 -1
  551. package/node_modules/@fps-games/playable-runtime/dist/runtime-data.js.map +1 -1
  552. package/node_modules/@fps-games/playable-runtime/dist/runtime.js.map +1 -1
  553. package/node_modules/@fps-games/playable-runtime/dist/standard-plugins.js.map +1 -1
  554. package/node_modules/@fps-games/playable-runtime/dist/tokens.js.map +1 -1
  555. package/node_modules/@fps-games/playable-runtime/dist/types.js.map +1 -1
  556. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  557. package/node_modules/@fps-games/playable-runtime-data/dist/index.js.map +1 -1
  558. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  559. package/node_modules/@fps-games/playable-scene/dist/index.js.map +1 -1
  560. package/node_modules/@fps-games/playable-scene/dist/transform-math.js.map +1 -1
  561. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  562. package/node_modules/@fps-games/plugin-api/dist/index.js.map +1 -1
  563. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  564. package/node_modules/@fps-games/plugin-assets/dist/reference.js.map +1 -1
  565. package/node_modules/@fps-games/plugin-assets/dist/runtime.js.map +1 -1
  566. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  567. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  568. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  569. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  570. package/node_modules/@fps-games/plugin-host/dist/index.js.map +1 -1
  571. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  572. package/node_modules/@fps-games/plugin-markers/dist/reference.js.map +1 -1
  573. package/node_modules/@fps-games/plugin-markers/dist/runtime.js.map +1 -1
  574. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  575. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  576. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  577. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  578. package/node_modules/@fps-games/plugin-materials/dist/reference.js.map +1 -1
  579. package/node_modules/@fps-games/plugin-materials/dist/runtime.js.map +1 -1
  580. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  581. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  582. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  583. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  584. package/node_modules/@fps-games/plugin-rendering/dist/reference.js.map +1 -1
  585. package/node_modules/@fps-games/plugin-rendering/dist/runtime.js.map +1 -1
  586. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  587. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  588. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  589. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  590. package/node_modules/@fps-games/plugin-scene/dist/reference.js.map +1 -1
  591. package/node_modules/@fps-games/plugin-scene/dist/runtime.js.map +1 -1
  592. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  593. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  594. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  595. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  596. package/node_modules/@fps-games/plugin-shadows/dist/reference.js.map +1 -1
  597. package/node_modules/@fps-games/plugin-shadows/dist/runtime.js.map +1 -1
  598. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  599. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  600. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  601. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  602. package/package.json +27 -19
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n EditorSelectionState,\n EditorTransformMatrix,\n EditorTransformPivot,\n EditorTransformSnapshot,\n EditorTransformVec3,\n} from '@fps-games/editor-core';\nimport {\n cloneEditorTransformMatrix,\n combineEditorTransforms,\n createIdentityEditorTransformMatrix,\n createEditorTransformMatrixSnapshot,\n isEditorTransformMatrixSnapshot,\n readEditorTransformPosition,\n toEditorLocalTransformFromWorld,\n} from '@fps-games/editor-core';\nimport type {\n ArtistMaterialProfile,\n ArtistMaterialSlotBinding,\n ArtistMaterialTextureRef,\n MaterialSlotSourceDescriptor,\n SceneMaterialAssetKind,\n} from '@fps-games/editor-protocol';\nimport { applyBabylonDefaultOutline, type BabylonDefaultOutlineOptions } from '@fps-games/babylon-renderer';\nimport type {\n BabylonRuntimeGlobal,\n RuntimeCamera,\n RuntimeScene,\n} from './types';\nimport { applyArtistMaterialProfileToRuntimeMaterial } from './material-property-adapter';\nimport {\n pickBabylonProjectionNodeIdAt,\n resolveBabylonPickSelectionNodeId,\n resolveBabylonProjectionNodeId,\n} from './projection-pick-resolver';\nimport {\n normalizeProjectionOwnerNodePath,\n readProjectionSourceNodeSegment,\n} from './projection-source-owner-path';\nimport {\n createMaterialSlotOwnerPathMatchKey,\n isMaterialSlotOwnerPathMatch,\n} from './material-slot-source-resolver';\nimport {\n isBabylonPrimitiveProjectionSharedMaterial,\n} from './primitive-projection-instancing';\n\nexport type BabylonEditorProjectionVec3 = EditorTransformVec3;\nexport interface BabylonEditorProjectionVec2 {\n x: number;\n y: number;\n}\n\nconst LARGE_SELECTION_EDGE_LIMIT = 200;\nconst PROJECTION_LOCAL_MATRIX_METADATA_KEY = 'editorLocalTransformMatrix';\nconst MIN_SELECTION_BOUNDS_PROXY_SIZE = 0.002;\n\nexport type BabylonEditorProjectionTransform = EditorTransformSnapshot;\n\nexport interface BabylonEditorProjectionAssetTransform {\n position?: BabylonEditorProjectionVec3;\n rotation?: BabylonEditorProjectionVec3;\n rotationDeg?: BabylonEditorProjectionVec3;\n scale?: number | BabylonEditorProjectionVec3;\n}\n\nexport interface BabylonEditorProjectionAsset {\n id?: string;\n sourceId?: string;\n transform?: BabylonEditorProjectionAssetTransform;\n metadata?: Record<string, unknown>;\n}\n\nexport type BabylonEditorProjectionPrimitiveShape = 'cube' | 'sphere' | 'plane' | 'capsule';\n\nexport interface BabylonEditorProjectionPrimitive {\n shape: BabylonEditorProjectionPrimitiveShape;\n}\n\nexport interface BabylonEditorProjectionOutline {\n strategy?: 'babylon-default';\n renderOutline?: boolean;\n outlineWidth?: number;\n outlineColor?: BabylonEditorProjectionColorRGB;\n}\n\nexport type BabylonEditorProjectionCameraMode = 'orthographic' | 'perspective';\n\nexport interface BabylonEditorProjectionCameraSettings {\n projection?: BabylonEditorProjectionCameraMode;\n alpha: number;\n beta: number;\n radius: number;\n orthoSize: number;\n fov?: number;\n targetOffset?: BabylonEditorProjectionVec3;\n minZ?: number;\n maxZ?: number;\n lowerBetaLimit?: number;\n upperBetaLimit?: number;\n lowerRadiusLimit?: number;\n upperRadiusLimit?: number;\n inertia?: number;\n targetScreenOffset?: BabylonEditorProjectionVec2;\n}\n\nexport interface BabylonEditorProjectionCameraRigApplyOptions {\n target?: BabylonEditorProjectionVec3 | null;\n lockOrbit?: boolean;\n}\n\nexport interface BabylonEditorProjectionColorRGB {\n r: number;\n g: number;\n b: number;\n}\n\nexport interface BabylonEditorProjectionDirectionalLightSettings {\n type: 'directional';\n intensity: number;\n direction: BabylonEditorProjectionVec3;\n diffuseColor?: BabylonEditorProjectionColorRGB;\n helperVisible?: boolean;\n}\n\nexport interface BabylonEditorProjectionHemisphericLightSettings {\n type: 'hemispheric';\n intensity: number;\n diffuseColor?: BabylonEditorProjectionColorRGB;\n groundColor?: BabylonEditorProjectionColorRGB;\n helperVisible?: boolean;\n}\n\nexport type BabylonEditorProjectionLightSettings =\n | BabylonEditorProjectionDirectionalLightSettings\n | BabylonEditorProjectionHemisphericLightSettings;\n\nexport type BabylonEditorProjectionShadowMode = 'default' | 'none' | 'blob' | 'static' | 'planar' | 'dynamic';\n\nexport interface BabylonEditorProjectionRendering {\n renderingGroupId?: number;\n alphaIndex?: number;\n}\n\nexport type BabylonEditorProjectionAssetInstantiationMode = 'auto' | 'meshClone' | 'instancedMesh';\n\nexport interface BabylonEditorProjectionNode {\n id: string;\n name?: string;\n parentId?: string | null;\n active?: boolean;\n transform?: BabylonEditorProjectionTransform;\n asset?: BabylonEditorProjectionAsset | null;\n primitive?: BabylonEditorProjectionPrimitive | null;\n helperKind?: 'root';\n runtimeKind?: 'camera' | 'light';\n shadow?: unknown;\n shadowPlan?: unknown;\n rendering?: BabylonEditorProjectionRendering;\n camera?: BabylonEditorProjectionCameraSettings;\n light?: BabylonEditorProjectionLightSettings;\n outline?: BabylonEditorProjectionOutline | null;\n assetInstantiationMode?: BabylonEditorProjectionAssetInstantiationMode;\n artistMaterialKind?: SceneMaterialAssetKind;\n artistMaterialProfile?: ArtistMaterialProfile;\n artistMaterialSlotBindings?: ArtistMaterialSlotBinding[];\n}\n\nexport interface BabylonEditorProjectionImportResult {\n meshes?: any[];\n transformNodes?: any[];\n animationGroups?: any[];\n}\n\nexport type BabylonEditorProjectionImportNodeKind = 'root' | 'transform' | 'mesh';\n\nexport interface BabylonEditorProjectionImportNodeSnapshot {\n id: string;\n parentId: string | null;\n name: string;\n kind: BabylonEditorProjectionImportNodeKind;\n sourceName?: string;\n ownerNodePath?: string;\n materialIds?: string[];\n}\n\nexport interface BabylonEditorProjectionImportMaterialSnapshot {\n id: string;\n name: string;\n kind?: string;\n nodeIds: string[];\n textureIds: string[];\n}\n\nexport interface BabylonEditorProjectionImportTextureSnapshot {\n id: string;\n name: string;\n kind?: string;\n url?: string;\n}\n\nexport interface BabylonEditorProjectionImportAnimationSnapshot {\n id: string;\n name: string;\n}\n\nexport interface BabylonEditorProjectionImportStructureSnapshot {\n projectionNodeId: string;\n assetId?: string;\n sourceId?: string;\n nodes: BabylonEditorProjectionImportNodeSnapshot[];\n materials: BabylonEditorProjectionImportMaterialSnapshot[];\n textures: BabylonEditorProjectionImportTextureSnapshot[];\n animations: BabylonEditorProjectionImportAnimationSnapshot[];\n}\n\nexport interface BabylonEditorProjectionImportContext {\n babylon: BabylonRuntimeGlobal;\n scene: RuntimeScene;\n root: any;\n node: BabylonEditorProjectionNode;\n asset: BabylonEditorProjectionAsset;\n}\n\nexport type BabylonEditorProjectionImporter = (\n context: BabylonEditorProjectionImportContext,\n) => Promise<BabylonEditorProjectionImportResult | null | undefined>;\n\nexport type BabylonEditorProjectionMaterialProfileSource = 'rootProfile' | 'slotBinding';\nexport type BabylonEditorProjectionMaterialProfileMatchKind = 'root' | 'exact' | 'descendant' | 'none';\nexport type BabylonEditorProjectionMaterialProfileTargetStatus =\n | 'material'\n | 'subMaterial'\n | 'primitiveFallbackMaterial'\n | 'missingMeshOwner'\n | 'missingMaterial'\n | 'missingTargetMaterial'\n | 'missingSubMaterial';\n\nexport interface BabylonEditorProjectionMaterialProfileDiagnostic {\n projectionNodeId: string;\n source: BabylonEditorProjectionMaterialProfileSource;\n applied: boolean;\n matchKind: BabylonEditorProjectionMaterialProfileMatchKind;\n targetMaterialStatus: BabylonEditorProjectionMaterialProfileTargetStatus;\n slotId?: string;\n ownerNodePath?: string;\n meshOwnerNodePath?: string | null;\n primitiveIndex?: number;\n targetMaterialName?: string;\n targetMaterialType?: string | null;\n warningMessage?: string;\n}\n\nexport interface BabylonEditorProjectionOptions {\n babylon: BabylonRuntimeGlobal;\n scene: RuntimeScene;\n importModel?: BabylonEditorProjectionImporter;\n resolveTextureUrl?: (texture: ArtistMaterialTextureRef) => string | null | undefined;\n selectionEdgesPrewarm?: BabylonEditorProjectionSelectionEdgesPrewarm;\n logger?: Pick<Console, 'warn'>;\n onProjectionReady?: (event: BabylonEditorProjectionReadyEvent) => void;\n onProjectionBatchSettled?: (event: BabylonEditorProjectionBatchSettledEvent) => void;\n onMaterialProfileDiagnostic?: (diagnostic: BabylonEditorProjectionMaterialProfileDiagnostic) => void;\n}\n\nexport type BabylonEditorProjectionSelectionEdgesPrewarm = 'eager' | 'lazy' | 'idle';\n\ntype ProjectionMaterialSlotBoundingBox = {\n min?: [number, number, number];\n max?: [number, number, number];\n};\n\ntype ProjectionMaterialSlotDescriptor = MaterialSlotSourceDescriptor & {\n key: string;\n normalizedOwnerNodePath: string;\n matchKey: string;\n triangleCount?: number;\n boundingBox?: ProjectionMaterialSlotBoundingBox;\n};\n\ntype ProjectionMaterialSlotBinding = {\n slot: ProjectionMaterialSlotDescriptor;\n profile: ArtistMaterialProfile;\n source: Exclude<BabylonEditorProjectionMaterialProfileSource, 'rootProfile'>;\n};\n\ntype ProjectionMaterialSlotBindingMatch = {\n binding: ProjectionMaterialSlotBinding;\n matchKind: Extract<BabylonEditorProjectionMaterialProfileMatchKind, 'exact' | 'descendant'>;\n};\n\ntype ProjectionMaterialSlotDescriptorInput = Partial<Record<keyof MaterialSlotSourceDescriptor, unknown>> & {\n triangleCount?: unknown;\n boundingBox?: unknown;\n};\n\ntype ProjectionMaterialSlotTarget = {\n material: unknown;\n clonedMaterials: unknown[];\n};\n\ntype ProjectionMaterialDetachResult = {\n material: unknown;\n clonedMaterials: unknown[];\n projectionOwnsMaterialLifecycle: boolean;\n};\n\ntype ProjectionMaterialSlotTargetResolution = {\n target: ProjectionMaterialSlotTarget | null;\n targetMaterialStatus: BabylonEditorProjectionMaterialProfileTargetStatus;\n warningMessage?: string;\n};\n\nexport interface BabylonEditorProjectionReadyEvent {\n nodeId: string;\n async: boolean;\n}\n\nexport interface BabylonEditorProjectionBatchSettledEvent {\n batchId: number;\n nodeIds: string[];\n asyncNodeIds: string[];\n settledNodeIds: string[];\n}\n\nexport type BabylonEditorProjectionBatchState = 'pending' | 'settled' | 'stale';\n\nexport interface BabylonEditorProjectionBatchStatus {\n batchId: number;\n nodeIds: string[];\n asyncNodeIds: string[];\n pendingNodeIds: string[];\n settledNodeIds: string[];\n state: BabylonEditorProjectionBatchState;\n}\n\nexport interface BabylonEditorProjectionBatchHandle {\n batchId: number;\n nodeIds: string[];\n getStatus(): BabylonEditorProjectionBatchStatus;\n settled: Promise<BabylonEditorProjectionBatchStatus>;\n}\n\nexport interface BabylonEditorProjectionIdleState {\n idle: boolean;\n activeBatchIds: number[];\n lastBatch: BabylonEditorProjectionBatchStatus | null;\n}\n\nexport interface BabylonEditorProjectionPreviewVisibilityEntry {\n nodeId: string;\n visible: boolean;\n authoredActive: boolean;\n effectiveVisible: boolean;\n}\n\nexport interface BabylonEditorProjectionDebugBounds {\n min: BabylonEditorProjectionVec3;\n max: BabylonEditorProjectionVec3;\n size: BabylonEditorProjectionVec3;\n center: BabylonEditorProjectionVec3;\n}\n\nexport interface BabylonEditorProjectionShadowDebugOverlayItem {\n id: string;\n kind: 'caster-bounds' | 'receiver-bounds' | 'receiver-surface' | 'light-direction' | 'footprint' | 'artifact-bounds';\n bounds?: BabylonEditorProjectionDebugBounds;\n center?: BabylonEditorProjectionVec3;\n size?: BabylonEditorProjectionVec3;\n direction?: BabylonEditorProjectionVec3;\n}\n\nexport interface ProjectedBabylonEditorNode {\n nodeId: string;\n root: any;\n outlineMeshes: any[];\n selectionMeshes?: any[];\n animationGroups: any[];\n runtimeObjects: any[];\n importStructure?: BabylonEditorProjectionImportStructureSnapshot | null;\n loadPromise?: Promise<void>;\n selectionEdgesPrewarmCancel?: (() => void) | null;\n}\n\nexport interface BabylonEditorProjection {\n projectNodes(nodes: BabylonEditorProjectionNode[]): BabylonEditorProjectionBatchHandle;\n projectNode(node: BabylonEditorProjectionNode): ProjectedBabylonEditorNode | null;\n removeNode(nodeId: string): void;\n rebuild(nodes: BabylonEditorProjectionNode[]): BabylonEditorProjectionBatchHandle;\n getLastProjectionBatch(): BabylonEditorProjectionBatchHandle | null;\n getIdleState(): BabylonEditorProjectionIdleState;\n waitForIdle(): Promise<BabylonEditorProjectionIdleState>;\n readNodeTransform(nodeId: string): EditorTransformSnapshot | null;\n readNodeTransforms(nodeIds: string[]): Record<string, EditorTransformSnapshot>;\n readNodeImportStructure(nodeId: string): BabylonEditorProjectionImportStructureSnapshot | null;\n setNodeTransformPreview(nodeId: string, transform: EditorTransformSnapshot): void;\n setNodeTransformsPreview(transforms: Record<string, EditorTransformSnapshot>): void;\n getAttachableRoot(nodeId: string): any | null;\n getSelectionBounds(nodeIds: string[]): BabylonEditorProjectionBounds | null;\n getSelectionPivot(nodeIds: string[]): EditorTransformPivot | null;\n syncNodeTransform(node: BabylonEditorProjectionNode): void;\n syncRuntimeNode(node: BabylonEditorProjectionNode): boolean;\n syncNodeMetadata(node: BabylonEditorProjectionNode): void;\n syncSelection(selection: EditorSelectionState): void;\n resolveProjectionNodeId(target: unknown): string | null;\n resolvePickSelectionNodeId(target: unknown): string | null;\n pickNodeIdAt(clientX: number, clientY: number): string | null;\n getNodeIdsInScreenRect(rect: BabylonEditorProjectionScreenRect): string[];\n getProjectedNode(nodeId: string): ProjectedBabylonEditorNode | null;\n getProjectedNodeIds(): string[];\n getProjectionParentIds(nodeId: string): string[];\n getPreviewVisibilityOverrides(): BabylonEditorProjectionPreviewVisibilityEntry[];\n setPreviewVisibilityOverrides(overrides: Record<string, boolean>): BabylonEditorProjectionPreviewVisibilityEntry[];\n clearPreviewVisibilityOverrides(): BabylonEditorProjectionPreviewVisibilityEntry[];\n setShadowDebugOverlay(items: BabylonEditorProjectionShadowDebugOverlayItem[]): string[];\n clearShadowDebugOverlay(): boolean;\n dispose(): void;\n}\n\nexport interface BabylonEditorProjectionScreenRect {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport interface BabylonEditorProjectionBounds {\n min: BabylonEditorProjectionVec3;\n max: BabylonEditorProjectionVec3;\n center: BabylonEditorProjectionVec3;\n size: BabylonEditorProjectionVec3;\n}\n\ninterface BabylonEditorProjectionBatch {\n id: number;\n generation: number;\n nodeIds: string[];\n asyncNodeIds: string[];\n pendingNodeIds: Set<string>;\n settledNodeIds: Set<string>;\n notifyScheduled: boolean;\n state: BabylonEditorProjectionBatchState;\n handle: BabylonEditorProjectionBatchHandle;\n resolveSettled(status: BabylonEditorProjectionBatchStatus): void;\n}\n\nconst ASSET_MESH_SELECTION_SEPARATOR = '::assetMesh::';\n\nfunction requireBabylonCtor<T>(value: T | undefined, name: string): T {\n if (!value) throw new Error(`Babylon runtime missing ${name}`);\n return value;\n}\n\nexport function createBabylonEditorProjection(\n options: BabylonEditorProjectionOptions,\n): BabylonEditorProjection {\n const projections = new Map<string, ProjectedBabylonEditorNode>();\n const projectionParentIds = new Map<string, string | null>();\n const projectionAuthoredActive = new Map<string, boolean>();\n const previewVisibilityOverrides = new Map<string, boolean>();\n const shadowDebugOverlayObjects: any[] = [];\n const selectionEdgesPrewarm = options.selectionEdgesPrewarm ?? 'eager';\n const activeBatches = new Set<BabylonEditorProjectionBatch>();\n const idleWaiters = new Set<(state: BabylonEditorProjectionIdleState) => void>();\n let nextBatchId = 1;\n let projectionGeneration = 0;\n let lastBatch: BabylonEditorProjectionBatch | null = null;\n let idleNotificationSuspendCount = 0;\n\n const createBatch = (nodeIds: string[]): BabylonEditorProjectionBatch => {\n let resolveSettled!: (status: BabylonEditorProjectionBatchStatus) => void;\n const settled = new Promise<BabylonEditorProjectionBatchStatus>(resolve => {\n resolveSettled = resolve;\n });\n const batch: BabylonEditorProjectionBatch = {\n id: nextBatchId,\n generation: projectionGeneration,\n nodeIds,\n asyncNodeIds: [],\n pendingNodeIds: new Set(),\n settledNodeIds: new Set(),\n notifyScheduled: false,\n state: 'pending',\n handle: null as unknown as BabylonEditorProjectionBatchHandle,\n resolveSettled,\n };\n batch.handle = {\n batchId: batch.id,\n nodeIds: [...batch.nodeIds],\n getStatus: () => createBatchStatus(batch),\n settled,\n };\n nextBatchId += 1;\n lastBatch = batch;\n activeBatches.add(batch);\n return batch;\n };\n\n const createBatchStatus = (\n batch: BabylonEditorProjectionBatch,\n ): BabylonEditorProjectionBatchStatus => ({\n batchId: batch.id,\n nodeIds: [...batch.nodeIds],\n asyncNodeIds: [...batch.asyncNodeIds],\n pendingNodeIds: [...batch.pendingNodeIds],\n settledNodeIds: [...batch.settledNodeIds],\n state: batch.state,\n });\n\n const getIdleState = (): BabylonEditorProjectionIdleState => ({\n idle: activeBatches.size === 0,\n activeBatchIds: [...activeBatches].map(batch => batch.id),\n lastBatch: lastBatch ? createBatchStatus(lastBatch) : null,\n });\n\n const notifyIdleWaitersIfNeeded = (): void => {\n if (idleNotificationSuspendCount > 0 || activeBatches.size > 0 || idleWaiters.size === 0) return;\n const state = getIdleState();\n for (const resolve of idleWaiters) resolve(state);\n idleWaiters.clear();\n };\n\n const completeBatch = (\n batch: BabylonEditorProjectionBatch,\n state: Exclude<BabylonEditorProjectionBatchState, 'pending'>,\n ): BabylonEditorProjectionBatchStatus => {\n if (batch.state !== 'pending') return createBatchStatus(batch);\n batch.state = state;\n const status = createBatchStatus(batch);\n activeBatches.delete(batch);\n batch.resolveSettled(status);\n notifyIdleWaitersIfNeeded();\n return status;\n };\n\n const markActiveBatchesStale = (): void => {\n for (const batch of [...activeBatches]) {\n completeBatch(batch, 'stale');\n }\n };\n\n const scheduleBatchSettled = (batch: BabylonEditorProjectionBatch): void => {\n if (batch.state !== 'pending' || batch.pendingNodeIds.size > 0 || batch.notifyScheduled) return;\n batch.notifyScheduled = true;\n void Promise.resolve().then(() => {\n batch.notifyScheduled = false;\n if (batch.state !== 'pending' || batch.pendingNodeIds.size > 0) return;\n if (batch.generation !== projectionGeneration) {\n completeBatch(batch, 'stale');\n return;\n }\n options.onProjectionBatchSettled?.({\n batchId: batch.id,\n nodeIds: [...batch.nodeIds],\n asyncNodeIds: [...batch.asyncNodeIds],\n settledNodeIds: [...batch.settledNodeIds],\n });\n completeBatch(batch, 'settled');\n });\n };\n\n const trackAsyncProjection = (\n batch: BabylonEditorProjectionBatch,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n ): Promise<void> => {\n batch.asyncNodeIds.push(node.id);\n batch.pendingNodeIds.add(node.id);\n return loadModelProjection(options, node, projection).finally(() => {\n batch.pendingNodeIds.delete(node.id);\n batch.settledNodeIds.add(node.id);\n if (projections.get(node.id) === projection && !projection.root.isDisposed?.()) {\n delete projection.loadPromise;\n applyProjectionPreviewVisibility(node.id);\n applyProjectionOutline(node, projection);\n scheduleProjectionSelectionEdgesPrewarm(projection);\n options.onProjectionReady?.({ nodeId: node.id, async: true });\n }\n scheduleBatchSettled(batch);\n });\n };\n\n const disposeProjectedNode = (projection: ProjectedBabylonEditorNode): void => {\n projection.selectionEdgesPrewarmCancel?.();\n projection.selectionEdgesPrewarmCancel = null;\n projection.importStructure = null;\n for (const animationGroup of projection.animationGroups) {\n animationGroup.dispose?.();\n }\n let disposedRuntimeLight = false;\n for (const runtimeObject of projection.runtimeObjects) {\n disposedRuntimeLight = disposedRuntimeLight || isProjectionRuntimeLightObject(runtimeObject);\n runtimeObject.dispose?.();\n }\n if (disposedRuntimeLight) resyncProjectionSceneLightSources(options.scene);\n projection.root?.dispose?.();\n };\n\n const disposeAll = (): void => {\n markActiveBatchesStale();\n projectionGeneration += 1;\n clearShadowDebugOverlayObjects();\n for (const projection of projections.values()) {\n disposeProjectedNode(projection);\n }\n projections.clear();\n projectionParentIds.clear();\n projectionAuthoredActive.clear();\n previewVisibilityOverrides.clear();\n };\n\n const createPreviewVisibilityEntry = (\n nodeId: string,\n visible: boolean,\n ): BabylonEditorProjectionPreviewVisibilityEntry => {\n const authoredActive = projectionAuthoredActive.get(nodeId) !== false;\n return {\n nodeId,\n visible,\n authoredActive,\n effectiveVisible: authoredActive && visible !== false,\n };\n };\n\n const applyProjectionPreviewVisibility = (nodeId: string): void => {\n const projection = projections.get(nodeId);\n if (!projection) return;\n const authoredActive = projectionAuthoredActive.get(nodeId) !== false;\n const override = previewVisibilityOverrides.get(nodeId);\n const effectiveVisible = authoredActive && override !== false;\n projection.root?.setEnabled?.(effectiveVisible);\n for (const runtimeObject of projection.runtimeObjects) {\n runtimeObject.setEnabled?.(effectiveVisible);\n }\n };\n\n const clearShadowDebugOverlayObjects = (): boolean => {\n const hadObjects = shadowDebugOverlayObjects.length > 0;\n for (const object of shadowDebugOverlayObjects.splice(0)) {\n object.dispose?.();\n }\n return hadObjects;\n };\n\n const scheduleProjectionSelectionEdgesPrewarm = (projection: ProjectedBabylonEditorNode): void => {\n projection.selectionEdgesPrewarmCancel?.();\n projection.selectionEdgesPrewarmCancel = null;\n if (selectionEdgesPrewarm === 'lazy') return;\n if (selectionEdgesPrewarm === 'eager') {\n prewarmProjectionSelectionEdges(projection);\n return;\n }\n projection.selectionEdgesPrewarmCancel = scheduleIdleProjectionSelectionEdgesPrewarm(projection);\n };\n\n const syncProjectionHierarchy = (): void => {\n for (const [nodeId, projection] of projections) {\n const parentId = projectionParentIds.get(nodeId) ?? null;\n const parent = parentId && parentId !== nodeId\n ? projections.get(parentId)?.root ?? null\n : null;\n if (projection.root.parent !== parent) {\n projection.root.parent = parent;\n }\n }\n };\n\n const projectNodeInBatch = (\n node: BabylonEditorProjectionNode,\n batch: BabylonEditorProjectionBatch,\n ): ProjectedBabylonEditorNode | null => {\n removeNode(node.id);\n const root = createProjectionRoot(options.babylon, options.scene, node);\n if (!root) return null;\n const projection: ProjectedBabylonEditorNode = {\n nodeId: node.id,\n root,\n outlineMeshes: [],\n selectionMeshes: [],\n animationGroups: [],\n runtimeObjects: [],\n };\n projections.set(node.id, projection);\n projectionParentIds.set(node.id, node.parentId ?? null);\n projectionAuthoredActive.set(node.id, node.active !== false);\n applyProjectionPreviewVisibility(node.id);\n if (node.transform) applyProjectionTransform(options.babylon, root, node.transform);\n\n if (node.helperKind !== 'root' && !attachRuntimeProjection(options.babylon, options.scene, node, projection)) {\n if (node.asset && options.importModel) {\n projection.loadPromise = trackAsyncProjection(batch, node, projection);\n } else if (node.primitive) {\n attachPrimitiveProjection(options, node, projection);\n } else if (node.asset) {\n attachFallbackProjection(options.babylon, options.scene, node, projection, true);\n }\n }\n if (!projection.loadPromise) {\n applyProjectionOutline(node, projection);\n scheduleProjectionSelectionEdgesPrewarm(projection);\n }\n if (!projection.loadPromise) batch.settledNodeIds.add(node.id);\n return projection;\n };\n\n const projectNode = (node: BabylonEditorProjectionNode): ProjectedBabylonEditorNode | null => {\n const batch = createBatch([node.id]);\n const projection = projectNodeInBatch(node, batch);\n syncProjectionHierarchy();\n scheduleBatchSettled(batch);\n return projection;\n };\n\n const removeNode = (nodeId: string): void => {\n const existing = projections.get(nodeId);\n if (!existing) return;\n projections.delete(nodeId);\n projectionParentIds.delete(nodeId);\n projectionAuthoredActive.delete(nodeId);\n previewVisibilityOverrides.delete(nodeId);\n syncProjectionHierarchy();\n disposeProjectedNode(existing);\n };\n\n return {\n projectNodes(nodes) {\n const nodeList = [...nodes];\n idleNotificationSuspendCount += 1;\n try {\n disposeAll();\n const batch = createBatch(nodeList.map(node => node.id));\n for (const node of nodeList) projectNodeInBatch(node, batch);\n syncProjectionHierarchy();\n scheduleBatchSettled(batch);\n return batch.handle;\n } finally {\n idleNotificationSuspendCount = Math.max(0, idleNotificationSuspendCount - 1);\n notifyIdleWaitersIfNeeded();\n }\n },\n projectNode,\n removeNode,\n rebuild(nodes) {\n return this.projectNodes(nodes);\n },\n getLastProjectionBatch() {\n return lastBatch?.handle ?? null;\n },\n getIdleState,\n waitForIdle() {\n if (activeBatches.size === 0) return Promise.resolve(getIdleState());\n return new Promise(resolve => {\n idleWaiters.add(resolve);\n });\n },\n readNodeTransform(nodeId) {\n const projection = projections.get(nodeId);\n return projection?.root ? readProjectionTransform(projection.root) : null;\n },\n readNodeTransforms(nodeIds) {\n const transforms: Record<string, EditorTransformSnapshot> = {};\n for (const nodeId of nodeIds) {\n const transform = this.readNodeTransform(nodeId);\n if (transform) transforms[nodeId] = transform;\n }\n return transforms;\n },\n readNodeImportStructure(nodeId) {\n return cloneProjectionImportStructureSnapshot(projections.get(nodeId)?.importStructure ?? null);\n },\n setNodeTransformPreview(nodeId, transform) {\n const projection = projections.get(nodeId);\n if (!projection?.root) return;\n if (!applyProjectionWorldTransform(options.babylon, projection.root, transform)) {\n options.logger?.warn?.(`[BabylonEditorProjection] Failed to preview non-representable world transform for \"${nodeId}\"`);\n }\n },\n setNodeTransformsPreview(transforms) {\n for (const [nodeId, transform] of Object.entries(transforms)) {\n this.setNodeTransformPreview(nodeId, transform);\n }\n },\n getAttachableRoot(nodeId) {\n return projections.get(nodeId)?.root ?? null;\n },\n getSelectionBounds(nodeIds) {\n return getProjectionSelectionBounds(projections, nodeIds);\n },\n getSelectionPivot(nodeIds) {\n const bounds = getProjectionSelectionBounds(projections, nodeIds);\n if (bounds) {\n return {\n mode: 'selection-center',\n position: bounds.center,\n };\n }\n const transforms = nodeIds\n .map(nodeId => this.readNodeTransform(nodeId))\n .filter((transform): transform is EditorTransformSnapshot => !!transform);\n if (transforms.length === 0) return null;\n return {\n mode: 'selection-center',\n position: averagePositions(transforms),\n };\n },\n syncNodeTransform(node) {\n const projection = projections.get(node.id);\n if (!projection) return;\n projectionAuthoredActive.set(node.id, node.active !== false);\n applyProjectionPreviewVisibility(node.id);\n projectionParentIds.set(node.id, node.parentId ?? null);\n syncProjectionHierarchy();\n if (node.transform) applyProjectionTransform(options.babylon, projection.root, node.transform);\n scheduleProjectionSelectionEdgesPrewarm(projection);\n },\n syncRuntimeNode(node) {\n const projection = projections.get(node.id);\n if (!projection || node.runtimeKind !== 'light') return false;\n projectionAuthoredActive.set(node.id, node.active !== false);\n applyProjectionPreviewVisibility(node.id);\n projectionParentIds.set(node.id, node.parentId ?? null);\n syncProjectionHierarchy();\n if (node.transform) applyProjectionTransform(options.babylon, projection.root, node.transform);\n if (!syncRuntimeLightProjection(options.babylon, options.scene, node, projection)) return false;\n scheduleProjectionSelectionEdgesPrewarm(projection);\n return true;\n },\n syncNodeMetadata(node) {\n const projection = projections.get(node.id);\n if (!projection) return;\n syncProjectionNodeMetadata(projection, node);\n },\n syncSelection(selection) {\n syncProjectionSelection(options.babylon, projections, selection);\n },\n resolveProjectionNodeId(target) {\n return resolveBabylonProjectionNodeId(target);\n },\n resolvePickSelectionNodeId(target) {\n return resolveBabylonPickSelectionNodeId(target);\n },\n pickNodeIdAt(clientX, clientY) {\n return pickBabylonProjectionNodeIdAt(options.scene, clientX, clientY);\n },\n getNodeIdsInScreenRect(rect) {\n return getProjectionNodeIdsInScreenRect(options.babylon, options.scene, projections, rect);\n },\n getProjectedNode(nodeId) {\n return projections.get(nodeId) ?? null;\n },\n getProjectedNodeIds() {\n return [...projections.keys()];\n },\n getProjectionParentIds(nodeId) {\n const parentIds: string[] = [];\n const seen = new Set<string>([nodeId]);\n let currentId: string | null = nodeId;\n while (currentId) {\n const parentId: string | null = projectionParentIds.get(currentId) ?? null;\n if (!parentId || parentId === currentId || seen.has(parentId)) break;\n seen.add(parentId);\n parentIds.push(parentId);\n currentId = parentId;\n }\n return parentIds;\n },\n getPreviewVisibilityOverrides() {\n return [...previewVisibilityOverrides.entries()]\n .map(([nodeId, visible]) => createPreviewVisibilityEntry(nodeId, visible));\n },\n setPreviewVisibilityOverrides(overrides) {\n for (const [nodeId, visible] of Object.entries(overrides)) {\n if (!projections.has(nodeId)) continue;\n previewVisibilityOverrides.set(nodeId, visible !== false);\n applyProjectionPreviewVisibility(nodeId);\n }\n return this.getPreviewVisibilityOverrides();\n },\n clearPreviewVisibilityOverrides() {\n const changedNodeIds = [...previewVisibilityOverrides.keys()];\n previewVisibilityOverrides.clear();\n for (const nodeId of changedNodeIds) applyProjectionPreviewVisibility(nodeId);\n return [];\n },\n setShadowDebugOverlay(items) {\n clearShadowDebugOverlayObjects();\n for (const item of items) {\n const object = createShadowDebugOverlayObject(options.babylon, options.scene, item);\n if (object) shadowDebugOverlayObjects.push(object);\n }\n return items.map(item => item.id);\n },\n clearShadowDebugOverlay() {\n return clearShadowDebugOverlayObjects();\n },\n dispose() {\n disposeAll();\n },\n };\n}\n\nfunction readVector3(value: any, fallback: EditorTransformVec3): EditorTransformVec3 {\n return {\n x: Number.isFinite(value?.x) ? Number(value.x) : fallback.x,\n y: Number.isFinite(value?.y) ? Number(value.y) : fallback.y,\n z: Number.isFinite(value?.z) ? Number(value.z) : fallback.z,\n };\n}\n\nfunction createShadowDebugOverlayObject(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n item: BabylonEditorProjectionShadowDebugOverlayItem,\n): any | null {\n if (item.kind === 'light-direction') return createShadowDebugDirectionOverlay(babylon, scene, item);\n const bounds = item.bounds ?? createBoundsFromCenterSize(item.center, item.size);\n if (!bounds) return null;\n const MeshBuilder = (babylon as any).MeshBuilder;\n const StandardMaterial = (babylon as any).StandardMaterial;\n if (!MeshBuilder?.CreateBox || !StandardMaterial) return null;\n const size = {\n x: Math.max(Math.abs(bounds.size.x), 0.01),\n y: Math.max(Math.abs(bounds.size.y), item.kind === 'footprint' ? 0.015 : 0.01),\n z: Math.max(Math.abs(bounds.size.z), 0.01),\n };\n const mesh = MeshBuilder.CreateBox(`${item.id}.shadowDebugOverlay`, {\n width: size.x,\n height: size.y,\n depth: size.z,\n }, scene);\n if (!mesh) return null;\n mesh.id = item.id;\n mesh.name = item.id;\n mesh.isPickable = false;\n mesh.renderingGroupId = 3;\n mesh.metadata = createShadowDebugOverlayMetadata();\n mesh.position = createBabylonVector3(babylon, bounds.center);\n const material = new StandardMaterial(`${item.id}.shadowDebugOverlay.material`, scene);\n const color = readShadowDebugOverlayColor(babylon, item.kind);\n if (color) {\n material.diffuseColor = color;\n material.emissiveColor = color;\n }\n material.alpha = item.kind === 'receiver-surface' ? 0.14 : item.kind === 'footprint' ? 0.32 : 0.5;\n material.wireframe = item.kind !== 'footprint' && item.kind !== 'receiver-surface';\n material.disableLighting = true;\n mesh.material = material;\n const disposeMaterial = material.dispose?.bind(material);\n const disposeMesh = mesh.dispose?.bind(mesh);\n mesh.dispose = (...args: unknown[]) => {\n disposeMaterial?.();\n return disposeMesh?.(...args);\n };\n return mesh;\n}\n\nfunction createShadowDebugDirectionOverlay(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n item: BabylonEditorProjectionShadowDebugOverlayItem,\n): any | null {\n const MeshBuilder = (babylon as any).MeshBuilder;\n if (!MeshBuilder?.CreateLineSystem) return null;\n const center = item.center ?? item.bounds?.center;\n const direction = normalizeDebugVec3(item.direction ?? { x: -0.3, y: -1, z: -0.2 });\n if (!center || !direction) return null;\n const length = Math.max(item.size?.x ?? item.bounds?.size.x ?? 2, item.size?.y ?? item.bounds?.size.y ?? 2, item.size?.z ?? item.bounds?.size.z ?? 2, 2);\n const start = createBabylonVector3(babylon, {\n x: center.x - direction.x * length * 0.5,\n y: center.y - direction.y * length * 0.5,\n z: center.z - direction.z * length * 0.5,\n });\n const end = createBabylonVector3(babylon, {\n x: center.x + direction.x * length * 0.5,\n y: center.y + direction.y * length * 0.5,\n z: center.z + direction.z * length * 0.5,\n });\n const arrowLeft = createBabylonVector3(babylon, {\n x: end.x - direction.x * length * 0.18 + direction.z * length * 0.08,\n y: end.y - direction.y * length * 0.18,\n z: end.z - direction.z * length * 0.18 - direction.x * length * 0.08,\n });\n const arrowRight = createBabylonVector3(babylon, {\n x: end.x - direction.x * length * 0.18 - direction.z * length * 0.08,\n y: end.y - direction.y * length * 0.18,\n z: end.z - direction.z * length * 0.18 + direction.x * length * 0.08,\n });\n const line = MeshBuilder.CreateLineSystem(`${item.id}.shadowDebugOverlay`, {\n lines: [\n [start, end],\n [end, arrowLeft],\n [end, arrowRight],\n ],\n }, scene);\n if (!line) return null;\n line.id = item.id;\n line.name = item.id;\n line.isPickable = false;\n line.renderingGroupId = 3;\n line.metadata = createShadowDebugOverlayMetadata();\n const color = readShadowDebugOverlayColor(babylon, item.kind);\n if (color) line.color = color;\n return line;\n}\n\nfunction createShadowDebugOverlayMetadata(): Record<string, unknown> {\n return {\n shadowDebugOverlayInternal: true,\n disablePlanarShadow: true,\n disableBlobShadow: true,\n disableStaticProjectedShadow: true,\n };\n}\n\nfunction createBoundsFromCenterSize(\n center: BabylonEditorProjectionVec3 | undefined,\n size: BabylonEditorProjectionVec3 | undefined,\n): BabylonEditorProjectionDebugBounds | null {\n if (!center || !size) return null;\n return {\n center,\n size,\n min: {\n x: center.x - size.x / 2,\n y: center.y - size.y / 2,\n z: center.z - size.z / 2,\n },\n max: {\n x: center.x + size.x / 2,\n y: center.y + size.y / 2,\n z: center.z + size.z / 2,\n },\n };\n}\n\nfunction createBabylonVector3(babylon: BabylonRuntimeGlobal, value: BabylonEditorProjectionVec3): any {\n const Vector3 = (babylon as any).Vector3;\n return Vector3 ? new Vector3(value.x, value.y, value.z) : { x: value.x, y: value.y, z: value.z };\n}\n\nfunction normalizeDebugVec3(value: BabylonEditorProjectionVec3): BabylonEditorProjectionVec3 | null {\n const length = Math.hypot(value.x, value.y, value.z);\n if (!Number.isFinite(length) || length <= 0.0001) return null;\n return {\n x: value.x / length,\n y: value.y / length,\n z: value.z / length,\n };\n}\n\nfunction readShadowDebugOverlayColor(babylon: BabylonRuntimeGlobal, kind: BabylonEditorProjectionShadowDebugOverlayItem['kind']): any | null {\n const Color3 = (babylon as any).Color3;\n if (!Color3) return null;\n if (kind === 'caster-bounds') return new Color3(1, 0.78, 0.1);\n if (kind === 'receiver-bounds') return new Color3(0.1, 0.75, 1);\n if (kind === 'receiver-surface') return new Color3(0.05, 0.55, 1);\n if (kind === 'light-direction') return new Color3(1, 0.95, 0.2);\n if (kind === 'footprint') return new Color3(0.1, 1, 0.42);\n return new Color3(1, 0.25, 0.25);\n}\n\nfunction addVec3(left: EditorTransformVec3, right: EditorTransformVec3): EditorTransformVec3 {\n return {\n x: left.x + right.x,\n y: left.y + right.y,\n z: left.z + right.z,\n };\n}\n\nfunction scaleVec3(value: EditorTransformVec3, factor: number): EditorTransformVec3 {\n return {\n x: value.x * factor,\n y: value.y * factor,\n z: value.z * factor,\n };\n}\n\nfunction averagePositions(transforms: EditorTransformSnapshot[]): EditorTransformVec3 {\n const sum = transforms.reduce(\n (current, transform) => addVec3(current, readEditorTransformPosition(transform)),\n { x: 0, y: 0, z: 0 },\n );\n return scaleVec3(sum, 1 / transforms.length);\n}\n\nfunction getProjectionSelectionBounds(\n projections: Map<string, ProjectedBabylonEditorNode>,\n nodeIds: string[],\n): BabylonEditorProjectionBounds | null {\n let min: EditorTransformVec3 | null = null;\n let max: EditorTransformVec3 | null = null;\n for (const nodeId of nodeIds) {\n const bounds = readProjectionBounds(resolveProjectionSelectionBoundsTarget(projections, nodeId));\n if (!bounds) continue;\n min = min\n ? {\n x: Math.min(min.x, bounds.min.x),\n y: Math.min(min.y, bounds.min.y),\n z: Math.min(min.z, bounds.min.z),\n }\n : bounds.min;\n max = max\n ? {\n x: Math.max(max.x, bounds.max.x),\n y: Math.max(max.y, bounds.max.y),\n z: Math.max(max.z, bounds.max.z),\n }\n : bounds.max;\n }\n if (!min || !max) return null;\n const center = {\n x: (min.x + max.x) / 2,\n y: (min.y + max.y) / 2,\n z: (min.z + max.z) / 2,\n };\n return {\n min,\n max,\n center,\n size: {\n x: max.x - min.x,\n y: max.y - min.y,\n z: max.z - min.z,\n },\n };\n}\n\nfunction resolveProjectionSelectionBoundsTarget(\n projections: Map<string, ProjectedBabylonEditorNode>,\n nodeId: string,\n): any | null {\n const projection = projections.get(nodeId);\n if (projection?.root) return projection.root;\n for (const candidateProjection of projections.values()) {\n const selectionTarget = findProjectionSelectionMeshByNodeId(candidateProjection, nodeId);\n if (selectionTarget) return selectionTarget;\n }\n return null;\n}\n\nfunction findProjectionSelectionMeshByNodeId(\n projection: ProjectedBabylonEditorNode,\n nodeId: string,\n): any | null {\n for (const mesh of projection.selectionMeshes ?? []) {\n if (readProjectionMeshSelectionNodeId(mesh) === nodeId) return mesh;\n }\n for (const mesh of projection.outlineMeshes) {\n if (readProjectionMeshSelectionNodeId(mesh) === nodeId) return mesh;\n }\n return null;\n}\n\nfunction readProjectionMeshSelectionNodeId(mesh: any): string | null {\n const nodeId = mesh?.metadata?.editorProjection?.nodeId;\n return typeof nodeId === 'string' && nodeId.length > 0 ? nodeId : null;\n}\n\nfunction readProjectionBounds(root: any): Pick<BabylonEditorProjectionBounds, 'min' | 'max'> | null {\n if (!root) return null;\n const bounds = root.getHierarchyBoundingVectors?.();\n if (bounds?.min && bounds?.max) {\n return {\n min: readVector3(bounds.min, { x: 0, y: 0, z: 0 }),\n max: readVector3(bounds.max, { x: 0, y: 0, z: 0 }),\n };\n }\n const transform = readProjectionTransform(root);\n const position = readEditorTransformPosition(transform);\n return {\n min: position,\n max: position,\n };\n}\n\nexport function readProjectionTransform(node: any): EditorTransformSnapshot {\n return readProjectionWorldTransform(node);\n}\n\nfunction readProjectionWorldTransform(node: any, seen = new Set<any>()): EditorTransformSnapshot {\n const local = readProjectionLocalTransform(node);\n const parent = node?.parent ?? null;\n if (!parent || seen.has(node)) return local;\n seen.add(node);\n const parentWorld = readProjectionWorldTransform(parent, seen);\n return combineEditorTransforms(parentWorld, local) ?? local;\n}\n\nfunction readProjectionLocalTransform(node: any): EditorTransformSnapshot {\n const matrix = readProjectionLocalMatrixTransform(node);\n if (matrix) return matrix;\n const rotation = node?.rotationQuaternion?.toEulerAngles?.() ?? node?.rotation;\n return {\n position: readVector3(node?.position, { x: 0, y: 0, z: 0 }),\n rotation: readVector3(rotation, { x: 0, y: 0, z: 0 }),\n scale: readVector3(node?.scaling, { x: 1, y: 1, z: 1 }),\n };\n}\n\nfunction readProjectionLocalMatrixTransform(node: any): EditorTransformSnapshot | null {\n const metadata = readProjectionObject(node?.metadata);\n const metadataMatrix = metadata?.[PROJECTION_LOCAL_MATRIX_METADATA_KEY];\n if (Array.isArray(metadataMatrix)) {\n const transform = createEditorTransformMatrixSnapshot(metadataMatrix);\n if (transform) return transform;\n }\n const pivotMatrix = node?._usePivotMatrix ? node?._pivotMatrix?.asArray?.() : null;\n return Array.isArray(pivotMatrix) || ArrayBuffer.isView(pivotMatrix)\n ? createEditorTransformMatrixSnapshot(Array.from(pivotMatrix as ArrayLike<number>))\n : null;\n}\n\nfunction createProjectionRoot(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n): any | null {\n const TransformNode = (babylon as any).TransformNode;\n if (!TransformNode) return null;\n const root = new TransformNode(`${node.id}.projection`, scene);\n root.id = node.id;\n root.name = node.name ?? node.id;\n const disableGeneratedShadow = node.runtimeKind === 'camera' || node.runtimeKind === 'light' || node.helperKind === 'root';\n root.metadata = {\n ...(root.metadata ?? {}),\n ...(disableGeneratedShadow ? {\n disablePlanarShadow: true,\n disableBlobShadow: true,\n disableStaticProjectedShadow: true,\n } : {}),\n editorProjection: {\n nodeId: node.id,\n ...(node.runtimeKind ? { runtimeKind: node.runtimeKind } : {}),\n ...createProjectionShadowMetadata(node),\n },\n };\n return root;\n}\n\nasync function loadModelProjection(\n options: BabylonEditorProjectionOptions,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): Promise<void> {\n const asset = node.asset;\n if (!asset || !options.importModel) {\n attachFallbackProjection(options.babylon, options.scene, node, projection, !!asset);\n applyProjectionOutline(node, projection);\n return;\n }\n\n try {\n const result = await options.importModel({\n babylon: options.babylon,\n scene: options.scene,\n root: projection.root,\n node,\n asset,\n });\n if (!result) {\n attachFallbackProjection(options.babylon, options.scene, node, projection, true);\n applyProjectionOutline(node, projection);\n return;\n }\n if (projection.root.isDisposed?.()) {\n disposeImportedProjectionResult(result);\n return;\n }\n attachImportedProjectionResult(options, node, asset, projection, result);\n applyProjectionOutline(node, projection);\n } catch (error) {\n options.logger?.warn?.(`[BabylonEditorProjection] Failed to project model \"${asset.sourceId ?? asset.id ?? node.id}\"`, error);\n if (!projection.root.isDisposed?.()) {\n attachFallbackProjection(options.babylon, options.scene, node, projection, true);\n applyProjectionOutline(node, projection);\n }\n }\n}\n\nfunction attachImportedProjectionResult(\n options: BabylonEditorProjectionOptions,\n node: BabylonEditorProjectionNode,\n asset: BabylonEditorProjectionAsset,\n projection: ProjectedBabylonEditorNode,\n result: BabylonEditorProjectionImportResult,\n): void {\n const { babylon, scene } = options;\n const TransformNode = (babylon as any).TransformNode;\n if (!TransformNode) return;\n try {\n const modelRoot = new TransformNode(`${node.id}.modelRoot`, scene);\n modelRoot.parent = projection.root;\n modelRoot.metadata = {\n ...(modelRoot.metadata ?? {}),\n editorProjection: {\n nodeId: node.id,\n sourceId: asset.sourceId,\n ...createProjectionShadowMetadata(node),\n },\n };\n applyAssetDefaultsTransform(babylon, modelRoot, asset.transform);\n collapseZeroVertexProjectionWrapperMeshes(babylon, scene, result);\n\n const importedNodes = [\n ...(result.transformNodes ?? []),\n ...(result.meshes ?? []),\n ];\n const importedNodeSet = new Set<any>(importedNodes);\n for (const importedNode of importedNodes) {\n if (importedNode === modelRoot) continue;\n if (!importedNode.parent || !importedNodeSet.has(importedNode.parent)) {\n importedNode.parent = modelRoot;\n }\n importedNode.metadata = {\n ...(importedNode.metadata ?? {}),\n editorProjection: {\n nodeId: node.id,\n sourceId: asset.sourceId,\n ...createProjectionShadowMetadata(node),\n },\n };\n }\n const materialSlots = readProjectionAssetMaterialSlots(asset, node.id);\n const ownerNodePathByMesh = new Map<any, string>();\n const ownerMeshCountByKey = new Map<string, number>();\n for (const mesh of result.meshes ?? []) {\n const ownerNodePath = buildProjectionOwnerNodePath(mesh, modelRoot, node.id);\n if (!ownerNodePath) continue;\n ownerNodePathByMesh.set(mesh, ownerNodePath);\n const ownerKey = createMaterialSlotOwnerPathMatchKey(ownerNodePath, { projectionNodeId: node.id });\n ownerMeshCountByKey.set(ownerKey, (ownerMeshCountByKey.get(ownerKey) ?? 0) + 1);\n }\n const splitPrimitiveOrdinalByOwnerKey = new Map<string, number>();\n const primitiveBoundsProxyOwnerKeys = new Set<string>();\n for (const mesh of result.meshes ?? []) {\n mesh.isPickable = true;\n applyProjectionRenderingToMesh(node, mesh);\n const ownerNodePath = ownerNodePathByMesh.get(mesh) ?? null;\n if (ownerNodePath) {\n const ownerKey = createMaterialSlotOwnerPathMatchKey(ownerNodePath, { projectionNodeId: node.id });\n const ownerMeshCount = ownerMeshCountByKey.get(ownerKey) ?? 0;\n const splitPrimitiveSlot = resolveProjectionSplitPrimitiveMeshSelectionSlot(\n mesh,\n materialSlots,\n ownerNodePath,\n node.id,\n ownerMeshCount,\n splitPrimitiveOrdinalByOwnerKey,\n );\n const primitiveSelectionMeshes = createProjectionAssetMeshSelectionProxies(\n options,\n node,\n projection,\n mesh,\n ownerNodePath,\n materialSlots,\n );\n const primitiveBoundsSelectionMeshes = !splitPrimitiveSlot\n && primitiveSelectionMeshes.length === 0\n && !primitiveBoundsProxyOwnerKeys.has(ownerKey)\n ? createProjectionPrimitiveBoundsSelectionProxies(\n options,\n node,\n projection,\n mesh,\n ownerNodePath,\n materialSlots,\n ownerMeshCount,\n )\n : [];\n if (primitiveBoundsSelectionMeshes.length > 0) primitiveBoundsProxyOwnerKeys.add(ownerKey);\n const usesSelectionMeshes = primitiveSelectionMeshes.length > 0\n || primitiveBoundsSelectionMeshes.length > 0\n || primitiveBoundsProxyOwnerKeys.has(ownerKey);\n const selectionKey = resolveProjectionAssetMeshSelectionKey(asset, ownerNodePath, node.id);\n mesh.metadata = {\n ...(mesh.metadata ?? {}),\n editorProjection: {\n nodeId: splitPrimitiveSlot\n ? createAssetMeshProjectionNodeId(node.id, splitPrimitiveSlot.key)\n : usesSelectionMeshes\n ? node.id\n : createAssetMeshProjectionNodeId(node.id, selectionKey),\n rootNodeId: node.id,\n sourceId: asset.sourceId,\n ownerNodePath,\n ...(splitPrimitiveSlot\n ? {\n slotSelectionKey: splitPrimitiveSlot.key,\n primitiveIndex: splitPrimitiveSlot.primitiveIndex,\n }\n : {}),\n ...(!splitPrimitiveSlot && !usesSelectionMeshes && selectionKey !== ownerNodePath\n ? { slotSelectionKey: selectionKey }\n : {}),\n runtimeKind: 'assetMesh',\n ...createProjectionShadowMetadata(node),\n },\n };\n }\n }\n projection.runtimeObjects.push(\n ...applyProjectionArtistMaterialProfilesToMeshes(options, node, modelRoot, result.meshes ?? []),\n );\n for (const animationGroup of result.animationGroups ?? []) {\n animationGroup.stop?.();\n }\n projection.animationGroups = result.animationGroups ?? [];\n projection.outlineMeshes = (result.meshes ?? []).filter((mesh: any) => mesh.getTotalVertices?.() > 0);\n projection.importStructure = createProjectionImportStructureSnapshot(node, asset, modelRoot, result);\n } catch (error) {\n disposeImportedProjectionResult(result);\n throw error;\n }\n}\n\nfunction collapseZeroVertexProjectionWrapperMeshes(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n result: BabylonEditorProjectionImportResult,\n): void {\n const meshes = result.meshes ?? [];\n if (meshes.length === 0) return;\n const TransformNode = (babylon as any).TransformNode;\n if (!TransformNode) return;\n const sourceMeshes = collectProjectionSourceMeshReferences(meshes);\n const keptMeshes: any[] = [];\n const replacementTransformNodes: any[] = [];\n for (const mesh of meshes) {\n if (!canCollapseProjectionWrapperMesh(mesh, sourceMeshes)) {\n keptMeshes.push(mesh);\n continue;\n }\n const replacement = createProjectionWrapperTransformNode(TransformNode, scene, mesh);\n if (!replacement) {\n keptMeshes.push(mesh);\n continue;\n }\n for (const child of readProjectionDirectChildren(mesh)) {\n child.parent = replacement;\n }\n mesh.dispose?.(true, false);\n replacementTransformNodes.push(replacement);\n }\n if (replacementTransformNodes.length === 0) return;\n result.meshes = keptMeshes;\n result.transformNodes = [\n ...(result.transformNodes ?? []),\n ...replacementTransformNodes,\n ];\n}\n\nfunction collectProjectionSourceMeshReferences(meshes: readonly any[]): Set<any> {\n const sourceMeshes = new Set<any>();\n for (const mesh of meshes) {\n const sourceMesh = mesh?.sourceMesh;\n if (sourceMesh) sourceMeshes.add(sourceMesh);\n }\n return sourceMeshes;\n}\n\nfunction canCollapseProjectionWrapperMesh(mesh: any, sourceMeshes: ReadonlySet<any>): boolean {\n if (!mesh || mesh.getClassName?.() !== 'Mesh') return false;\n if (sourceMeshes.has(mesh)) return false;\n if (mesh.sourceMesh) return false;\n const vertices = mesh.getTotalVertices?.();\n if (vertices !== 0) return false;\n if (Array.isArray(mesh.instances) && mesh.instances.length > 0) return false;\n if (mesh.skeleton || mesh.morphTargetManager) return false;\n if (Array.isArray(mesh.subMeshes) && mesh.subMeshes.length > 0) return false;\n if (mesh.material) return false;\n const projection = readProjectionObject(mesh.metadata?.editorProjection);\n const runtimeKind = projection?.runtimeKind;\n if (\n runtimeKind === 'assetMeshSelectionProxy'\n || runtimeKind === 'primitive'\n || runtimeKind === 'camera'\n || runtimeKind === 'light'\n || projection?.primitiveShape != null\n || projection?.helper != null\n || projection?.disableStaticProjectedShadow === false\n ) {\n return false;\n }\n return true;\n}\n\nfunction createProjectionWrapperTransformNode(\n TransformNode: new (name: string, scene: RuntimeScene) => any,\n scene: RuntimeScene,\n mesh: any,\n): any | null {\n const name = typeof mesh.name === 'string' ? mesh.name : typeof mesh.id === 'string' ? mesh.id : 'projectionWrapper';\n const replacement = new TransformNode(name, scene);\n if (typeof mesh.id === 'string') replacement.id = mesh.id;\n if (typeof mesh.name === 'string') replacement.name = mesh.name;\n replacement.parent = mesh.parent ?? null;\n if (mesh.metadata && typeof mesh.metadata === 'object') {\n replacement.metadata = { ...mesh.metadata };\n }\n if (mesh.reservedDataStore && typeof mesh.reservedDataStore === 'object') {\n replacement.reservedDataStore = { ...mesh.reservedDataStore };\n }\n if (Array.isArray(mesh.animations)) replacement.animations = [...mesh.animations];\n copyProjectionWrapperTransform(mesh, replacement);\n if (typeof mesh.isEnabled === 'function' && typeof replacement.setEnabled === 'function') {\n replacement.setEnabled(mesh.isEnabled());\n }\n if (typeof mesh.state === 'string') replacement.state = mesh.state;\n if (typeof mesh.layerMask === 'number') replacement.layerMask = mesh.layerMask;\n return replacement;\n}\n\nfunction copyProjectionWrapperTransform(source: any, target: any): void {\n copyBabylonVector3(source.position, target.position);\n copyBabylonVector3(source.rotation, target.rotation);\n copyBabylonVector3(source.scaling, target.scaling);\n if (source.rotationQuaternion?.clone) {\n target.rotationQuaternion = source.rotationQuaternion.clone();\n } else {\n target.rotationQuaternion = null;\n }\n const pivotMatrix = source._pivotMatrix?.clone?.() ?? source.getPivotMatrix?.()?.clone?.();\n if (pivotMatrix) {\n if (source._usePivotMatrix && typeof target.setPreTransformMatrix === 'function') {\n target.setPreTransformMatrix(pivotMatrix.clone?.() ?? pivotMatrix);\n } else if (typeof target.setPivotMatrix === 'function') {\n target.setPivotMatrix(pivotMatrix.clone?.() ?? pivotMatrix, false);\n }\n }\n}\n\nfunction copyBabylonVector3(source: any, target: any): void {\n if (!source || !target) return;\n if (typeof target.copyFrom === 'function') {\n target.copyFrom(source);\n return;\n }\n target.x = source.x;\n target.y = source.y;\n target.z = source.z;\n}\n\nfunction readProjectionDirectChildren(node: any): any[] {\n const children = node?.getChildren?.((candidate: any) => candidate?.parent === node, true);\n return Array.isArray(children) ? children.filter(child => child?.parent === node) : [];\n}\n\nfunction createProjectionImportStructureSnapshot(\n node: BabylonEditorProjectionNode,\n asset: BabylonEditorProjectionAsset,\n modelRoot: any,\n result: BabylonEditorProjectionImportResult,\n): BabylonEditorProjectionImportStructureSnapshot {\n const runtimeNodes = collectProjectionImportRuntimeNodes(modelRoot, result);\n const nodeIdByRuntimeNode = new Map<any, string>();\n const materialIdByRuntimeMaterial = new Map<any, string>();\n const textureIdByRuntimeTexture = new Map<any, string>();\n const materialNodeIds = new Map<string, Set<string>>();\n const materialTextureIds = new Map<string, Set<string>>();\n const rootSnapshotId = 'root';\n const snapshots: BabylonEditorProjectionImportNodeSnapshot[] = [{\n id: rootSnapshotId,\n parentId: null,\n name: readProjectionRuntimeName(modelRoot, node.name ?? node.id),\n kind: 'root',\n }];\n\n for (const runtimeNode of runtimeNodes) {\n const snapshotId = createProjectionImportRuntimeNodeId(runtimeNode, nodeIdByRuntimeNode.size);\n nodeIdByRuntimeNode.set(runtimeNode, snapshotId);\n }\n\n for (const runtimeNode of runtimeNodes) {\n const snapshotId = nodeIdByRuntimeNode.get(runtimeNode);\n if (!snapshotId) continue;\n const materialIds = readProjectionRuntimeNodeMaterials(runtimeNode)\n .map(runtimeMaterial => getProjectionImportMaterialSnapshotId(runtimeMaterial, materialIdByRuntimeMaterial))\n .filter((materialId): materialId is string => !!materialId);\n for (const materialId of materialIds) {\n const nodeIds = materialNodeIds.get(materialId) ?? new Set<string>();\n nodeIds.add(snapshotId);\n materialNodeIds.set(materialId, nodeIds);\n const textureIds = readProjectionRuntimeMaterialTextures(readProjectionRuntimeNodeMaterialById(runtimeNode, runtimeNode, materialId, materialIdByRuntimeMaterial))\n .map(runtimeTexture => getProjectionImportTextureSnapshotId(runtimeTexture, textureIdByRuntimeTexture))\n .filter((textureId): textureId is string => !!textureId);\n const materialTextures = materialTextureIds.get(materialId) ?? new Set<string>();\n for (const textureId of textureIds) materialTextures.add(textureId);\n materialTextureIds.set(materialId, materialTextures);\n }\n snapshots.push({\n id: snapshotId,\n parentId: resolveProjectionImportRuntimeParentId(runtimeNode, modelRoot, nodeIdByRuntimeNode, rootSnapshotId),\n name: readProjectionRuntimeName(runtimeNode, snapshotId),\n kind: isProjectionRuntimeMeshLike(runtimeNode) ? 'mesh' : 'transform',\n ...readProjectionRuntimeSourceName(runtimeNode),\n ...readProjectionRuntimeOwnerNodePath(runtimeNode),\n ...(materialIds.length > 0 ? { materialIds } : {}),\n });\n }\n\n const materials = [...materialIdByRuntimeMaterial.entries()].map(([runtimeMaterial, id]) => ({\n id,\n name: readProjectionRuntimeName(runtimeMaterial, id),\n ...readProjectionRuntimeKind(runtimeMaterial),\n nodeIds: [...(materialNodeIds.get(id) ?? [])],\n textureIds: [...(materialTextureIds.get(id) ?? [])],\n }));\n const textures = [...textureIdByRuntimeTexture.entries()].map(([runtimeTexture, id]) => ({\n id,\n name: readProjectionRuntimeName(runtimeTexture, id),\n ...readProjectionRuntimeKind(runtimeTexture),\n ...readProjectionRuntimeTextureUrl(runtimeTexture),\n }));\n const animations = createProjectionImportAnimationSnapshots(result.animationGroups ?? []);\n\n return {\n projectionNodeId: node.id,\n ...(asset.id ? { assetId: asset.id } : {}),\n ...(asset.sourceId ? { sourceId: asset.sourceId } : {}),\n nodes: snapshots,\n materials,\n textures,\n animations,\n };\n}\n\nfunction collectProjectionImportRuntimeNodes(\n modelRoot: any,\n result: BabylonEditorProjectionImportResult,\n): any[] {\n const known = new Set<any>([\n ...(result.transformNodes ?? []),\n ...(result.meshes ?? []),\n ].filter(Boolean));\n const ordered: any[] = [];\n const visit = (runtimeNode: any): void => {\n for (const child of readProjectionRuntimeChildren(runtimeNode)) {\n if (!known.has(child) || ordered.includes(child)) continue;\n ordered.push(child);\n visit(child);\n }\n };\n visit(modelRoot);\n for (const runtimeNode of known) {\n if (!ordered.includes(runtimeNode)) ordered.push(runtimeNode);\n }\n return ordered;\n}\n\nfunction readProjectionRuntimeChildren(runtimeNode: any): any[] {\n const children = runtimeNode?.getChildren?.();\n return Array.isArray(children) ? children : [];\n}\n\nfunction createProjectionImportRuntimeNodeId(runtimeNode: any, index: number): string {\n const sourceName = readProjectionSourceNodeSegment(runtimeNode);\n const rawName = sourceName || runtimeNode?.name || runtimeNode?.id || `node-${index + 1}`;\n return `${isProjectionRuntimeMeshLike(runtimeNode) ? 'mesh' : 'node'}:${sanitizeProjectionImportSnapshotId(rawName)}:${index + 1}`;\n}\n\nfunction resolveProjectionImportRuntimeParentId(\n runtimeNode: any,\n modelRoot: any,\n nodeIdByRuntimeNode: ReadonlyMap<any, string>,\n rootSnapshotId: string,\n): string | null {\n const parent = runtimeNode?.parent ?? null;\n if (!parent || parent === modelRoot) return rootSnapshotId;\n return nodeIdByRuntimeNode.get(parent) ?? rootSnapshotId;\n}\n\nfunction isProjectionRuntimeMeshLike(runtimeNode: any): boolean {\n return typeof runtimeNode?.getTotalVertices === 'function';\n}\n\nfunction readProjectionRuntimeNodeMaterials(runtimeNode: any): any[] {\n const material = runtimeNode?.material;\n if (!material) return [];\n const subMaterials = material.subMaterials;\n if (Array.isArray(subMaterials) && subMaterials.length > 0) {\n return subMaterials.filter(Boolean);\n }\n return [material];\n}\n\nfunction readProjectionRuntimeNodeMaterialById(\n runtimeNode: any,\n _fallbackNode: any,\n materialId: string,\n materialIdByRuntimeMaterial: ReadonlyMap<any, string>,\n): any | null {\n for (const material of readProjectionRuntimeNodeMaterials(runtimeNode)) {\n if (materialIdByRuntimeMaterial.get(material) === materialId) return material;\n }\n return null;\n}\n\nfunction getProjectionImportMaterialSnapshotId(\n runtimeMaterial: any,\n materialIdByRuntimeMaterial: Map<any, string>,\n): string | null {\n if (!runtimeMaterial) return null;\n const existing = materialIdByRuntimeMaterial.get(runtimeMaterial);\n if (existing) return existing;\n const id = `material:${sanitizeProjectionImportSnapshotId(readProjectionRuntimeName(runtimeMaterial, 'material'))}:${materialIdByRuntimeMaterial.size + 1}`;\n materialIdByRuntimeMaterial.set(runtimeMaterial, id);\n return id;\n}\n\nfunction readProjectionRuntimeMaterialTextures(runtimeMaterial: any | null): any[] {\n if (!runtimeMaterial) return [];\n const textures = runtimeMaterial.getActiveTextures?.();\n return Array.isArray(textures) ? textures.filter(Boolean) : [];\n}\n\nfunction getProjectionImportTextureSnapshotId(\n runtimeTexture: any,\n textureIdByRuntimeTexture: Map<any, string>,\n): string | null {\n if (!runtimeTexture) return null;\n const existing = textureIdByRuntimeTexture.get(runtimeTexture);\n if (existing) return existing;\n const name = readProjectionRuntimeTextureUrl(runtimeTexture).url\n ?? readProjectionRuntimeName(runtimeTexture, 'texture');\n const id = `texture:${sanitizeProjectionImportSnapshotId(name)}:${textureIdByRuntimeTexture.size + 1}`;\n textureIdByRuntimeTexture.set(runtimeTexture, id);\n return id;\n}\n\nfunction createProjectionImportAnimationSnapshots(animationGroups: any[]): BabylonEditorProjectionImportAnimationSnapshot[] {\n return animationGroups.filter(Boolean).map((animationGroup, index) => ({\n id: `animation:${sanitizeProjectionImportSnapshotId(readProjectionRuntimeName(animationGroup, 'animation'))}:${index + 1}`,\n name: readProjectionRuntimeName(animationGroup, `Animation ${index + 1}`),\n }));\n}\n\nfunction readProjectionRuntimeName(runtimeObject: any, fallback: string): string {\n const name = runtimeObject?.name ?? runtimeObject?.id;\n return typeof name === 'string' && name.trim() ? name.trim() : fallback;\n}\n\nfunction readProjectionRuntimeKind(runtimeObject: any): { kind?: string } {\n const kind = runtimeObject?.getClassName?.();\n return typeof kind === 'string' && kind.trim() ? { kind: kind.trim() } : {};\n}\n\nfunction readProjectionRuntimeTextureUrl(runtimeTexture: any): { url?: string } {\n const url = runtimeTexture?.url ?? runtimeTexture?.name;\n return typeof url === 'string' && url.trim() ? { url: url.trim() } : {};\n}\n\nfunction readProjectionRuntimeSourceName(runtimeNode: any): { sourceName?: string } {\n const sourceName = readProjectionSourceNodeSegment(runtimeNode);\n return sourceName ? { sourceName } : {};\n}\n\nfunction readProjectionRuntimeOwnerNodePath(runtimeNode: any): { ownerNodePath?: string } {\n const ownerNodePath = runtimeNode?.metadata?.editorProjection?.ownerNodePath;\n return typeof ownerNodePath === 'string' && ownerNodePath.trim() ? { ownerNodePath: ownerNodePath.trim() } : {};\n}\n\nfunction sanitizeProjectionImportSnapshotId(value: string): string {\n return value.trim().toLowerCase().replace(/[^a-z0-9_.:-]+/gi, '-').replace(/^-+|-+$/g, '') || 'item';\n}\n\nfunction cloneProjectionImportStructureSnapshot(\n snapshot: BabylonEditorProjectionImportStructureSnapshot | null,\n): BabylonEditorProjectionImportStructureSnapshot | null {\n if (!snapshot) return null;\n return {\n ...snapshot,\n nodes: snapshot.nodes.map(item => ({\n ...item,\n ...(item.materialIds ? { materialIds: [...item.materialIds] } : {}),\n })),\n materials: snapshot.materials.map(item => ({\n ...item,\n nodeIds: [...item.nodeIds],\n textureIds: [...item.textureIds],\n })),\n textures: snapshot.textures.map(item => ({ ...item })),\n animations: snapshot.animations.map(item => ({ ...item })),\n };\n}\n\nfunction disposeImportedProjectionResult(result: BabylonEditorProjectionImportResult): void {\n for (const animationGroup of result.animationGroups ?? []) {\n animationGroup.dispose?.();\n }\n for (const node of [...(result.meshes ?? []), ...(result.transformNodes ?? [])]) {\n node.dispose?.();\n }\n}\n\nfunction attachRuntimeProjection(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): boolean {\n if (node.runtimeKind === 'camera') {\n attachCameraProjection(babylon, scene, node, projection);\n return true;\n }\n if (node.runtimeKind === 'light') {\n if (node.light?.type === 'hemispheric') {\n attachHemisphericLightProjection(babylon, scene, node, projection);\n } else {\n attachDirectionalLightProjection(babylon, scene, node, projection);\n }\n return true;\n }\n return false;\n}\n\nfunction attachCameraProjection(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): void {\n const MeshBuilder = (babylon as any).MeshBuilder;\n const StandardMaterial = (babylon as any).StandardMaterial;\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n if (!MeshBuilder || !StandardMaterial) return;\n\n const settings = normalizeBabylonEditorProjectionCameraSettings(node.camera);\n const body = MeshBuilder.CreateBox(`${node.id}.cameraHelper`, {\n width: 0.38,\n height: 0.28,\n depth: 0.24,\n }, scene);\n body.parent = projection.root;\n body.metadata = createProjectionMetadata(node.id, { runtimeKind: 'camera', helper: 'body' });\n const material = new StandardMaterial(`${node.id}.cameraHelper.material`, scene);\n material.diffuseColor = new Color3(0.45, 0.68, 1);\n material.specularColor = new Color3(0.08, 0.1, 0.12);\n body.material = material;\n projection.runtimeObjects.push(material);\n projection.outlineMeshes = [body];\n\n const frustum = createCameraFrustumLines(babylon, scene, node, settings);\n if (frustum) {\n frustum.parent = projection.root;\n frustum.isPickable = false;\n }\n}\n\nfunction attachDirectionalLightProjection(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): void {\n const MeshBuilder = (babylon as any).MeshBuilder;\n const StandardMaterial = (babylon as any).StandardMaterial;\n const DirectionalLight = (babylon as any).DirectionalLight;\n const Vector3 = requireBabylonCtor(babylon.Vector3, 'Vector3');\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n if (!MeshBuilder || !StandardMaterial) return;\n const settings = readProjectionDirectionalLightSettings(\n node.light?.type === 'directional' ? node.light : undefined,\n );\n const direction = new Vector3(settings.direction.x, settings.direction.y, settings.direction.z);\n\n if (DirectionalLight) {\n const light = new DirectionalLight(`${node.id}.directionalLight`, direction, scene);\n light.intensity = settings.intensity;\n light.diffuse = new Color3(\n settings.diffuseColor?.r ?? 1,\n settings.diffuseColor?.g ?? 1,\n settings.diffuseColor?.b ?? 1,\n );\n light.metadata = createProjectionMetadata(node.id, { runtimeKind: 'light', lightType: 'directional' });\n light.setEnabled?.(node.active !== false);\n projection.runtimeObjects.push(light);\n resyncProjectionSceneLightSources(scene);\n }\n\n if (!settings.helperVisible) return;\n\n const helper = MeshBuilder.CreateBox(`${node.id}.lightHelper`, {\n size: 0.28,\n }, scene);\n helper.parent = projection.root;\n helper.metadata = createProjectionMetadata(node.id, { runtimeKind: 'light', helper: 'body' });\n const material = new StandardMaterial(`${node.id}.lightHelper.material`, scene);\n material.diffuseColor = new Color3(1, 0.92, 0.42);\n material.emissiveColor = new Color3(0.5, 0.42, 0.12);\n material.specularColor = new Color3(0.08, 0.1, 0.12);\n helper.material = material;\n projection.runtimeObjects.push(material);\n projection.outlineMeshes = [helper];\n\n const arrow = createLightDirectionLines(babylon, scene, node, settings.direction);\n if (arrow) {\n arrow.parent = projection.root;\n arrow.isPickable = false;\n }\n}\n\nfunction attachFallbackProjection(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n rendererFallback: boolean,\n): void {\n const mesh = createFallbackProjectionMesh(babylon, scene, node, rendererFallback);\n if (!mesh) return;\n mesh.parent = projection.root;\n projection.outlineMeshes = [mesh];\n}\n\nfunction attachPrimitiveProjection(\n options: BabylonEditorProjectionOptions,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): void {\n const { babylon, scene } = options;\n const mesh = createPrimitiveProjectionMesh(babylon, scene, node, options);\n if (!mesh) {\n attachFallbackProjection(babylon, scene, node, projection, true);\n return;\n }\n mesh.parent = projection.root;\n mesh.isPickable = true;\n if (mesh.material && !isBabylonPrimitiveProjectionSharedMaterial(mesh.material)) {\n projection.runtimeObjects.push(mesh.material);\n }\n projection.outlineMeshes = [mesh];\n}\n\nfunction applyProjectionOutline(\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): void {\n const options = createBabylonDefaultOutlineOptions(node.outline);\n if (!options) return;\n for (const mesh of projection.outlineMeshes) {\n applyBabylonDefaultOutline(mesh, options);\n }\n}\n\nfunction createBabylonDefaultOutlineOptions(\n outline: BabylonEditorProjectionOutline | null | undefined,\n): BabylonDefaultOutlineOptions | null {\n if (!outline) return null;\n const options: BabylonDefaultOutlineOptions = {};\n if (typeof outline.renderOutline === 'boolean') options.enabled = outline.renderOutline;\n if (typeof outline.outlineWidth === 'number' && Number.isFinite(outline.outlineWidth)) {\n options.width = outline.outlineWidth;\n }\n if (outline.outlineColor) {\n const color = outline.outlineColor;\n options.color = { r: color.r, g: color.g, b: color.b };\n }\n return Object.keys(options).length > 0 ? options : null;\n}\n\nfunction createPrimitiveProjectionMesh(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n options?: Pick<BabylonEditorProjectionOptions, 'resolveTextureUrl'>,\n): any | null {\n const MeshBuilder = (babylon as any).MeshBuilder;\n const StandardMaterial = (babylon as any).StandardMaterial;\n const PBRMaterial = (babylon as any).PBRMaterial;\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n if (!MeshBuilder || !StandardMaterial) return null;\n const shape = node.primitive?.shape;\n const name = `${node.id}.${shape ?? 'primitive'}Projection`;\n const mesh = shape === 'sphere'\n ? MeshBuilder.CreateSphere?.(name, { diameter: 1, segments: 32 }, scene)\n : shape === 'plane'\n ? MeshBuilder.CreateGround?.(name, { width: 1, height: 1, subdivisions: 1 }, scene)\n : shape === 'capsule'\n ? MeshBuilder.CreateCapsule?.(name, { height: 2, radius: 0.5, tessellation: 24, subdivisions: 8 }, scene)\n : MeshBuilder.CreateBox?.(name, { size: 1 }, scene);\n if (!mesh) return null;\n const material = node.artistMaterialKind === 'standard' || !PBRMaterial\n ? new StandardMaterial(`${node.id}.primitive.material`, scene)\n : new PBRMaterial(`${node.id}.primitive.material`, scene);\n if ('albedoColor' in material) material.albedoColor = new Color3(0.72, 0.74, 0.76);\n else material.diffuseColor = new Color3(0.72, 0.74, 0.76);\n if ('specularColor' in material) material.specularColor = new Color3(0.12, 0.14, 0.16);\n if ('metallic' in material) material.metallic = 0;\n if ('roughness' in material) material.roughness = 1;\n if (shape === 'plane') material.backFaceCulling = false;\n applyProjectionArtistMaterialProfile({ babylon, scene, resolveTextureUrl: options?.resolveTextureUrl }, material, node.artistMaterialProfile);\n mesh.material = material;\n applyProjectionRenderingToMesh(node, mesh);\n mesh.metadata = createProjectionMetadata(node.id, {\n runtimeKind: 'primitive',\n primitiveShape: shape,\n ...createProjectionShadowMetadata(node),\n });\n return mesh;\n}\n\nfunction applyProjectionArtistMaterialProfilesToMeshes(\n options: BabylonEditorProjectionOptions,\n node: BabylonEditorProjectionNode,\n modelRoot: any,\n meshes: any[],\n): unknown[] {\n const slotBindings = createProjectionMaterialSlotBindings(node);\n const hasRootProfile = !!node.artistMaterialProfile;\n const hasSlotProfiles = slotBindings.length > 0;\n if (!hasRootProfile && !hasSlotProfiles) return [];\n const clonedMaterials: unknown[] = [];\n const materials = new Set<unknown>();\n if (hasRootProfile) {\n for (const mesh of meshes) {\n const material = readProjectionWritableMeshMaterial(mesh);\n const meshOwnerNodePath = buildProjectionOwnerNodePath(mesh, modelRoot, node.id);\n if (!material) {\n emitProjectionMaterialProfileDiagnostic(options, {\n projectionNodeId: node.id,\n source: 'rootProfile',\n applied: false,\n matchKind: 'root',\n targetMaterialStatus: 'missingMaterial',\n meshOwnerNodePath,\n warningMessage: 'Root material profile was not applied because an imported mesh has no target material.',\n });\n continue;\n }\n if (materials.has(material)) continue;\n materials.add(material);\n applyProjectionArtistMaterialProfile(options, material, node.artistMaterialProfile);\n emitProjectionMaterialProfileDiagnostic(options, {\n projectionNodeId: node.id,\n source: 'rootProfile',\n applied: true,\n matchKind: 'root',\n targetMaterialStatus: 'material',\n meshOwnerNodePath,\n targetMaterialName: readProjectionMaterialName(material),\n targetMaterialType: readProjectionMaterialType(material),\n });\n }\n if (materials.size === 0 && meshes.length === 0) {\n emitProjectionMaterialProfileDiagnostic(options, {\n projectionNodeId: node.id,\n source: 'rootProfile',\n applied: false,\n matchKind: 'root',\n targetMaterialStatus: 'missingMaterial',\n meshOwnerNodePath: null,\n warningMessage: 'Root material profile was not applied because the imported model produced no meshes.',\n });\n }\n }\n if (!hasSlotProfiles) return clonedMaterials;\n const materialCounts = countProjectionMeshMaterials(meshes);\n const assetMaterialSlots = node.asset ? readProjectionAssetMaterialSlots(node.asset, node.id) : [];\n const unmatchedSlotBindings = new Set(slotBindings);\n for (const mesh of meshes) {\n const ownerNodePath = buildProjectionOwnerNodePath(mesh, modelRoot, node.id);\n const meshSlotBindingMatches = resolveProjectionSlotBindingMatches(slotBindings, ownerNodePath, node.id);\n for (const { binding: slotBinding, matchKind } of meshSlotBindingMatches) {\n unmatchedSlotBindings.delete(slotBinding);\n if (!readProjectionWritableMeshMaterial(mesh)) {\n emitProjectionSlotMaterialProfileDiagnostic(options, node.id, slotBinding, {\n applied: false,\n matchKind,\n meshOwnerNodePath: ownerNodePath,\n targetMaterialStatus: 'missingMaterial',\n warningMessage: 'Slot material profile was not applied because the matched mesh has no target material.',\n });\n continue;\n }\n const resolution = resolveProjectionSlotMaterialTarget(mesh, materialCounts, slotBinding.slot, ownerNodePath, {\n projectionNodeId: node.id,\n primitiveSingleMaterialFallbackAllowed: isProjectionSinglePrimitiveMaterialSlot(slotBinding.slot, assetMaterialSlots),\n });\n const targetMaterial = resolution.target?.material ?? readProjectionWritableMeshMaterial(mesh);\n if (!resolution.target) {\n emitProjectionSlotMaterialProfileDiagnostic(options, node.id, slotBinding, {\n applied: false,\n matchKind,\n meshOwnerNodePath: ownerNodePath,\n targetMaterialStatus: resolution.targetMaterialStatus,\n targetMaterialName: readProjectionMaterialName(targetMaterial),\n targetMaterialType: readProjectionMaterialType(targetMaterial),\n warningMessage: resolution.warningMessage,\n });\n continue;\n }\n const target = resolution.target;\n clonedMaterials.push(...target.clonedMaterials);\n applyProjectionArtistMaterialProfile(options, target.material, slotBinding.profile);\n emitProjectionSlotMaterialProfileDiagnostic(options, node.id, slotBinding, {\n applied: true,\n matchKind,\n meshOwnerNodePath: ownerNodePath,\n targetMaterialStatus: resolution.targetMaterialStatus,\n targetMaterialName: readProjectionMaterialName(target.material),\n targetMaterialType: readProjectionMaterialType(target.material),\n });\n }\n }\n for (const slotBinding of unmatchedSlotBindings) {\n emitProjectionSlotMaterialProfileDiagnostic(options, node.id, slotBinding, {\n applied: false,\n matchKind: 'none',\n meshOwnerNodePath: null,\n targetMaterialStatus: 'missingMeshOwner',\n warningMessage: 'Slot material profile was not applied because no imported mesh matched its owner path.',\n });\n }\n return clonedMaterials;\n}\n\nfunction applyProjectionArtistMaterialProfile(\n options: Pick<BabylonEditorProjectionOptions, 'babylon' | 'scene' | 'resolveTextureUrl'>,\n material: unknown,\n profile: ArtistMaterialProfile | null | undefined,\n): void {\n if (!profile) return;\n applyArtistMaterialProfileToRuntimeMaterial(material, options.scene, profile, {\n babylon: options.babylon,\n resolveTextureUrl: options.resolveTextureUrl,\n });\n}\n\nfunction emitProjectionSlotMaterialProfileDiagnostic(\n options: BabylonEditorProjectionOptions,\n projectionNodeId: string,\n slotBinding: ProjectionMaterialSlotBinding,\n diagnostic: Omit<BabylonEditorProjectionMaterialProfileDiagnostic, 'projectionNodeId' | 'source' | 'slotId' | 'ownerNodePath' | 'primitiveIndex'>,\n): void {\n emitProjectionMaterialProfileDiagnostic(options, {\n projectionNodeId,\n source: slotBinding.source,\n slotId: slotBinding.slot.slotId,\n ownerNodePath: slotBinding.slot.ownerNodePath,\n primitiveIndex: slotBinding.slot.primitiveIndex,\n ...diagnostic,\n });\n}\n\nfunction emitProjectionMaterialProfileDiagnostic(\n options: BabylonEditorProjectionOptions,\n diagnostic: BabylonEditorProjectionMaterialProfileDiagnostic,\n): void {\n options.onMaterialProfileDiagnostic?.(diagnostic);\n if (!diagnostic.warningMessage) return;\n options.logger?.warn?.('[BabylonEditorProjection] Material profile diagnostic warning', {\n projectionNodeId: diagnostic.projectionNodeId,\n source: diagnostic.source,\n slotId: diagnostic.slotId,\n ownerNodePath: diagnostic.ownerNodePath,\n meshOwnerNodePath: diagnostic.meshOwnerNodePath,\n matchKind: diagnostic.matchKind,\n targetMaterialStatus: diagnostic.targetMaterialStatus,\n warningMessage: diagnostic.warningMessage,\n });\n}\n\nfunction readProjectionMaterialName(material: unknown): string | undefined {\n const name = (material as any)?.name;\n return typeof name === 'string' && name.trim() ? name.trim() : undefined;\n}\n\nfunction readProjectionMaterialType(material: unknown): string | null | undefined {\n const getClassName = (material as any)?.getClassName;\n const className = typeof getClassName === 'function' ? getClassName.call(material) : null;\n return typeof className === 'string' && className.trim() ? className.trim() : className;\n}\n\nfunction createProjectionMaterialSlotBindings(\n node: Pick<BabylonEditorProjectionNode, 'artistMaterialSlotBindings' | 'id'>,\n): ProjectionMaterialSlotBinding[] {\n const bindings: ProjectionMaterialSlotBinding[] = [];\n for (const binding of node.artistMaterialSlotBindings ?? []) {\n const profile = binding?.profile;\n const slot = createProjectionMaterialSlotDescriptor(binding?.slot, node.id);\n if (!profile || !slot) continue;\n bindings.push({ slot, profile, source: 'slotBinding' });\n }\n return bindings;\n}\n\nfunction createProjectionMaterialSlotDescriptor(\n value: ProjectionMaterialSlotDescriptorInput | null | undefined,\n projectionNodeId?: string,\n): ProjectionMaterialSlotDescriptor | null {\n if (!value || typeof value !== 'object') return null;\n const ownerNodePath = typeof value.ownerNodePath === 'string'\n ? normalizeProjectionOwnerNodePath(value.ownerNodePath, { projectionNodeId })\n : '';\n const slotId = typeof value.slotId === 'string' && value.slotId.trim() ? value.slotId.trim() : '';\n if (!slotId || !ownerNodePath) return null;\n const label = typeof value.label === 'string' && value.label.trim() ? value.label.trim() : '';\n const nodeIndex = Number.isInteger(value.nodeIndex) ? value.nodeIndex as number : undefined;\n const nodeIndexPath = Array.isArray(value.nodeIndexPath)\n ? value.nodeIndexPath.filter((item): item is number => Number.isInteger(item))\n : undefined;\n const meshIndex = Number.isInteger(value.meshIndex) ? value.meshIndex as number : undefined;\n const primitiveIndex = Number.isInteger(value.primitiveIndex) ? value.primitiveIndex as number : undefined;\n const sourceMaterialIndex = Number.isInteger(value.sourceMaterialIndex) ? value.sourceMaterialIndex as number : undefined;\n const sourceMaterialIndices = Array.isArray(value.sourceMaterialIndices)\n ? value.sourceMaterialIndices.filter((item): item is number => Number.isInteger(item))\n : undefined;\n const materialName = typeof value.materialName === 'string' && value.materialName.trim() ? value.materialName.trim() : '';\n const materialNames = Array.isArray(value.materialNames)\n ? value.materialNames.filter((item): item is string => typeof item === 'string' && !!item.trim()).map(item => item.trim())\n : undefined;\n const triangleCount = Number.isFinite(value.triangleCount) ? value.triangleCount as number : undefined;\n const boundingBox = readProjectionMaterialSlotBoundingBox(value.boundingBox);\n return {\n slotId,\n ownerNodePath,\n ...(label ? { label } : {}),\n ...(nodeIndex != null ? { nodeIndex } : {}),\n ...(nodeIndexPath && nodeIndexPath.length > 0 ? { nodeIndexPath } : {}),\n ...(meshIndex != null ? { meshIndex } : {}),\n ...(primitiveIndex != null ? { primitiveIndex } : {}),\n ...(sourceMaterialIndex != null ? { sourceMaterialIndex } : {}),\n ...(sourceMaterialIndices && sourceMaterialIndices.length > 0\n ? { sourceMaterialIndices }\n : {}),\n ...(materialName ? { materialName } : {}),\n ...(materialNames && materialNames.length > 0 ? { materialNames } : {}),\n ...(triangleCount != null ? { triangleCount } : {}),\n ...(boundingBox ? { boundingBox } : {}),\n key: slotId || ownerNodePath,\n normalizedOwnerNodePath: ownerNodePath,\n matchKey: createMaterialSlotOwnerPathMatchKey(ownerNodePath, { projectionNodeId }),\n };\n}\n\nfunction readProjectionMaterialSlotBoundingBox(value: unknown): ProjectionMaterialSlotBoundingBox | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n const record = value as Record<string, unknown>;\n const min = readProjectionMaterialSlotBoundsTuple(record.min);\n const max = readProjectionMaterialSlotBoundsTuple(record.max);\n if (!min && !max) return undefined;\n return {\n ...(min ? { min } : {}),\n ...(max ? { max } : {}),\n };\n}\n\nfunction readProjectionMaterialSlotBoundsTuple(value: unknown): [number, number, number] | undefined {\n if (!Array.isArray(value) || value.length < 3) return undefined;\n const tuple = value.slice(0, 3).map(item => Number(item));\n if (!tuple.every(item => Number.isFinite(item))) return undefined;\n return tuple as [number, number, number];\n}\n\nfunction resolveProjectionSlotBindingMatches(\n slotBindings: readonly ProjectionMaterialSlotBinding[],\n ownerNodePath: string | null,\n projectionNodeId?: string,\n): ProjectionMaterialSlotBindingMatch[] {\n if (ownerNodePath == null) return [];\n const normalized = normalizeProjectionOwnerNodePath(ownerNodePath, { projectionNodeId });\n const normalizedMatchKey = createMaterialSlotOwnerPathMatchKey(normalized, { projectionNodeId });\n const exactMatches: ProjectionMaterialSlotBindingMatch[] = [];\n const descendantMatches: ProjectionMaterialSlotBindingMatch[] = [];\n let descendantMatchLength = -1;\n for (const binding of slotBindings) {\n if (binding.slot.matchKey === normalizedMatchKey) {\n exactMatches.push({ binding, matchKind: 'exact' });\n continue;\n }\n if (isMaterialSlotOwnerPathMatch(normalized, binding.slot.normalizedOwnerNodePath, { projectionNodeId })) {\n if (binding.slot.matchKey.length > descendantMatchLength) {\n descendantMatches.length = 0;\n descendantMatchLength = binding.slot.matchKey.length;\n }\n if (binding.slot.matchKey.length === descendantMatchLength) {\n descendantMatches.push({ binding, matchKind: 'descendant' });\n }\n }\n }\n return exactMatches.length > 0 ? exactMatches : descendantMatches;\n}\n\nfunction buildProjectionOwnerNodePath(node: any, rootNode: any, projectionNodeId?: string): string | null {\n if (!node || !rootNode || node === rootNode) return '';\n const segments: string[] = [];\n let current = node;\n while (current && current !== rootNode) {\n const segment = stableProjectionNodeSegment(current);\n if (!segment) return null;\n segments.push(segment);\n current = current.parent ?? null;\n }\n if (current !== rootNode) return null;\n return normalizeProjectionOwnerNodePath(segments.reverse().join('/'), { projectionNodeId });\n}\n\nfunction stableProjectionNodeSegment(node: any): string | null {\n const sourceSegment = readProjectionSourceNodeSegment(node);\n if (sourceSegment) return sourceSegment;\n const candidates = [node?.name, node?.id];\n for (const candidate of candidates) {\n if (typeof candidate !== 'string') continue;\n const trimmed = candidate.trim();\n if (trimmed) return trimmed;\n }\n return null;\n}\n\nfunction createAssetMeshProjectionNodeId(rootNodeId: string, ownerNodePath: string): string {\n return `${rootNodeId}${ASSET_MESH_SELECTION_SEPARATOR}${encodeURIComponent(ownerNodePath)}`;\n}\n\nfunction resolveProjectionAssetMeshSelectionKey(\n asset: BabylonEditorProjectionAsset,\n ownerNodePath: string,\n projectionNodeId?: string,\n): string {\n const normalizedOwnerPath = normalizeProjectionOwnerNodePath(ownerNodePath, { projectionNodeId });\n let bestSlot: ProjectionMaterialSlotDescriptor | null = null;\n for (const slot of readProjectionAssetMaterialSlots(asset, projectionNodeId)) {\n if (!isMaterialSlotOwnerPathMatch(normalizedOwnerPath, slot.normalizedOwnerNodePath, { projectionNodeId })) continue;\n if (!bestSlot || slot.matchKey.length > bestSlot.matchKey.length) {\n bestSlot = slot;\n }\n }\n return bestSlot?.key ?? ownerNodePath;\n}\n\nfunction resolveProjectionAssetMeshSelectionSlots(\n materialSlots: readonly ProjectionMaterialSlotDescriptor[],\n ownerNodePath: string,\n projectionNodeId?: string,\n): ProjectionMaterialSlotDescriptor[] {\n const normalizedOwnerPath = normalizeProjectionOwnerNodePath(ownerNodePath, { projectionNodeId });\n const normalizedMatchKey = createMaterialSlotOwnerPathMatchKey(normalizedOwnerPath, { projectionNodeId });\n const exactMatches: ProjectionMaterialSlotDescriptor[] = [];\n const descendantMatches: ProjectionMaterialSlotDescriptor[] = [];\n let descendantMatchLength = -1;\n for (const slot of materialSlots) {\n if (slot.matchKey === normalizedMatchKey) {\n exactMatches.push(slot);\n continue;\n }\n if (isMaterialSlotOwnerPathMatch(normalizedOwnerPath, slot.normalizedOwnerNodePath, { projectionNodeId })) {\n if (slot.matchKey.length > descendantMatchLength) {\n descendantMatches.length = 0;\n descendantMatchLength = slot.matchKey.length;\n }\n if (slot.matchKey.length === descendantMatchLength) descendantMatches.push(slot);\n }\n }\n return exactMatches.length > 0 ? exactMatches : descendantMatches;\n}\n\nfunction createProjectionAssetMeshSelectionProxies(\n options: BabylonEditorProjectionOptions,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n mesh: any,\n ownerNodePath: string,\n materialSlots: readonly ProjectionMaterialSlotDescriptor[],\n): any[] {\n const primitiveSlots = resolveProjectionAssetMeshSelectionSlots(materialSlots, ownerNodePath, node.id)\n .filter(slot => Number.isInteger(slot.primitiveIndex));\n if (primitiveSlots.length <= 1) return [];\n const subMeshes = Array.isArray(mesh?.subMeshes) ? mesh.subMeshes : [];\n if (subMeshes.length <= 1) return [];\n\n const proxies: any[] = [];\n const createdNodeIds = new Set<string>();\n for (const slot of primitiveSlots) {\n const primitiveIndex = slot.primitiveIndex;\n if (primitiveIndex == null || primitiveIndex < 0) continue;\n const subMesh = subMeshes[primitiveIndex];\n if (!subMesh) continue;\n const selectionNodeId = createAssetMeshProjectionNodeId(node.id, slot.key);\n if (createdNodeIds.has(selectionNodeId)) continue;\n const proxy = createProjectionSubMeshSelectionProxy(options, node, mesh, subMesh, {\n selectionNodeId,\n ownerNodePath,\n slotSelectionKey: slot.key,\n primitiveIndex,\n });\n if (!proxy) continue;\n createdNodeIds.add(selectionNodeId);\n proxies.push(proxy);\n projection.selectionMeshes = projection.selectionMeshes ?? [];\n projection.selectionMeshes.push(proxy);\n if (proxy.material) projection.runtimeObjects.push(proxy.material);\n }\n return proxies;\n}\n\nfunction resolveProjectionSplitPrimitiveMeshSelectionSlot(\n mesh: any,\n materialSlots: readonly ProjectionMaterialSlotDescriptor[],\n ownerNodePath: string,\n projectionNodeId: string,\n ownerMeshCount: number,\n ordinalByOwnerKey: Map<string, number>,\n): ProjectionMaterialSlotDescriptor | null {\n const subMeshes = Array.isArray(mesh?.subMeshes) ? mesh.subMeshes : [];\n if (subMeshes.length > 1) return null;\n if ((mesh?.getTotalVertices?.() ?? 0) <= 0) return null;\n const primitiveSlots = resolveProjectionAssetMeshSelectionSlots(materialSlots, ownerNodePath, projectionNodeId)\n .filter((slot): slot is ProjectionMaterialSlotDescriptor & { primitiveIndex: number } => (\n Number.isInteger(slot.primitiveIndex)\n ))\n .sort((left, right) => left.primitiveIndex - right.primitiveIndex);\n if (primitiveSlots.length <= 1) return null;\n if (ownerMeshCount < primitiveSlots.length) return null;\n\n const ownerKey = createMaterialSlotOwnerPathMatchKey(ownerNodePath, { projectionNodeId });\n const ordinal = ordinalByOwnerKey.get(ownerKey) ?? 0;\n ordinalByOwnerKey.set(ownerKey, ordinal + 1);\n\n const namedSlot = primitiveSlots.find(slot => isProjectionRuntimeSplitPrimitiveOwnerNode(mesh, slot));\n if (namedSlot) return namedSlot;\n return primitiveSlots.find(slot => slot.primitiveIndex === ordinal) ?? primitiveSlots[ordinal] ?? null;\n}\n\nfunction createProjectionPrimitiveBoundsSelectionProxies(\n options: BabylonEditorProjectionOptions,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n mesh: any,\n ownerNodePath: string,\n materialSlots: readonly ProjectionMaterialSlotDescriptor[],\n ownerMeshCount: number,\n): any[] {\n const subMeshes = Array.isArray(mesh?.subMeshes) ? mesh.subMeshes : [];\n if (subMeshes.length > 1) return [];\n const primitiveSlots = resolveProjectionAssetMeshSelectionSlots(materialSlots, ownerNodePath, node.id)\n .filter(slot => Number.isInteger(slot.primitiveIndex) && !!slot.boundingBox)\n .sort((left, right) => (left.primitiveIndex ?? 0) - (right.primitiveIndex ?? 0));\n if (primitiveSlots.length <= 1) return [];\n if (ownerMeshCount >= primitiveSlots.length) return [];\n\n const proxies: any[] = [];\n const createdNodeIds = new Set<string>();\n for (const slot of primitiveSlots) {\n const primitiveIndex = slot.primitiveIndex;\n if (primitiveIndex == null || primitiveIndex < 0) continue;\n const selectionNodeId = createAssetMeshProjectionNodeId(node.id, slot.key);\n if (createdNodeIds.has(selectionNodeId)) continue;\n const proxy = createProjectionPrimitiveBoundsSelectionProxy(options, node, mesh, slot, {\n selectionNodeId,\n ownerNodePath,\n slotSelectionKey: slot.key,\n primitiveIndex,\n });\n if (!proxy) continue;\n createdNodeIds.add(selectionNodeId);\n proxies.push(proxy);\n projection.selectionMeshes = projection.selectionMeshes ?? [];\n projection.selectionMeshes.push(proxy);\n if (proxy.material) projection.runtimeObjects.push(proxy.material);\n }\n return proxies;\n}\n\nfunction createProjectionPrimitiveBoundsSelectionProxy(\n options: BabylonEditorProjectionOptions,\n node: BabylonEditorProjectionNode,\n sourceMesh: any,\n slot: ProjectionMaterialSlotDescriptor,\n metadata: {\n selectionNodeId: string;\n ownerNodePath: string;\n slotSelectionKey: string;\n primitiveIndex: number;\n },\n): any | null {\n const { babylon, scene } = options;\n const MeshBuilder = (babylon as any).MeshBuilder;\n const StandardMaterial = (babylon as any).StandardMaterial;\n if (!MeshBuilder?.CreateBox || !StandardMaterial) return null;\n const bounds = readProjectionPrimitiveSlotBounds(slot);\n if (!bounds) return null;\n\n const size = {\n x: Math.max(Math.abs(bounds.max.x - bounds.min.x), MIN_SELECTION_BOUNDS_PROXY_SIZE),\n y: Math.max(Math.abs(bounds.max.y - bounds.min.y), MIN_SELECTION_BOUNDS_PROXY_SIZE),\n z: Math.max(Math.abs(bounds.max.z - bounds.min.z), MIN_SELECTION_BOUNDS_PROXY_SIZE),\n };\n const center = {\n x: (bounds.min.x + bounds.max.x) / 2,\n y: (bounds.min.y + bounds.max.y) / 2,\n z: (bounds.min.z + bounds.max.z) / 2,\n };\n const proxy = MeshBuilder.CreateBox(\n `${sourceMesh.name ?? node.id}.selectionBoundsProxy.${sanitizeProjectionImportSnapshotId(metadata.slotSelectionKey)}`,\n {\n width: size.x,\n height: size.y,\n depth: size.z,\n },\n scene,\n );\n if (!proxy) return null;\n proxy.parent = sourceMesh;\n proxy.position.x = center.x;\n proxy.position.y = center.y;\n proxy.position.z = center.z;\n proxy.isPickable = false;\n proxy.metadata = {\n ...(proxy.metadata ?? {}),\n disablePlanarShadow: true,\n disableBlobShadow: true,\n disableStaticProjectedShadow: true,\n editorProjectionSelectionProxy: true,\n editorProjectionSelectionBoundsProxy: true,\n editorProjection: {\n nodeId: metadata.selectionNodeId,\n rootNodeId: node.id,\n sourceId: node.asset?.sourceId,\n ownerNodePath: metadata.ownerNodePath,\n slotSelectionKey: metadata.slotSelectionKey,\n primitiveIndex: metadata.primitiveIndex,\n runtimeKind: 'assetMeshSelectionProxy',\n ...createProjectionShadowMetadata(node),\n },\n };\n\n const material = new StandardMaterial(`${proxy.name}.material`, scene);\n material.alpha = 0;\n material.disableLighting = true;\n material.backFaceCulling = false;\n if ('disableColorWrite' in material) {\n material.disableColorWrite = true;\n }\n proxy.material = material;\n return proxy;\n}\n\nfunction readProjectionPrimitiveSlotBounds(\n slot: ProjectionMaterialSlotDescriptor,\n): Pick<BabylonEditorProjectionBounds, 'min' | 'max'> | null {\n const min = readProjectionMaterialSlotBoundsVec3(slot.boundingBox?.min);\n const max = readProjectionMaterialSlotBoundsVec3(slot.boundingBox?.max);\n if (!min || !max) return null;\n return { min, max };\n}\n\nfunction readProjectionMaterialSlotBoundsVec3(value: readonly number[] | undefined): EditorTransformVec3 | null {\n if (!Array.isArray(value) || value.length < 3) return null;\n const [x, y, z] = value.map(item => Number(item));\n if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z)) return null;\n return { x, y, z };\n}\n\nfunction isProjectionRuntimeSplitPrimitiveOwnerNode(\n ownerNode: any,\n slot: ProjectionMaterialSlotDescriptor,\n): boolean {\n if (slot.primitiveIndex == null) return false;\n const primitiveNames = new Set<string>();\n for (const baseName of [\n slot.ownerNodePath,\n readProjectionOwnerPathLastSegment(slot.ownerNodePath),\n stripProjectionPrimitiveLabelSuffix(readProjectionSlotLabel(slot)),\n readProjectionSlotLabel(slot),\n ]) {\n addProjectionRuntimeOwnerName(\n primitiveNames,\n appendProjectionPrimitiveOwnerSuffix(baseName, slot.primitiveIndex),\n );\n }\n return collectProjectionRuntimeNodeMatchNames(ownerNode).some(name => primitiveNames.has(name));\n}\n\nfunction collectProjectionRuntimeNodeMatchNames(node: any): string[] {\n const rawNames = [\n typeof node?.name === 'string' ? node.name : null,\n typeof node?.id === 'string' ? node.id : null,\n readProjectionRuntimeNodeDisplayName(node),\n readProjectionSourceNodeSegment(node),\n ];\n const names = new Set<string>();\n for (const rawName of rawNames) {\n addProjectionRuntimeOwnerName(names, rawName);\n for (const tailName of collectProjectionRuntimeOwnerTailNames(rawName)) {\n addProjectionRuntimeOwnerName(names, tailName);\n }\n }\n return [...names];\n}\n\nfunction readProjectionRuntimeNodeDisplayName(node: any): string | null {\n const name = typeof node?.name === 'string' ? node.name.trim() : '';\n const id = typeof node?.id === 'string' ? node.id.trim() : '';\n if (name && id && name !== id) return `${name} (${id})`;\n return name || id || null;\n}\n\nfunction collectProjectionRuntimeOwnerTailNames(value: string | null | undefined): string[] {\n const raw = typeof value === 'string' ? value.trim() : '';\n if (!raw) return [];\n const names = new Set<string>();\n const withoutClonePrefix = raw.replace(/^Clone of\\s+/i, '').trim();\n for (const candidate of [raw, withoutClonePrefix]) {\n const colonTail = candidate.includes(':') ? candidate.split(':').pop() : '';\n const dotTail = candidate.includes('.') ? candidate.split('.').pop() : '';\n if (colonTail) names.add(colonTail);\n if (dotTail) names.add(dotTail);\n }\n return [...names];\n}\n\nfunction readProjectionOwnerPathLastSegment(ownerNodePath: string): string | null {\n const segments = ownerNodePath.split('/').map(segment => segment.trim()).filter(Boolean);\n return segments.length > 0 ? segments[segments.length - 1] ?? null : null;\n}\n\nfunction stripProjectionPrimitiveLabelSuffix(value: string | null | undefined): string | null {\n if (typeof value !== 'string') return null;\n const stripped = value.replace(/\\s*\\/\\s*Primitive\\s+\\d+\\s*$/i, '').trim();\n return stripped || null;\n}\n\nfunction appendProjectionPrimitiveOwnerSuffix(value: string | null | undefined, primitiveIndex: number): string | null {\n if (typeof value !== 'string') return null;\n const baseName = stripProjectionPrimitiveLabelSuffix(value) ?? value.trim();\n return baseName ? `${baseName}_primitive${primitiveIndex}` : null;\n}\n\nfunction readProjectionSlotLabel(slot: ProjectionMaterialSlotDescriptor): string | null {\n const label = typeof slot.label === 'string' ? slot.label.trim() : '';\n if (label) return label;\n const materialName = typeof slot.materialName === 'string' ? slot.materialName.trim() : '';\n return materialName || null;\n}\n\nfunction addProjectionRuntimeOwnerName(names: Set<string>, value: string | null | undefined): void {\n const normalized = normalizeProjectionRuntimeOwnerName(value);\n if (normalized) names.add(normalized);\n}\n\nfunction normalizeProjectionRuntimeOwnerName(value: string | null | undefined): string | null {\n const trimmed = typeof value === 'string' ? value.trim() : '';\n if (!trimmed) return null;\n return createMaterialSlotOwnerPathMatchKey(trimmed);\n}\n\nfunction createProjectionSubMeshSelectionProxy(\n options: BabylonEditorProjectionOptions,\n node: BabylonEditorProjectionNode,\n sourceMesh: any,\n subMesh: any,\n metadata: {\n selectionNodeId: string;\n ownerNodePath: string;\n slotSelectionKey: string;\n primitiveIndex: number;\n },\n): any | null {\n const { babylon, scene } = options;\n const Mesh = (babylon as any).Mesh;\n const VertexData = (babylon as any).VertexData;\n const VertexBuffer = (babylon as any).VertexBuffer;\n const StandardMaterial = (babylon as any).StandardMaterial;\n if (!Mesh || !VertexData || !VertexBuffer || !StandardMaterial) return null;\n\n const positions = sourceMesh.getVerticesData?.(VertexBuffer.PositionKind, true, true);\n if (!positions || positions.length < 9) return null;\n const sourceIndices = sourceMesh.getIndices?.(true, true) ?? null;\n const subIndices = readProjectionSubMeshIndices(sourceIndices, subMesh);\n if (subIndices.length < 3) return null;\n\n const indexMap = new Map<number, number>();\n const proxyPositions: number[] = [];\n const proxyIndices: number[] = [];\n for (const sourceIndex of subIndices) {\n const vertexIndex = Number(sourceIndex);\n if (!Number.isInteger(vertexIndex) || vertexIndex < 0) continue;\n let mappedIndex = indexMap.get(vertexIndex);\n if (mappedIndex == null) {\n const positionIndex = vertexIndex * 3;\n if (positionIndex + 2 >= positions.length) continue;\n mappedIndex = indexMap.size;\n indexMap.set(vertexIndex, mappedIndex);\n proxyPositions.push(\n Number(positions[positionIndex] ?? 0),\n Number(positions[positionIndex + 1] ?? 0),\n Number(positions[positionIndex + 2] ?? 0),\n );\n }\n proxyIndices.push(mappedIndex);\n }\n if (proxyPositions.length < 9 || proxyIndices.length < 3) return null;\n\n const proxy = new Mesh(`${sourceMesh.name ?? node.id}.selectionProxy.${sanitizeProjectionImportSnapshotId(metadata.slotSelectionKey)}`, scene);\n proxy.parent = sourceMesh;\n proxy.isPickable = false;\n proxy.metadata = {\n ...(proxy.metadata ?? {}),\n disablePlanarShadow: true,\n disableBlobShadow: true,\n disableStaticProjectedShadow: true,\n editorProjectionSelectionProxy: true,\n editorProjection: {\n nodeId: metadata.selectionNodeId,\n rootNodeId: node.id,\n sourceId: node.asset?.sourceId,\n ownerNodePath: metadata.ownerNodePath,\n slotSelectionKey: metadata.slotSelectionKey,\n primitiveIndex: metadata.primitiveIndex,\n runtimeKind: 'assetMeshSelectionProxy',\n ...createProjectionShadowMetadata(node),\n },\n };\n\n const vertexData = new VertexData();\n vertexData.positions = proxyPositions;\n vertexData.indices = proxyIndices;\n vertexData.applyToMesh(proxy, false);\n\n const material = new StandardMaterial(`${proxy.name}.material`, scene);\n material.alpha = 0;\n material.disableLighting = true;\n material.backFaceCulling = false;\n if ('disableColorWrite' in material) {\n material.disableColorWrite = true;\n }\n proxy.material = material;\n return proxy;\n}\n\nfunction readProjectionSubMeshIndices(sourceIndices: ArrayLike<number> | null, subMesh: any): number[] {\n const indexStart = Number.isInteger(subMesh?.indexStart) ? subMesh.indexStart as number : 0;\n const indexCount = Number.isInteger(subMesh?.indexCount) ? subMesh.indexCount as number : 0;\n if (sourceIndices && indexCount > 0) {\n return Array.from(sourceIndices).slice(indexStart, indexStart + indexCount);\n }\n const verticesStart = Number.isInteger(subMesh?.verticesStart) ? subMesh.verticesStart as number : 0;\n const verticesCount = Number.isInteger(subMesh?.verticesCount) ? subMesh.verticesCount as number : 0;\n return Array.from({ length: Math.max(0, verticesCount) }, (_, index) => verticesStart + index);\n}\n\nfunction readProjectionAssetMaterialSlots(\n asset: BabylonEditorProjectionAsset,\n projectionNodeId?: string,\n): ProjectionMaterialSlotDescriptor[] {\n const rawSlots = asset.metadata?.materialSlots;\n if (!Array.isArray(rawSlots)) return [];\n const slots: ProjectionMaterialSlotDescriptor[] = [];\n for (const rawSlot of rawSlots) {\n const slot = readProjectionAssetMaterialSlot(rawSlot, projectionNodeId);\n if (slot) slots.push(slot);\n }\n return slots;\n}\n\nfunction readProjectionAssetMaterialSlot(value: unknown, projectionNodeId?: string): ProjectionMaterialSlotDescriptor | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const record = value as Record<string, unknown>;\n return createProjectionMaterialSlotDescriptor(record, projectionNodeId);\n}\n\nfunction countProjectionMeshMaterials(meshes: any[]): Map<unknown, number> {\n const counts = new Map<unknown, number>();\n for (const mesh of meshes) {\n const material = readProjectionWritableMeshMaterial(mesh);\n if (!material) continue;\n counts.set(material, (counts.get(material) ?? 0) + 1);\n }\n return counts;\n}\n\nfunction isProjectionSinglePrimitiveMaterialSlot(\n slot: ProjectionMaterialSlotDescriptor,\n materialSlots: readonly ProjectionMaterialSlotDescriptor[],\n): boolean {\n if (slot.primitiveIndex !== 0 || materialSlots.length === 0) return false;\n const matchingPrimitiveSlots = materialSlots.filter(candidate => (\n candidate.primitiveIndex != null\n && candidate.matchKey === slot.matchKey\n && isProjectionMaterialSlotSameMesh(candidate, slot)\n ));\n return matchingPrimitiveSlots.length === 1 && matchingPrimitiveSlots[0]?.primitiveIndex === 0;\n}\n\nfunction isProjectionMaterialSlotSameMesh(\n left: ProjectionMaterialSlotDescriptor,\n right: ProjectionMaterialSlotDescriptor,\n): boolean {\n if (left.meshIndex != null || right.meshIndex != null) {\n return left.meshIndex === right.meshIndex;\n }\n return true;\n}\n\nfunction detachProjectionSlotMaterial(\n mesh: any,\n materialCounts: Map<unknown, number>,\n ownerNodePath: string | null,\n): ProjectionMaterialDetachResult | null {\n const materialOwner = resolveProjectionWritableMaterialOwner(mesh);\n const material = materialOwner?.material;\n if (!material) return null;\n const projectionOwnsMaterialLifecycle = materialOwner === mesh;\n if (typeof material !== 'object') {\n return { material, clonedMaterials: [], projectionOwnsMaterialLifecycle };\n }\n const materialUseCount = materialCounts.get(material) ?? 0;\n if (materialUseCount <= 1) return { material, clonedMaterials: [], projectionOwnsMaterialLifecycle };\n const clone = typeof (material as any).clone === 'function'\n ? (material as any).clone(createProjectionSlotMaterialName(material, ownerNodePath))\n : null;\n if (!clone) return null;\n cloneProjectionSubMaterials(clone, material, ownerNodePath);\n materialOwner.material = clone;\n materialCounts.set(material, materialUseCount - 1);\n materialCounts.set(clone, 1);\n return {\n material: clone,\n clonedMaterials: projectionOwnsMaterialLifecycle ? [clone] : [],\n projectionOwnsMaterialLifecycle,\n };\n}\n\nfunction resolveProjectionSlotMaterialTarget(\n mesh: any,\n materialCounts: Map<unknown, number>,\n slot: ProjectionMaterialSlotDescriptor,\n ownerNodePath: string | null,\n options: {\n projectionNodeId?: string;\n primitiveSingleMaterialFallbackAllowed: boolean;\n },\n): ProjectionMaterialSlotTargetResolution {\n const material = readProjectionWritableMeshMaterial(mesh);\n if (!material) {\n return {\n target: null,\n targetMaterialStatus: 'missingMaterial',\n warningMessage: 'Slot material profile was not applied because the matched mesh has no target material.',\n };\n }\n if (slot.primitiveIndex == null) {\n const detachResult = detachProjectionSlotMaterial(mesh, materialCounts, ownerNodePath);\n if (!detachResult) {\n return {\n target: null,\n targetMaterialStatus: 'missingTargetMaterial',\n warningMessage: 'Slot material profile was not applied because the mesh material could not be detached.',\n };\n }\n return {\n target: {\n material: detachResult.material,\n clonedMaterials: detachResult.clonedMaterials,\n },\n targetMaterialStatus: 'material',\n };\n }\n if (!Array.isArray((material as any).subMaterials)) {\n const isSplitPrimitiveOwner = isProjectionRuntimeSplitPrimitiveOwnerNode(mesh, slot);\n if (!isSplitPrimitiveOwner && (slot.primitiveIndex !== 0 || !options.primitiveSingleMaterialFallbackAllowed)) {\n return {\n target: null,\n targetMaterialStatus: 'missingSubMaterial',\n warningMessage: 'Primitive slot material profile was not applied because the target mesh does not expose a matching subMaterial.',\n };\n }\n const detachResult = detachProjectionSlotMaterial(mesh, materialCounts, ownerNodePath);\n if (!detachResult) {\n return {\n target: null,\n targetMaterialStatus: 'missingTargetMaterial',\n warningMessage: 'Primitive slot material profile was not applied because the fallback mesh material could not be detached.',\n };\n }\n return {\n target: {\n material: detachResult.material,\n clonedMaterials: detachResult.clonedMaterials,\n },\n targetMaterialStatus: 'primitiveFallbackMaterial',\n };\n }\n const detachResult = detachProjectionSlotMaterial(mesh, materialCounts, ownerNodePath);\n const slotMaterial = detachResult?.material;\n if (!detachResult || !Array.isArray((slotMaterial as any).subMaterials)) {\n return {\n target: null,\n targetMaterialStatus: 'missingTargetMaterial',\n warningMessage: 'Primitive slot material profile was not applied because the multi-material target could not be detached.',\n };\n }\n const subMaterials = (slotMaterial as any).subMaterials;\n const subMaterial = subMaterials[slot.primitiveIndex];\n if (!subMaterial || typeof subMaterial !== 'object' || typeof subMaterial.clone !== 'function') {\n return {\n target: null,\n targetMaterialStatus: 'missingSubMaterial',\n warningMessage: 'Primitive slot material profile was not applied because the target subMaterial is missing or cannot be cloned.',\n };\n }\n const clonedSubMaterial = subMaterial.clone(createProjectionSlotSubMaterialName(subMaterial, ownerNodePath, slot.primitiveIndex));\n if (!clonedSubMaterial) {\n return {\n target: null,\n targetMaterialStatus: 'missingSubMaterial',\n warningMessage: 'Primitive slot material profile was not applied because the target subMaterial clone failed.',\n };\n }\n subMaterials[slot.primitiveIndex] = clonedSubMaterial;\n return {\n target: {\n material: clonedSubMaterial,\n clonedMaterials: [\n ...detachResult.clonedMaterials,\n ...(detachResult.projectionOwnsMaterialLifecycle ? [clonedSubMaterial] : []),\n ],\n },\n targetMaterialStatus: 'subMaterial',\n };\n}\n\nfunction readProjectionWritableMeshMaterial(mesh: any): unknown | null {\n return resolveProjectionWritableMaterialOwner(mesh)?.material ?? null;\n}\n\nfunction resolveProjectionWritableMaterialOwner(mesh: any): any | null {\n if (!mesh || typeof mesh !== 'object') return null;\n if (isProjectionInstancedMesh(mesh) && mesh.sourceMesh) return mesh.sourceMesh;\n return mesh;\n}\n\nfunction isProjectionInstancedMesh(mesh: any): boolean {\n if (!mesh || typeof mesh !== 'object') return false;\n const className = typeof mesh.getClassName === 'function' ? mesh.getClassName() : undefined;\n return className === 'InstancedMesh'\n || (mesh.constructor?.name === 'InstancedMesh' && !!mesh.sourceMesh);\n}\n\nfunction cloneProjectionSubMaterials(clone: any, source: any, ownerNodePath: string | null): void {\n if (!Array.isArray(clone?.subMaterials) || !Array.isArray(source?.subMaterials)) return;\n clone.subMaterials = source.subMaterials.map((subMaterial: any, index: number) => {\n if (!subMaterial || typeof subMaterial !== 'object') return subMaterial;\n if (typeof subMaterial.clone !== 'function') return subMaterial;\n const clonedSubMaterial = subMaterial.clone(createProjectionSlotSubMaterialName(subMaterial, ownerNodePath, index));\n return clonedSubMaterial ?? subMaterial;\n });\n}\n\nfunction createProjectionSlotMaterialName(material: any, ownerNodePath: string | null): string {\n const baseName = String(material?.name ?? material?.id ?? 'material');\n const suffix = ownerNodePath?.trim()\n ? ownerNodePath.replace(/[^a-zA-Z0-9_-]+/g, '_')\n : 'root';\n return `${baseName}.projectionSlot.${suffix}`;\n}\n\nfunction createProjectionSlotSubMaterialName(material: any, ownerNodePath: string | null, index: number): string {\n return `${createProjectionSlotMaterialName(material, ownerNodePath)}.sub${index}`;\n}\n\nfunction createFallbackProjectionMesh(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n rendererFallback: boolean,\n): any | null {\n const MeshBuilder = (babylon as any).MeshBuilder;\n const StandardMaterial = (babylon as any).StandardMaterial;\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n if (!MeshBuilder || !StandardMaterial) return null;\n const mesh = MeshBuilder.CreateBox(`${node.id}.fallbackProjection`, {\n size: rendererFallback ? 1 : 0.24,\n }, scene);\n const material = new StandardMaterial(`${node.id}.projection.material`, scene);\n if (rendererFallback) {\n material.diffuseColor = new Color3(0.22, 0.55, 0.28);\n } else {\n material.diffuseColor = new Color3(0.5, 0.58, 0.68);\n material.alpha = 0.45;\n }\n material.specularColor = new Color3(0.08, 0.1, 0.12);\n mesh.material = material;\n applyProjectionRenderingToMesh(node, mesh);\n mesh.metadata = {\n ...(mesh.metadata ?? {}),\n editorProjection: {\n nodeId: node.id,\n fallback: true,\n ...createProjectionShadowMetadata(node),\n },\n };\n return mesh;\n}\n\nfunction applyProjectionRenderingToMesh(node: BabylonEditorProjectionNode, mesh: any): void {\n const rendering = node.rendering;\n if (!mesh || !rendering) return;\n if (isProjectionRenderingGroupId(rendering.renderingGroupId)) {\n mesh.renderingGroupId = rendering.renderingGroupId;\n }\n if (typeof rendering.alphaIndex === 'number' && Number.isFinite(rendering.alphaIndex)) {\n mesh.alphaIndex = rendering.alphaIndex;\n }\n}\n\nfunction isProjectionRenderingGroupId(value: unknown): value is 0 | 1 | 2 | 3 {\n return value === 0 || value === 1 || value === 2 || value === 3;\n}\n\nfunction createCameraFrustumLines(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n settings: BabylonEditorProjectionCameraSettings,\n): any | null {\n const MeshBuilder = (babylon as any).MeshBuilder;\n const Vector3 = requireBabylonCtor(babylon.Vector3, 'Vector3');\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n if (!MeshBuilder?.CreateLineSystem) return null;\n const distance = Math.max(0.4, settings.radius * 0.12);\n const aspect = 16 / 9;\n const nearDistance = 0.18;\n let lines: any[];\n\n if (settings.projection === 'perspective') {\n const halfHeight = Math.max(0.12, Math.tan((settings.fov ?? 0.85) / 2) * distance);\n const halfWidth = halfHeight * aspect;\n const origin = new Vector3(0, 0, nearDistance);\n const topLeft = new Vector3(-halfWidth, halfHeight, -distance);\n const topRight = new Vector3(halfWidth, halfHeight, -distance);\n const bottomRight = new Vector3(halfWidth, -halfHeight, -distance);\n const bottomLeft = new Vector3(-halfWidth, -halfHeight, -distance);\n lines = [\n [topLeft, topRight, bottomRight, bottomLeft, topLeft],\n [origin, topLeft],\n [origin, topRight],\n [origin, bottomRight],\n [origin, bottomLeft],\n ];\n } else {\n const halfHeight = Math.max(0.12, settings.orthoSize * 0.08);\n const halfWidth = halfHeight * aspect;\n const nearTopLeft = new Vector3(-halfWidth, halfHeight, nearDistance);\n const nearTopRight = new Vector3(halfWidth, halfHeight, nearDistance);\n const nearBottomRight = new Vector3(halfWidth, -halfHeight, nearDistance);\n const nearBottomLeft = new Vector3(-halfWidth, -halfHeight, nearDistance);\n const farTopLeft = new Vector3(-halfWidth, halfHeight, -distance);\n const farTopRight = new Vector3(halfWidth, halfHeight, -distance);\n const farBottomRight = new Vector3(halfWidth, -halfHeight, -distance);\n const farBottomLeft = new Vector3(-halfWidth, -halfHeight, -distance);\n lines = [\n [nearTopLeft, nearTopRight, nearBottomRight, nearBottomLeft, nearTopLeft],\n [farTopLeft, farTopRight, farBottomRight, farBottomLeft, farTopLeft],\n [nearTopLeft, farTopLeft],\n [nearTopRight, farTopRight],\n [nearBottomRight, farBottomRight],\n [nearBottomLeft, farBottomLeft],\n ];\n }\n\n const frustum = MeshBuilder.CreateLineSystem(`${node.id}.cameraFrustum`, {\n lines,\n }, scene);\n frustum.color = new Color3(0.45, 0.68, 1);\n frustum.metadata = createProjectionMetadata(node.id, {\n runtimeKind: 'camera',\n helper: 'frustum',\n projection: settings.projection,\n orthoSize: settings.orthoSize,\n fov: settings.fov,\n });\n return frustum;\n}\n\nfunction createLightDirectionLines(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n direction: BabylonEditorProjectionVec3,\n): any | null {\n const MeshBuilder = (babylon as any).MeshBuilder;\n const Vector3 = requireBabylonCtor(babylon.Vector3, 'Vector3');\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n if (!MeshBuilder?.CreateLineSystem) return null;\n const normalized = normalizeProjectionVec3(direction, { x: -0.3, y: -1, z: -0.2 });\n const shaftEnd = new Vector3(normalized.x, normalized.y, normalized.z);\n const arrowLeft = new Vector3(\n shaftEnd.x - normalized.x * 0.22 + normalized.z * 0.12,\n shaftEnd.y - normalized.y * 0.22,\n shaftEnd.z - normalized.z * 0.22 - normalized.x * 0.12,\n );\n const arrowRight = new Vector3(\n shaftEnd.x - normalized.x * 0.22 - normalized.z * 0.12,\n shaftEnd.y - normalized.y * 0.22,\n shaftEnd.z - normalized.z * 0.22 + normalized.x * 0.12,\n );\n const arrow = MeshBuilder.CreateLineSystem(`${node.id}.lightDirection`, {\n lines: [\n [new Vector3(0, 0, 0), shaftEnd],\n [shaftEnd, arrowLeft],\n [shaftEnd, arrowRight],\n ],\n }, scene);\n arrow.color = new Color3(1, 0.92, 0.42);\n arrow.metadata = createProjectionMetadata(node.id, {\n runtimeKind: 'light',\n helper: 'direction',\n });\n return arrow;\n}\n\nfunction attachHemisphericLightProjection(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): void {\n const MeshBuilder = (babylon as any).MeshBuilder;\n const StandardMaterial = (babylon as any).StandardMaterial;\n const HemisphericLight = (babylon as any).HemisphericLight;\n const Vector3 = requireBabylonCtor(babylon.Vector3, 'Vector3');\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n if (!MeshBuilder || !StandardMaterial) return;\n const settings = readProjectionHemisphericLightSettings(\n node.light?.type === 'hemispheric' ? node.light : undefined,\n );\n\n if (HemisphericLight) {\n const light = new HemisphericLight(`${node.id}.hemisphericLight`, new Vector3(0, 1, 0), scene);\n light.intensity = settings.intensity;\n light.diffuse = new Color3(\n settings.diffuseColor?.r ?? 1,\n settings.diffuseColor?.g ?? 1,\n settings.diffuseColor?.b ?? 1,\n );\n light.groundColor = new Color3(\n settings.groundColor?.r ?? 0.48,\n settings.groundColor?.g ?? 0.52,\n settings.groundColor?.b ?? 0.62,\n );\n light.metadata = createProjectionMetadata(node.id, { runtimeKind: 'light', lightType: 'hemispheric' });\n light.setEnabled?.(node.active !== false);\n projection.runtimeObjects.push(light);\n resyncProjectionSceneLightSources(scene);\n }\n\n if (!settings.helperVisible) return;\n\n const helper = MeshBuilder.CreateSphere?.(`${node.id}.hemisphericLightHelper`, {\n diameter: 0.32,\n segments: 18,\n }, scene) ?? MeshBuilder.CreateBox?.(`${node.id}.hemisphericLightHelper`, {\n size: 0.28,\n }, scene);\n if (!helper) return;\n helper.parent = projection.root;\n helper.metadata = createProjectionMetadata(node.id, {\n runtimeKind: 'light',\n lightType: 'hemispheric',\n helper: 'body',\n });\n const material = new StandardMaterial(`${node.id}.hemisphericLightHelper.material`, scene);\n material.diffuseColor = new Color3(0.72, 0.82, 1);\n material.emissiveColor = new Color3(0.16, 0.28, 0.48);\n material.specularColor = new Color3(0.08, 0.1, 0.12);\n helper.material = material;\n projection.runtimeObjects.push(material);\n projection.outlineMeshes = [helper];\n}\n\nfunction syncRuntimeLightProjection(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): boolean {\n if (node.light?.type === 'hemispheric') {\n return syncRuntimeHemisphericLightProjection(babylon, scene, node, projection);\n }\n return syncRuntimeDirectionalLightProjection(babylon, scene, node, projection);\n}\n\nfunction syncRuntimeDirectionalLightProjection(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): boolean {\n const settings = readProjectionDirectionalLightSettings(\n node.light?.type === 'directional' ? node.light : undefined,\n );\n const light = findProjectionRuntimeLight(projection, node.id, 'directional');\n if (!light) return false;\n const hasHelper = !!(scene as any).getMeshByName?.(`${node.id}.lightHelper`);\n if (settings.helperVisible !== hasHelper) return false;\n\n const Vector3 = requireBabylonCtor(babylon.Vector3, 'Vector3');\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n copyOrAssignBabylonVec3(light, 'direction', new Vector3(\n settings.direction.x,\n settings.direction.y,\n settings.direction.z,\n ));\n light.intensity = settings.intensity;\n copyOrAssignBabylonColor(light, 'diffuse', new Color3(\n settings.diffuseColor?.r ?? 1,\n settings.diffuseColor?.g ?? 1,\n settings.diffuseColor?.b ?? 1,\n ));\n light.setEnabled?.(node.active !== false);\n resyncProjectionSceneLightSources(scene);\n if (settings.helperVisible) refreshLightDirectionLines(babylon, scene, node, projection, settings.direction);\n return true;\n}\n\nfunction syncRuntimeHemisphericLightProjection(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n): boolean {\n const settings = readProjectionHemisphericLightSettings(\n node.light?.type === 'hemispheric' ? node.light : undefined,\n );\n const light = findProjectionRuntimeLight(projection, node.id, 'hemispheric');\n if (!light) return false;\n const hasHelper = !!(scene as any).getMeshByName?.(`${node.id}.hemisphericLightHelper`);\n if (settings.helperVisible !== hasHelper) return false;\n\n const Color3 = requireBabylonCtor(babylon.Color3, 'Color3');\n light.intensity = settings.intensity;\n copyOrAssignBabylonColor(light, 'diffuse', new Color3(\n settings.diffuseColor?.r ?? 1,\n settings.diffuseColor?.g ?? 1,\n settings.diffuseColor?.b ?? 1,\n ));\n copyOrAssignBabylonColor(light, 'groundColor', new Color3(\n settings.groundColor?.r ?? 0.48,\n settings.groundColor?.g ?? 0.52,\n settings.groundColor?.b ?? 0.62,\n ));\n light.setEnabled?.(node.active !== false);\n resyncProjectionSceneLightSources(scene);\n return true;\n}\n\nfunction findProjectionRuntimeLight(\n projection: ProjectedBabylonEditorNode,\n nodeId: string,\n lightType: 'directional' | 'hemispheric',\n): any | null {\n return projection.runtimeObjects.find(runtimeObject => {\n const metadata = runtimeObject?.metadata?.editorProjection;\n return metadata?.nodeId === nodeId\n && metadata?.runtimeKind === 'light'\n && metadata?.lightType === lightType;\n }) ?? null;\n}\n\nfunction isProjectionRuntimeLightObject(runtimeObject: any): boolean {\n const metadata = runtimeObject?.metadata?.editorProjection;\n return metadata?.runtimeKind === 'light'\n && (metadata?.lightType === 'directional' || metadata?.lightType === 'hemispheric');\n}\n\nfunction resyncProjectionSceneLightSources(scene: RuntimeScene): void {\n const meshes = Array.isArray((scene as any).meshes) ? (scene as any).meshes : [];\n const sourceMeshes = new Set<any>();\n const instancedMeshes = new Set<any>();\n for (const mesh of meshes) {\n if (!mesh || typeof mesh !== 'object') continue;\n mesh._resyncLightSources?.();\n const sourceMesh = mesh.sourceMesh;\n if (sourceMesh && sourceMesh !== mesh) {\n sourceMeshes.add(sourceMesh);\n instancedMeshes.add(mesh);\n }\n }\n for (const sourceMesh of sourceMeshes) {\n if (sourceMesh?.isDisposed?.()) continue;\n sourceMesh?._resyncLightSources?.();\n }\n for (const instancedMesh of instancedMeshes) {\n if (instancedMesh?.isDisposed?.()) continue;\n instancedMesh?._markSubMeshesAsLightDirty?.();\n }\n (scene as any).resetCachedMaterial?.();\n}\n\nfunction refreshLightDirectionLines(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n node: BabylonEditorProjectionNode,\n projection: ProjectedBabylonEditorNode,\n direction: BabylonEditorProjectionVec3,\n): void {\n const existing = (scene as any).getMeshByName?.(`${node.id}.lightDirection`);\n existing?.dispose?.();\n const arrow = createLightDirectionLines(babylon, scene, node, direction);\n if (!arrow) return;\n arrow.parent = projection.root;\n arrow.isPickable = false;\n}\n\nfunction copyOrAssignBabylonVec3(target: any, key: string, value: any): void {\n if (target?.[key]?.copyFrom) {\n target[key].copyFrom(value);\n return;\n }\n target[key] = value;\n}\n\nfunction copyOrAssignBabylonColor(target: any, key: string, value: any): void {\n if (target?.[key]?.copyFrom) {\n target[key].copyFrom(value);\n return;\n }\n target[key] = value;\n}\n\nexport function normalizeBabylonEditorProjectionCameraSettings(\n settings: BabylonEditorProjectionCameraSettings | undefined,\n): BabylonEditorProjectionCameraSettings {\n const targetOffset = readOptionalProjectionVec3(settings?.targetOffset);\n const targetScreenOffset = readOptionalProjectionVec2(settings?.targetScreenOffset);\n return {\n projection: readProjectionCameraMode(settings?.projection),\n alpha: readFiniteNumber(settings?.alpha, 3.9269908169872414),\n beta: readFiniteNumber(settings?.beta, 0.8),\n radius: Math.max(0.001, readFiniteNumber(settings?.radius, 14)),\n orthoSize: Math.max(0.001, readFiniteNumber(settings?.orthoSize, 6)),\n fov: Math.max(0.001, readFiniteNumber(settings?.fov, 0.85)),\n ...(targetOffset ? { targetOffset } : {}),\n minZ: Math.max(0.001, readFiniteNumber(settings?.minZ, 1)),\n maxZ: Math.max(0.001, readFiniteNumber(settings?.maxZ, 10000)),\n lowerBetaLimit: readFiniteNumber(settings?.lowerBetaLimit, settings?.beta ?? 0.8),\n upperBetaLimit: readFiniteNumber(settings?.upperBetaLimit, settings?.beta ?? 0.8),\n lowerRadiusLimit: Math.max(0.001, readFiniteNumber(settings?.lowerRadiusLimit, settings?.radius ?? 14)),\n upperRadiusLimit: Math.max(0.001, readFiniteNumber(settings?.upperRadiusLimit, settings?.radius ?? 14)),\n inertia: clampUnit(readFiniteNumber(settings?.inertia, 0.9)),\n ...(targetScreenOffset ? { targetScreenOffset } : {}),\n };\n}\n\nexport function applyBabylonEditorProjectionCameraRig(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n camera: RuntimeCamera,\n settings: BabylonEditorProjectionCameraSettings | undefined,\n options: BabylonEditorProjectionCameraRigApplyOptions = {},\n): BabylonEditorProjectionCameraSettings {\n const normalized = normalizeBabylonEditorProjectionCameraSettings(settings);\n const Vector3 = babylon.Vector3;\n const Vector2 = (babylon as any).Vector2;\n const targetInput = options.target ?? normalized.targetOffset ?? null;\n const target = targetInput && Vector3\n ? new Vector3(targetInput.x, targetInput.y, targetInput.z)\n : null;\n\n camera.minZ = normalized.minZ ?? 1;\n camera.maxZ = Math.max(camera.minZ + 0.001, normalized.maxZ ?? 10000);\n camera.inertia = normalized.inertia ?? camera.inertia;\n if (normalized.targetScreenOffset) {\n camera.targetScreenOffset = Vector2\n ? new Vector2(normalized.targetScreenOffset.x, normalized.targetScreenOffset.y)\n : { ...normalized.targetScreenOffset };\n }\n\n if (typeof camera.alpha === 'number') {\n clearBabylonArcRotateCameraOrbitLimits(camera);\n if (target) camera.target = target;\n camera.alpha = normalized.alpha;\n camera.beta = normalized.beta;\n camera.radius = normalized.radius;\n if (options.lockOrbit !== false) {\n camera.lowerAlphaLimit = normalized.alpha;\n camera.upperAlphaLimit = normalized.alpha;\n camera.lowerBetaLimit = normalized.lowerBetaLimit ?? normalized.beta;\n camera.upperBetaLimit = normalized.upperBetaLimit ?? normalized.beta;\n camera.lowerRadiusLimit = normalized.lowerRadiusLimit ?? normalized.radius;\n camera.upperRadiusLimit = normalized.upperRadiusLimit ?? normalized.radius;\n }\n } else if (target) {\n camera.setTarget?.(target);\n }\n\n if (normalized.projection === 'perspective') {\n camera.mode = babylon.Camera?.PERSPECTIVE_CAMERA ?? camera.mode ?? 0;\n camera.fov = normalized.fov ?? 0.85;\n return normalized;\n }\n\n camera.mode = babylon.Camera?.ORTHOGRAPHIC_CAMERA ?? camera.mode ?? 1;\n const aspect = readProjectionSceneAspect(scene);\n const halfHeight = normalized.orthoSize;\n const halfWidth = halfHeight * aspect;\n camera.orthoLeft = -halfWidth;\n camera.orthoRight = halfWidth;\n camera.orthoTop = halfHeight;\n camera.orthoBottom = -halfHeight;\n return normalized;\n}\n\nfunction clearBabylonArcRotateCameraOrbitLimits(camera: RuntimeCamera): void {\n camera.lowerAlphaLimit = null;\n camera.upperAlphaLimit = null;\n camera.lowerBetaLimit = null;\n camera.upperBetaLimit = null;\n camera.lowerRadiusLimit = null;\n camera.upperRadiusLimit = null;\n}\n\nfunction readProjectionCameraMode(value: unknown): BabylonEditorProjectionCameraMode {\n return value === 'perspective' ? 'perspective' : 'orthographic';\n}\n\nfunction readProjectionSceneAspect(scene: RuntimeScene): number {\n const engine = scene.getEngine?.();\n const width = Number(engine?.getRenderWidth?.() ?? engine?.getRenderingCanvas?.()?.width ?? 1);\n const height = Number(engine?.getRenderHeight?.() ?? engine?.getRenderingCanvas?.()?.height ?? 1);\n if (!Number.isFinite(width) || !Number.isFinite(height) || height <= 0) return 16 / 9;\n return Math.max(0.01, width / height);\n}\n\nfunction readOptionalProjectionVec2(value: unknown): BabylonEditorProjectionVec2 | null {\n if (!value || typeof value !== 'object') return null;\n const candidate = value as Partial<BabylonEditorProjectionVec2>;\n if (!Number.isFinite(candidate.x) || !Number.isFinite(candidate.y)) return null;\n return {\n x: Number(candidate.x),\n y: Number(candidate.y),\n };\n}\n\nfunction readOptionalProjectionVec3(value: unknown): BabylonEditorProjectionVec3 | null {\n if (!value || typeof value !== 'object') return null;\n const candidate = value as Partial<BabylonEditorProjectionVec3>;\n if (!Number.isFinite(candidate.x) || !Number.isFinite(candidate.y) || !Number.isFinite(candidate.z)) return null;\n return {\n x: Number(candidate.x),\n y: Number(candidate.y),\n z: Number(candidate.z),\n };\n}\n\nfunction clampUnit(value: number): number {\n if (!Number.isFinite(value)) return 0;\n return Math.min(1, Math.max(0, value));\n}\n\nfunction readProjectionDirectionalLightSettings(\n settings: BabylonEditorProjectionDirectionalLightSettings | undefined,\n): BabylonEditorProjectionDirectionalLightSettings {\n return {\n type: 'directional',\n intensity: Math.max(0, readFiniteNumber(settings?.intensity, 2)),\n direction: readVector3(settings?.direction, { x: -0.3, y: -1, z: -0.2 }),\n diffuseColor: readProjectionColor(settings?.diffuseColor, { r: 1, g: 1, b: 1 }),\n helperVisible: settings?.helperVisible !== false,\n };\n}\n\nfunction readProjectionHemisphericLightSettings(\n settings: BabylonEditorProjectionHemisphericLightSettings | undefined,\n): BabylonEditorProjectionHemisphericLightSettings {\n return {\n type: 'hemispheric',\n intensity: Math.max(0, readFiniteNumber(settings?.intensity, 0.8)),\n diffuseColor: readProjectionColor(settings?.diffuseColor, { r: 1, g: 1, b: 1 }),\n groundColor: readProjectionColor(settings?.groundColor, { r: 0.48, g: 0.52, b: 0.62 }),\n helperVisible: settings?.helperVisible !== false,\n };\n}\n\nfunction readProjectionColor(\n value: BabylonEditorProjectionColorRGB | undefined,\n fallback: BabylonEditorProjectionColorRGB,\n): BabylonEditorProjectionColorRGB {\n return {\n r: readFiniteNumber(value?.r, fallback.r),\n g: readFiniteNumber(value?.g, fallback.g),\n b: readFiniteNumber(value?.b, fallback.b),\n };\n}\n\nfunction readFiniteNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\n\nfunction normalizeProjectionVec3(\n value: BabylonEditorProjectionVec3,\n fallback: BabylonEditorProjectionVec3,\n): BabylonEditorProjectionVec3 {\n const length = Math.hypot(value.x, value.y, value.z);\n if (!Number.isFinite(length) || length <= 0.000001) return normalizeProjectionVec3(fallback, { x: 0, y: -1, z: 0 });\n return {\n x: value.x / length,\n y: value.y / length,\n z: value.z / length,\n };\n}\n\nfunction createProjectionMetadata(\n nodeId: string,\n extra: Record<string, unknown> = {},\n): Record<string, unknown> {\n const disableGeneratedShadow = extra.runtimeKind === 'camera'\n || extra.runtimeKind === 'light'\n || extra.helper != null;\n return {\n ...(disableGeneratedShadow ? {\n disablePlanarShadow: true,\n disableBlobShadow: true,\n disableStaticProjectedShadow: true,\n } : {}),\n editorProjection: {\n nodeId,\n ...extra,\n },\n };\n}\n\nfunction createProjectionShadowMetadata(node: BabylonEditorProjectionNode): Record<string, unknown> {\n return {\n ...(node.shadow ? { shadow: structuredClone(node.shadow) } : {}),\n ...(node.shadowPlan ? { shadowPlan: structuredClone(node.shadowPlan) } : {}),\n };\n}\n\nfunction syncProjectionNodeMetadata(\n projection: ProjectedBabylonEditorNode,\n node: BabylonEditorProjectionNode,\n): void {\n walkProjectionRuntimeNodes(projection.root, (runtimeNode) => {\n syncProjectionRuntimeNodeMetadata(runtimeNode, node);\n });\n}\n\nfunction walkProjectionRuntimeNodes(node: any, visit: (node: any) => void): void {\n if (!node) return;\n visit(node);\n const children = typeof node.getChildren === 'function' ? node.getChildren() : [];\n if (!Array.isArray(children)) return;\n for (const child of children) {\n walkProjectionRuntimeNodes(child, visit);\n }\n}\n\nfunction syncProjectionRuntimeNodeMetadata(\n runtimeNode: any,\n node: BabylonEditorProjectionNode,\n): void {\n const metadata = readProjectionObject(runtimeNode.metadata);\n const editorProjection = readProjectionObject(metadata?.editorProjection);\n if (!editorProjection) return;\n if (editorProjection.nodeId !== node.id && editorProjection.rootNodeId !== node.id) return;\n const nextEditorProjection = { ...editorProjection };\n if (node.shadow) nextEditorProjection.shadow = structuredClone(node.shadow);\n else delete nextEditorProjection.shadow;\n if (node.shadowPlan) nextEditorProjection.shadowPlan = structuredClone(node.shadowPlan);\n else delete nextEditorProjection.shadowPlan;\n runtimeNode.metadata = {\n ...(metadata ?? {}),\n editorProjection: nextEditorProjection,\n };\n}\n\nfunction readProjectionObject(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? value as Record<string, unknown>\n : null;\n}\n\nexport function applyProjectionTransform(\n babylon: BabylonRuntimeGlobal,\n node: any,\n transform: BabylonEditorProjectionTransform,\n): void {\n const Vector3 = requireBabylonCtor(babylon.Vector3, 'Vector3');\n if (isEditorTransformMatrixSnapshot(transform)) {\n const Matrix = requireBabylonCtor(babylon.Matrix, 'Matrix');\n if (typeof Matrix.FromArray !== 'function' || typeof node?.setPreTransformMatrix !== 'function') {\n throw new Error('Babylon runtime missing matrix transform support.');\n }\n node.position = new Vector3(0, 0, 0);\n node.rotationQuaternion = null;\n node.rotation = new Vector3(0, 0, 0);\n node.scaling = new Vector3(1, 1, 1);\n node.setPreTransformMatrix(Matrix.FromArray(transform.matrix));\n writeProjectionLocalMatrixTransform(node, transform.matrix);\n return;\n }\n clearProjectionLocalMatrixTransform(babylon, node);\n node.position = new Vector3(transform.position.x, transform.position.y, transform.position.z);\n node.rotationQuaternion = null;\n node.rotation = new Vector3(transform.rotation.x, transform.rotation.y, transform.rotation.z);\n const scale = transform.scale ?? { x: 1, y: 1, z: 1 };\n node.scaling = new Vector3(scale.x, scale.y, scale.z);\n}\n\nfunction applyProjectionWorldTransform(\n babylon: BabylonRuntimeGlobal,\n node: any,\n transform: EditorTransformSnapshot,\n): boolean {\n const parent = node?.parent ?? null;\n const local = parent\n ? toEditorLocalTransformFromWorld(readProjectionWorldTransform(parent), transform, { allowMatrixFallback: true })\n : transform;\n if (!local) return false;\n applyProjectionTransform(babylon, node, local);\n return true;\n}\n\nfunction writeProjectionLocalMatrixTransform(node: any, matrix: EditorTransformMatrix): void {\n node.metadata = {\n ...(readProjectionObject(node?.metadata) ?? {}),\n [PROJECTION_LOCAL_MATRIX_METADATA_KEY]: cloneEditorTransformMatrix(matrix),\n };\n}\n\nfunction clearProjectionLocalMatrixTransform(babylon: BabylonRuntimeGlobal, node: any): void {\n if (typeof node?.setPreTransformMatrix === 'function') {\n const Matrix = babylon.Matrix;\n if (typeof Matrix?.FromArray === 'function') {\n node.setPreTransformMatrix(Matrix.FromArray(createIdentityEditorTransformMatrix()));\n }\n }\n const metadata = readProjectionObject(node?.metadata);\n if (!metadata || !(PROJECTION_LOCAL_MATRIX_METADATA_KEY in metadata)) return;\n const nextMetadata = { ...metadata };\n delete nextMetadata[PROJECTION_LOCAL_MATRIX_METADATA_KEY];\n node.metadata = nextMetadata;\n}\n\nfunction applyAssetDefaultsTransform(\n babylon: BabylonRuntimeGlobal,\n node: any,\n transform: BabylonEditorProjectionAssetTransform | undefined,\n): void {\n if (!transform) return;\n const Vector3 = requireBabylonCtor(babylon.Vector3, 'Vector3');\n node.position = new Vector3(\n transform.position?.x ?? 0,\n transform.position?.y ?? 0,\n transform.position?.z ?? 0,\n );\n if (transform.rotationDeg) {\n node.rotation = new Vector3(\n (transform.rotationDeg.x * Math.PI) / 180,\n (transform.rotationDeg.y * Math.PI) / 180,\n (transform.rotationDeg.z * Math.PI) / 180,\n );\n } else {\n node.rotation = new Vector3(\n transform.rotation?.x ?? 0,\n transform.rotation?.y ?? 0,\n transform.rotation?.z ?? 0,\n );\n }\n if (typeof transform.scale === 'number') {\n node.scaling = new Vector3(transform.scale, transform.scale, transform.scale);\n } else {\n node.scaling = new Vector3(\n transform.scale?.x ?? 1,\n transform.scale?.y ?? 1,\n transform.scale?.z ?? 1,\n );\n }\n}\n\nfunction getProjectionNodeIdsInScreenRect(\n babylon: BabylonRuntimeGlobal,\n scene: RuntimeScene,\n projections: Map<string, ProjectedBabylonEditorNode>,\n rect: BabylonEditorProjectionScreenRect,\n): string[] {\n const canvas = scene.getEngine?.().getRenderingCanvas?.() as HTMLCanvasElement | null | undefined;\n const camera = scene.activeCamera ?? (scene as any).cameraToUseForPointers ?? null;\n const Vector3 = babylon.Vector3 as any;\n const Matrix = (babylon as any).Matrix;\n if (!canvas || !camera || !Vector3?.Project || !Matrix?.Identity) return [];\n const canvasRect = canvas.getBoundingClientRect();\n const viewport = camera.viewport?.toGlobal?.(\n scene.getEngine?.().getRenderWidth?.() ?? canvas.width,\n scene.getEngine?.().getRenderHeight?.() ?? canvas.height,\n );\n const transformMatrix = scene.getTransformMatrix?.();\n const worldMatrix = Matrix.Identity();\n if (!viewport || !transformMatrix || !worldMatrix) return [];\n const selectedIds: string[] = [];\n for (const [nodeId, projection] of projections) {\n const bounds = projection.root?.getHierarchyBoundingVectors?.();\n if (!bounds?.min || !bounds?.max) continue;\n const corners = createBoundsCorners(Vector3, bounds.min, bounds.max);\n const projected = corners\n .map((corner: any) => Vector3.Project(corner, worldMatrix, transformMatrix, viewport))\n .map((point: any) => ({\n x: canvasRect.left + point.x,\n y: canvasRect.top + point.y,\n }));\n if (projected.length === 0) continue;\n const minX = Math.min(...projected.map(point => point.x));\n const maxX = Math.max(...projected.map(point => point.x));\n const minY = Math.min(...projected.map(point => point.y));\n const maxY = Math.max(...projected.map(point => point.y));\n if (rectsIntersect(rect, { left: minX, top: minY, right: maxX, bottom: maxY })) {\n selectedIds.push(nodeId);\n }\n }\n return selectedIds;\n}\n\nfunction createBoundsCorners(Vector3: any, min: any, max: any): any[] {\n return [\n new Vector3(min.x, min.y, min.z),\n new Vector3(min.x, min.y, max.z),\n new Vector3(min.x, max.y, min.z),\n new Vector3(min.x, max.y, max.z),\n new Vector3(max.x, min.y, min.z),\n new Vector3(max.x, min.y, max.z),\n new Vector3(max.x, max.y, min.z),\n new Vector3(max.x, max.y, max.z),\n ];\n}\n\nfunction rectsIntersect(\n left: BabylonEditorProjectionScreenRect,\n right: BabylonEditorProjectionScreenRect,\n): boolean {\n return left.left <= right.right\n && left.right >= right.left\n && left.top <= right.bottom\n && left.bottom >= right.top;\n}\n\nfunction syncProjectionSelection(\n babylon: BabylonRuntimeGlobal,\n projections: Map<string, ProjectedBabylonEditorNode>,\n selection: EditorSelectionState,\n): void {\n const Color4 = babylon.Color4;\n const selectedIds = new Set(\n selection.selectedIds.length > LARGE_SELECTION_EDGE_LIMIT\n ? [selection.activeId].filter((id): id is string => !!id)\n : selection.selectedIds,\n );\n for (const [nodeId, projection] of projections) {\n const rootSelected = selectedIds.has(nodeId);\n const rootActive = selection.activeId === nodeId;\n const proxyNodeIds = new Set(\n (projection.selectionMeshes ?? [])\n .map(readProjectionMeshSelectionNodeId)\n .filter((id): id is string => !!id),\n );\n let projectionSelected = false;\n for (const mesh of projection.outlineMeshes) {\n const meshNodeId = readProjectionMeshSelectionNodeId(mesh) ?? nodeId;\n const selected = rootSelected || (!proxyNodeIds.has(meshNodeId) && selectedIds.has(meshNodeId));\n const active = rootActive || selection.activeId === meshNodeId;\n if (selected) projectionSelected = true;\n syncProjectionMeshSelection(mesh, selected, active, Color4);\n }\n for (const mesh of projection.selectionMeshes ?? []) {\n const meshNodeId = readProjectionMeshSelectionNodeId(mesh) ?? nodeId;\n const selected = selectedIds.has(meshNodeId);\n const active = selection.activeId === meshNodeId;\n if (selected) projectionSelected = true;\n syncProjectionMeshSelection(mesh, selected, active, Color4);\n }\n if (projectionSelected) {\n projection.selectionEdgesPrewarmCancel?.();\n projection.selectionEdgesPrewarmCancel = null;\n }\n }\n}\n\nfunction syncProjectionMeshSelection(\n mesh: any,\n selected: boolean,\n active: boolean,\n Color4?: new (r: number, g: number, b: number, a: number) => any,\n): void {\n mesh.metadata = {\n ...(mesh.metadata ?? {}),\n editorProjectionSelectionEdgesSelected: selected,\n };\n if (!selected) {\n mesh.disableEdgesRendering?.();\n return;\n }\n mesh.enableEdgesRendering?.(0.997);\n mesh.edgesWidth = active ? 5 : 3.5;\n if (Color4) {\n mesh.edgesColor = active\n ? new Color4(1, 0.9, 0.22, 1)\n : new Color4(0.35, 0.65, 1, 1);\n }\n}\n\nfunction prewarmProjectionSelectionEdges(projection: ProjectedBabylonEditorNode): void {\n for (const mesh of [...projection.outlineMeshes, ...(projection.selectionMeshes ?? [])]) {\n if (mesh?.metadata?.editorProjectionSelectionEdgesPrewarmed) continue;\n if (mesh?.metadata?.editorProjectionSelectionEdgesSelected) continue;\n try {\n mesh.enableEdgesRendering?.(0.997);\n mesh.disableEdgesRendering?.();\n mesh.metadata = {\n ...(mesh.metadata ?? {}),\n editorProjectionSelectionEdgesPrewarmed: true,\n };\n } catch {}\n }\n}\n\nfunction scheduleIdleProjectionSelectionEdgesPrewarm(projection: ProjectedBabylonEditorNode): () => void {\n let canceled = false;\n const run = (): void => {\n if (canceled || projection.root?.isDisposed?.()) return;\n projection.selectionEdgesPrewarmCancel = null;\n prewarmProjectionSelectionEdges(projection);\n };\n const scheduleTarget = globalThis as typeof globalThis & {\n requestIdleCallback?: (callback: () => void) => number;\n cancelIdleCallback?: (handle: number) => void;\n };\n if (typeof scheduleTarget.requestIdleCallback === 'function') {\n const handle = scheduleTarget.requestIdleCallback(run);\n return () => {\n canceled = true;\n scheduleTarget.cancelIdleCallback?.(handle);\n };\n }\n const handle = setTimeout(run, 0);\n return () => {\n canceled = true;\n clearTimeout(handle);\n };\n}\n"]}