@fps-games/editor 0.2.0-beta.1 → 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 (653) 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 +50 -3
  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.d.ts.map +1 -1
  57. package/dist/playable-standard-project.js +8 -3
  58. package/dist/playable-standard-project.js.map +1 -1
  59. package/dist/static-shadow-cpu-worker.js.map +1 -1
  60. package/dist/vite.js.map +1 -1
  61. package/node_modules/@fps-games/babylon-renderer/dist/environment/environment-texture-controller.js.map +1 -1
  62. package/node_modules/@fps-games/babylon-renderer/dist/environment/index.js.map +1 -1
  63. package/node_modules/@fps-games/babylon-renderer/dist/environment/profile.js.map +1 -1
  64. package/node_modules/@fps-games/babylon-renderer/dist/environment/types.js.map +1 -1
  65. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  66. package/node_modules/@fps-games/babylon-renderer/dist/lighting/directional-light-angles.js.map +1 -1
  67. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/apply.js.map +1 -1
  68. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/index.js.map +1 -1
  69. package/node_modules/@fps-games/babylon-renderer/dist/outlines/babylon-default/types.js.map +1 -1
  70. package/node_modules/@fps-games/babylon-renderer/dist/outlines/index.js.map +1 -1
  71. package/node_modules/@fps-games/babylon-renderer/dist/outlines/types.js.map +1 -1
  72. package/node_modules/@fps-games/babylon-renderer/dist/placement/index.js.map +1 -1
  73. package/node_modules/@fps-games/babylon-renderer/dist/placement/runtime-drop-position.js.map +1 -1
  74. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  75. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  76. package/node_modules/@fps-games/babylon-renderer/dist/post-process/index.js.map +1 -1
  77. package/node_modules/@fps-games/babylon-renderer/dist/post-process/profile.js.map +1 -1
  78. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  79. package/node_modules/@fps-games/babylon-renderer/dist/post-process/volume-stack.js.map +1 -1
  80. package/node_modules/@fps-games/babylon-renderer/dist/reference.js.map +1 -1
  81. package/node_modules/@fps-games/babylon-renderer/dist/rendering/index.js.map +1 -1
  82. package/node_modules/@fps-games/babylon-renderer/dist/rendering/node-rendering.js.map +1 -1
  83. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js.map +1 -1
  84. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -1
  85. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  86. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-shaders.js.map +1 -1
  87. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js.map +1 -1
  88. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js.map +1 -1
  89. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-atlas.js.map +1 -1
  90. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-bake.js.map +1 -1
  91. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js.map +1 -1
  92. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-options.js.map +1 -1
  93. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-rendering.js.map +1 -1
  94. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
  95. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  96. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  97. package/node_modules/@fps-games/editor-babylon/dist/edit-session.js.map +1 -1
  98. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js.map +1 -1
  99. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -1
  100. package/node_modules/@fps-games/editor-babylon/dist/event-guard.js.map +1 -1
  101. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  102. package/node_modules/@fps-games/editor-babylon/dist/infinite-grid-layer.js.map +1 -1
  103. package/node_modules/@fps-games/editor-babylon/dist/infinite-grid.js.map +1 -1
  104. package/node_modules/@fps-games/editor-babylon/dist/input-controller.js.map +1 -1
  105. package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.js.map +1 -1
  106. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js.map +1 -1
  107. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  108. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
  109. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
  110. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  111. package/node_modules/@fps-games/editor-babylon/dist/monitor.js.map +1 -1
  112. package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.js.map +1 -1
  113. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.js.map +1 -1
  114. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +1 -1
  115. package/node_modules/@fps-games/editor-babylon/dist/primitive-projection-instancing.js.map +1 -1
  116. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  117. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js.map +1 -1
  118. package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.js.map +1 -1
  119. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js.map +1 -1
  120. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  121. package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.js.map +1 -1
  122. package/node_modules/@fps-games/editor-babylon/dist/scene-camera-preview.js.map +1 -1
  123. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  124. package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.js.map +1 -1
  125. package/node_modules/@fps-games/editor-babylon/dist/scene-view-measurement-controller.js.map +1 -1
  126. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
  127. package/node_modules/@fps-games/editor-babylon/dist/selection-controller.js.map +1 -1
  128. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  129. package/node_modules/@fps-games/editor-babylon/dist/tool-controller.js.map +1 -1
  130. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  131. package/node_modules/@fps-games/editor-babylon/dist/transform-solver.js.map +1 -1
  132. package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
  133. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  134. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  135. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-clipboard.js.map +1 -1
  136. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  137. package/node_modules/@fps-games/editor-browser/dist/local-editor-rendering-actions.js.map +1 -1
  138. package/node_modules/@fps-games/editor-browser/dist/local-editor-root-ownership.js.map +1 -1
  139. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  140. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  141. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  142. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
  143. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +1 -1
  144. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-auto-scroll.js.map +1 -1
  145. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +1 -1
  146. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  147. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  148. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +1 -1
  149. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -1
  150. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  151. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  152. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  153. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  154. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -1
  155. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  156. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-plugin-panel.js.map +1 -1
  157. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  158. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  159. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  160. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  161. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-auto-scroll.js.map +1 -1
  162. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  163. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-preview.js.map +1 -1
  164. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-session.js.map +1 -1
  165. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  166. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  167. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  168. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  169. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  170. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  171. package/node_modules/@fps-games/editor-browser/dist/runtime-camera-debug-panel.js.map +1 -1
  172. package/node_modules/@fps-games/editor-browser/dist/runtime-debug-panel-shell.js.map +1 -1
  173. package/node_modules/@fps-games/editor-browser/dist/runtime-lighting-debug-panel.js.map +1 -1
  174. package/node_modules/@fps-games/editor-browser/package.json +4 -4
  175. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +1 -1
  176. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +1 -1
  177. package/node_modules/@fps-games/editor-core/dist/authoring-source.js.map +1 -1
  178. package/node_modules/@fps-games/editor-core/dist/document-adapter.js.map +1 -1
  179. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  180. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +17 -2
  181. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  182. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +6 -1
  183. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  184. package/node_modules/@fps-games/editor-core/dist/editor-session.js +9 -0
  185. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  186. package/node_modules/@fps-games/editor-core/dist/events.d.ts +1 -1
  187. package/node_modules/@fps-games/editor-core/dist/events.d.ts.map +1 -1
  188. package/node_modules/@fps-games/editor-core/dist/events.js.map +1 -1
  189. package/node_modules/@fps-games/editor-core/dist/field-schema/index.js.map +1 -1
  190. package/node_modules/@fps-games/editor-core/dist/field-schema/resolver.js.map +1 -1
  191. package/node_modules/@fps-games/editor-core/dist/field-schema/schema.js.map +1 -1
  192. package/node_modules/@fps-games/editor-core/dist/field-schema/types.js.map +1 -1
  193. package/node_modules/@fps-games/editor-core/dist/field-schema/validators.js.map +1 -1
  194. package/node_modules/@fps-games/editor-core/dist/host-services.js.map +1 -1
  195. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  196. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  197. package/node_modules/@fps-games/editor-core/dist/lifecycle.js.map +1 -1
  198. package/node_modules/@fps-games/editor-core/dist/marker-graph.js.map +1 -1
  199. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  200. package/node_modules/@fps-games/editor-core/dist/scene-view-input.js.map +1 -1
  201. package/node_modules/@fps-games/editor-core/dist/selection-strategy.js.map +1 -1
  202. package/node_modules/@fps-games/editor-core/dist/serialized-object.js.map +1 -1
  203. package/node_modules/@fps-games/editor-core/dist/transform-command.js.map +1 -1
  204. package/node_modules/@fps-games/editor-core/dist/transform-gizmo.js.map +1 -1
  205. package/node_modules/@fps-games/editor-core/dist/transform-operation-policy.js.map +1 -1
  206. package/node_modules/@fps-games/editor-core/dist/transform-operations.js.map +1 -1
  207. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  208. package/node_modules/@fps-games/editor-core/package.json +6 -6
  209. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +1 -1
  210. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
  211. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  212. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/drop-cache.js.map +1 -1
  213. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/index.js.map +1 -1
  214. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.d.ts.map +1 -1
  215. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.js +28 -5
  216. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/payload.js.map +1 -1
  217. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.d.ts +1 -0
  218. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.d.ts.map +1 -1
  219. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-bridge/types.js.map +1 -1
  220. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/config.js.map +1 -1
  221. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.d.ts.map +1 -1
  222. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js +10 -0
  223. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js.map +1 -1
  224. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js.map +1 -1
  225. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/managed-facade.js.map +1 -1
  226. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.d.ts +8 -0
  227. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.d.ts.map +1 -1
  228. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.js +24 -2
  229. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/manager-core.js.map +1 -1
  230. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.d.ts.map +1 -1
  231. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +6 -2
  232. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  233. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  234. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +1 -0
  235. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  236. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +83 -23
  237. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  238. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/types.js.map +1 -1
  239. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts +1 -0
  240. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts.map +1 -1
  241. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +8 -0
  242. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  243. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts +22 -0
  244. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  245. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +108 -1
  246. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  247. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts +3 -2
  248. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts.map +1 -1
  249. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js +2 -2
  250. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
  251. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts +2 -0
  252. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts.map +1 -1
  253. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.js.map +1 -1
  254. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts.map +1 -1
  255. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js +2 -0
  256. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
  257. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/identity.js.map +1 -1
  258. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js.map +1 -1
  259. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/managed-runtime-instance.js.map +1 -1
  260. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js.map +1 -1
  261. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/runtime-scene.js.map +1 -1
  262. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/types.js.map +1 -1
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/index.js.map +1 -1
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.d.ts.map +1 -1
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.js +3 -0
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/result.js.map +1 -1
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/transport.js.map +1 -1
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.d.ts +1 -0
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.d.ts.map +1 -1
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/types.js.map +1 -1
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.d.ts +1 -0
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.d.ts.map +1 -1
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.js +7 -1
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-registration/workflow.js.map +1 -1
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/constants.js.map +1 -1
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/drift.js.map +1 -1
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/index.js.map +1 -1
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/runtime-transform-patch.js.map +1 -1
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring/source.js.map +1 -1
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/client.js.map +1 -1
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/index.js.map +1 -1
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-client/types.js.map +1 -1
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/index.js.map +1 -1
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/payload.js.map +1 -1
  286. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/response.js.map +1 -1
  287. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
  288. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
  289. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/adapter-dispatcher.js.map +1 -1
  290. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/index.js.map +1 -1
  291. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/payload.js.map +1 -1
  292. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/project-asset-adapter.js.map +1 -1
  293. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.js.map +1 -1
  294. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/readers.js.map +1 -1
  295. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/types.js.map +1 -1
  296. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/binding.js.map +1 -1
  297. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/fields.js.map +1 -1
  298. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/index.js.map +1 -1
  299. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/math.js.map +1 -1
  300. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/pan.js.map +1 -1
  301. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-format.js.map +1 -1
  302. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-state.js.map +1 -1
  303. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-storage.js.map +1 -1
  304. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/panel-text.js.map +1 -1
  305. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/rig.js.map +1 -1
  306. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/save-patch.js.map +1 -1
  307. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/snapshot.js.map +1 -1
  308. package/node_modules/@fps-games/editor-playable-sdk/dist/camera-debug/types.js.map +1 -1
  309. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/index.js.map +1 -1
  310. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/transform.js.map +1 -1
  311. package/node_modules/@fps-games/editor-playable-sdk/dist/commands/types.js.map +1 -1
  312. package/node_modules/@fps-games/editor-playable-sdk/dist/core-contracts/index.js.map +1 -1
  313. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  314. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  315. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +4 -0
  316. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  317. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  318. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
  319. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/resolver.js.map +1 -1
  320. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
  321. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/types.js.map +1 -1
  322. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
  323. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +1 -0
  324. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  325. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +1 -0
  326. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  327. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/camera-section.js.map +1 -1
  328. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-property.js.map +1 -1
  329. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  330. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/format.js.map +1 -1
  331. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js.map +1 -1
  332. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/light-fields.js.map +1 -1
  333. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/light-sections.js.map +1 -1
  334. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/marker-section.js.map +1 -1
  335. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/object-assembly.js.map +1 -1
  336. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/readonly.js.map +1 -1
  337. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime-sections.js.map +1 -1
  338. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime-summary.js.map +1 -1
  339. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/runtime.js.map +1 -1
  340. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/safe-value.js.map +1 -1
  341. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/types.js.map +1 -1
  342. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/validation.js.map +1 -1
  343. package/node_modules/@fps-games/editor-playable-sdk/dist/internal/local-harness.js.map +1 -1
  344. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/binding.js.map +1 -1
  345. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/fields.js.map +1 -1
  346. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/index.js.map +1 -1
  347. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/math.js.map +1 -1
  348. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/save-patch.js.map +1 -1
  349. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/snapshot.js.map +1 -1
  350. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/storage.js.map +1 -1
  351. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/text.js.map +1 -1
  352. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-debug/types.js.map +1 -1
  353. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/index.js.map +1 -1
  354. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/math.js.map +1 -1
  355. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/profile.js.map +1 -1
  356. package/node_modules/@fps-games/editor-playable-sdk/dist/lighting-preview/types.js.map +1 -1
  357. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +1 -1
  358. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  359. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
  360. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  361. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +5 -0
  362. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  363. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  364. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -2
  365. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  366. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  367. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  368. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +4 -1
  369. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  370. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/loading-overlay.d.ts.map +1 -1
  371. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/loading-overlay.js +54 -2
  372. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/loading-overlay.js.map +1 -1
  373. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +18 -0
  374. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  375. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +60 -1
  376. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  377. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/timing.js.map +1 -1
  378. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +2 -0
  379. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  380. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  381. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/facade.js.map +1 -1
  382. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/game-objects.js.map +1 -1
  383. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/geometry.js.map +1 -1
  384. package/node_modules/@fps-games/editor-playable-sdk/dist/marker-scene/index.js.map +1 -1
  385. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
  386. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  387. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/default-assets.js.map +1 -1
  388. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.d.ts.map +1 -1
  389. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.js +28 -2
  390. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/document-assets.js.map +1 -1
  391. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/duplicate.js.map +1 -1
  392. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/index.js.map +1 -1
  393. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
  394. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/paths.js.map +1 -1
  395. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/preview.js.map +1 -1
  396. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/profile.js.map +1 -1
  397. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.d.ts.map +1 -1
  398. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.js +26 -9
  399. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/reimport.js.map +1 -1
  400. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/resolver.js.map +1 -1
  401. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
  402. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
  403. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +0 -3
  404. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
  405. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/text.js.map +1 -1
  406. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts +8 -1
  407. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts.map +1 -1
  408. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.js.map +1 -1
  409. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  410. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/index.js.map +1 -1
  411. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/json-field.js.map +1 -1
  412. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  413. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/rendering-alpha-index.js.map +1 -1
  414. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/transform.js.map +1 -1
  415. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/types.js.map +1 -1
  416. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
  417. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  418. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -1
  419. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  420. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/index.js.map +1 -1
  421. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.d.ts +2 -0
  422. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.d.ts.map +1 -1
  423. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/types.js.map +1 -1
  424. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  425. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  426. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  427. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
  428. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  429. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/shadow-inspector.js.map +1 -1
  430. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/source-structure-inspector.js.map +1 -1
  431. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  432. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/structure.js.map +1 -1
  433. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/types.js.map +1 -1
  434. package/node_modules/@fps-games/editor-playable-sdk/dist/product/asset-manager.js.map +1 -1
  435. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal-scene-feature.js.map +1 -1
  436. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
  437. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  438. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +1 -0
  439. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  440. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +3 -1
  441. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  442. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
  443. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +3 -3
  444. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  445. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +10 -1
  446. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  447. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-asset-actions.js.map +1 -1
  448. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  449. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/draft.js.map +1 -1
  450. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/index.js.map +1 -1
  451. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  452. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/route.js.map +1 -1
  453. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  454. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js.map +1 -1
  455. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/import-plan.js.map +1 -1
  456. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/index.js.map +1 -1
  457. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  458. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  459. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +1 -1
  460. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +82 -6
  461. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  462. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  463. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +11 -3
  464. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -1
  465. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  466. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts +1 -0
  467. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts.map +1 -1
  468. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js +46 -3
  469. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  470. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/artifacts.js.map +1 -1
  471. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  472. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +4 -0
  473. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  474. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/companion-configs.js.map +1 -1
  475. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  476. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/index.js.map +1 -1
  477. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  478. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +3 -2
  479. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  480. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  481. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/validation.js.map +1 -1
  482. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
  483. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/index.js.map +1 -1
  484. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  485. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
  486. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/patch.js.map +1 -1
  487. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/types.js.map +1 -1
  488. package/node_modules/@fps-games/editor-playable-sdk/dist/session/classification.js.map +1 -1
  489. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  490. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
  491. package/node_modules/@fps-games/editor-playable-sdk/dist/session/identity.js.map +1 -1
  492. package/node_modules/@fps-games/editor-playable-sdk/dist/session/index.js.map +1 -1
  493. package/node_modules/@fps-games/editor-playable-sdk/dist/session/object-command-facade.js.map +1 -1
  494. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  495. package/node_modules/@fps-games/editor-playable-sdk/dist/session/property-patches.js.map +1 -1
  496. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  497. package/node_modules/@fps-games/editor-playable-sdk/dist/session/system-defaults.js.map +1 -1
  498. package/node_modules/@fps-games/editor-playable-sdk/dist/session/transform.js.map +1 -1
  499. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  500. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/index.js.map +1 -1
  501. package/node_modules/@fps-games/editor-playable-sdk/dist/shadow-system/resolver.js.map +1 -1
  502. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/http.js.map +1 -1
  503. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/json.d.ts +1 -0
  504. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/json.d.ts.map +1 -1
  505. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/json.js +25 -0
  506. package/node_modules/@fps-games/editor-playable-sdk/dist/shared/json.js.map +1 -1
  507. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js.map +1 -1
  508. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/index.js.map +1 -1
  509. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/host.js.map +1 -1
  510. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js.map +1 -1
  511. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  512. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/report.js.map +1 -1
  513. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.js.map +1 -1
  514. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/asset-authoring.js.map +1 -1
  515. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.d.ts +1 -0
  516. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.d.ts.map +1 -1
  517. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.js +1 -0
  518. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/authoring-http.js.map +1 -1
  519. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js.map +1 -1
  520. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js.map +1 -1
  521. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +6 -5
  522. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  523. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +37 -20
  524. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  525. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  526. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.d.ts +3 -1
  527. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.d.ts.map +1 -1
  528. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.js +37 -8
  529. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/module-invalidation.js.map +1 -1
  530. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/path-write-coordinator.js.map +1 -1
  531. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts +4 -3
  532. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  533. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +14 -1
  534. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  535. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +5 -4
  536. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  537. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  538. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +3 -2
  539. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  540. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +10 -17
  541. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  542. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +8 -7
  543. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  544. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +84 -6
  545. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  546. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.d.ts +2 -1
  547. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.d.ts.map +1 -1
  548. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-rendering-authoring.js.map +1 -1
  549. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +4 -3
  550. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  551. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +1 -4
  552. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  553. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +1 -1
  554. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +0 -33
  555. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  556. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  557. package/node_modules/@fps-games/editor-playable-sdk/package.json +9 -6
  558. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  559. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +1 -1
  560. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  561. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  562. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js.map +1 -1
  563. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  564. package/node_modules/@fps-games/editor-tooling/dist/contributions.js.map +1 -1
  565. package/node_modules/@fps-games/editor-tooling/dist/data-object.js.map +1 -1
  566. package/node_modules/@fps-games/editor-tooling/dist/index.js.map +1 -1
  567. package/node_modules/@fps-games/editor-tooling/dist/migration.js.map +1 -1
  568. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  569. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  570. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  571. package/node_modules/@fps-games/playable-assets/dist/identity.js.map +1 -1
  572. package/node_modules/@fps-games/playable-assets/dist/index.d.ts +1 -0
  573. package/node_modules/@fps-games/playable-assets/dist/index.d.ts.map +1 -1
  574. package/node_modules/@fps-games/playable-assets/dist/index.js +1 -0
  575. package/node_modules/@fps-games/playable-assets/dist/index.js.map +1 -1
  576. package/node_modules/@fps-games/playable-assets/dist/portable-path.d.ts +2 -0
  577. package/node_modules/@fps-games/playable-assets/dist/portable-path.d.ts.map +1 -0
  578. package/node_modules/@fps-games/playable-assets/dist/portable-path.js +25 -0
  579. package/node_modules/@fps-games/playable-assets/dist/portable-path.js.map +1 -0
  580. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  581. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  582. package/node_modules/@fps-games/playable-contracts/dist/marker-graph-validation.js.map +1 -1
  583. package/node_modules/@fps-games/playable-contracts/dist/marker-graph.js.map +1 -1
  584. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  585. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  586. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-authoring.js.map +1 -1
  587. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-types.js.map +1 -1
  588. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  589. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-values.js.map +1 -1
  590. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile.js.map +1 -1
  591. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  592. package/node_modules/@fps-games/playable-rendering/dist/shadow-quality.js.map +1 -1
  593. package/node_modules/@fps-games/playable-rendering/dist/shadow-runtime.js.map +1 -1
  594. package/node_modules/@fps-games/playable-rendering/dist/shadow-settings.js.map +1 -1
  595. package/node_modules/@fps-games/playable-rendering/dist/shadow-types.js.map +1 -1
  596. package/node_modules/@fps-games/playable-rendering/dist/shadow-validation.js.map +1 -1
  597. package/node_modules/@fps-games/playable-rendering/dist/value.js.map +1 -1
  598. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  599. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js +5 -1
  600. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  601. package/node_modules/@fps-games/playable-runtime/dist/index.js.map +1 -1
  602. package/node_modules/@fps-games/playable-runtime/dist/runtime-data.js.map +1 -1
  603. package/node_modules/@fps-games/playable-runtime/dist/runtime.js.map +1 -1
  604. package/node_modules/@fps-games/playable-runtime/dist/standard-plugins.js.map +1 -1
  605. package/node_modules/@fps-games/playable-runtime/dist/tokens.js.map +1 -1
  606. package/node_modules/@fps-games/playable-runtime/dist/types.js.map +1 -1
  607. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  608. package/node_modules/@fps-games/playable-runtime-data/dist/index.js.map +1 -1
  609. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  610. package/node_modules/@fps-games/playable-scene/dist/index.js.map +1 -1
  611. package/node_modules/@fps-games/playable-scene/dist/transform-math.js.map +1 -1
  612. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  613. package/node_modules/@fps-games/plugin-api/dist/index.js.map +1 -1
  614. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  615. package/node_modules/@fps-games/plugin-assets/dist/reference.js.map +1 -1
  616. package/node_modules/@fps-games/plugin-assets/dist/runtime.js.map +1 -1
  617. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  618. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  619. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  620. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  621. package/node_modules/@fps-games/plugin-host/dist/index.js.map +1 -1
  622. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  623. package/node_modules/@fps-games/plugin-markers/dist/reference.js.map +1 -1
  624. package/node_modules/@fps-games/plugin-markers/dist/runtime.js.map +1 -1
  625. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  626. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  627. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  628. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  629. package/node_modules/@fps-games/plugin-materials/dist/reference.js.map +1 -1
  630. package/node_modules/@fps-games/plugin-materials/dist/runtime.js.map +1 -1
  631. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  632. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  633. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  634. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  635. package/node_modules/@fps-games/plugin-rendering/dist/reference.js.map +1 -1
  636. package/node_modules/@fps-games/plugin-rendering/dist/runtime.js.map +1 -1
  637. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  638. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  639. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  640. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  641. package/node_modules/@fps-games/plugin-scene/dist/reference.js.map +1 -1
  642. package/node_modules/@fps-games/plugin-scene/dist/runtime.js.map +1 -1
  643. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  644. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  645. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  646. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  647. package/node_modules/@fps-games/plugin-shadows/dist/reference.js.map +1 -1
  648. package/node_modules/@fps-games/plugin-shadows/dist/runtime.js.map +1 -1
  649. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  650. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  651. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  652. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  653. package/package.json +27 -19
@@ -1,21 +1,119 @@
1
1
  export function enrichEditorSceneDocumentAssets(editorScene, assetLibrary) {
2
2
  const libraryByAssetId = new Map(assetLibrary
3
- .filter((asset) => asset.type === 'glb' || asset.type === 'prefab')
3
+ .filter((asset) => asset.type === 'glb')
4
4
  .map((asset) => [asset.assetId, asset]));
5
5
  return {
6
6
  ...editorScene,
7
7
  assets: editorScene.assets.map((asset) => {
8
+ if (asset.type !== 'glb')
9
+ return asset;
8
10
  const libraryItem = libraryByAssetId.get(asset.id);
9
11
  return libraryItem ? mergeEditorSceneAssetWithLibraryItem(asset, libraryItem) : asset;
10
12
  }),
11
13
  };
12
14
  }
15
+ export function dehydrateEditorSceneDocumentAssets(editorScene, assetLibrary) {
16
+ assertEditorSceneDocumentAssetCatalogCompleteness(editorScene, assetLibrary);
17
+ const libraryByAssetId = new Map(assetLibrary
18
+ .filter((asset) => asset.type === 'glb')
19
+ .map((asset) => [asset.assetId, asset]));
20
+ return {
21
+ ...editorScene,
22
+ assets: editorScene.assets.map((asset) => {
23
+ if (asset.type !== 'glb')
24
+ return structuredClone(asset);
25
+ const libraryItem = libraryByAssetId.get(asset.id);
26
+ if (!libraryItem)
27
+ throw new Error(`asset.catalog.missing: ${asset.id}`);
28
+ const guid = libraryItem.guid ?? asset.guid;
29
+ return {
30
+ id: asset.id,
31
+ ...(guid ? { guid } : {}),
32
+ type: 'glb',
33
+ };
34
+ }),
35
+ };
36
+ }
37
+ export function assertEditorSceneDocumentAssetCatalogCompleteness(editorScene, assetLibrary) {
38
+ const libraryByAssetId = new Map(assetLibrary
39
+ .filter((asset) => asset.type === 'glb')
40
+ .map((asset) => [asset.assetId, asset]));
41
+ for (const asset of editorScene.assets) {
42
+ if (asset.type !== 'glb')
43
+ continue;
44
+ const libraryItem = libraryByAssetId.get(asset.id);
45
+ if (!libraryItem)
46
+ throw new Error(`asset.catalog.missing: ${asset.id}`);
47
+ assertEditorSceneCatalogOwnsRuntimeAssetFields(asset, libraryItem);
48
+ assertEditorSceneCatalogOwnsRuntimeAssetMetadata(asset, libraryItem);
49
+ assertEditorSceneCatalogItemIntrinsicCompleteness(libraryItem);
50
+ }
51
+ }
52
+ function assertEditorSceneCatalogItemIntrinsicCompleteness(libraryItem) {
53
+ const metadata = readRecord(libraryItem.metadata);
54
+ const external = readRecord(libraryItem.external);
55
+ const url = readNonEmptyString(metadata?.url)
56
+ ?? readNonEmptyString(metadata?.relativePath)
57
+ ?? readNonEmptyString(external?.assetUrl);
58
+ if (!url)
59
+ throw new Error(`asset.catalog.incomplete: ${libraryItem.assetId}.url`);
60
+ const analysis = readRecord(metadata?.assetAnalysis);
61
+ const analysisUnavailable = metadata?.assetAnalysisStatus === 'unavailable';
62
+ if (!analysis && !analysisUnavailable) {
63
+ throw new Error(`asset.catalog.incomplete: ${libraryItem.assetId}.metadata.assetAnalysisStatus`);
64
+ }
65
+ const meshNames = new Map((Array.isArray(analysis?.meshes) ? analysis.meshes : []).flatMap((mesh) => {
66
+ const record = readRecord(mesh);
67
+ const rawMeshIndex = record?.meshIndex;
68
+ const meshIndex = Number.isInteger(rawMeshIndex) ? rawMeshIndex : undefined;
69
+ const name = readNonEmptyString(record?.name);
70
+ return meshIndex == null || !name ? [] : [[meshIndex, name]];
71
+ }));
72
+ const slots = Array.isArray(metadata?.materialSlots) ? metadata.materialSlots : [];
73
+ for (const [slotIndex, slot] of slots.entries()) {
74
+ const record = readRecord(slot);
75
+ if (!record)
76
+ throw new Error(`asset.catalog.incomplete: ${libraryItem.assetId}.metadata.materialSlots[${slotIndex}]`);
77
+ const meshIndex = Number.isInteger(record.meshIndex) ? record.meshIndex : undefined;
78
+ if (meshIndex != null && !readNonEmptyString(record.sourceMeshName) && !meshNames.has(meshIndex)) {
79
+ throw new Error(`asset.catalog.incomplete: ${libraryItem.assetId}.metadata.materialSlots[${slotIndex}].sourceMeshName`);
80
+ }
81
+ }
82
+ }
83
+ function assertEditorSceneCatalogOwnsRuntimeAssetMetadata(asset, libraryItem) {
84
+ const assetMetadata = readRecord(asset.metadata);
85
+ const catalogMetadata = readRecord(libraryItem.metadata);
86
+ const assetExternal = readRecord(asset.external);
87
+ const catalogExternal = readRecord(libraryItem.external);
88
+ const assetUrl = readNonEmptyString(assetMetadata?.url)
89
+ ?? readNonEmptyString(assetMetadata?.relativePath)
90
+ ?? readNonEmptyString(assetExternal?.assetUrl);
91
+ const catalogUrl = readNonEmptyString(catalogMetadata?.url)
92
+ ?? readNonEmptyString(catalogMetadata?.relativePath)
93
+ ?? readNonEmptyString(catalogExternal?.assetUrl);
94
+ if (assetUrl && !catalogUrl)
95
+ throw new Error(`asset.catalog.incomplete: ${asset.id}.url`);
96
+ for (const field of ['materialSlots', 'assetAnalysis']) {
97
+ if (assetMetadata?.[field] !== undefined && catalogMetadata?.[field] === undefined) {
98
+ throw new Error(`asset.catalog.incomplete: ${asset.id}.metadata.${field}`);
99
+ }
100
+ }
101
+ }
102
+ function assertEditorSceneCatalogOwnsRuntimeAssetFields(asset, libraryItem) {
103
+ for (const field of ['materialMode', 'defaults', 'external', 'warmupCount', 'singleton']) {
104
+ if (asset[field] !== undefined && libraryItem[field] === undefined) {
105
+ throw new Error(`asset.catalog.incomplete: ${asset.id}.${field}`);
106
+ }
107
+ }
108
+ }
13
109
  export function mergeEditorSceneAssetWithLibraryItem(asset, libraryItem) {
14
110
  return {
15
111
  ...asset,
16
112
  guid: libraryItem.guid ?? asset.guid,
17
113
  displayName: libraryItem.displayName || asset.displayName,
18
114
  category: libraryItem.category ?? asset.category,
115
+ warmupCount: libraryItem.warmupCount ?? asset.warmupCount,
116
+ singleton: libraryItem.singleton ?? asset.singleton,
19
117
  materialMode: libraryItem.materialMode ?? asset.materialMode,
20
118
  defaults: cloneOptional(libraryItem.defaults ?? asset.defaults),
21
119
  prefab: cloneOptional(libraryItem.prefab ?? asset.prefab),
@@ -26,4 +124,13 @@ export function mergeEditorSceneAssetWithLibraryItem(asset, libraryItem) {
26
124
  function cloneOptional(value) {
27
125
  return value == null ? undefined : structuredClone(value);
28
126
  }
127
+ function readRecord(value) {
128
+ return value && typeof value === 'object' && !Array.isArray(value)
129
+ ? value
130
+ : undefined;
131
+ }
132
+ function readNonEmptyString(value) {
133
+ const trimmed = typeof value === 'string' ? value.trim() : '';
134
+ return trimmed || undefined;
135
+ }
29
136
  //# sourceMappingURL=document.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/asset-library/document.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,+BAA+B,CAC7C,WAAsB,EACtB,YAAoD;IAEpD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,YAAY;SAC1C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;SAClE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO;QACL,GAAG,WAAW;QACd,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnD,OAAO,WAAW,CAAC,CAAC,CAAC,oCAAoC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACxF,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,KAAa,EACb,WAAwC;IAExC,OAAO;QACL,GAAG,KAAK;QACR,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;QACpC,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;QACzD,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;QAChD,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY;QAC5D,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;QAC/D,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QACzD,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;QAC/D,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;KACtD,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAI,KAAoB;IAC5C,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/asset-library/document.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n EditorSceneAsset,\n EditorSceneAssetLibraryItem,\n EditorSceneDocument,\n} from '../document/index';\n\nexport interface EditorScenePersistedModelAssetReference extends EditorSceneAsset {\n type: 'glb';\n displayName?: never;\n category?: never;\n warmupCount?: never;\n singleton?: never;\n materialMode?: never;\n defaults?: never;\n prefab?: never;\n external?: never;\n metadata?: never;\n}\n\ntype DehydratedEditorSceneAuthoredAsset<TAsset extends EditorSceneAsset> =\n TAsset extends unknown\n ? 'glb' extends TAsset['type']\n ? [Extract<TAsset['type'], 'prefab' | 'texture'>] extends [never]\n ? never\n : TAsset & { type: Extract<TAsset['type'], 'prefab' | 'texture'> }\n : TAsset\n : never;\n\nexport type DehydratedEditorSceneAsset<TAsset extends EditorSceneAsset> =\n | EditorScenePersistedModelAssetReference\n | DehydratedEditorSceneAuthoredAsset<TAsset>;\n\nexport type DehydratedEditorSceneDocument<TDocument extends EditorSceneDocument> =\n Omit<TDocument, 'assets'> & {\n assets: Array<DehydratedEditorSceneAsset<TDocument['assets'][number]>>;\n };\n\nexport function enrichEditorSceneDocumentAssets<TDocument extends EditorSceneDocument>(\n editorScene: TDocument,\n assetLibrary: readonly EditorSceneAssetLibraryItem[],\n): TDocument {\n const libraryByAssetId = new Map(assetLibrary\n .filter((asset) => asset.type === 'glb')\n .map((asset) => [asset.assetId, asset]));\n return {\n ...editorScene,\n assets: editorScene.assets.map((asset) => {\n if (asset.type !== 'glb') return asset;\n const libraryItem = libraryByAssetId.get(asset.id);\n return libraryItem ? mergeEditorSceneAssetWithLibraryItem(asset, libraryItem) : asset;\n }),\n };\n}\n\nexport function dehydrateEditorSceneDocumentAssets<TDocument extends EditorSceneDocument>(\n editorScene: TDocument,\n assetLibrary: readonly EditorSceneAssetLibraryItem[],\n): DehydratedEditorSceneDocument<TDocument> {\n assertEditorSceneDocumentAssetCatalogCompleteness(editorScene, assetLibrary);\n const libraryByAssetId = new Map(assetLibrary\n .filter((asset) => asset.type === 'glb')\n .map((asset) => [asset.assetId, asset]));\n return {\n ...editorScene,\n assets: editorScene.assets.map((asset) => {\n if (asset.type !== 'glb') return structuredClone(asset);\n const libraryItem = libraryByAssetId.get(asset.id);\n if (!libraryItem) throw new Error(`asset.catalog.missing: ${asset.id}`);\n const guid = libraryItem.guid ?? asset.guid;\n return {\n id: asset.id,\n ...(guid ? { guid } : {}),\n type: 'glb',\n };\n }),\n } as DehydratedEditorSceneDocument<TDocument>;\n}\n\nexport function assertEditorSceneDocumentAssetCatalogCompleteness(\n editorScene: EditorSceneDocument,\n assetLibrary: readonly EditorSceneAssetLibraryItem[],\n): void {\n const libraryByAssetId = new Map(assetLibrary\n .filter((asset) => asset.type === 'glb')\n .map((asset) => [asset.assetId, asset]));\n for (const asset of editorScene.assets) {\n if (asset.type !== 'glb') continue;\n const libraryItem = libraryByAssetId.get(asset.id);\n if (!libraryItem) throw new Error(`asset.catalog.missing: ${asset.id}`);\n assertEditorSceneCatalogOwnsRuntimeAssetFields(asset, libraryItem);\n assertEditorSceneCatalogOwnsRuntimeAssetMetadata(asset, libraryItem);\n assertEditorSceneCatalogItemIntrinsicCompleteness(libraryItem);\n }\n}\n\nfunction assertEditorSceneCatalogItemIntrinsicCompleteness(\n libraryItem: EditorSceneAssetLibraryItem,\n): void {\n const metadata = readRecord(libraryItem.metadata);\n const external = readRecord(libraryItem.external);\n const url = readNonEmptyString(metadata?.url)\n ?? readNonEmptyString(metadata?.relativePath)\n ?? readNonEmptyString(external?.assetUrl);\n if (!url) throw new Error(`asset.catalog.incomplete: ${libraryItem.assetId}.url`);\n const analysis = readRecord(metadata?.assetAnalysis);\n const analysisUnavailable = metadata?.assetAnalysisStatus === 'unavailable';\n if (!analysis && !analysisUnavailable) {\n throw new Error(`asset.catalog.incomplete: ${libraryItem.assetId}.metadata.assetAnalysisStatus`);\n }\n const meshNames = new Map((Array.isArray(analysis?.meshes) ? analysis.meshes : []).flatMap((mesh) => {\n const record = readRecord(mesh);\n const rawMeshIndex = record?.meshIndex;\n const meshIndex = Number.isInteger(rawMeshIndex) ? rawMeshIndex as number : undefined;\n const name = readNonEmptyString(record?.name);\n return meshIndex == null || !name ? [] : [[meshIndex, name] as const];\n }));\n const slots = Array.isArray(metadata?.materialSlots) ? metadata.materialSlots : [];\n for (const [slotIndex, slot] of slots.entries()) {\n const record = readRecord(slot);\n if (!record) throw new Error(`asset.catalog.incomplete: ${libraryItem.assetId}.metadata.materialSlots[${slotIndex}]`);\n const meshIndex = Number.isInteger(record.meshIndex) ? record.meshIndex as number : undefined;\n if (meshIndex != null && !readNonEmptyString(record.sourceMeshName) && !meshNames.has(meshIndex)) {\n throw new Error(`asset.catalog.incomplete: ${libraryItem.assetId}.metadata.materialSlots[${slotIndex}].sourceMeshName`);\n }\n }\n}\n\nfunction assertEditorSceneCatalogOwnsRuntimeAssetMetadata(\n asset: EditorSceneAsset,\n libraryItem: EditorSceneAssetLibraryItem,\n): void {\n const assetMetadata = readRecord(asset.metadata);\n const catalogMetadata = readRecord(libraryItem.metadata);\n const assetExternal = readRecord(asset.external);\n const catalogExternal = readRecord(libraryItem.external);\n const assetUrl = readNonEmptyString(assetMetadata?.url)\n ?? readNonEmptyString(assetMetadata?.relativePath)\n ?? readNonEmptyString(assetExternal?.assetUrl);\n const catalogUrl = readNonEmptyString(catalogMetadata?.url)\n ?? readNonEmptyString(catalogMetadata?.relativePath)\n ?? readNonEmptyString(catalogExternal?.assetUrl);\n if (assetUrl && !catalogUrl) throw new Error(`asset.catalog.incomplete: ${asset.id}.url`);\n for (const field of ['materialSlots', 'assetAnalysis'] as const) {\n if (assetMetadata?.[field] !== undefined && catalogMetadata?.[field] === undefined) {\n throw new Error(`asset.catalog.incomplete: ${asset.id}.metadata.${field}`);\n }\n }\n}\n\nfunction assertEditorSceneCatalogOwnsRuntimeAssetFields(\n asset: EditorSceneAsset,\n libraryItem: EditorSceneAssetLibraryItem,\n): void {\n for (const field of ['materialMode', 'defaults', 'external', 'warmupCount', 'singleton'] as const) {\n if (asset[field] !== undefined && libraryItem[field] === undefined) {\n throw new Error(`asset.catalog.incomplete: ${asset.id}.${field}`);\n }\n }\n}\n\nexport function mergeEditorSceneAssetWithLibraryItem<TAsset extends EditorSceneAsset>(\n asset: TAsset,\n libraryItem: EditorSceneAssetLibraryItem,\n): TAsset {\n return {\n ...asset,\n guid: libraryItem.guid ?? asset.guid,\n displayName: libraryItem.displayName || asset.displayName,\n category: libraryItem.category ?? asset.category,\n warmupCount: libraryItem.warmupCount ?? asset.warmupCount,\n singleton: libraryItem.singleton ?? asset.singleton,\n materialMode: libraryItem.materialMode ?? asset.materialMode,\n defaults: cloneOptional(libraryItem.defaults ?? asset.defaults),\n prefab: cloneOptional(libraryItem.prefab ?? asset.prefab),\n external: cloneOptional(libraryItem.external ?? asset.external),\n metadata: cloneOptional(libraryItem.metadata ?? asset.metadata),\n } as TAsset;\n}\n\nfunction cloneOptional<T>(value: T | undefined): T | undefined {\n return value == null ? undefined : structuredClone(value);\n}\n\nfunction readRecord(value: unknown): Record<string, unknown> | undefined {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? value as Record<string, unknown>\n : undefined;\n}\n\nfunction readNonEmptyString(value: unknown): string | undefined {\n const trimmed = typeof value === 'string' ? value.trim() : '';\n return trimmed || undefined;\n}\n"]}
@@ -1,4 +1,5 @@
1
+ export type { DehydratedEditorSceneAsset, DehydratedEditorSceneDocument, EditorScenePersistedModelAssetReference, } from './document';
1
2
  export type { EditorSceneAssetCatalogEntry, EditorSceneAssetCatalogKind, } from './types';
2
- export { compareEditorSceneAssetLibraryItems, createEditorSceneAssetLibrary, createEditorSceneAssetLibraryItem, } from './catalog';
3
- export { enrichEditorSceneDocumentAssets, mergeEditorSceneAssetWithLibraryItem, } from './document';
3
+ export { compareEditorSceneAssetLibraryItems, createEditorSceneAssetLibrary, createEditorSceneAssetHydrationCatalog, createEditorSceneAssetLibraryItem, } from './catalog';
4
+ export { assertEditorSceneDocumentAssetCatalogCompleteness, dehydrateEditorSceneDocumentAssets, enrichEditorSceneDocumentAssets, mergeEditorSceneAssetWithLibraryItem, } from './document';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/asset-library/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/asset-library/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,6BAA6B,EAC7B,uCAAuC,GACxC,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mCAAmC,EACnC,6BAA6B,EAC7B,sCAAsC,EACtC,iCAAiC,GAClC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iDAAiD,EACjD,kCAAkC,EAClC,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,YAAY,CAAC"}
@@ -1,3 +1,3 @@
1
- export { compareEditorSceneAssetLibraryItems, createEditorSceneAssetLibrary, createEditorSceneAssetLibraryItem, } from './catalog.js';
2
- export { enrichEditorSceneDocumentAssets, mergeEditorSceneAssetWithLibraryItem, } from './document.js';
1
+ export { compareEditorSceneAssetLibraryItems, createEditorSceneAssetLibrary, createEditorSceneAssetHydrationCatalog, createEditorSceneAssetLibraryItem, } from './catalog.js';
2
+ export { assertEditorSceneDocumentAssetCatalogCompleteness, dehydrateEditorSceneDocumentAssets, enrichEditorSceneDocumentAssets, mergeEditorSceneAssetWithLibraryItem, } from './document.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/asset-library/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/asset-library/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,mCAAmC,EACnC,6BAA6B,EAC7B,sCAAsC,EACtC,iCAAiC,GAClC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iDAAiD,EACjD,kCAAkC,EAClC,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,YAAY,CAAC","sourcesContent":["export type {\n DehydratedEditorSceneAsset,\n DehydratedEditorSceneDocument,\n EditorScenePersistedModelAssetReference,\n} from './document';\nexport type {\n EditorSceneAssetCatalogEntry,\n EditorSceneAssetCatalogKind,\n} from './types';\nexport {\n compareEditorSceneAssetLibraryItems,\n createEditorSceneAssetLibrary,\n createEditorSceneAssetHydrationCatalog,\n createEditorSceneAssetLibraryItem,\n} from './catalog';\nexport {\n assertEditorSceneDocumentAssetCatalogCompleteness,\n dehydrateEditorSceneDocumentAssets,\n enrichEditorSceneDocumentAssets,\n mergeEditorSceneAssetWithLibraryItem,\n} from './document';\n"]}
@@ -10,6 +10,8 @@ export interface EditorSceneAssetCatalogEntry<TExternal = unknown, TDefaults = u
10
10
  codeKey?: string;
11
11
  category?: string;
12
12
  placeable?: boolean;
13
+ warmupCount?: number;
14
+ singleton?: boolean;
13
15
  contentHash?: string;
14
16
  byteSize?: number;
15
17
  external?: TExternal;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/asset-library/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,2BAA2B,GACnC,OAAO,GACP,QAAQ,GACR,SAAS,GACT,OAAO,GACP,OAAO,GACP,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,4BAA4B,CAC3C,SAAS,GAAG,OAAO,EACnB,SAAS,GAAG,OAAO,EACnB,aAAa,SAAS,MAAM,GAAG,MAAM;IAErC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,2BAA2B,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/asset-library/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,2BAA2B,GACnC,OAAO,GACP,QAAQ,GACR,SAAS,GACT,OAAO,GACP,OAAO,GACP,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,4BAA4B,CAC3C,SAAS,GAAG,OAAO,EACnB,SAAS,GAAG,OAAO,EACnB,aAAa,SAAS,MAAM,GAAG,MAAM;IAErC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,2BAA2B,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/asset-library/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/asset-library/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n EditorSceneAssetOrigin,\n EditorScenePrefabDefinition,\n} from '../document/index';\n\nexport type EditorSceneAssetCatalogKind =\n | 'model'\n | 'prefab'\n | 'texture'\n | 'image'\n | 'sound'\n | (string & {});\n\nexport interface EditorSceneAssetCatalogEntry<\n TExternal = unknown,\n TDefaults = unknown,\n TMaterialMode extends string = string,\n> {\n guid?: string;\n assetId: string;\n kind: EditorSceneAssetCatalogKind;\n displayName: string;\n relativePath?: string;\n originalFileName?: string;\n codeKey?: string;\n category?: string;\n placeable?: boolean;\n warmupCount?: number;\n singleton?: boolean;\n contentHash?: string;\n byteSize?: number;\n external?: TExternal;\n defaults?: TDefaults;\n prefab?: EditorScenePrefabDefinition;\n materialMode?: TMaterialMode;\n metadata?: Record<string, unknown>;\n origin?: EditorSceneAssetOrigin;\n dedupeKey?: string;\n [key: string]: unknown;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/asset-placement/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAwB3B,OAAO,KAAK,EACV,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAEjB,wBAAgB,wCAAwC,CAAC,SAAS,SAAS,mBAAmB,EAC5F,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,2BAA2B,EACtC,SAAS,CAAC,EAAE,uBAAuB,EACnC,OAAO,GAAE,gCAAqC,GAC7C,+BAA+B,CAAC,SAAS,CAAC,CAmD5C;AAED,wBAAgB,qCAAqC,CAAC,SAAS,EAAE,2BAA2B,GAAG,gBAAgB,CAa9G;AAED,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,2BAA2B,EACtC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,uBAAuB,EACnC,OAAO,GAAE,gCAAqC,GAC7C,qBAAqB,CAwBvB;AAED,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,2BAA2B,EACtC,WAAW,EAAE,gBAAgB,EAC7B,SAAS,CAAC,EAAE,uBAAuB,EACnC,OAAO,GAAE,gCAAqC,GAC7C,qBAAqB,CAuBvB"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/asset-placement/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAwB3B,OAAO,KAAK,EACV,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAEjB,wBAAgB,wCAAwC,CAAC,SAAS,SAAS,mBAAmB,EAC5F,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,2BAA2B,EACtC,SAAS,CAAC,EAAE,uBAAuB,EACnC,OAAO,GAAE,gCAAqC,GAC7C,+BAA+B,CAAC,SAAS,CAAC,CAmD5C;AAED,wBAAgB,qCAAqC,CAAC,SAAS,EAAE,2BAA2B,GAAG,gBAAgB,CAe9G;AAED,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,2BAA2B,EACtC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,uBAAuB,EACnC,OAAO,GAAE,gCAAqC,GAC7C,qBAAqB,CAwBvB;AAED,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,2BAA2B,EACtC,WAAW,EAAE,gBAAgB,EAC7B,SAAS,CAAC,EAAE,uBAAuB,EACnC,OAAO,GAAE,gCAAqC,GAC7C,qBAAqB,CAuBvB"}
@@ -57,6 +57,8 @@ export function createEditorSceneAssetFromLibraryItem(assetItem) {
57
57
  type: assetItem.type,
58
58
  displayName: assetItem.displayName,
59
59
  category: assetItem.category,
60
+ warmupCount: assetItem.warmupCount,
61
+ singleton: assetItem.singleton,
60
62
  materialMode: assetItem.materialMode,
61
63
  defaults: cloneOptional(assetItem.defaults),
62
64
  prefab: cloneOptional(assetItem.prefab),
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/asset-placement/document.ts"],"names":[],"mappings":"AAGA,OAAO,EAKN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yCAAyC,EACzC,qCAAqC,GACtC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oCAAoC,GACrC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4CAA4C,EAC5C,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iCAAiC,EACjC,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wCAAwC,GACzC,MAAM,aAAa,CAAC;AAMrB,MAAM,UAAU,wCAAwC,CACtD,QAAmB,EACnB,SAAsC,EACtC,SAAmC,EACnC,UAA4C,EAAE;IAE9C,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,qFAAqF;cACnF,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,kCAAkC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,aAAa;YACzB,CAAC,CAAC,oCAAoC,CAAC,aAAa,EAAE,SAAS,CAAC;YAChE,CAAC,CAAC,qCAAqC,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,yCAAyC,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7G,MAAM,MAAM,GAAG,kCAAkC,CAC/C,aAAa;YACX,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACnF,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAC/B,KAAK,CACN,CAAC;QACF,OAAO;YACL,QAAQ,EAAE;gBACR,GAAG,QAAQ;gBACX,MAAM;gBACN,KAAK,EAAE;oBACL,GAAG,QAAQ,CAAC,KAAK;oBACjB,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC;iBACzD;aACW;YACd,UAAU;SACX,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,kCAAkC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,aAAa;QACzB,CAAC,CAAC,oCAAoC,CAAC,aAAa,EAAE,SAAS,CAAC;QAChE,CAAC,CAAC,qCAAqC,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,wCAAwC,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/G,OAAO;QACL,QAAQ,EAAE;YACR,GAAG,QAAQ;YACX,MAAM,EAAE,aAAa;gBACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnF,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;YAC/B,KAAK,EAAE;gBACL,GAAG,QAAQ,CAAC,KAAK;gBACjB,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC;aACzD;SACW;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,SAAsC;IAC1F,OAAO;QACL,EAAE,EAAE,SAAS,CAAC,OAAO;QACrB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC3C,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC;QACvC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC3C,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,QAA6B,EAC7B,SAAsC,EACtC,OAAe,EACf,SAAmC,EACnC,UAA4C,EAAE;IAE9C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,4CAA4C,CACvD,oCAAoC,CAAC,QAAQ,CAAC,EAC9C,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,WAAW,EACrC,EAAE,YAAY,EAAE,SAAS,CAAC,OAAO,EAAE,CACpC,CAAC;IACF,MAAM,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,8CAA8C,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9G,OAAO;QACL,EAAE;QACF,IAAI,EAAE,CAAC,OAAO,CAAC,oBAAoB,IAAI,+BAA+B,CAAC,EAAE;QACzE,IAAI;QACJ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE;YACV,+BAA+B,CAAC,cAAc,CAAC;YAC/C;gBACE,IAAI,EAAE,eAAe;gBACrB,OAAO;aACR;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,QAA6B,EAC7B,SAAsC,EACtC,WAA6B,EAC7B,SAAmC,EACnC,UAA4C,EAAE;IAE9C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,4CAA4C,CACvD,oCAAoC,CAAC,QAAQ,CAAC,EAC9C,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,WAAW,EACrC,EAAE,YAAY,EAAE,SAAS,CAAC,OAAO,EAAE,CACpC,CAAC;IACF,MAAM,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,8CAA8C,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9G,OAAO,yCAAyC,CAAC;QAC/C,EAAE;QACF,IAAI,EAAE,CAAC,OAAO,CAAC,oBAAoB,IAAI,+BAA+B,CAAC,EAAE;QACzE,IAAI;QACJ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,WAAW;QACX,SAAS,EAAE,+BAA+B,CAAC,cAAc,CAAC;QAC1D,QAAQ,EAAE;YACR,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC7B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,QAAQ;SACpB;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oCAAoC,CAAC,QAA6B;IACzE,OAAO,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,kCAAkC,CACzC,QAA6B,EAC7B,SAAsC;IAEtC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1H,CAAC;AAED,SAAS,kCAAkC,CACzC,MAAmC,EACnC,WAA6B;IAE7B,MAAM,aAAa,GAAG,qCAAqC,CAAC,WAAW,CAAC,CAAC;IACzE,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,aAAa,CAAC;QAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IAE7F,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC;IAC5D,MAAM,gBAAgB,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;IACtG,OAAO;QACL,GAAG,MAAM;QACT;YACE,EAAE,EAAE,aAAa;YACjB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE;gBACR,cAAc,EAAE,WAAW,CAAC,EAAE;aAC/B;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,8CAA8C,CACrD,QAA6B,EAC7B,QAA4B,EAC5B,SAA8C,EAC9C,OAAyC;IAEzC,MAAM,cAAc,GAAG,wCAAwC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrF,IAAI,CAAC,QAAQ;QAAE,OAAO,cAAc,CAAC;IACrC,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;WACzE,oCAAoC,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC;WACxE,cAAc,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CAAI,KAAoB;IAC5C,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/asset-placement/document.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n EditorTransformSnapshot,\n} from '@fps-games/editor-core';\nimport {\n type EditorSceneAsset,\n type EditorSceneAssetLibraryItem,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n} from '../document/index';\nimport {\n createEditorScenePrefabInstanceGameObject,\n resolveEditorScenePrefabSourceAssetId,\n} from '../document/index';\nimport {\n mergeEditorSceneAssetWithLibraryItem,\n} from '../asset-library/index';\nimport {\n createUniqueEditorSceneGameObjectDisplayName,\n createEditorSceneGameObjectGuid,\n} from '../session/identity';\nimport {\n resolveEditorSceneRootContainerId,\n toEditorSceneTransformComponent,\n toEditorSceneLocalTransformForParent,\n} from '../session/transform';\nimport {\n createUniqueEditorSceneId,\n sanitizeEditorSceneId,\n} from './identity';\nimport {\n createEditorScenePlacementWorldTransform,\n} from './placement';\nimport type {\n EditorSceneAssetPlacementOptions,\n EditorSceneAssetPlacementResult,\n} from './types';\n\nexport function addAssetLibraryItemToEditorSceneDocument<TDocument extends EditorSceneDocument>(\n document: TDocument,\n assetItem: EditorSceneAssetLibraryItem,\n placement?: EditorTransformSnapshot,\n options: EditorSceneAssetPlacementOptions = {},\n): EditorSceneAssetPlacementResult<TDocument> {\n if (assetItem.type === 'texture') {\n throw new Error(\n 'Texture assets are not placeable by the default editor scene asset-placement path. '\n + 'Projects must provide a domain-specific placement adapter for texture-backed authoring.',\n );\n }\n\n if (assetItem.type === 'prefab') {\n const existingAsset = findEditorSceneAssetForLibraryItem(document, assetItem);\n const asset = existingAsset\n ? mergeEditorSceneAssetWithLibraryItem(existingAsset, assetItem)\n : createEditorSceneAssetFromLibraryItem(assetItem);\n const gameObject = createEditorScenePrefabGameObjectForAsset(document, assetItem, asset, placement, options);\n const assets = ensureEditorScenePrefabSourceAsset(\n existingAsset\n ? document.assets.map((candidate) => candidate.id === asset.id ? asset : candidate)\n : [...document.assets, asset],\n asset,\n );\n return {\n document: {\n ...document,\n assets,\n scene: {\n ...document.scene,\n gameObjects: [...document.scene.gameObjects, gameObject],\n },\n } as TDocument,\n gameObject,\n };\n }\n\n const existingAsset = findEditorSceneAssetForLibraryItem(document, assetItem);\n const asset = existingAsset\n ? mergeEditorSceneAssetWithLibraryItem(existingAsset, assetItem)\n : createEditorSceneAssetFromLibraryItem(assetItem);\n const gameObject = createEditorSceneModelGameObjectForAsset(document, assetItem, asset.id, placement, options);\n return {\n document: {\n ...document,\n assets: existingAsset\n ? document.assets.map((candidate) => candidate.id === asset.id ? asset : candidate)\n : [...document.assets, asset],\n scene: {\n ...document.scene,\n gameObjects: [...document.scene.gameObjects, gameObject],\n },\n } as TDocument,\n gameObject,\n };\n}\n\nexport function createEditorSceneAssetFromLibraryItem(assetItem: EditorSceneAssetLibraryItem): EditorSceneAsset {\n return {\n id: assetItem.assetId,\n guid: assetItem.guid,\n type: assetItem.type,\n displayName: assetItem.displayName,\n category: assetItem.category,\n warmupCount: assetItem.warmupCount,\n singleton: assetItem.singleton,\n materialMode: assetItem.materialMode,\n defaults: cloneOptional(assetItem.defaults),\n prefab: cloneOptional(assetItem.prefab),\n external: cloneOptional(assetItem.external),\n metadata: cloneOptional(assetItem.metadata),\n };\n}\n\nexport function createEditorSceneModelGameObjectForAsset(\n document: EditorSceneDocument,\n assetItem: EditorSceneAssetLibraryItem,\n assetId: string,\n placement?: EditorTransformSnapshot,\n options: EditorSceneAssetPlacementOptions = {},\n): EditorSceneGameObject {\n const usedIds = document.scene.gameObjects.map((gameObject) => gameObject.id);\n const name = createUniqueEditorSceneGameObjectDisplayName(\n getEditorSceneGameObjectDisplayNames(document),\n options.name ?? assetItem.displayName,\n { fallbackName: assetItem.assetId },\n );\n const id = createUniqueEditorSceneId(usedIds, sanitizeEditorSceneId(name));\n const parentId = resolveEditorSceneRootContainerId(document);\n const localTransform = resolveEditorSceneAssetPlacementLocalTransform(document, parentId, placement, options);\n return {\n id,\n guid: (options.createGameObjectGuid ?? createEditorSceneGameObjectGuid)(),\n name,\n ...(parentId ? { parentId } : {}),\n active: true,\n components: [\n toEditorSceneTransformComponent(localTransform),\n {\n type: 'ModelRenderer',\n assetId,\n },\n ],\n };\n}\n\nexport function createEditorScenePrefabGameObjectForAsset(\n document: EditorSceneDocument,\n assetItem: EditorSceneAssetLibraryItem,\n prefabAsset: EditorSceneAsset,\n placement?: EditorTransformSnapshot,\n options: EditorSceneAssetPlacementOptions = {},\n): EditorSceneGameObject {\n const usedIds = document.scene.gameObjects.map((gameObject) => gameObject.id);\n const name = createUniqueEditorSceneGameObjectDisplayName(\n getEditorSceneGameObjectDisplayNames(document),\n options.name ?? assetItem.displayName,\n { fallbackName: assetItem.assetId },\n );\n const id = createUniqueEditorSceneId(usedIds, sanitizeEditorSceneId(name));\n const parentId = resolveEditorSceneRootContainerId(document);\n const localTransform = resolveEditorSceneAssetPlacementLocalTransform(document, parentId, placement, options);\n return createEditorScenePrefabInstanceGameObject({\n id,\n guid: (options.createGameObjectGuid ?? createEditorSceneGameObjectGuid)(),\n name,\n ...(parentId ? { parentId } : {}),\n prefabAsset,\n transform: toEditorSceneTransformComponent(localTransform),\n metadata: {\n ...(assetItem.metadata ?? {}),\n assetId: assetItem.assetId,\n assetType: 'prefab',\n },\n });\n}\n\nfunction getEditorSceneGameObjectDisplayNames(document: EditorSceneDocument): string[] {\n return document.scene.gameObjects.map((gameObject) => gameObject.name ?? gameObject.id);\n}\n\nfunction findEditorSceneAssetForLibraryItem(\n document: EditorSceneDocument,\n assetItem: EditorSceneAssetLibraryItem,\n): EditorSceneAsset | undefined {\n return document.assets.find((asset) => asset.id === assetItem.assetId || (asset.guid && asset.guid === assetItem.guid));\n}\n\nfunction ensureEditorScenePrefabSourceAsset(\n assets: readonly EditorSceneAsset[],\n prefabAsset: EditorSceneAsset,\n): EditorSceneAsset[] {\n const sourceAssetId = resolveEditorScenePrefabSourceAssetId(prefabAsset);\n if (!sourceAssetId || assets.some((asset) => asset.id === sourceAssetId)) return [...assets];\n\n const sourceAssetGuid = prefabAsset.prefab?.sourceAssetGuid;\n const canUseSourceGuid = !!sourceAssetGuid && !assets.some((asset) => asset.guid === sourceAssetGuid);\n return [\n ...assets,\n {\n id: sourceAssetId,\n ...(canUseSourceGuid ? { guid: sourceAssetGuid } : {}),\n type: 'glb',\n displayName: sourceAssetId,\n category: 'Model',\n metadata: {\n sourcePrefabId: prefabAsset.id,\n },\n },\n ];\n}\n\nfunction resolveEditorSceneAssetPlacementLocalTransform(\n document: EditorSceneDocument,\n parentId: string | undefined,\n placement: EditorTransformSnapshot | undefined,\n options: EditorSceneAssetPlacementOptions,\n): EditorTransformSnapshot {\n const worldTransform = createEditorScenePlacementWorldTransform(document, placement);\n if (!parentId) return worldTransform;\n return options.resolveLocalTransform?.({ document, parentId, worldTransform })\n ?? toEditorSceneLocalTransformForParent(document, parentId, worldTransform)\n ?? worldTransform;\n}\n\nfunction cloneOptional<T>(value: T | undefined): T | undefined {\n return value == null ? undefined : structuredClone(value);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/asset-placement/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,yBAAyB,GAAG,mCAAmC,CAAC;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,+BAA+B,CAAC"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/asset-placement/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,yBAAyB,GAAG,mCAAmC,CAAC;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,+BAA+B,CAAC","sourcesContent":["import {\n createUniqueEditorSceneGameObjectId,\n sanitizeEditorSceneGameObjectId,\n} from '../session/identity';\n\nexport const createUniqueEditorSceneId = createUniqueEditorSceneGameObjectId;\nexport const sanitizeEditorSceneId = sanitizeEditorSceneGameObjectId;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/asset-placement/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oCAAoC,EACpC,wCAAwC,EACxC,wCAAwC,GACzC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wCAAwC,EACxC,qCAAqC,EACrC,yCAAyC,EACzC,wCAAwC,GACzC,MAAM,YAAY,CAAC;AAQpB,OAAO,EACL,4CAA4C,EAC5C,4CAA4C,EAC5C,iDAAiD,GAClD,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EACL,+CAA+C,EAC/C,+CAA+C,GAChD,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/asset-placement/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oCAAoC,EACpC,wCAAwC,EACxC,wCAAwC,GACzC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wCAAwC,EACxC,qCAAqC,EACrC,yCAAyC,EACzC,wCAAwC,GACzC,MAAM,YAAY,CAAC;AAQpB,OAAO,EACL,4CAA4C,EAC5C,4CAA4C,EAC5C,iDAAiD,GAClD,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EACL,+CAA+C,EAC/C,+CAA+C,GAChD,MAAM,4BAA4B,CAAC","sourcesContent":["export type {\n EditorSceneAssetPlacementOptions,\n EditorSceneAssetPlacementPatch,\n EditorSceneAssetPlacementPatchInput,\n EditorSceneAssetPlacementPatchResult,\n EditorSceneAssetPlacementResult,\n EditorSceneAssetPlacementTransformResolver,\n EditorSceneAssetPlacementTransformResolverInput,\n} from './types';\nexport {\n createUniqueEditorSceneId,\n sanitizeEditorSceneId,\n} from './identity';\nexport {\n createEditorSceneAssetPlacementPatch,\n createEditorScenePlacementWorldTransform,\n getNextEditorSceneAssetPlacementPosition,\n} from './placement';\nexport {\n addAssetLibraryItemToEditorSceneDocument,\n createEditorSceneAssetFromLibraryItem,\n createEditorScenePrefabGameObjectForAsset,\n createEditorSceneModelGameObjectForAsset,\n} from './document';\nexport type {\n PlayableEditorRuntimeAssetInstanceNodeArgs,\n PlayableEditorRuntimeAssetNodeIdOptions,\n PlayableEditorRuntimeAssetUsage,\n PlayableEditorRuntimeSceneNodeLike,\n PlayableEditorRuntimeTransform,\n} from './runtime-scene';\nexport {\n createPlayableEditorRuntimeAssetInstanceNode,\n createUniquePlayableEditorRuntimeAssetNodeId,\n findPlayableEditorRuntimeSceneAssetUsageByAssetId,\n} from './runtime-scene';\nexport type {\n PlayableEditorManagedRuntimeAssetInstanceInput,\n PlayableEditorManagedRuntimeAssetInstanceOptions,\n PlayableEditorManagedRuntimeAssetInstanceResult,\n PlayableEditorRuntimeAssetCatalogReader,\n PlayableEditorRuntimeAssetContext,\n PlayableEditorRuntimeAssetDocumentWriter,\n PlayableEditorRuntimeAssetPlacementPort,\n PlayableEditorRuntimeAssetPlacementPorts,\n} from './managed-runtime-instance';\nexport {\n createPlayableEditorManagedRuntimeAssetInstance,\n removePlayableEditorManagedRuntimeAssetInstance,\n} from './managed-runtime-instance';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"managed-runtime-instance.js","sourceRoot":"","sources":["../../src/asset-placement/managed-runtime-instance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-runtime-instance.js","sourceRoot":"","sources":["../../src/asset-placement/managed-runtime-instance.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n PlayableEditorAssetBuildInput,\n PlayableEditorManagedAssetFacade,\n PlayableEditorManagedAssetReference,\n} from '../asset-database/index';\nimport {\n createPlayableEditorRuntimeAssetInstanceNode,\n createUniquePlayableEditorRuntimeAssetNodeId,\n} from './runtime-scene';\n\nexport interface PlayableEditorRuntimeAssetContext {\n scene?: unknown;\n game?: unknown;\n}\n\nexport interface PlayableEditorRuntimeAssetCatalogReader<TAsset> {\n getAssets(): readonly TAsset[];\n}\n\nexport interface PlayableEditorRuntimeAssetDocumentWriter<TAsset, TNode, TRootNode, TContext> {\n getNodes(): readonly TNode[];\n addAssetNode(args: { asset: TAsset; node: TNode }, context?: TContext): {\n node: TNode;\n rootNode?: TRootNode | null;\n };\n removeSceneNode(nodeId: string, context?: TContext): unknown;\n}\n\nexport interface PlayableEditorRuntimeAssetPlacementPort<TAsset, TInput, TContext, TPosition> {\n resolveDropPosition(input: TInput, context?: TContext): TPosition;\n prepareRuntimeAsset(asset: TAsset, assetUrl?: string, context?: TContext): Promise<void>;\n}\n\nexport interface PlayableEditorRuntimeAssetPlacementPorts<\n TAsset,\n TNode,\n TRootNode,\n TInput,\n TContext,\n TPosition,\n> {\n catalogReader: PlayableEditorRuntimeAssetCatalogReader<TAsset>;\n documentWriter: PlayableEditorRuntimeAssetDocumentWriter<TAsset, TNode, TRootNode, TContext>;\n runtimePlacement: PlayableEditorRuntimeAssetPlacementPort<TAsset, TInput, TContext, TPosition>;\n}\n\nexport interface PlayableEditorManagedRuntimeAssetInstanceInput<TScale = unknown> extends PlayableEditorAssetBuildInput {\n requestId?: string;\n assetUrl?: string;\n instanceScale?: TScale;\n dropSurfaceName?: string;\n clientX?: number;\n clientY?: number;\n position?: unknown;\n}\n\nexport interface PlayableEditorManagedRuntimeAssetInstanceResult<TRootNode = unknown> {\n requestId?: string;\n ok: boolean;\n guid?: string;\n assetId: string;\n nodeId?: string;\n rootNode?: TRootNode | null;\n code?: string;\n error?: string;\n}\n\nexport interface PlayableEditorManagedRuntimeAssetInstanceOptions<TScale> {\n assetFacade: PlayableEditorManagedAssetFacade;\n readScale?: (value: unknown) => TScale | undefined;\n normalizeNodeIdBaseName?: (value: string) => string;\n readErrorCode?: (error: unknown) => string | undefined;\n}\n\nexport async function createPlayableEditorManagedRuntimeAssetInstance<\n TAsset,\n TNode extends { id: string },\n TRootNode,\n TInput extends PlayableEditorManagedRuntimeAssetInstanceInput,\n TContext,\n TPosition,\n TScale,\n>(\n input: TInput,\n ports: PlayableEditorRuntimeAssetPlacementPorts<TAsset, TNode, TRootNode, TInput, TContext, TPosition>,\n options: PlayableEditorManagedRuntimeAssetInstanceOptions<TScale>,\n context?: TContext,\n): Promise<PlayableEditorManagedRuntimeAssetInstanceResult<TRootNode>> {\n const requestedAssetId = input.assetId?.trim() ?? '';\n try {\n const assetReference = options.assetFacade.resolveAssetReference(\n { assets: ports.catalogReader.getAssets() } as Parameters<PlayableEditorManagedAssetFacade['resolveAssetReference']>[0],\n input,\n ) as PlayableEditorManagedAssetReference<any> & { asset: TAsset };\n const nodeId = createUniquePlayableEditorRuntimeAssetNodeId(\n ports.documentWriter.getNodes(),\n assetReference.displayName,\n assetReference.assetId,\n { normalizeBaseName: options.normalizeNodeIdBaseName },\n );\n const position = ports.runtimePlacement.resolveDropPosition(input, context);\n const node = createPlayableEditorRuntimeAssetInstanceNode({\n nodeId,\n assetId: assetReference.assetId,\n displayName: assetReference.displayName,\n position,\n instanceScale: options.readScale?.(input.instanceScale),\n }) as unknown as TNode;\n\n await ports.runtimePlacement.prepareRuntimeAsset(assetReference.asset, input.assetUrl, context);\n const added = ports.documentWriter.addAssetNode({ asset: assetReference.asset, node }, context);\n return {\n ...(input.requestId ? { requestId: input.requestId } : {}),\n ok: true,\n guid: assetReference.guid,\n assetId: assetReference.assetId,\n nodeId: added.node.id,\n rootNode: added.rootNode ?? null,\n };\n } catch (error) {\n const code = options.readErrorCode?.(error);\n return {\n ...(input.requestId ? { requestId: input.requestId } : {}),\n ok: false,\n ...(input.guid ? { guid: input.guid } : {}),\n assetId: requestedAssetId,\n ...(code ? { code } : {}),\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nexport function removePlayableEditorManagedRuntimeAssetInstance<TRootNode, TContext>(\n nodeId: string,\n documentWriter: Pick<PlayableEditorRuntimeAssetDocumentWriter<unknown, { id: string }, TRootNode, TContext>, 'removeSceneNode'>,\n options: { nodeNotFoundCode: string },\n context?: TContext,\n): PlayableEditorManagedRuntimeAssetInstanceResult<TRootNode> {\n const removed = documentWriter.removeSceneNode(nodeId, context);\n return {\n ok: Boolean(removed),\n assetId: '',\n nodeId,\n ...(removed ? {} : { code: options.nodeNotFoundCode, error: options.nodeNotFoundCode }),\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"placement.js","sourceRoot":"","sources":["../../src/asset-placement/placement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"placement.js","sourceRoot":"","sources":["../../src/asset-placement/placement.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n EditorTransformSnapshot,\n} from '@fps-games/editor-core';\nimport {\n isEditorTransformTrsSnapshot,\n} from '@fps-games/editor-core';\nimport {\n findEditorSceneModelRenderer,\n type EditorSceneDocument,\n type EditorSceneVec3,\n} from '../document/index';\nimport {\n createUniqueEditorSceneGameObjectDisplayName,\n} from '../session/identity';\nimport {\n createUniqueEditorSceneId,\n sanitizeEditorSceneId,\n} from './identity';\nimport type {\n EditorSceneAssetPlacementPatchInput,\n EditorSceneAssetPlacementPatchResult,\n} from './types';\n\nexport function createEditorSceneAssetPlacementPatch(\n input: EditorSceneAssetPlacementPatchInput,\n): EditorSceneAssetPlacementPatchResult {\n const name = createUniqueEditorSceneGameObjectDisplayName(\n input.document.scene.gameObjects.map((gameObject) => gameObject.name ?? gameObject.id),\n input.name ?? input.asset.displayName,\n { fallbackName: input.asset.assetId },\n );\n const id = createUniqueEditorSceneId(\n input.document.scene.gameObjects.map((gameObject) => gameObject.id),\n sanitizeEditorSceneId(name),\n );\n return {\n label: `Place ${input.asset.displayName}`,\n patch: {\n kind: 'game-object.create-from-asset',\n assetItem: input.asset,\n ...(input.name ? { name: input.name } : {}),\n placement: {\n position: { ...input.hit.position },\n rotation: { x: 0, y: 0, z: 0 },\n scale: { x: 1, y: 1, z: 1 },\n },\n },\n createdId: id,\n changedIds: [id],\n };\n}\n\nexport function getNextEditorSceneAssetPlacementPosition(document: EditorSceneDocument): EditorSceneVec3 {\n const renderableCount = document.scene.gameObjects.filter((gameObject) => (\n !!findEditorSceneModelRenderer(gameObject) || !!gameObject.primitive\n )).length;\n return {\n x: (renderableCount % 5) * 1.8 - 3.6,\n y: 0,\n z: Math.floor(renderableCount / 5) * 1.8 + 1.8,\n };\n}\n\nexport function createEditorScenePlacementWorldTransform(\n document: EditorSceneDocument,\n placement?: EditorTransformSnapshot,\n): EditorTransformSnapshot {\n const trsPlacement = placement && isEditorTransformTrsSnapshot(placement) ? placement : null;\n return {\n position: trsPlacement?.position ? { ...trsPlacement.position } : getNextEditorSceneAssetPlacementPosition(document),\n rotation: trsPlacement?.rotation ? { ...trsPlacement.rotation } : { x: 0, y: 0, z: 0 },\n scale: trsPlacement?.scale ? { ...trsPlacement.scale } : { x: 1, y: 1, z: 1 },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-scene.js","sourceRoot":"","sources":["../../src/asset-placement/runtime-scene.ts"],"names":[],"mappings":"AAyCA,MAAM,UAAU,4CAA4C,CAC1D,KAAuB,EACvB,WAAmB,EACnB,OAAe,EACf,UAAmD,EAAE;IAErD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,wCAAwC,CACnD,OAAO,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,IAAI,WAAW,CACxD,IAAI,OAAO,CAAC;IACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,4CAA4C,CAI1D,IAAmE;IAQnE,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,MAAM;QACf,IAAI,EAAE,IAAI,CAAC,WAAW;QACtB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB;QACD,SAAS,EAAE;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iDAAiD,CAG/D,OAAe,EACf,KAAuB;IAEvB,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,KAAK;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,KAAK,iBAAiB,CAAC;aAC1F,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,wCAAwC,CAAC,KAAc;IAC9D,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"runtime-scene.js","sourceRoot":"","sources":["../../src/asset-placement/runtime-scene.ts"],"names":[],"mappings":"AAyCA,MAAM,UAAU,4CAA4C,CAC1D,KAAuB,EACvB,WAAmB,EACnB,OAAe,EACf,UAAmD,EAAE;IAErD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,wCAAwC,CACnD,OAAO,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,IAAI,WAAW,CACxD,IAAI,OAAO,CAAC;IACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,4CAA4C,CAI1D,IAAmE;IAQnE,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,MAAM;QACf,IAAI,EAAE,IAAI,CAAC,WAAW;QACtB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB;QACD,SAAS,EAAE;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iDAAiD,CAG/D,OAAe,EACf,KAAuB;IAEvB,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,KAAK;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,KAAK,iBAAiB,CAAC;aAC1F,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,wCAAwC,CAAC,KAAc;IAC9D,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["export interface PlayableEditorRuntimeSceneNodeLike {\n id: string;\n kind?: string;\n instance?: {\n assetId?: string;\n } | null;\n}\n\nexport interface PlayableEditorRuntimeTransform<\n TPosition,\n TScale,\n> {\n position: TPosition;\n rotation: {\n x: number;\n y: number;\n z: number;\n };\n scale?: TScale;\n}\n\nexport interface PlayableEditorRuntimeAssetInstanceNodeArgs<\n TPosition,\n TScale,\n> {\n nodeId: string;\n assetId: string;\n displayName: string;\n position: TPosition;\n instanceScale?: TScale;\n}\n\nexport interface PlayableEditorRuntimeAssetUsage {\n assetId: string;\n nodeIds: string[];\n}\n\nexport interface PlayableEditorRuntimeAssetNodeIdOptions {\n normalizeBaseName?: (value: string) => string;\n}\n\nexport function createUniquePlayableEditorRuntimeAssetNodeId<TNode extends { id: string }>(\n nodes: readonly TNode[],\n displayName: string,\n assetId: string,\n options: PlayableEditorRuntimeAssetNodeIdOptions = {},\n): string {\n const used = new Set(nodes.map((node) => node.id));\n const base = sanitizePlayableEditorRuntimeAssetNodeId(\n options.normalizeBaseName?.(displayName) ?? displayName,\n ) || assetId;\n if (!used.has(base)) return base;\n let index = 2;\n while (used.has(`${base}_${index}`)) {\n index += 1;\n }\n return `${base}_${index}`;\n}\n\nexport function createPlayableEditorRuntimeAssetInstanceNode<\n TPosition,\n TScale,\n>(\n args: PlayableEditorRuntimeAssetInstanceNodeArgs<TPosition, TScale>,\n): {\n id: string;\n name: string;\n kind: 'instance';\n instance: { assetId: string };\n transform: PlayableEditorRuntimeTransform<TPosition, TScale>;\n} {\n return {\n id: args.nodeId,\n name: args.displayName,\n kind: 'instance',\n instance: {\n assetId: args.assetId,\n },\n transform: {\n position: args.position,\n rotation: { x: 0, y: 0, z: 0 },\n ...(args.instanceScale ? { scale: args.instanceScale } : {}),\n },\n };\n}\n\nexport function findPlayableEditorRuntimeSceneAssetUsageByAssetId<\n TNode extends PlayableEditorRuntimeSceneNodeLike,\n>(\n assetId: string,\n nodes: readonly TNode[],\n): PlayableEditorRuntimeAssetUsage {\n const normalizedAssetId = assetId.trim();\n return {\n assetId: normalizedAssetId,\n nodeIds: nodes\n .filter((node) => node.kind === 'instance' && node.instance?.assetId === normalizedAssetId)\n .map((node) => node.id),\n };\n}\n\nfunction sanitizePlayableEditorRuntimeAssetNodeId(value: unknown): string {\n return String(value ?? '')\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '');\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/asset-placement/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/asset-placement/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n EditorPlacementHit,\n EditorTransformSnapshot,\n} from '@fps-games/editor-core';\nimport type {\n EditorSceneAssetLibraryItem,\n EditorSceneDocument,\n EditorSceneGameObject,\n} from '../document/index';\n\nexport interface EditorSceneAssetPlacementPatch<\n TAssetItem extends EditorSceneAssetLibraryItem = EditorSceneAssetLibraryItem,\n> {\n kind: 'game-object.create-from-asset';\n assetItem: TAssetItem;\n name?: string;\n placement?: EditorTransformSnapshot;\n}\n\nexport interface EditorSceneAssetPlacementPatchInput<\n TAssetItem extends EditorSceneAssetLibraryItem = EditorSceneAssetLibraryItem,\n> {\n document: EditorSceneDocument;\n asset: TAssetItem;\n hit: EditorPlacementHit;\n name?: string;\n}\n\nexport interface EditorSceneAssetPlacementPatchResult<\n TAssetItem extends EditorSceneAssetLibraryItem = EditorSceneAssetLibraryItem,\n> {\n patch: EditorSceneAssetPlacementPatch<TAssetItem>;\n label: string;\n createdId: string;\n changedIds: string[];\n}\n\nexport interface EditorSceneAssetPlacementTransformResolverInput {\n document: EditorSceneDocument;\n parentId: string;\n worldTransform: EditorTransformSnapshot;\n}\n\nexport type EditorSceneAssetPlacementTransformResolver = (\n input: EditorSceneAssetPlacementTransformResolverInput,\n) => EditorTransformSnapshot | null;\n\nexport interface EditorSceneAssetPlacementOptions {\n name?: string;\n createGameObjectGuid?: () => string;\n resolveLocalTransform?: EditorSceneAssetPlacementTransformResolver;\n}\n\nexport interface EditorSceneAssetPlacementResult<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> {\n document: TDocument;\n gameObject: EditorSceneGameObject;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/asset-registration/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/asset-registration/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC","sourcesContent":["export * from './types';\nexport * from './result';\nexport * from './transport';\nexport * from './workflow';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/asset-registration/result.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sCAAsC,EACtC,4CAA4C,EAC7C,MAAM,SAAS,CAAC;AAEjB,wBAAgB,yCAAyC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIjG;AAED,wBAAgB,8CAA8C,CAC5D,KAAK,EAAE,4CAA4C,GAClD,sCAAsC,CAaxC"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/asset-registration/result.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sCAAsC,EACtC,4CAA4C,EAC7C,MAAM,SAAS,CAAC;AAEjB,wBAAgB,yCAAyC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIjG;AAED,wBAAgB,8CAA8C,CAC5D,KAAK,EAAE,4CAA4C,GAClD,sCAAsC,CAgBxC"}
@@ -15,6 +15,9 @@ export function resolvePlayablePlatformAssetRegistrationResult(input) {
15
15
  return {
16
16
  ...(readString(result.guid) ?? fallback.guid ? { guid: readString(result.guid) ?? fallback.guid } : {}),
17
17
  assetId: readString(result.assetId) ?? fallback.assetId ?? '',
18
+ ...(readString(result.contentHash) ?? fallback.contentHash
19
+ ? { contentHash: readString(result.contentHash) ?? fallback.contentHash }
20
+ : {}),
18
21
  ...(readString(result.assetUrl) ?? fallback.assetUrl ? { assetUrl: readString(result.assetUrl) ?? fallback.assetUrl } : {}),
19
22
  ...(external ?? fallback.external ? { external: external ?? fallback.external } : {}),
20
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/asset-registration/result.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,GAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,gBAAgB,CAAC;AAMxB,MAAM,UAAU,yCAAyC,CAAC,KAAc;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,YAAY,IAAI,MAAM,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,8CAA8C,CAC5D,KAAmD;IAEnD,MAAM,MAAM,GAAG,yCAAyC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,cAAc;QAC7B,CAAC,CAAC,iCAAiC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC7D,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3H,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/asset-registration/result.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,GAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,gBAAgB,CAAC;AAMxB,MAAM,UAAU,yCAAyC,CAAC,KAAc;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,YAAY,IAAI,MAAM,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,8CAA8C,CAC5D,KAAmD;IAEnD,MAAM,MAAM,GAAG,yCAAyC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,cAAc;QAC7B,CAAC,CAAC,iCAAiC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC7D,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW;YACxD,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE;YACzE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3H,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAC;AACJ,CAAC","sourcesContent":["import {\n readPlayablePlatformAssetExternal,\n} from '../asset-bridge';\nimport {\n readRecord,\n readString,\n} from '../shared/json';\nimport type {\n PlayablePlatformAssetRegistrationAsset,\n PlayablePlatformAssetRegistrationResultInput,\n} from './types';\n\nexport function readPlayableAssetRegistrationResultRecord(value: unknown): Record<string, unknown> {\n const record = readRecord(value);\n const nestedResult = readRecord(record?.result);\n return nestedResult ?? record ?? {};\n}\n\nexport function resolvePlayablePlatformAssetRegistrationResult(\n input: PlayablePlatformAssetRegistrationResultInput,\n): PlayablePlatformAssetRegistrationAsset {\n const result = readPlayableAssetRegistrationResultRecord(input.result);\n const fallback = input.fallback ?? {};\n const externalRecord = readRecord(result.external);\n const external = externalRecord\n ? readPlayablePlatformAssetExternal({ external: externalRecord })\n : undefined;\n return {\n ...(readString(result.guid) ?? fallback.guid ? { guid: readString(result.guid) ?? fallback.guid } : {}),\n assetId: readString(result.assetId) ?? fallback.assetId ?? '',\n ...(readString(result.contentHash) ?? fallback.contentHash\n ? { contentHash: readString(result.contentHash) ?? fallback.contentHash }\n : {}),\n ...(readString(result.assetUrl) ?? fallback.assetUrl ? { assetUrl: readString(result.assetUrl) ?? fallback.assetUrl } : {}),\n ...(external ?? fallback.external ? { external: external ?? fallback.external } : {}),\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/asset-registration/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8CAA8C,GAC/C,MAAM,iBAAiB,CAAC;AASzB,MAAM,UAAU,oDAAoD,CAClE,OAAgC,EAChC,OAA8D;IAE9D,MAAM,YAAY,GAAG,8CAA8C,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtF,OAAO;QACL,YAAY;QACZ,aAAa,EAAE;YACb,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,YAAY,CAAC,WAAW;oBAC9B,OAAO,EAAE,YAAY,CAAC,OAAO;iBAC9B;aACF;YACD,QAAQ,EAAE;gBACR,+CAA+C,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;aACnF;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,+CAA+C,CACtD,WAAmB,EACnB,OAA8D;IAE9D,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO;YACL,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,iBAAiB,WAAW,EAAE;YACrD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,GAAG,OAAO,CAAC,OAAO;YAClB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC5C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;gBACrB,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,iBAAiB,WAAW,EAAE;SACzD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO;QACL,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,iBAAiB,WAAW,EAAE;QACzD,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG;KACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/asset-registration/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8CAA8C,GAC/C,MAAM,iBAAiB,CAAC;AASzB,MAAM,UAAU,oDAAoD,CAClE,OAAgC,EAChC,OAA8D;IAE9D,MAAM,YAAY,GAAG,8CAA8C,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtF,OAAO;QACL,YAAY;QACZ,aAAa,EAAE;YACb,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,YAAY,CAAC,WAAW;oBAC9B,OAAO,EAAE,YAAY,CAAC,OAAO;iBAC9B;aACF;YACD,QAAQ,EAAE;gBACR,+CAA+C,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;aACnF;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,+CAA+C,CACtD,WAAmB,EACnB,OAA8D;IAE9D,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO;YACL,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,iBAAiB,WAAW,EAAE;YACrD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,GAAG,OAAO,CAAC,OAAO;YAClB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC5C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;gBACrB,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,iBAAiB,WAAW,EAAE;SACzD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO;QACL,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,iBAAiB,WAAW,EAAE;QACzD,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG;KACxB,CAAC;AACJ,CAAC","sourcesContent":["import {\n createPlayablePlatformAssetRegistrationPayload,\n} from '../asset-bridge';\nimport type {\n PlayableAssetTransportCommand,\n} from '../authoring-client';\nimport type {\n PlayablePlatformAssetRegistrationTransportPlan,\n PlayablePlatformAssetRegistrationTransportPlanOptions,\n} from './types';\n\nexport function createPlayablePlatformAssetRegistrationTransportPlan(\n payload: Record<string, unknown>,\n options: PlayablePlatformAssetRegistrationTransportPlanOptions,\n): PlayablePlatformAssetRegistrationTransportPlan {\n const registration = createPlayablePlatformAssetRegistrationPayload(payload, options);\n return {\n registration,\n transportPlan: {\n writes: [\n {\n path: registration.payloadPath,\n content: registration.content,\n },\n ],\n commands: [\n resolvePlayablePlatformAssetRegistrationCommand(registration.payloadPath, options),\n ],\n },\n };\n}\n\nfunction resolvePlayablePlatformAssetRegistrationCommand(\n payloadPath: string,\n options: PlayablePlatformAssetRegistrationTransportPlanOptions,\n): PlayableAssetTransportCommand {\n if (typeof options.command === 'string') {\n return {\n cmd: `${options.command} -- --payload ${payloadPath}`,\n ...(options.cwd ? { cwd: options.cwd } : {}),\n };\n }\n if (options.command) {\n return {\n ...options.command,\n cmd: options.command.cmd.includes('--payload')\n ? options.command.cmd\n : `${options.command.cmd} -- --payload ${payloadPath}`,\n };\n }\n if (!options.commandName) {\n throw new Error('asset registration commandName or command is required');\n }\n return {\n cmd: `${options.commandName} -- --payload ${payloadPath}`,\n cwd: options.cwd ?? '.',\n };\n}\n"]}
@@ -3,6 +3,7 @@ import type { PlayablePlatformAssetExternal, PlayablePlatformAssetRegistrationPa
3
3
  export interface PlayablePlatformAssetRegistrationAsset {
4
4
  guid?: string;
5
5
  assetId: string;
6
+ contentHash?: string;
6
7
  assetUrl?: string;
7
8
  external?: PlayablePlatformAssetExternal;
8
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/asset-registration/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,6BAA6B,EAC7B,wCAAwC,EACxC,+CAA+C,EAChD,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,sCAAsC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,6BAA6B,CAAC;CAC1C;AAED,MAAM,WAAW,4CAA4C;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,qDAAqD,GAC/D,+CAA+C,GAAG;IAChD,OAAO,CAAC,EAAE,MAAM,GAAG,6BAA6B,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEJ,MAAM,WAAW,8CAA8C;IAC7D,YAAY,EAAE,wCAAwC,CAAC;IACvD,aAAa,EAAE,0BAA0B,CAAC;CAC3C;AAED,MAAM,MAAM,gDAAgD,GAC1D,qDAAqD,GAAG;IACxD,iBAAiB,CAAC,EAAE,CAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,sCAAsC,GAAG,IAAI,GAAG,OAAO,CAAC,sCAAsC,GAAG,IAAI,CAAC,CAAC;IAC5G,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,UAAU,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACpH,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/asset-registration/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,6BAA6B,EAC7B,wCAAwC,EACxC,+CAA+C,EAChD,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,sCAAsC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,6BAA6B,CAAC;CAC1C;AAED,MAAM,WAAW,4CAA4C;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,qDAAqD,GAC/D,+CAA+C,GAAG;IAChD,OAAO,CAAC,EAAE,MAAM,GAAG,6BAA6B,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEJ,MAAM,WAAW,8CAA8C;IAC7D,YAAY,EAAE,wCAAwC,CAAC;IACvD,aAAa,EAAE,0BAA0B,CAAC;CAC3C;AAED,MAAM,MAAM,gDAAgD,GAC1D,qDAAqD,GAAG;IACxD,iBAAiB,CAAC,EAAE,CAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,sCAAsC,GAAG,IAAI,GAAG,OAAO,CAAC,sCAAsC,GAAG,IAAI,CAAC,CAAC;IAC5G,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,UAAU,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACpH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/asset-registration/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/asset-registration/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n PlayableAssetTransportCommand,\n PlayableAssetTransportPlan,\n} from '../authoring-client';\nimport type {\n PlayablePlatformAssetExternal,\n PlayablePlatformAssetRegistrationPayload,\n PlayablePlatformAssetRegistrationPayloadOptions,\n} from '../asset-bridge';\n\nexport interface PlayablePlatformAssetRegistrationAsset {\n guid?: string;\n assetId: string;\n contentHash?: string;\n assetUrl?: string;\n external?: PlayablePlatformAssetExternal;\n}\n\nexport interface PlayablePlatformAssetRegistrationResultInput {\n result?: unknown;\n fallback?: Partial<PlayablePlatformAssetRegistrationAsset>;\n}\n\nexport type PlayablePlatformAssetRegistrationTransportPlanOptions =\n PlayablePlatformAssetRegistrationPayloadOptions & {\n command?: string | PlayableAssetTransportCommand;\n commandName?: string;\n cwd?: string;\n };\n\nexport interface PlayablePlatformAssetRegistrationTransportPlan {\n registration: PlayablePlatformAssetRegistrationPayload;\n transportPlan: PlayableAssetTransportPlan;\n}\n\nexport type PlayablePlatformAssetRegistrationWorkflowOptions =\n PlayablePlatformAssetRegistrationTransportPlanOptions & {\n findExistingAsset?: (\n payload: Record<string, unknown>,\n ) => PlayablePlatformAssetRegistrationAsset | null | Promise<PlayablePlatformAssetRegistrationAsset | null>;\n writeFile: (path: string, content: unknown) => unknown | Promise<unknown>;\n runCommand: (command: PlayableAssetTransportCommand) => Record<string, unknown> | Promise<Record<string, unknown>>;\n};\n"]}
@@ -1,3 +1,4 @@
1
1
  import type { PlayablePlatformAssetRegistrationAsset, PlayablePlatformAssetRegistrationWorkflowOptions } from './types';
2
2
  export declare function registerPlayablePlatformAssetIfNeeded(payload: Record<string, unknown>, options: PlayablePlatformAssetRegistrationWorkflowOptions): Promise<PlayablePlatformAssetRegistrationAsset>;
3
+ export declare function registerPlayablePlatformAsset(payload: Record<string, unknown>, options: PlayablePlatformAssetRegistrationWorkflowOptions): Promise<PlayablePlatformAssetRegistrationAsset>;
3
4
  //# sourceMappingURL=workflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/asset-registration/workflow.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,sCAAsC,EACtC,gDAAgD,EACjD,MAAM,SAAS,CAAC;AAEjB,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,gDAAgD,GACxD,OAAO,CAAC,sCAAsC,CAAC,CAgCjD"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/asset-registration/workflow.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,sCAAsC,EACtC,gDAAgD,EACjD,MAAM,SAAS,CAAC;AAEjB,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,gDAAgD,GACxD,OAAO,CAAC,sCAAsC,CAAC,CAKjD;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,gDAAgD,GACxD,OAAO,CAAC,sCAAsC,CAAC,CAiCjD"}
@@ -6,6 +6,9 @@ export async function registerPlayablePlatformAssetIfNeeded(payload, options) {
6
6
  const existing = await options.findExistingAsset?.(payload);
7
7
  if (existing)
8
8
  return existing;
9
+ return registerPlayablePlatformAsset(payload, options);
10
+ }
11
+ export async function registerPlayablePlatformAsset(payload, options) {
9
12
  const assetPath = readPlayablePlatformAssetPath(payload);
10
13
  const projectAssetId = readString(payload.projectAssetId);
11
14
  if (!assetPath && projectAssetId) {
@@ -16,7 +19,10 @@ export async function registerPlayablePlatformAssetIfNeeded(payload, options) {
16
19
  }
17
20
  if (!assetPath)
18
21
  throw new Error('assetPath is required to register a new project asset');
19
- const { registration, transportPlan } = createPlayablePlatformAssetRegistrationTransportPlan(payload, options);
22
+ const { registration, transportPlan } = createPlayablePlatformAssetRegistrationTransportPlan(payload, {
23
+ ...options,
24
+ preserveExistingPresentation: true,
25
+ });
20
26
  for (const write of transportPlan.writes) {
21
27
  await options.writeFile(write.path, write.content);
22
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/asset-registration/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,8CAA8C,GAC/C,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,oDAAoD,GACrD,MAAM,aAAa,CAAC;AAMrB,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,OAAgC,EAChC,OAAyD;IAEzD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,SAAS,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,CAAC,SAAS,IAAI,cAAc,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,GAAG,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,iCAAiC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAEzF,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,oDAAoD,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/G,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,UAAU,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC7C,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,8CAA8C,CAAC;QACpD,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE;YACR,OAAO,EAAE,cAAc,IAAI,EAAE;YAC7B,QAAQ,EAAE,iCAAiC,CAAC,OAAO,CAAC;YACpD,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpD;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/asset-registration/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,8CAA8C,GAC/C,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,oDAAoD,GACrD,MAAM,aAAa,CAAC;AAMrB,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,OAAgC,EAChC,OAAyD;IAEzD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,OAAO,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAgC,EAChC,OAAyD;IAGzD,MAAM,SAAS,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,CAAC,SAAS,IAAI,cAAc,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,GAAG,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,iCAAiC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAEzF,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,oDAAoD,CAAC,OAAO,EAAE;QACpG,GAAG,OAAO;QACV,4BAA4B,EAAE,IAAI;KACnC,CAAC,CAAC;IACH,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,UAAU,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC7C,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,8CAA8C,CAAC;QACpD,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE;YACR,OAAO,EAAE,cAAc,IAAI,EAAE;YAC7B,QAAQ,EAAE,iCAAiC,CAAC,OAAO,CAAC;YACpD,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpD;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n readPlayablePlatformAssetExternal,\n readPlayablePlatformAssetPath,\n} from '../asset-bridge';\nimport {\n readString,\n} from '../shared/json';\nimport {\n resolvePlayablePlatformAssetRegistrationResult,\n} from './result';\nimport {\n createPlayablePlatformAssetRegistrationTransportPlan,\n} from './transport';\nimport type {\n PlayablePlatformAssetRegistrationAsset,\n PlayablePlatformAssetRegistrationWorkflowOptions,\n} from './types';\n\nexport async function registerPlayablePlatformAssetIfNeeded(\n payload: Record<string, unknown>,\n options: PlayablePlatformAssetRegistrationWorkflowOptions,\n): Promise<PlayablePlatformAssetRegistrationAsset> {\n const existing = await options.findExistingAsset?.(payload);\n if (existing) return existing;\n\n return registerPlayablePlatformAsset(payload, options);\n}\n\nexport async function registerPlayablePlatformAsset(\n payload: Record<string, unknown>,\n options: PlayablePlatformAssetRegistrationWorkflowOptions,\n): Promise<PlayablePlatformAssetRegistrationAsset> {\n\n const assetPath = readPlayablePlatformAssetPath(payload);\n const projectAssetId = readString(payload.projectAssetId);\n if (!assetPath && projectAssetId) {\n return {\n assetId: projectAssetId,\n ...(readPlayablePlatformAssetExternal(payload) ? { external: readPlayablePlatformAssetExternal(payload) } : {}),\n };\n }\n if (!assetPath) throw new Error('assetPath is required to register a new project asset');\n\n const { registration, transportPlan } = createPlayablePlatformAssetRegistrationTransportPlan(payload, {\n ...options,\n preserveExistingPresentation: true,\n });\n for (const write of transportPlan.writes) {\n await options.writeFile(write.path, write.content);\n }\n\n let lastResult: Record<string, unknown> = {};\n for (const command of transportPlan.commands) {\n lastResult = await options.runCommand(command);\n }\n\n return resolvePlayablePlatformAssetRegistrationResult({\n result: lastResult,\n fallback: {\n assetId: projectAssetId ?? '',\n external: readPlayablePlatformAssetExternal(payload),\n assetUrl: readString(registration.content.assetUrl),\n },\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/authoring/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/authoring/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC","sourcesContent":["export const EDITOR_SCENE_SOURCE_ID = 'scene.main';\nexport const EDITOR_SCENE_SOURCE_TYPE = 'scene';\nexport const EDITOR_SCENE_SCHEMA_VERSION = 1;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/authoring/drift.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAW5D,MAAM,UAAU,kCAAkC,CAChD,QAA2C,EAC3C,kBAA2B;IAE3B,MAAM,SAAS,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC;IAClD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,cAAc;YACd,iBAAiB,EAAE,IAAI;YACvB,MAAM,EAAE,wBAAwB;SACjC,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,OAAO,aAAa,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACrG,IAAI,aAAa,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,IAAI,aAAa,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;QACvG,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,cAAc;YACd,iBAAiB;YACjB,MAAM,EAAE,iBAAiB;SAC1B,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;QACzC,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,cAAc;YACd,iBAAiB;YACjB,MAAM,EAAE,mBAAmB;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,cAAc;QACd,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,kBAA2B;IACpD,IAAI,CAAC,kBAAkB,IAAI,OAAO,kBAAkB,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/E,MAAM,IAAI,GAAI,kBAAyC,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,aAAa,GAAI,IAAoC,CAAC,aAAa,CAAC;IAC1E,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrE,MAAM,QAAQ,GAAI,aAAwC,CAAC,QAAQ,CAAC;IACpE,MAAM,UAAU,GAAI,aAA0C,CAAC,UAAU,CAAC;IAC1E,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChF,OAAO;QACL,QAAQ;QACR,UAAU,EAAE,UAA8C;QAC1D,QAAQ,EAAE,OAAQ,aAAwC,CAAC,QAAQ,KAAK,QAAQ;YAC9E,CAAC,CAAE,aAAsC,CAAC,QAAQ;YAClD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/authoring/drift.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAW5D,MAAM,UAAU,kCAAkC,CAChD,QAA2C,EAC3C,kBAA2B;IAE3B,MAAM,SAAS,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC;IAClD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,cAAc;YACd,iBAAiB,EAAE,IAAI;YACvB,MAAM,EAAE,wBAAwB;SACjC,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,OAAO,aAAa,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACrG,IAAI,aAAa,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,IAAI,aAAa,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;QACvG,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,cAAc;YACd,iBAAiB;YACjB,MAAM,EAAE,iBAAiB;SAC1B,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;QACzC,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,cAAc;YACd,iBAAiB;YACjB,MAAM,EAAE,mBAAmB;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,cAAc;QACd,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,kBAA2B;IACpD,IAAI,CAAC,kBAAkB,IAAI,OAAO,kBAAkB,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/E,MAAM,IAAI,GAAI,kBAAyC,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,aAAa,GAAI,IAAoC,CAAC,aAAa,CAAC;IAC1E,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrE,MAAM,QAAQ,GAAI,aAAwC,CAAC,QAAQ,CAAC;IACpE,MAAM,UAAU,GAAI,aAA0C,CAAC,UAAU,CAAC;IAC1E,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChF,OAAO;QACL,QAAQ;QACR,UAAU,EAAE,UAA8C;QAC1D,QAAQ,EAAE,OAAQ,aAAwC,CAAC,QAAQ,KAAK,QAAQ;YAC9E,CAAC,CAAE,aAAsC,CAAC,QAAQ;YAClD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC","sourcesContent":["import type { AuthoringSourceRef } from '@fps-games/editor-core';\nimport type { EditorSceneDocument } from '../document';\nimport { getEditorSceneAuthoringSourceRef } from './source';\n\nexport interface EditorSceneRuntimeInputDrift {\n detected: boolean;\n sourceId: string;\n sourceType: string;\n sourceRevision: number | null;\n generatedRevision: number | null;\n reason?: 'missing-generated-from' | 'source-mismatch' | 'revision-mismatch';\n}\n\nexport function detectEditorSceneRuntimeInputDrift(\n document: Pick<EditorSceneDocument, 'meta'>,\n runtimeSceneConfig: unknown,\n): EditorSceneRuntimeInputDrift {\n const sourceRef = getEditorSceneAuthoringSourceRef(document);\n const generatedFrom = readGeneratedFrom(runtimeSceneConfig);\n const sourceRevision = sourceRef.revision ?? null;\n if (!generatedFrom) {\n return {\n detected: true,\n sourceId: sourceRef.sourceId,\n sourceType: sourceRef.sourceType,\n sourceRevision,\n generatedRevision: null,\n reason: 'missing-generated-from',\n };\n }\n const generatedRevision = typeof generatedFrom.revision === 'number' ? generatedFrom.revision : null;\n if (generatedFrom.sourceId !== sourceRef.sourceId || generatedFrom.sourceType !== sourceRef.sourceType) {\n return {\n detected: true,\n sourceId: sourceRef.sourceId,\n sourceType: sourceRef.sourceType,\n sourceRevision,\n generatedRevision,\n reason: 'source-mismatch',\n };\n }\n if (sourceRevision !== generatedRevision) {\n return {\n detected: true,\n sourceId: sourceRef.sourceId,\n sourceType: sourceRef.sourceType,\n sourceRevision,\n generatedRevision,\n reason: 'revision-mismatch',\n };\n }\n return {\n detected: false,\n sourceId: sourceRef.sourceId,\n sourceType: sourceRef.sourceType,\n sourceRevision,\n generatedRevision,\n };\n}\n\nfunction readGeneratedFrom(runtimeSceneConfig: unknown): AuthoringSourceRef | null {\n if (!runtimeSceneConfig || typeof runtimeSceneConfig !== 'object') return null;\n const meta = (runtimeSceneConfig as { meta?: unknown }).meta;\n if (!meta || typeof meta !== 'object') return null;\n const generatedFrom = (meta as { generatedFrom?: unknown }).generatedFrom;\n if (!generatedFrom || typeof generatedFrom !== 'object') return null;\n const sourceId = (generatedFrom as { sourceId?: unknown }).sourceId;\n const sourceType = (generatedFrom as { sourceType?: unknown }).sourceType;\n if (typeof sourceId !== 'string' || typeof sourceType !== 'string') return null;\n return {\n sourceId,\n sourceType: sourceType as AuthoringSourceRef['sourceType'],\n revision: typeof (generatedFrom as { revision?: unknown }).revision === 'number'\n ? (generatedFrom as { revision: number }).revision\n : undefined,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authoring/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authoring/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC","sourcesContent":["export * from './constants';\nexport * from './source';\nexport * from './drift';\nexport * from './runtime-transform-patch';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-transform-patch.js","sourceRoot":"","sources":["../../src/authoring/runtime-transform-patch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-transform-patch.js","sourceRoot":"","sources":["../../src/authoring/runtime-transform-patch.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAW5D,MAAM,UAAU,+CAA+C,CAI7D,KAAwE;IAExE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC;IAC3C,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,YAAY,CAAC,WAAW,KAAK,wBAAwB;QAAE,OAAO,IAAI,CAAC;IACvE,IAAI,OAAO,CAAC,QAAQ,KAAK,sBAAsB,IAAI,OAAO,CAAC,UAAU,KAAK,wBAAwB;QAAE,OAAO,IAAI,CAAC;IAChH,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAExG,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IACtC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1D,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,2BAA2B,YAAY,EAAE;QACtE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sDAAsD,CAGpE,QAAmB,EACnB,YAA0B;IAS1B,OAAO,+CAA+C,CAAC;QACrD,QAAQ;QACR,YAAY;QACZ,cAAc,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,EAAE,CAAC,CAChD,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,YAAY,CAAC,IAAI,IAAI,CAC5F;QACD,kBAAkB,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,KAAK,MAAM;QAC3D,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,uBAAuB;YAC7B,QAAQ;YACR,SAAS;SACV,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kCAAkC,CAAC,KAAc;IACxD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,SAAS,GAAG,KAA4C,CAAC;IAC/D,OAAO,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC;WACxC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC;WACtC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,SAAS,GAAG,KAAwD,CAAC;IAC3E,OAAO,OAAO,SAAS,CAAC,CAAC,KAAK,QAAQ;WACjC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;WAC5B,OAAO,SAAS,CAAC,CAAC,KAAK,QAAQ;WAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;WAC5B,OAAO,SAAS,CAAC,CAAC,KAAK,QAAQ;WAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import type {\n AuthoringSourceRef,\n EditorTransformTrsSnapshot,\n RuntimePatch,\n} from '@fps-games/editor-core';\nimport type { EditorSceneDocument } from '../document/index';\nimport {\n EDITOR_SCENE_SOURCE_ID,\n EDITOR_SCENE_SOURCE_TYPE,\n} from './constants';\nimport { getEditorSceneAuthoringSourceRef } from './source';\n\nexport interface EditorSceneTransformPatchFromRuntimePatchInput<TDocument, TPatch> {\n document: TDocument;\n runtimePatch: RuntimePatch;\n findGameObject: (document: TDocument, gameObjectId: string) => unknown | null;\n isRootGameObjectId?: (gameObjectId: string) => boolean;\n getSourceRef?: (document: TDocument) => AuthoringSourceRef;\n createPatch: (targetId: string, transform: EditorTransformTrsSnapshot) => TPatch;\n}\n\nexport function createEditorSceneTransformPatchFromRuntimePatch<\n TDocument extends Pick<EditorSceneDocument, 'meta'>,\n TPatch,\n>(\n input: EditorSceneTransformPatchFromRuntimePatchInput<TDocument, TPatch>,\n): { patch: TPatch; label: string } | null {\n const { document, runtimePatch } = input;\n const sourceRef = input.getSourceRef?.(document) ?? getEditorSceneAuthoringSourceRef(document);\n const binding = runtimePatch.sourceBinding;\n if (!runtimePatch.applyable || !binding) return null;\n if (runtimePatch.applyTarget !== EDITOR_SCENE_SOURCE_TYPE) return null;\n if (binding.sourceId !== EDITOR_SCENE_SOURCE_ID || binding.sourceType !== EDITOR_SCENE_SOURCE_TYPE) return null;\n if (binding.sourceId !== sourceRef.sourceId || binding.sourceType !== sourceRef.sourceType) return null;\n\n const gameObjectId = binding.objectId;\n if (!gameObjectId || !input.findGameObject(document, gameObjectId)) return null;\n if (input.isRootGameObjectId?.(gameObjectId)) return null;\n\n const after = runtimePatch.after;\n if (!isRuntimePatchTrsTransformSnapshot(after)) return null;\n return {\n label: runtimePatch.label ?? `Apply runtime transform ${gameObjectId}`,\n patch: input.createPatch(gameObjectId, after),\n };\n}\n\nexport function createDefaultEditorSceneTransformPatchFromRuntimePatch<\n TDocument extends EditorSceneDocument,\n>(\n document: TDocument,\n runtimePatch: RuntimePatch,\n): {\n patch: {\n kind: 'game-object.transform';\n targetId: string;\n transform: EditorTransformTrsSnapshot;\n };\n label: string;\n} | null {\n return createEditorSceneTransformPatchFromRuntimePatch({\n document,\n runtimePatch,\n findGameObject: (targetDocument, gameObjectId) => (\n targetDocument.scene.gameObjects.find(gameObject => gameObject.id === gameObjectId) ?? null\n ),\n isRootGameObjectId: gameObjectId => gameObjectId === 'root',\n createPatch: (targetId, transform) => ({\n kind: 'game-object.transform',\n targetId,\n transform,\n }),\n });\n}\n\nfunction isRuntimePatchTrsTransformSnapshot(value: unknown): value is EditorTransformTrsSnapshot {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as Partial<EditorTransformTrsSnapshot>;\n return isRuntimePatchVec3(candidate.position)\n && isRuntimePatchVec3(candidate.rotation)\n && isRuntimePatchVec3(candidate.scale);\n}\n\nfunction isRuntimePatchVec3(value: unknown): value is EditorTransformTrsSnapshot['position'] {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as Partial<EditorTransformTrsSnapshot['position']>;\n return typeof candidate.x === 'number'\n && Number.isFinite(candidate.x)\n && typeof candidate.y === 'number'\n && Number.isFinite(candidate.y)\n && typeof candidate.z === 'number'\n && Number.isFinite(candidate.z);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/authoring/source.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,gCAAgC,CAC9C,QAA2C;IAE3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAChD,OAAO;QACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,sBAAsB;QACtD,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,wBAAwB;QAC5D,QAAQ,EAAE,OAAO,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0CAA0C,CACxD,QAA2C,EAC3C,QAAiB;IAEjB,OAAO;QACL,GAAG,EAAE,gCAAgC,CAAC,QAAQ,CAAC;QAC/C,QAAQ;QACR,aAAa,EAAE,2BAA2B;QAC1C,YAAY,EAAE;YACZ,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;SACjB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,QAAmB;IAEnB,MAAM,GAAG,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,EAAE;YACJ,GAAG,QAAQ,CAAC,IAAI;YAChB,eAAe,EAAE;gBACf,QAAQ,EAAE,sBAAsB;gBAChC,UAAU,EAAE,wBAAwB;gBACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;aAC5B;SACF;KACW,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,QAAmB;IAEnB,MAAM,OAAO,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,EAAE;YACJ,GAAG,QAAQ,CAAC,IAAI;YAChB,eAAe,EAAE;gBACf,QAAQ,EAAE,sBAAsB;gBAChC,UAAU,EAAE,wBAAwB;gBACpC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;aACtC;SACF;KACW,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/authoring/source.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,gCAAgC,CAC9C,QAA2C;IAE3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAChD,OAAO;QACL,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,sBAAsB;QACtD,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,wBAAwB;QAC5D,QAAQ,EAAE,OAAO,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0CAA0C,CACxD,QAA2C,EAC3C,QAAiB;IAEjB,OAAO;QACL,GAAG,EAAE,gCAAgC,CAAC,QAAQ,CAAC;QAC/C,QAAQ;QACR,aAAa,EAAE,2BAA2B;QAC1C,YAAY,EAAE;YACZ,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;SACjB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,QAAmB;IAEnB,MAAM,GAAG,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,EAAE;YACJ,GAAG,QAAQ,CAAC,IAAI;YAChB,eAAe,EAAE;gBACf,QAAQ,EAAE,sBAAsB;gBAChC,UAAU,EAAE,wBAAwB;gBACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;aAC5B;SACF;KACW,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,QAAmB;IAEnB,MAAM,OAAO,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,EAAE;YACJ,GAAG,QAAQ,CAAC,IAAI;YAChB,eAAe,EAAE;gBACf,QAAQ,EAAE,sBAAsB;gBAChC,UAAU,EAAE,wBAAwB;gBACpC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;aACtC;SACF;KACW,CAAC;AACjB,CAAC","sourcesContent":["import type {\n AuthoringSourceDescriptor,\n AuthoringSourceRef,\n} from '@fps-games/editor-core';\nimport type { EditorSceneDocument } from '../document';\nimport {\n EDITOR_SCENE_SCHEMA_VERSION,\n EDITOR_SCENE_SOURCE_ID,\n EDITOR_SCENE_SOURCE_TYPE,\n} from './constants';\n\nexport function getEditorSceneAuthoringSourceRef(\n document: Pick<EditorSceneDocument, 'meta'>,\n): AuthoringSourceRef {\n const existing = document.meta?.authoringSource;\n return {\n sourceId: existing?.sourceId || EDITOR_SCENE_SOURCE_ID,\n sourceType: existing?.sourceType || EDITOR_SCENE_SOURCE_TYPE,\n revision: typeof existing?.revision === 'number' ? existing.revision : 1,\n };\n}\n\nexport function createEditorSceneAuthoringSourceDescriptor(\n document: Pick<EditorSceneDocument, 'meta'>,\n filePath?: string,\n): AuthoringSourceDescriptor {\n return {\n ref: getEditorSceneAuthoringSourceRef(document),\n filePath,\n schemaVersion: EDITOR_SCENE_SCHEMA_VERSION,\n capabilities: {\n editable: true,\n compilable: true,\n runtimeApply: true,\n aiWritable: true,\n },\n };\n}\n\nexport function ensureEditorSceneAuthoringSource<TDocument extends EditorSceneDocument>(\n document: TDocument,\n): TDocument {\n const ref = getEditorSceneAuthoringSourceRef(document);\n return {\n ...document,\n meta: {\n ...document.meta,\n authoringSource: {\n sourceId: EDITOR_SCENE_SOURCE_ID,\n sourceType: EDITOR_SCENE_SOURCE_TYPE,\n revision: ref.revision ?? 1,\n },\n },\n } as TDocument;\n}\n\nexport function bumpEditorSceneAuthoringSourceRevision<TDocument extends EditorSceneDocument>(\n document: TDocument,\n): TDocument {\n const current = getEditorSceneAuthoringSourceRef(document);\n return {\n ...document,\n meta: {\n ...document.meta,\n authoringSource: {\n sourceId: EDITOR_SCENE_SOURCE_ID,\n sourceType: EDITOR_SCENE_SOURCE_TYPE,\n revision: (current.revision ?? 0) + 1,\n },\n },\n } as TDocument;\n}\n"]}