@fps-games/editor 0.2.1-beta.3 → 0.2.1-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/dist/build-info.json +44 -44
  2. package/dist/editor-commands/capabilities/assets.d.ts +8 -0
  3. package/dist/editor-commands/capabilities/assets.d.ts.map +1 -0
  4. package/dist/{agent-bridge → editor-commands}/capabilities/assets.js +41 -41
  5. package/dist/editor-commands/capabilities/assets.js.map +1 -0
  6. package/dist/editor-commands/capabilities/editor-state.d.ts +5 -0
  7. package/dist/editor-commands/capabilities/editor-state.d.ts.map +1 -0
  8. package/dist/{agent-bridge → editor-commands}/capabilities/editor-state.js +22 -22
  9. package/dist/editor-commands/capabilities/editor-state.js.map +1 -0
  10. package/dist/editor-commands/capabilities/hierarchy.d.ts +4 -0
  11. package/dist/editor-commands/capabilities/hierarchy.d.ts.map +1 -0
  12. package/dist/{agent-bridge → editor-commands}/capabilities/hierarchy.js +5 -5
  13. package/dist/editor-commands/capabilities/hierarchy.js.map +1 -0
  14. package/dist/editor-commands/capabilities/host-lifecycle.d.ts +11 -0
  15. package/dist/editor-commands/capabilities/host-lifecycle.d.ts.map +1 -0
  16. package/dist/editor-commands/capabilities/host-lifecycle.js +149 -0
  17. package/dist/editor-commands/capabilities/host-lifecycle.js.map +1 -0
  18. package/dist/editor-commands/capabilities/prefabs.d.ts +5 -0
  19. package/dist/editor-commands/capabilities/prefabs.d.ts.map +1 -0
  20. package/dist/{agent-bridge → editor-commands}/capabilities/prefabs.js +93 -93
  21. package/dist/editor-commands/capabilities/prefabs.js.map +1 -0
  22. package/dist/editor-commands/capabilities/scene-objects.d.ts +8 -0
  23. package/dist/editor-commands/capabilities/scene-objects.d.ts.map +1 -0
  24. package/dist/editor-commands/capabilities/scene-objects.js +480 -0
  25. package/dist/editor-commands/capabilities/scene-objects.js.map +1 -0
  26. package/dist/editor-commands/capabilities/selection.d.ts +5 -0
  27. package/dist/editor-commands/capabilities/selection.d.ts.map +1 -0
  28. package/dist/editor-commands/capabilities/selection.js +60 -0
  29. package/dist/editor-commands/capabilities/selection.js.map +1 -0
  30. package/dist/editor-commands/capabilities/shadows.d.ts +5 -0
  31. package/dist/editor-commands/capabilities/shadows.d.ts.map +1 -0
  32. package/dist/{agent-bridge → editor-commands}/capabilities/shadows.js +74 -74
  33. package/dist/editor-commands/capabilities/shadows.js.map +1 -0
  34. package/dist/editor-commands/capabilities/transform.d.ts +5 -0
  35. package/dist/editor-commands/capabilities/transform.d.ts.map +1 -0
  36. package/dist/editor-commands/capabilities/transform.js +164 -0
  37. package/dist/editor-commands/capabilities/transform.js.map +1 -0
  38. package/dist/editor-commands/capabilities/ui-regions.d.ts +4 -0
  39. package/dist/editor-commands/capabilities/ui-regions.d.ts.map +1 -0
  40. package/dist/{agent-bridge → editor-commands}/capabilities/ui-regions.js +55 -57
  41. package/dist/editor-commands/capabilities/ui-regions.js.map +1 -0
  42. package/dist/editor-commands/capabilities/viewport.d.ts +5 -0
  43. package/dist/editor-commands/capabilities/viewport.d.ts.map +1 -0
  44. package/dist/{agent-bridge → editor-commands}/capabilities/viewport.js +100 -100
  45. package/dist/editor-commands/capabilities/viewport.js.map +1 -0
  46. package/dist/editor-commands/command-sources.d.ts +7 -0
  47. package/dist/editor-commands/command-sources.d.ts.map +1 -0
  48. package/dist/editor-commands/command-sources.js +34 -0
  49. package/dist/editor-commands/command-sources.js.map +1 -0
  50. package/dist/editor-commands/diagnostics.d.ts +12 -0
  51. package/dist/editor-commands/diagnostics.d.ts.map +1 -0
  52. package/dist/{agent-bridge → editor-commands}/diagnostics.js +4 -4
  53. package/dist/editor-commands/diagnostics.js.map +1 -0
  54. package/dist/{agent-bridge → editor-commands}/index.d.ts +1 -1
  55. package/dist/editor-commands/index.d.ts.map +1 -0
  56. package/dist/{agent-bridge → editor-commands}/index.js +1 -1
  57. package/dist/editor-commands/index.js.map +1 -0
  58. package/dist/editor-commands/register.d.ts +4 -0
  59. package/dist/editor-commands/register.d.ts.map +1 -0
  60. package/dist/{agent-bridge → editor-commands}/register.js +323 -286
  61. package/dist/editor-commands/register.js.map +1 -0
  62. package/dist/{agent-bridge → editor-commands}/shared.d.ts +80 -80
  63. package/dist/editor-commands/shared.d.ts.map +1 -0
  64. package/dist/{agent-bridge → editor-commands}/shared.js +29 -29
  65. package/dist/editor-commands/shared.js.map +1 -0
  66. package/dist/editor-commands/source-types.d.ts +110 -0
  67. package/dist/editor-commands/source-types.d.ts.map +1 -0
  68. package/dist/editor-commands/source-types.js.map +1 -0
  69. package/dist/editor-plugin-commands.d.ts +4 -0
  70. package/dist/editor-plugin-commands.d.ts.map +1 -0
  71. package/dist/editor-plugin-commands.js +18 -0
  72. package/dist/editor-plugin-commands.js.map +1 -0
  73. package/dist/index.d.ts +2 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/local-editor-commands.d.ts +2 -0
  78. package/dist/local-editor-commands.d.ts.map +1 -0
  79. package/dist/local-editor-commands.js +2 -0
  80. package/dist/local-editor-commands.js.map +1 -0
  81. package/dist/local-editor-harness.d.ts +35 -21
  82. package/dist/local-editor-harness.d.ts.map +1 -1
  83. package/dist/local-editor-harness.js +1721 -367
  84. package/dist/local-editor-harness.js.map +1 -1
  85. package/dist/local-editor-prefab-stage-transaction.d.ts +2 -1
  86. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -1
  87. package/dist/local-editor-prefab-stage-transaction.js +6 -5
  88. package/dist/local-editor-prefab-stage-transaction.js.map +1 -1
  89. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  90. package/dist/local-editor-scene-view-interaction-runtime.js +2 -5
  91. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  92. package/dist/playable-local-editor-entry.d.ts +10 -0
  93. package/dist/playable-local-editor-entry.d.ts.map +1 -1
  94. package/dist/playable-local-editor-entry.js +10 -2
  95. package/dist/playable-local-editor-entry.js.map +1 -1
  96. package/dist/playable-local-editor-host.d.ts +3 -32
  97. package/dist/playable-local-editor-host.d.ts.map +1 -1
  98. package/dist/playable-local-editor-host.js +6 -70
  99. package/dist/playable-local-editor-host.js.map +1 -1
  100. package/dist/playable-product-local-editor.d.ts +1 -2
  101. package/dist/playable-product-local-editor.d.ts.map +1 -1
  102. package/dist/playable-product-local-editor.js +0 -1
  103. package/dist/playable-product-local-editor.js.map +1 -1
  104. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  105. package/dist/playable-product-projection-preview.js +1 -1
  106. package/dist/playable-product-projection-preview.js.map +1 -1
  107. package/dist/playable-product-scene-capabilities.d.ts +0 -2
  108. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  109. package/dist/playable-product-scene-capabilities.js +33 -6
  110. package/dist/playable-product-scene-capabilities.js.map +1 -1
  111. package/dist/playable-runtime-babylon.d.ts +4 -0
  112. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  113. package/dist/playable-runtime-babylon.js +4 -0
  114. package/dist/playable-runtime-babylon.js.map +1 -1
  115. package/dist/playable-sdk.d.ts +1 -1
  116. package/dist/playable-sdk.d.ts.map +1 -1
  117. package/dist/playable-sdk.js.map +1 -1
  118. package/dist/playable-standard-project.d.ts +0 -2
  119. package/dist/playable-standard-project.d.ts.map +1 -1
  120. package/dist/playable-standard-project.js +1 -2
  121. package/dist/playable-standard-project.js.map +1 -1
  122. package/dist/project-service-projection.d.ts +16 -0
  123. package/dist/project-service-projection.d.ts.map +1 -0
  124. package/dist/project-service-projection.js +67 -0
  125. package/dist/project-service-projection.js.map +1 -0
  126. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +18 -0
  127. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  128. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +54 -18
  129. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  130. package/node_modules/@fps-games/babylon-renderer/package.json +9 -9
  131. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +1 -0
  132. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  133. package/node_modules/@fps-games/editor-babylon/dist/projection.js +1 -1
  134. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  135. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
  136. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +127 -13
  137. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
  138. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  139. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +66 -1
  140. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  141. package/node_modules/@fps-games/editor-babylon/package.json +6 -6
  142. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts +32 -0
  143. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts.map +1 -0
  144. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js +254 -0
  145. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js.map +1 -0
  146. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
  147. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  148. package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
  149. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  150. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts +68 -0
  151. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts.map +1 -0
  152. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js +650 -0
  153. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js.map +1 -0
  154. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +1 -0
  155. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -1
  156. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +22 -0
  157. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -1
  158. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +8 -0
  159. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  160. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +117 -6
  161. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  162. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +14 -1
  163. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  164. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +100 -1
  165. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  166. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +8 -1
  167. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  168. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +75 -2
  169. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  170. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +37 -12
  171. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  172. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  173. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +25 -2
  174. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  175. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +332 -107
  176. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  177. package/node_modules/@fps-games/editor-browser/package.json +7 -7
  178. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts +107 -0
  179. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts.map +1 -0
  180. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js +1211 -0
  181. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js.map +1 -0
  182. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts +34 -0
  183. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts.map +1 -0
  184. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js +260 -0
  185. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js.map +1 -0
  186. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts +9 -0
  187. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts.map +1 -0
  188. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js +14 -0
  189. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js.map +1 -0
  190. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts +18 -0
  191. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts.map +1 -0
  192. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js +113 -0
  193. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js.map +1 -0
  194. package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts +82 -0
  195. package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts.map +1 -0
  196. package/node_modules/@fps-games/editor-core/dist/editor-command-system.js +1098 -0
  197. package/node_modules/@fps-games/editor-core/dist/editor-command-system.js.map +1 -0
  198. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -7
  199. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  200. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +62 -103
  201. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  202. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts +30 -0
  203. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts.map +1 -0
  204. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js +540 -0
  205. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js.map +1 -0
  206. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts +9 -0
  207. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts.map +1 -0
  208. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js +61 -0
  209. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js.map +1 -0
  210. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +55 -0
  211. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  212. package/node_modules/@fps-games/editor-core/dist/editor-session.js +247 -6
  213. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  214. package/node_modules/@fps-games/editor-core/dist/index.d.ts +6 -2
  215. package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
  216. package/node_modules/@fps-games/editor-core/dist/index.js +6 -2
  217. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  218. package/node_modules/@fps-games/editor-core/package.json +6 -6
  219. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +0 -1
  220. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -1
  221. package/node_modules/@fps-games/editor-forge-play/dist/index.js +0 -1
  222. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
  223. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  224. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts +2 -0
  225. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
  226. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  227. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +41 -1
  228. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  229. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +27 -1
  230. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  231. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  232. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
  233. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  234. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +214 -7
  235. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  236. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +1 -0
  237. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  238. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +11 -3
  239. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  240. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -4
  241. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  242. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +0 -1
  243. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  244. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  245. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +77 -31
  246. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  247. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +8 -1
  248. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  249. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  250. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts +21 -1
  251. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts.map +1 -1
  252. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js +90 -4
  253. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
  254. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts +27 -1
  255. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
  256. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +161 -1
  257. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  258. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts +2 -2
  259. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts.map +1 -1
  260. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js +5 -92
  261. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
  262. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts +7 -0
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts.map +1 -1
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js +26 -9
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts +9 -0
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +19 -8
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts +5 -0
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts.map +1 -1
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js +16 -4
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +9 -0
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +12 -2
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts +2 -1
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts.map +1 -1
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js +10 -5
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +1 -0
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  286. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +17 -82
  287. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  288. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +53 -57
  289. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  290. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.d.ts.map +1 -1
  291. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js +3 -2
  292. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
  293. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts +10 -0
  294. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts.map +1 -0
  295. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js +256 -0
  296. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js.map +1 -0
  297. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  298. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +7 -5
  299. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  300. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  301. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +8 -0
  302. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  303. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +1 -0
  304. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  305. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  306. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +134 -12
  307. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  308. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  309. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +47 -0
  310. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  311. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts +27 -0
  312. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts.map +1 -0
  313. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js +592 -0
  314. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js.map +1 -0
  315. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -1
  316. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  317. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +2 -1
  318. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  319. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  320. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +61 -6
  321. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  322. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +0 -2
  323. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  324. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -10
  325. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  326. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  327. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +21 -0
  328. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  329. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts +13 -0
  330. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts.map +1 -0
  331. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js +18 -0
  332. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js.map +1 -0
  333. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts +28 -0
  334. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts.map +1 -0
  335. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js +863 -0
  336. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js.map +1 -0
  337. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +2 -0
  338. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  339. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  340. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  341. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts +1626 -0
  342. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts.map +1 -0
  343. package/node_modules/@fps-games/editor-protocol/dist/{agent-bridge.js → editor-command-capabilities.js} +766 -620
  344. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.js.map +1 -0
  345. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts +69 -0
  346. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts.map +1 -0
  347. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js +22 -0
  348. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js.map +1 -0
  349. package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts +136 -0
  350. package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts.map +1 -0
  351. package/node_modules/@fps-games/editor-protocol/dist/editor-command.js +2 -0
  352. package/node_modules/@fps-games/editor-protocol/dist/editor-command.js.map +1 -0
  353. package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts +225 -0
  354. package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts.map +1 -0
  355. package/node_modules/@fps-games/editor-protocol/dist/editor-service.js +4 -0
  356. package/node_modules/@fps-games/editor-protocol/dist/editor-service.js.map +1 -0
  357. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +6 -3
  358. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  359. package/node_modules/@fps-games/editor-protocol/dist/index.js +6 -3
  360. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  361. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  362. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  363. package/node_modules/@fps-games/editor-ui/package.json +1 -1
  364. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  365. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  366. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  367. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  368. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  369. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  370. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  371. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  372. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  373. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  374. package/node_modules/@fps-games/plugin-assets/package.json +6 -6
  375. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +1 -0
  376. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -1
  377. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +78 -4
  378. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -1
  379. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
  380. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
  381. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
  382. package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
  383. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  384. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  385. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  386. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  387. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  388. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  389. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  390. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  391. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  392. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  393. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  394. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  395. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  396. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  397. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  398. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  399. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  400. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
  401. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
  402. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
  403. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
  404. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  405. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  406. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  407. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  408. package/package.json +23 -23
  409. package/dist/agent-bridge/capabilities/assets.d.ts +0 -8
  410. package/dist/agent-bridge/capabilities/assets.d.ts.map +0 -1
  411. package/dist/agent-bridge/capabilities/assets.js.map +0 -1
  412. package/dist/agent-bridge/capabilities/editor-state.d.ts +0 -5
  413. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +0 -1
  414. package/dist/agent-bridge/capabilities/editor-state.js.map +0 -1
  415. package/dist/agent-bridge/capabilities/hierarchy.d.ts +0 -4
  416. package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +0 -1
  417. package/dist/agent-bridge/capabilities/hierarchy.js.map +0 -1
  418. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +0 -11
  419. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +0 -1
  420. package/dist/agent-bridge/capabilities/host-lifecycle.js +0 -149
  421. package/dist/agent-bridge/capabilities/host-lifecycle.js.map +0 -1
  422. package/dist/agent-bridge/capabilities/prefabs.d.ts +0 -5
  423. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +0 -1
  424. package/dist/agent-bridge/capabilities/prefabs.js.map +0 -1
  425. package/dist/agent-bridge/capabilities/scene-objects.d.ts +0 -8
  426. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +0 -1
  427. package/dist/agent-bridge/capabilities/scene-objects.js +0 -480
  428. package/dist/agent-bridge/capabilities/scene-objects.js.map +0 -1
  429. package/dist/agent-bridge/capabilities/selection.d.ts +0 -5
  430. package/dist/agent-bridge/capabilities/selection.d.ts.map +0 -1
  431. package/dist/agent-bridge/capabilities/selection.js +0 -60
  432. package/dist/agent-bridge/capabilities/selection.js.map +0 -1
  433. package/dist/agent-bridge/capabilities/shadows.d.ts +0 -5
  434. package/dist/agent-bridge/capabilities/shadows.d.ts.map +0 -1
  435. package/dist/agent-bridge/capabilities/shadows.js.map +0 -1
  436. package/dist/agent-bridge/capabilities/transform.d.ts +0 -5
  437. package/dist/agent-bridge/capabilities/transform.d.ts.map +0 -1
  438. package/dist/agent-bridge/capabilities/transform.js +0 -164
  439. package/dist/agent-bridge/capabilities/transform.js.map +0 -1
  440. package/dist/agent-bridge/capabilities/ui-regions.d.ts +0 -4
  441. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +0 -1
  442. package/dist/agent-bridge/capabilities/ui-regions.js.map +0 -1
  443. package/dist/agent-bridge/capabilities/viewport.d.ts +0 -5
  444. package/dist/agent-bridge/capabilities/viewport.d.ts.map +0 -1
  445. package/dist/agent-bridge/capabilities/viewport.js.map +0 -1
  446. package/dist/agent-bridge/capability-sources.d.ts +0 -7
  447. package/dist/agent-bridge/capability-sources.d.ts.map +0 -1
  448. package/dist/agent-bridge/capability-sources.js +0 -34
  449. package/dist/agent-bridge/capability-sources.js.map +0 -1
  450. package/dist/agent-bridge/diagnostics.d.ts +0 -12
  451. package/dist/agent-bridge/diagnostics.d.ts.map +0 -1
  452. package/dist/agent-bridge/diagnostics.js.map +0 -1
  453. package/dist/agent-bridge/index.d.ts.map +0 -1
  454. package/dist/agent-bridge/index.js.map +0 -1
  455. package/dist/agent-bridge/register.d.ts +0 -4
  456. package/dist/agent-bridge/register.d.ts.map +0 -1
  457. package/dist/agent-bridge/register.js.map +0 -1
  458. package/dist/agent-bridge/shared.d.ts.map +0 -1
  459. package/dist/agent-bridge/shared.js.map +0 -1
  460. package/dist/agent-bridge/source-types.d.ts +0 -110
  461. package/dist/agent-bridge/source-types.d.ts.map +0 -1
  462. package/dist/agent-bridge/source-types.js.map +0 -1
  463. package/dist/editor-plugin-agent-capabilities.d.ts +0 -4
  464. package/dist/editor-plugin-agent-capabilities.d.ts.map +0 -1
  465. package/dist/editor-plugin-agent-capabilities.js +0 -64
  466. package/dist/editor-plugin-agent-capabilities.js.map +0 -1
  467. package/dist/local-editor-agent-actions.d.ts +0 -43
  468. package/dist/local-editor-agent-actions.d.ts.map +0 -1
  469. package/dist/local-editor-agent-actions.js +0 -321
  470. package/dist/local-editor-agent-actions.js.map +0 -1
  471. package/dist/local-editor-agent-bridge-transport.d.ts +0 -129
  472. package/dist/local-editor-agent-bridge-transport.d.ts.map +0 -1
  473. package/dist/local-editor-agent-bridge-transport.js +0 -403
  474. package/dist/local-editor-agent-bridge-transport.js.map +0 -1
  475. package/dist/local-editor-agent-bridge.d.ts +0 -2
  476. package/dist/local-editor-agent-bridge.d.ts.map +0 -1
  477. package/dist/local-editor-agent-bridge.js +0 -2
  478. package/dist/local-editor-agent-bridge.js.map +0 -1
  479. package/dist/local-editor-agent-context.d.ts +0 -68
  480. package/dist/local-editor-agent-context.d.ts.map +0 -1
  481. package/dist/local-editor-agent-context.js +0 -716
  482. package/dist/local-editor-agent-context.js.map +0 -1
  483. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +0 -22
  484. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +0 -1
  485. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +0 -106
  486. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +0 -1
  487. package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts +0 -17
  488. package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts.map +0 -1
  489. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js +0 -14
  490. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +0 -1
  491. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts +0 -23
  492. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts.map +0 -1
  493. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js +0 -47
  494. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +0 -1
  495. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts +0 -112
  496. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts.map +0 -1
  497. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js +0 -159
  498. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +0 -1
  499. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts +0 -15
  500. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts.map +0 -1
  501. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js +0 -76
  502. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +0 -1
  503. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +0 -1622
  504. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +0 -1
  505. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +0 -1
  506. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +0 -68
  507. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +0 -1
  508. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +0 -23
  509. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +0 -1
  510. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +0 -187
  511. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +0 -1
  512. package/node_modules/@fps-games/editor-protocol/dist/agent.js +0 -5
  513. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +0 -1
  514. /package/dist/{agent-bridge → editor-commands}/source-types.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"standard-scene-assembly.js","sourceRoot":"","sources":["../../src/product/standard-scene-assembly.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n DocumentCommand,\n InspectorObject,\n InspectorProperty,\n InspectorSection,\n InspectorValidationResult,\n SceneGraphTreeItem,\n EditorCoreMarkerGraphCommand,\n EditorSceneFieldSchemaEntry,\n} from '@fps-games/editor-core';\nimport {\n getEditorSceneMarkerTypeCatalogFromGraph,\n} from '@fps-games/editor-core';\nimport type {\n EditorDiagnostic,\n EditorDiagnosticLocator,\n SpatialMarkerGraph,\n SpatialMarkerTypeDefinition,\n SpatialRelationTypeDefinition,\n} from '@fps-games/editor-protocol';\nimport {\n addEditorSceneMaterialAsset,\n addEditorSceneMaterialAssetAndBind,\n assertEditorSceneMaterialAssetIntegrity,\n collectEditorSceneMaterialAssetBindingIds,\n createArtistMaterialInspectorSections,\n createEditorSceneAssetMeshInspectorSections,\n createEditorSceneMaterialBrowserAssetItems,\n deleteDefaultEditorSceneMaterialAsset,\n ensureDefaultEditorSceneMaterialAssets,\n ensureImportedEditorSceneMaterialDefaults,\n findEditorSceneMaterialAsset,\n formatEditorSceneMaterialSlotLabel,\n getArtistMaterialInspectorText,\n hasEditorSceneMaterialAsset,\n isEditorSceneArtistMaterialPatchPath,\n isEditorSceneMaterialBindingPath,\n normalizeEditorSceneMaterialAssetValue,\n parseEditorSceneDuplicateMaterialAssetValue,\n parseEditorSceneMaterialAssetFieldPath,\n readArtistMaterialInspectorLanguage,\n reconcileEditorSceneMaterialSlotReimportBindings,\n validateEditorSceneMaterialAssetFieldValue,\n type ArtistMaterialInspectorText,\n type EditorSceneAssetMeshSelectionTarget,\n type MaterialInspectorServices,\n collectEditorSceneChildMaterialSlots,\n createEditorSceneAssetMeshSelectionId,\n createTexturePickerControlOptions,\n findEditorSceneInspectorTextureAssetFromContext,\n getEditorSceneSlotSelectionKey,\n resolveEditorSceneAssetMeshSelectionTarget,\n isEditorSceneAssetMeshWritablePath,\n patchEditorSceneMaterialAssetField,\n} from '../material-binding/index';\nimport {\n addEditorScenePrefabAsset,\n addEditorSceneMaterialAssetAndBindPrefabOverride,\n createEditorScenePrefabBrowserAssetItems,\n resolveEditorScenePrefabInstanceMarkers,\n resolveEditorScenePrefabStageMarkers,\n createEditorScenePrefabStageInspectorObject,\n createPrefabInstanceInspectorSection,\n normalizeEditorScenePrefabAssetFieldValue,\n normalizeEditorScenePrimitiveShape,\n patchEditorScenePrefabAssetField,\n replaceEditorScenePrefabAsset,\n validateEditorScenePrefabAssetFieldValue,\n type EditorScenePrefabStageInspectorContext,\n type PrefabStageInspectorServices,\n} from '../prefab-stage/index';\nimport {\n createPlayableEditorSceneMarkerGraphFacade,\n isEditorSceneMarkerGameObject,\n type PlayableEditorSceneMarkerGraphFacade,\n} from '../marker-scene/index';\nimport {\n createPlayableEditorSceneHierarchyFacade,\n createPlayableEditorSceneFieldMutationOptions,\n createPlayableEditorSceneObjectCommandFacade,\n collectEditorSceneSubtreeIdList,\n createEditorSceneGameObjectGuid,\n createUniqueEditorSceneGameObjectId,\n ensureEditorSceneGameObjectGuids,\n findEditorSceneGameObject,\n isEditorSceneCameraGameObject as isCameraGameObject,\n isEditorSceneLightGameObject as isLightGameObject,\n isEditorSceneProtectedSystemGameObject as isProtectedSystemGameObject,\n isEditorSceneProtectedSystemGameObjectId as isProtectedSystemGameObjectId,\n isEditorSceneRootTransformPath,\n isEditorSceneSelectableHierarchyId,\n normalizeEditorSceneRootTransformDocument,\n resolveEditorSceneRootContainerId,\n toEditorSceneLocalTransformForParent,\n type PlayableEditorSceneObjectCommandServices,\n} from '../session/index';\nimport {\n createEditorSceneDocumentInspectorProperty,\n createEditorSceneDocumentInspectorSections,\n createPlayableEditorSceneInspectorMultiObject,\n createPlayableEditorSceneInspectorObject,\n createPlayableEditorSceneInspectorSections,\n createPlayableEditorSceneMarkerInspectorSection,\n createPlayableEditorSceneOutlineInspectorSection,\n createEditorSceneCameraInspectorSection,\n createEditorSceneLightInspectorSections,\n createEditorScenePlayableFieldInspectorExtraValidator,\n createEditorSceneRuntimeInspectorSectionsForDocument,\n createEditorSceneRuntimeInspectorSnapshot,\n normalizeEditorScenePlayableInspectorValue,\n validateEditorSceneFieldInspectorValue,\n type EditorSceneFieldInspectorExtraValidator,\n type EditorSceneRuntimeDocumentInspectorServices,\n type EditorSceneRuntimeInspectorSnapshot,\n} from '../inspector/index';\nimport {\n} from '../serialized-property/index';\nimport {\n createPlayableEditorSceneInspectorPropertyPatch,\n patchPlayableEditorSceneGameObjectFieldWithServices,\n patchPlayableEditorSceneGameObjectsFieldWithServices,\n type PlayableEditorSceneInspectorPropertyPatchResult,\n type PlayableEditorScenePropertyPatchServices,\n} from '../session/property-patches';\nimport { createFpsGameEditorDeclarativeGroundDecalSceneFeature } from './ground-decal-scene-feature';\nimport {\n createPlayableEditorSceneSessionFacade,\n type PlayableEditorSceneSessionFacade,\n} from './scene-session';\nimport {\n ensurePlayableEditorSceneEnvironmentDefaultsCore,\n patchPlayableEditorSceneDirectionalLightAngleField,\n isBlockedPlayableEditorSceneSystemFieldPatch,\n reducePlayableEditorSceneDocumentCore,\n type PlayableEditorSceneFieldMutationServices,\n type PlayableEditorSceneReducerCoreServices,\n type PlayableEditorSceneReducerSystemDefaultServices,\n} from '../session/reducer-core';\nimport {\n DEFAULT_EDITOR_SCENE_CAMERA,\n DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT,\n DEFAULT_EDITOR_SCENE_SUN_LIGHT,\n createDefaultEditorSceneCameraGameObject,\n createDefaultEditorSceneEnvironmentLightGameObject,\n createDefaultEditorSceneSunLightGameObject,\n createEditorSceneIdentityTransformComponent,\n hasInvalidEditorSceneCameraRelationships,\n mergeEditorSceneCameraDefaults,\n mergeEditorSceneLightDefaults,\n normalizeEditorSceneCameraAfterFieldPatch,\n normalizeEditorSceneCameraGameObject,\n normalizeEditorScenePlainTransformGameObject,\n normalizeEditorSceneSystemLightGameObject,\n} from '../session/system-defaults';\nimport {\n createEditorSceneReadonlyInspectorProperty,\n} from '../inspector/readonly';\nimport {\n getEditorSceneAuthoringSourceRef,\n} from '../authoring/source';\nimport {\n isEditorSceneLightDirectionAnglePath,\n} from '../inspector/light-fields';\nimport {\n EDITOR_SCENE_ROOT_TRANSFORM,\n type PlayableEditorSceneDocumentPatch,\n} from '../session/index';\nimport {\n type EditorSceneAsset,\n type EditorSceneAssetLibraryItem,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n type EditorSceneNodeKind,\n readEditorSceneNodeKind,\n} from '../document/index';\ntype PlayableLocalEditorMarkerGraphCommand = EditorCoreMarkerGraphCommand;\n\nexport interface FpsGameEditorStandardSceneFeatureContribution<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n> {\n normalizeInspectorValue?: (path: string, value: unknown) => unknown;\n validateInspectorField?: (input: {\n document: TDocument | null;\n gameObject: TGameObject | null;\n path: string;\n value: unknown;\n }) => InspectorValidationResult | null;\n isInspectorPatchPath?: (path: string) => boolean;\n isProjectionPath?: (path: string) => boolean;\n normalizeDocumentAfterCommand?: (document: TDocument, command: DocumentCommand<TDocument, TPatch>) => TDocument;\n normalizeAfterFieldPatch?: (document: TDocument, targetId: string, path: string, value: unknown) => TDocument;\n fieldMutation?: Partial<Pick<\n PlayableEditorSceneFieldMutationServices<TDocument, TGameObject>,\n 'isCustomTransformType' | 'applyCustomTransformType' | 'clearCustomTransformState' | 'patchCustomTransformField'\n >>;\n createInspectorPropertyPatch?: (input: {\n document: TDocument;\n gameObject: TGameObject;\n path: string;\n value: unknown;\n collectChangedIds: () => string[];\n }) => PlayableEditorSceneInspectorPropertyPatchResult<TPatch> | null;\n patchGameObjectField?: (input: {\n document: TDocument;\n targetId: string;\n path: string;\n value: unknown;\n }) => TDocument | null;\n patchGameObjectsField?: (input: {\n document: TDocument;\n targetIds: readonly string[];\n path: string;\n value: unknown;\n patchSingle: (document: TDocument, targetId: string, path: string, value: unknown) => TDocument;\n }) => TDocument | null;\n reducePatch?: (input: {\n document: TDocument;\n patch: Record<string, unknown>;\n command: DocumentCommand<TDocument, TPatch>;\n }) => TDocument | null;\n createHierarchyPatch?: (document: TDocument, featureId: string) => FpsGameEditorStandardScenePatchResult<TPatch> | null;\n createInspectorSections?: (input: {\n document: TDocument;\n gameObject: TGameObject;\n nodeKind: EditorSceneNodeKind;\n context: TContext;\n createDocumentInspectorProperty: FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, EditorSceneAssetLibraryItem, TContext>['createDocumentInspectorProperty'];\n }) => Array<InspectorSection<TDocument> | null | undefined>;\n createMultiInspectorSection?: (input: {\n document: TDocument;\n targetIds: string[];\n activeId: string | null;\n context: TContext;\n }) => InspectorSection<TDocument> | null;\n resolveMultiInspectorTargetIds?: (document: TDocument, targetIds: readonly string[]) => string[];\n isSerializedMultiFieldPath?: (path: string) => boolean;\n isSerializedMultiProjectionPath?: (path: string) => boolean;\n getSerializedMultiProbeValue?: (path: string) => unknown;\n canPatchSerializedMultiField?: (input: {\n document: TDocument;\n targetId: string;\n path: string;\n value: unknown;\n }) => boolean;\n}\n\nexport interface FpsGameEditorStandardSceneAssemblyOptions<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TAssetItem extends EditorSceneAssetLibraryItem,\n TContext extends { textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[] } = {\n textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[];\n },\n> {\n markerTypes: readonly SpatialMarkerTypeDefinition[];\n relationTypes: readonly SpatialRelationTypeDefinition[];\n formatMarkerTypeLabel?: (type: string, fallback: string) => string;\n getRenderingProfile: () => { shadows: { defaultMode: string } };\n resolveFieldSchema?: (path: string, nodeKind: EditorSceneNodeKind) => EditorSceneFieldSchemaEntry | null;\n features?: readonly { id: string; config: unknown; scene?: unknown }[];\n resolveFeatureSceneContribution?: (\n feature: { id: string; config: unknown; scene?: unknown },\n ) => FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext> | null;\n createPatch: {\n gameObjectField(targetId: string, path: string, value: unknown): TPatch;\n gameObjectFieldBatch(fields: Array<{ targetId: string; path: string; value: unknown }>): TPatch;\n materialAssetField(materialAssetId: string, path: string, value: unknown): TPatch;\n markerGraph(command: PlayableLocalEditorMarkerGraphCommand): TPatch;\n };\n clearFeatureStateFromSystemObject?: (next: TGameObject, original: TGameObject) => TGameObject;\n}\n\nexport interface FpsGameEditorStandardScenePatchResult<TPatch> {\n patch: TPatch;\n label: string;\n changedId?: string;\n changedIds: string[];\n reprojectIds?: string[];\n createdId?: string;\n selectId?: string | null;\n}\n\nexport function resolveFpsGameEditorFeatureSceneContribution<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n>(\n feature: { id: string; config: unknown; scene?: unknown },\n getDocumentInspectorPropertyFactory?: () => unknown,\n): FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext> | null {\n if (!feature.scene || typeof feature.scene !== 'object' || Array.isArray(feature.scene)) return null;\n const descriptor = feature.scene as { kind?: unknown; contribution?: unknown };\n if (descriptor.kind !== feature.id) return null;\n const direct = readDirectStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>(descriptor.contribution);\n if (direct) return direct;\n return getDocumentInspectorPropertyFactory\n ? createFpsGameEditorDeclarativeGroundDecalSceneFeature<TPatch>(feature as any, getDocumentInspectorPropertyFactory) as any\n : null;\n}\n\nexport interface FpsGameEditorStandardSceneAssembly<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TAssetItem extends EditorSceneAssetLibraryItem,\n TContext,\n> {\n defaults: {\n camera: typeof DEFAULT_EDITOR_SCENE_CAMERA;\n sunLight: typeof DEFAULT_EDITOR_SCENE_SUN_LIGHT;\n environmentLight: typeof DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT;\n };\n reduceDocument(document: TDocument, command: DocumentCommand<TDocument, TPatch>): TDocument;\n ensureEnvironmentDefaults(document: TDocument): TDocument;\n isSelectableHierarchyId(document: TDocument, id: string): boolean;\n resolveDiagnosticLocator(document: TDocument, diagnostic: EditorDiagnostic): EditorDiagnosticLocator | null;\n getHierarchyItems: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['getHierarchyItems'];\n normalizeHierarchyDocument: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['normalizeHierarchyDocument'];\n createRenamePatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createRenamePatch'];\n createCreateGroupPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createCreateGroupPatch'];\n createCreatePrimitivePatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createCreatePrimitivePatch'];\n createDeleteSubtreePatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createDeleteSubtreePatch'];\n createReparentPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createReparentPatch'];\n createHierarchyMovePatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createHierarchyMovePatch'];\n createGroupSelectionPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createGroupSelectionPatch'];\n createDuplicateSelectionPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createDuplicateSelectionPatch'];\n createPlacedAssetPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createPlacedAssetPatch'];\n validateReparent: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['validateReparent'];\n validateHierarchyMove: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['validateHierarchyMove'];\n validateGroupSelection: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['validateGroupSelection'];\n collectSubtreeIds(document: TDocument, rootIds: string[]): string[];\n createFeatureHierarchyPatch(document: TDocument, featureId: string): FpsGameEditorStandardScenePatchResult<TPatch> | null;\n createInspectorPropertyPatch(input: { document: TDocument; targetId: string; path: string; value: unknown }): PlayableEditorSceneInspectorPropertyPatchResult<TPatch> | null;\n patchGameObjectField(document: TDocument, targetId: string, path: string, value: unknown): TDocument;\n patchGameObjectsField(document: TDocument, targetIds: readonly string[], path: string, value: unknown): TDocument;\n canCreateSerializedMultiPropertyPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['canCreateSerializedMultiPropertyPatch'];\n createSerializedMultiPropertyPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createSerializedMultiPropertyPatch'];\n createBrowserAssetItems: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createBrowserAssetItems'];\n addAssetLibraryItemToDocument: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['addAssetLibraryItemToDocument'];\n getInspectorObject(document: TDocument, targetId: string, context?: TContext): InspectorObject<TDocument> | null;\n getInspectorMultiObject(document: TDocument, targetIds: string[], activeId: string | null, context?: TContext): InspectorObject<TDocument> | null;\n getPrefabStageInspectorObject(document: TDocument, descriptor: { assetId: string; label: string; sourceAssetId?: string }, selectedItemId: string | null, context?: TContext & EditorScenePrefabStageInspectorContext): InspectorObject<TDocument> | null;\n getRuntimeInspectorSections(context: { document: TDocument; targetIds?: string[]; activeId: string | null; projectionNode?: unknown | null; projectedRoot?: unknown }): InspectorSection<TDocument>[];\n createRuntimeInspectorSnapshot(context: { projectionNode?: unknown | null; projectedRoot?: unknown }): EditorSceneRuntimeInspectorSnapshot;\n createDocumentInspectorProperty(document: TDocument | null, nodeKind: EditorSceneNodeKind, property: Omit<InspectorProperty<TDocument>, 'readOnly' | 'persistence' | 'validate'>): InspectorProperty<TDocument>;\n getMarkerGraph(document: TDocument): SpatialMarkerGraph;\n getMarkerTypeCatalog(document?: TDocument): SpatialMarkerTypeDefinition[];\n getPrefabInstanceMarkerOverlays(document: TDocument): ReturnType<typeof resolveEditorScenePrefabInstanceMarkers>;\n getPrefabStageMarkerOverlays(document: TDocument, prefabAssetId: string, previewInstanceId: string): ReturnType<typeof resolveEditorScenePrefabStageMarkers>;\n getRelationTypeCatalog(): SpatialRelationTypeDefinition[];\n createMarkerGraphPatch(document: TDocument, command: PlayableLocalEditorMarkerGraphCommand): FpsGameEditorStandardScenePatchResult<TPatch> | null;\n reduceMarkerGraphPatch(document: TDocument, command: PlayableLocalEditorMarkerGraphCommand): TDocument;\n syncMarkerGraphDocument(document: TDocument): TDocument;\n resolveMarkerKind(document: TDocument, markerType: string, authoredKind?: string): string;\n assertMaterialAssetIntegrity: typeof assertEditorSceneMaterialAssetIntegrity;\n}\n\nexport function createFpsGameEditorStandardSceneAssembly<\n TDocument extends EditorSceneDocument<TGameObject, TAsset>,\n TGameObject extends EditorSceneGameObject,\n TPatch extends PlayableEditorSceneDocumentPatch<any, any, any, any, any, any>,\n TAssetItem extends EditorSceneAssetLibraryItem,\n TAsset extends EditorSceneAsset = TDocument['assets'][number],\n TContext extends { textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[] } = {\n textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[];\n },\n>(options: FpsGameEditorStandardSceneAssemblyOptions<TDocument, TGameObject, TPatch, TAssetItem, TContext>): FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, TAssetItem, TContext> {\n const featureContributions = (options.features ?? []).flatMap((configuredFeature) => {\n const resolved = options.resolveFeatureSceneContribution?.(configuredFeature)\n ?? resolveFpsGameEditorFeatureSceneContribution<TDocument, TGameObject, TPatch, TContext>(\n configuredFeature,\n () => createDocumentInspectorProperty,\n )\n ?? readDirectStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>(configuredFeature.scene);\n return resolved ? [resolved] : [];\n });\n const feature = composeStandardSceneFeatureContributions(featureContributions);\n const markerFacade = createPlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>({\n options: { builtInMarkerTypes: options.markerTypes },\n createPatch: options.createPatch.markerGraph,\n getMarkerTypeCatalogFromGraph: graph => mergeMarkerTypeCatalog(options.markerTypes, graph),\n });\n const findGameObject = (document: TDocument, id: string | null | undefined): TGameObject | null => (\n id ? (findEditorSceneGameObject(document, id) as TGameObject | null) : null\n );\n const extraValidators = (): ReadonlyArray<EditorSceneFieldInspectorExtraValidator<TDocument, EditorSceneNodeKind>> => [\n input => feature?.validateInspectorField?.({\n document: input.document ?? null,\n gameObject: input.document\n ? findGameObject(input.document, (input as { targetId?: string }).targetId)\n : null,\n path: input.path,\n value: input.value,\n }) ?? null,\n input => validateProjectFieldSchema(\n options.resolveFieldSchema?.(input.path, input.nodeKind) ?? null,\n input.path,\n input.value,\n ),\n createEditorScenePlayableFieldInspectorExtraValidator<TDocument, TGameObject>({\n hasMaterialAsset: hasEditorSceneMaterialAsset as any,\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n isDirectionalLightAnglePath: isEditorSceneLightDirectionAnglePath,\n }),\n ];\n const normalizeValue = (path: string, value: unknown): unknown => (\n feature?.normalizeInspectorValue?.(path, value)\n ?? normalizeEditorScenePlayableInspectorValue(path, value, { isDirectionalLightAnglePath: isEditorSceneLightDirectionAnglePath })\n );\n const validateValue = (document: TDocument, gameObject: TGameObject, path: string, value: unknown): InspectorValidationResult => {\n if (isEditorSceneLightDirectionAnglePath(path) && gameObject.light?.type !== 'directional') {\n return { ok: false, message: `Unsupported scene node field: ${path}.` };\n }\n const custom = feature?.validateInspectorField?.({ document, gameObject, path, value });\n if (custom) return custom;\n return validateEditorSceneFieldInspectorValue({\n document,\n path,\n nodeKind: readNodeKind(gameObject),\n value,\n extraValidators: extraValidators(),\n });\n };\n const createDocumentInspectorProperty = (\n document: TDocument | null,\n nodeKind: EditorSceneNodeKind,\n property: Omit<InspectorProperty<TDocument>, 'readOnly' | 'persistence' | 'validate'>,\n ): InspectorProperty<TDocument> => createEditorSceneDocumentInspectorProperty({\n document,\n nodeKind,\n property,\n extraValidators: extraValidators(),\n });\n const systemDefaults = createSystemDefaultServices<TGameObject>(options.clearFeatureStateFromSystemObject);\n const fieldMutationServices: PlayableEditorSceneFieldMutationServices<TDocument, TGameObject> = {\n systemDefaults,\n normalizeFieldValue: normalizeValue,\n validateField: validateValue,\n normalizePrimitiveShape: normalizeEditorScenePrimitiveShape,\n findGameObject,\n isCameraGameObject: isCameraGameObject as any,\n isLightGameObject: isLightGameObject as any,\n isProtectedSystemGameObject: isProtectedSystemGameObject as any,\n hasCamera: (document, exceptId) => document.scene.gameObjects.some((object: TGameObject) => object.id !== exceptId && isCameraGameObject(object)),\n ...feature?.fieldMutation,\n };\n const propertyPatchServices = createPropertyPatchServices(options, markerFacade, fieldMutationServices, findGameObject, normalizeValue, validateValue, feature);\n const patchGameObjectField = (document: TDocument, targetId: string, path: string, value: unknown): TDocument => (\n patchPlayableEditorSceneGameObjectFieldWithServices(document, targetId, path, value, propertyPatchServices as any)\n );\n const patchGameObjectsField = (document: TDocument, targetIds: readonly string[], path: string, value: unknown): TDocument => (\n patchPlayableEditorSceneGameObjectsFieldWithServices(document, targetIds, path, value, propertyPatchServices as any)\n );\n const reducerServices = createReducerServices(options, markerFacade, fieldMutationServices, patchGameObjectField, patchGameObjectsField, feature);\n const hierarchyFacade = createHierarchyFacade<TDocument, TGameObject, TPatch>(markerFacade);\n const objectCommandServices: PlayableEditorSceneObjectCommandServices<TDocument, TGameObject, TPatch> = {\n isRootTransformPath: isEditorSceneRootTransformPath,\n validateSerializedPropertyField: input => validateValue(input.document, input.gameObject as TGameObject, input.path, input.value),\n findGameObject,\n isCameraGameObject: isCameraGameObject as any,\n isLightGameObject: isLightGameObject as any,\n isSerializedMultiFieldPath: path => isStandardSerializedMultiFieldPath(path, feature),\n isSerializedMultiProjectionPath: path => isStandardSerializedMultiProjectionPath(path, feature),\n getSerializedMultiPropertyProbeValue: path => getStandardSerializedMultiProbeValue(path, feature),\n canPatchCustomSerializedMultiField: input => feature?.canPatchSerializedMultiField?.(input) ?? true,\n createInspectorPropertyPatch: input => createPlayableEditorSceneInspectorPropertyPatch(input, propertyPatchServices as any),\n createFieldBatchPatch: options.createPatch.gameObjectFieldBatch,\n };\n const sessionFacade = createPlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>({\n hierarchyFacade,\n objectCommandServices,\n assetPlacementServices: {\n createGameObjectGuid: createEditorSceneGameObjectGuid,\n resolveLocalTransform: ({ document, parentId, worldTransform }) => toEditorSceneLocalTransformForParent(document, parentId ?? undefined, worldTransform),\n },\n });\n const runtimeInspectorServices: EditorSceneRuntimeDocumentInspectorServices<TDocument, TGameObject> = {\n findGameObject,\n hasModelRenderer: gameObject => !!gameObject.components?.some(component => component.type === 'ModelRenderer'),\n readNodeKind,\n };\n const assembly = {} as FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, TAssetItem, TContext>;\n Object.assign(assembly, {\n defaults: {\n camera: DEFAULT_EDITOR_SCENE_CAMERA,\n sunLight: DEFAULT_EDITOR_SCENE_SUN_LIGHT,\n environmentLight: DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT,\n },\n reduceDocument: (document: TDocument, command: DocumentCommand<TDocument, TPatch>) => reducePlayableEditorSceneDocumentCore(document, command, reducerServices),\n ensureEnvironmentDefaults: (document: TDocument) => ensurePlayableEditorSceneEnvironmentDefaultsCore(document, reducerServices),\n isSelectableHierarchyId: (document: TDocument, id: string) => isEditorSceneSelectableHierarchyId(document, id, { resolveAssetMeshSelectionTarget: resolveEditorSceneAssetMeshSelectionTarget as any }),\n resolveDiagnosticLocator: (document: TDocument, diagnostic: EditorDiagnostic): EditorDiagnosticLocator | null => {\n const locator = diagnostic.locator;\n if (!locator?.objectId || !locator.materialSlotId) return locator ?? null;\n const gameObject = findGameObject(document, locator.objectId);\n if (!gameObject) return locator;\n const slot = collectEditorSceneChildMaterialSlots(document as any, gameObject as any)\n .find(candidate => candidate.slotId === locator.materialSlotId);\n if (!slot) return locator;\n return {\n ...locator,\n rowId: createEditorSceneAssetMeshSelectionId(\n gameObject.id,\n getEditorSceneSlotSelectionKey(slot),\n ),\n path: `overrides.materialSlotBindings.${slot.slotId}.materialAssetId`,\n };\n },\n getHierarchyItems: sessionFacade.getHierarchyItems,\n normalizeHierarchyDocument: sessionFacade.normalizeHierarchyDocument,\n createRenamePatch: sessionFacade.createRenamePatch,\n createCreateGroupPatch: sessionFacade.createCreateGroupPatch,\n createCreatePrimitivePatch: sessionFacade.createCreatePrimitivePatch,\n createDeleteSubtreePatch: sessionFacade.createDeleteSubtreePatch,\n createReparentPatch: sessionFacade.createReparentPatch,\n createHierarchyMovePatch: sessionFacade.createHierarchyMovePatch,\n createGroupSelectionPatch: sessionFacade.createGroupSelectionPatch,\n createDuplicateSelectionPatch: sessionFacade.createDuplicateSelectionPatch,\n createPlacedAssetPatch: sessionFacade.createPlacedAssetPatch,\n validateReparent: sessionFacade.validateReparent,\n validateHierarchyMove: sessionFacade.validateHierarchyMove,\n validateGroupSelection: sessionFacade.validateGroupSelection,\n collectSubtreeIds: collectEditorSceneSubtreeIdList,\n createFeatureHierarchyPatch: (document: TDocument, featureId: string) => feature?.createHierarchyPatch?.(document, featureId) ?? null,\n createInspectorPropertyPatch: (input: { document: TDocument; targetId: string; path: string; value: unknown }) => createPlayableEditorSceneInspectorPropertyPatch(input, propertyPatchServices as any),\n patchGameObjectField,\n patchGameObjectsField,\n canCreateSerializedMultiPropertyPatch: sessionFacade.canCreateSerializedMultiPropertyPatch,\n createSerializedMultiPropertyPatch: sessionFacade.createSerializedMultiPropertyPatch,\n createBrowserAssetItems: sessionFacade.createBrowserAssetItems,\n addAssetLibraryItemToDocument: sessionFacade.addAssetLibraryItemToDocument,\n getInspectorObject: (document: TDocument, targetId: string, context: TContext = {} as TContext) => createStandardInspectorObject(assembly, options, markerFacade, document, targetId, context, createDocumentInspectorProperty, findGameObject, extraValidators, feature),\n getInspectorMultiObject: (document: TDocument, targetIds: string[], activeId: string | null, context: TContext = {} as TContext) => createStandardMultiInspectorObject(document, targetIds, activeId, context, featureContributions),\n getPrefabStageInspectorObject: (document: TDocument, descriptor: { assetId: string; label: string; sourceAssetId?: string }, selectedItemId: string | null, context: TContext & EditorScenePrefabStageInspectorContext = {} as TContext & EditorScenePrefabStageInspectorContext) => createEditorScenePrefabStageInspectorObject(document, descriptor, selectedItemId, context, {\n createIdentityTransformComponent: createEditorSceneIdentityTransformComponent,\n mergeLightDefaults: mergeEditorSceneLightDefaults,\n defaultShadowMode: toPrefabShadowMode(options.getRenderingProfile().shadows.defaultMode),\n sunLightId: 'sun_light',\n normalizePrefabAssetFieldValue: normalizeEditorScenePrefabAssetFieldValue,\n validatePrefabAssetFieldValue: validateEditorScenePrefabAssetFieldValue,\n markerTypeCatalog: markerFacade.getMarkerTypeCatalog(document),\n } as PrefabStageInspectorServices) as InspectorObject<TDocument> | null,\n getRuntimeInspectorSections: (context: { document: TDocument; targetIds?: string[]; activeId: string | null; projectionNode?: unknown | null; projectedRoot?: unknown }) => createEditorSceneRuntimeInspectorSectionsForDocument({ ...context, sourceRef: getEditorSceneAuthoringSourceRef(context.document) }, runtimeInspectorServices),\n createRuntimeInspectorSnapshot: (context: { projectionNode?: unknown | null; projectedRoot?: unknown }) => createEditorSceneRuntimeInspectorSnapshot({ projectedRoot: context.projectedRoot, projectionNode: context.projectionNode ?? null }),\n createDocumentInspectorProperty,\n getMarkerGraph: markerFacade.getMarkerGraph,\n getMarkerTypeCatalog: markerFacade.getMarkerTypeCatalog,\n getPrefabInstanceMarkerOverlays: (document: TDocument) => resolveEditorScenePrefabInstanceMarkers(\n document,\n markerFacade.getMarkerTypeCatalog(document),\n ),\n getPrefabStageMarkerOverlays: (document: TDocument, prefabAssetId: string, previewInstanceId: string) => resolveEditorScenePrefabStageMarkers(\n document,\n prefabAssetId,\n previewInstanceId,\n markerFacade.getMarkerTypeCatalog(document),\n ),\n getRelationTypeCatalog: () => options.relationTypes.map(entry => structuredClone(entry)),\n createMarkerGraphPatch: markerFacade.createMarkerGraphPatch,\n reduceMarkerGraphPatch: markerFacade.reduceMarkerGraphPatch,\n syncMarkerGraphDocument: markerFacade.syncMarkerGraphDocument,\n resolveMarkerKind: markerFacade.resolveMarkerKind,\n assertMaterialAssetIntegrity: assertEditorSceneMaterialAssetIntegrity,\n });\n return assembly;\n}\n\nfunction createSystemDefaultServices<TGameObject extends EditorSceneGameObject>(\n clearFeatureState?: (next: TGameObject, original: TGameObject) => TGameObject,\n): PlayableEditorSceneReducerSystemDefaultServices<TGameObject> {\n const normalize = (base: (gameObject: EditorSceneGameObject) => EditorSceneGameObject) => (gameObject: TGameObject): TGameObject => {\n const next = base(gameObject) as TGameObject;\n return clearFeatureState?.(next, gameObject) ?? next;\n };\n return {\n environmentLightId: 'environment_light',\n sunLightId: 'sun_light',\n horizontalLightAnglePath: 'light.directionHorizontalAngleDeg',\n elevationLightAnglePath: 'light.directionElevationAngleDeg',\n normalizeEnvironmentLightGameObject: gameObject => normalize(value => normalizeEditorSceneSystemLightGameObject(value, 'hemispheric'))(gameObject),\n normalizeSunLightGameObject: gameObject => normalize(value => normalizeEditorSceneSystemLightGameObject(value, 'directional'))(gameObject),\n normalizeCameraGameObject: normalize(normalizeEditorSceneCameraGameObject),\n normalizePlainTransformGameObject: normalize(normalizeEditorScenePlainTransformGameObject),\n createDefaultCameraGameObject: createDefaultEditorSceneCameraGameObject as any,\n createDefaultEnvironmentLightGameObject: createDefaultEditorSceneEnvironmentLightGameObject as any,\n createDefaultSunLightGameObject: createDefaultEditorSceneSunLightGameObject as any,\n mergeCameraDefaults: mergeEditorSceneCameraDefaults as any,\n normalizeCameraAfterFieldPatch: normalizeEditorSceneCameraAfterFieldPatch as any,\n hasInvalidCameraRelationships: hasInvalidEditorSceneCameraRelationships as any,\n mergeLightDefaults: mergeEditorSceneLightDefaults as any,\n };\n}\n\nfunction createReducerServices<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch>(\n options: FpsGameEditorStandardSceneAssemblyOptions<TDocument, TGameObject, TPatch, any, any>,\n markerFacade: PlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>,\n fieldMutationServices: PlayableEditorSceneFieldMutationServices<TDocument, TGameObject>,\n patchGameObjectField: (document: TDocument, targetId: string, path: string, value: unknown) => TDocument,\n patchGameObjectsField: (document: TDocument, targetIds: readonly string[], path: string, value: unknown) => TDocument,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, any>,\n): PlayableEditorSceneReducerCoreServices<TDocument, TGameObject> {\n return {\n ...fieldMutationServices,\n normalizeRootTransformDocument: normalizeEditorSceneRootTransformDocument as any,\n syncMarkerGraphDocument: markerFacade.syncMarkerGraphDocument,\n ensureGameObjectGuids: ensureEditorSceneGameObjectGuids as any,\n normalizeDocumentAfterCommand: (document, command) => feature?.normalizeDocumentAfterCommand?.(document, command as DocumentCommand<TDocument, TPatch>) ?? document,\n patchMaterialAssetField: (document, id, path, value) => patchEditorSceneMaterialAssetField(document as any, id, path, value) as TDocument,\n addMaterialAsset: (document, asset) => addEditorSceneMaterialAsset(document as any, asset as any) as TDocument,\n deleteMaterialAsset: (document, id) => deleteDefaultEditorSceneMaterialAsset(document as any, id) as TDocument,\n addMaterialAssetAndBind: (document, targetId, path, asset) => addEditorSceneMaterialAssetAndBind(document as any, targetId, path, asset as any) as TDocument,\n addPrefabAsset: (document, prefab, source) => addEditorScenePrefabAsset(document as any, prefab as any, source as any) as TDocument,\n patchPrefabAssetField: (document, assetId, path, value) => patchEditorScenePrefabAssetField(document as any, assetId, path, value) as TDocument,\n replacePrefabAsset: (document, assetId, prefab, source) => replaceEditorScenePrefabAsset(document as any, assetId, prefab as any, source as any) as TDocument,\n addMaterialAssetAndBindPrefabOverride: (document, assetId, path, asset) => addEditorSceneMaterialAssetAndBindPrefabOverride(document as any, assetId, path, asset as any) as TDocument,\n patchGameObjectField,\n patchGameObjectsField,\n reduceExtensionPatch: ({ document, patch, command }) => {\n if (patch.kind === 'game-object.field-batch' && Array.isArray(patch.fields)) {\n return (patch.fields as Array<{ targetId: string; path: string; value: unknown }>).reduce(\n (next, field) => patchGameObjectsField(next, [field.targetId], field.path, field.value),\n document,\n );\n }\n return feature?.reducePatch?.({ document, patch, command: command as DocumentCommand<TDocument, TPatch> }) ?? null;\n },\n isCustomFieldPatchPath: feature?.isInspectorPatchPath,\n reduceMarkerGraphPatch: (document, command) => markerFacade.reduceMarkerGraphPatch(document, command as PlayableLocalEditorMarkerGraphCommand),\n isDirectionalLightAnglePath: isEditorSceneLightDirectionAnglePath,\n validateSerializedPropertyField: input => fieldMutationServices.validateField(input.document, input.gameObject as TGameObject, input.path, input.value),\n createGameObjectGuid: createEditorSceneGameObjectGuid,\n createUniqueId: createUniqueEditorSceneGameObjectId,\n resolveLocalTransform: ({ document, parentId, worldTransform }) => toEditorSceneLocalTransformForParent(document, parentId ?? undefined, worldTransform),\n resolveRootContainerId: resolveEditorSceneRootContainerId,\n ensureDefaultMaterialAssets: ensureDefaultEditorSceneMaterialAssets as any,\n reconcileMaterialSlotReimportBindings: reconcileEditorSceneMaterialSlotReimportBindings as any,\n ensureImportedMaterialDefaults: ensureImportedEditorSceneMaterialDefaults as any,\n };\n}\n\nfunction createPropertyPatchServices<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch>(\n options: FpsGameEditorStandardSceneAssemblyOptions<TDocument, TGameObject, TPatch, any, any>,\n markerFacade: PlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>,\n fieldMutationServices: PlayableEditorSceneFieldMutationServices<TDocument, TGameObject>,\n findGameObject: (document: TDocument, id: string | null | undefined) => TGameObject | null,\n normalizeValue: (path: string, value: unknown) => unknown,\n validateValue: (document: TDocument, gameObject: TGameObject, path: string, value: unknown) => InspectorValidationResult,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, any>,\n): PlayableEditorScenePropertyPatchServices<TDocument, TGameObject, TPatch, any> {\n return {\n fieldMutationOptions: createPlayableEditorSceneFieldMutationOptions(fieldMutationServices),\n findGameObject,\n normalizeValue,\n validateValue,\n blockFieldPatch: (document, targetId, path, value) => isBlockedPlayableEditorSceneSystemFieldPatch(document, targetId, path, value, fieldMutationServices),\n isRootTransformPath: isEditorSceneRootTransformPath,\n resolveAssetMeshSelectionTarget: resolveEditorSceneAssetMeshSelectionTarget as any,\n isAssetMeshWritablePath: isEditorSceneAssetMeshWritablePath,\n parseDuplicateMaterialAssetValue: parseEditorSceneDuplicateMaterialAssetValue,\n isMaterialBindingPath: isEditorSceneMaterialBindingPath,\n isMaterialBindingPathAllowed: (gameObject, path) => isEditorSceneMaterialBindingPath(path) && (!!options.resolveFieldSchema?.(path, readNodeKind(gameObject)) || path.startsWith('overrides.materialSlotBindings.')),\n findMaterialAssetName: (document, id) => findEditorSceneMaterialAsset(document as any, id)?.name ?? null,\n parseMaterialAssetFieldPath: parseEditorSceneMaterialAssetFieldPath,\n normalizeMaterialAssetValue: normalizeEditorSceneMaterialAssetValue,\n hasMaterialAsset: hasEditorSceneMaterialAsset as any,\n validateMaterialAssetFieldValue: validateEditorSceneMaterialAssetFieldValue,\n collectMaterialAssetBindingIds: collectEditorSceneMaterialAssetBindingIds as any,\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n createMarkerTargetUpdateCommand: markerFacade.createMarkerTargetUpdateCommand,\n createMarkerTypeUpdateCommand: markerFacade.createMarkerTypeUpdateCommand,\n createMarkerGraphPatch: options.createPatch.markerGraph as any,\n isDirectionalLightAnglePath: isEditorSceneLightDirectionAnglePath,\n createDirectionalLightPatch: options.createPatch.gameObjectField,\n patchDirectionalLightAngleField: (document, targetId, path, value) => patchPlayableEditorSceneDirectionalLightAngleField(document, targetId, path, value, fieldMutationServices),\n createCustomInspectorPropertyPatch: ({ document, gameObject, path, value }) => feature?.createInspectorPropertyPatch?.({\n document,\n gameObject,\n path,\n value,\n collectChangedIds: () => collectEditorSceneSubtreeIdList(document, [gameObject.id]),\n }) as any ?? null,\n patchCustomGameObjectField: feature?.patchGameObjectField,\n patchCustomGameObjectsField: feature?.patchGameObjectsField,\n normalizeAfterFieldPatch: (document, targetId, path, value) => feature?.normalizeAfterFieldPatch?.(document, targetId, path, value) ?? document,\n isProjectionShapePath: isStandardProjectionPath,\n isArtistMaterialPatchPath: isEditorSceneArtistMaterialPatchPath,\n isCustomProjectionPath: feature?.isProjectionPath,\n collectChangedIdsForFieldPath: (document, targetId, path) => path.startsWith('transform.') ? collectEditorSceneSubtreeIdList(document, [targetId]) : [targetId],\n createGameObjectFieldPatch: options.createPatch.gameObjectField,\n createMaterialAssetFieldPatch: options.createPatch.materialAssetField,\n };\n}\n\nfunction createHierarchyFacade<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch>(\n markerFacade: PlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>,\n) {\n return createPlayableEditorSceneHierarchyFacade<TDocument, TGameObject, TPatch>({\n findGameObject: (document, id) => id ? findEditorSceneGameObject(document, id) as TGameObject | null : null,\n resolveRootContainerId: resolveEditorSceneRootContainerId,\n isProtectedSystemGameObject: isProtectedSystemGameObject as any,\n isProtectedSystemGameObjectId: isProtectedSystemGameObjectId as any,\n decorateHierarchyItem: ({ item, gameObject }) => gameObject && isEditorSceneMarkerGameObject(gameObject)\n ? { ...item, role: 'marker', icon: 'view-overlay', canHaveChildren: false }\n : item,\n collectHierarchyItemChildren: ({ gameObject, document }) => {\n if (readNodeKind(gameObject) === 'primitive') return [];\n return collectEditorSceneChildMaterialSlots(document as any, gameObject as any).map((slot: any, index: number): SceneGraphTreeItem => ({\n id: createEditorSceneAssetMeshSelectionId(gameObject.id, getEditorSceneSlotSelectionKey(slot)),\n label: slot.label || formatEditorSceneMaterialSlotLabel(slot.ownerNodePath, index, getArtistMaterialInspectorText(readArtistMaterialInspectorLanguage(gameObject))),\n parentId: gameObject.id,\n role: 'object',\n icon: 'material-slot',\n selectable: true,\n protected: false,\n canHaveChildren: false,\n renamable: false,\n deletable: false,\n draggable: false,\n }));\n },\n });\n}\n\nfunction createStandardInspectorObject<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TAssetItem extends EditorSceneAssetLibraryItem, TContext extends { textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[] }>(\n assembly: FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, TAssetItem, TContext>,\n options: FpsGameEditorStandardSceneAssemblyOptions<TDocument, TGameObject, TPatch, TAssetItem, TContext>,\n markerFacade: PlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>,\n document: TDocument,\n targetId: string,\n context: TContext,\n createDocumentInspectorProperty: FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, TAssetItem, TContext>['createDocumentInspectorProperty'],\n findGameObject: (document: TDocument, id: string | null | undefined) => TGameObject | null,\n extraValidators: () => ReadonlyArray<EditorSceneFieldInspectorExtraValidator<TDocument, EditorSceneNodeKind>>,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>,\n): InspectorObject<TDocument> | null {\n return createPlayableEditorSceneInspectorObject({\n document,\n targetId,\n context,\n resolveAssetMeshSelectionTarget: resolveEditorSceneAssetMeshSelectionTarget as any,\n createAssetMeshInspectorSections: (targetDocument: TDocument, target: any, targetContext: TContext) => createEditorSceneAssetMeshInspectorSections(targetDocument as any, target as any, targetContext as any) as InspectorSection<TDocument>[],\n findGameObject,\n readNodeKind,\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n createInspectorSections: (targetDocument: TDocument, gameObject: TGameObject, targetContext: TContext) => {\n const nodeKind = readNodeKind(gameObject);\n return createPlayableEditorSceneInspectorSections({\n document: targetDocument,\n gameObject,\n context: targetContext,\n nodeKind,\n isCameraGameObject,\n isLightGameObject,\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n createBaseSections: () => createEditorSceneDocumentInspectorSections({\n document: targetDocument,\n gameObject,\n nodeKind,\n extraValidators: extraValidators(),\n rootTransform: EDITOR_SCENE_ROOT_TRANSFORM,\n renderingProfile: options.getRenderingProfile() as any,\n }) as InspectorSection<TDocument>[],\n createCustomSections: () => feature?.createInspectorSections?.({\n document: targetDocument,\n gameObject,\n nodeKind,\n context: targetContext,\n createDocumentInspectorProperty,\n }) ?? [],\n createCameraSection: () => createEditorSceneCameraInspectorSection({\n nodeKind,\n camera: gameObject.camera,\n rig: mergeEditorSceneCameraDefaults(gameObject.camera) as any,\n createDocumentInspectorProperty,\n }) as InspectorSection<TDocument>,\n createLightSections: () => createEditorSceneLightInspectorSections({\n nodeKind,\n gameObject,\n light: mergeEditorSceneLightDefaults(gameObject.light, gameObject.id === 'environment_light' ? 'hemispheric' : 'directional'),\n createDocumentInspectorProperty,\n normalizeValue: (path, value) => feature?.normalizeInspectorValue?.(path, value) ?? normalizeEditorScenePlayableInspectorValue(path, value),\n defaultEnvironmentGroundColor: DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT.groundColor,\n renderingProfile: options.getRenderingProfile() as any,\n }) as InspectorSection<TDocument>[],\n createMarkerSection: () => isEditorSceneMarkerGameObject(gameObject) ? createPlayableEditorSceneMarkerInspectorSection({\n document: targetDocument,\n gameObject,\n nodeKind,\n markerTypeCatalog: markerFacade.getMarkerTypeCatalog(targetDocument),\n resolveMarkerKind: (_document: unknown, marker: { type: string; kind?: string }) => markerFacade.resolveMarkerKind(targetDocument, marker.type, marker.kind),\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n formatMarkerTypeLabel: options.formatMarkerTypeLabel ?? ((_type, fallback) => fallback),\n createDocumentInspectorProperty,\n } as any) as unknown as InspectorSection<TDocument> : null,\n createPrefabInstanceSection: () => createPrefabInstanceInspectorSection(targetDocument as any, gameObject as any) as InspectorSection<TDocument> | null,\n createMaterialSections: () => createArtistMaterialInspectorSections(targetDocument as any, gameObject as any, nodeKind, targetContext as any, {\n createDocumentInspectorProperty,\n } as MaterialInspectorServices) as InspectorSection<TDocument>[],\n createOutlineSection: () => createPlayableEditorSceneOutlineInspectorSection({\n nodeKind,\n outline: (gameObject.overrides as { outline?: unknown } | undefined)?.outline,\n createDocumentInspectorProperty,\n }),\n } as any) as InspectorSection<TDocument>[];\n },\n } as any) as InspectorObject<TDocument> | null;\n}\n\nfunction createStandardMultiInspectorObject<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TContext>(\n document: TDocument,\n targetIds: string[],\n activeId: string | null,\n context: TContext,\n features: readonly FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>[],\n): InspectorObject<TDocument> | null {\n let extraSection: InspectorSection<TDocument> | null = null;\n let fallbackTargetIds: string[] = [];\n for (const feature of features) {\n const section = feature.createMultiInspectorSection?.({ document, targetIds, activeId, context }) ?? null;\n if (!section) continue;\n extraSection = section;\n fallbackTargetIds = feature.resolveMultiInspectorTargetIds?.(document, targetIds) ?? [];\n break;\n }\n return createPlayableEditorSceneInspectorMultiObject({\n document,\n selectedIds: targetIds,\n activeId,\n extraSection,\n resolveFallbackTargetIds: () => fallbackTargetIds,\n formatFallbackLabel: ids => `${ids.length} Objects`,\n fallbackSelectionKind: 'transform',\n });\n}\n\nfunction validateProjectFieldSchema(\n schema: EditorSceneFieldSchemaEntry | null,\n path: string,\n value: unknown,\n): InspectorValidationResult | null {\n if (!schema) return null;\n if (value == null && schema.allowDelete === false) {\n return {\n ok: false,\n message: `Scene node field cannot be deleted: ${path}.`,\n };\n }\n if (!schema.validate(value)) {\n return {\n ok: false,\n message: `Invalid value for scene node field: ${path}.`,\n };\n }\n return { ok: true, value };\n}\n\nfunction mergeMarkerTypeCatalog(\n builtIns: readonly SpatialMarkerTypeDefinition[],\n graph?: SpatialMarkerGraph | null,\n): SpatialMarkerTypeDefinition[] {\n return getEditorSceneMarkerTypeCatalogFromGraph(graph, { builtInMarkerTypes: builtIns });\n}\n\nconst readNodeKind = readEditorSceneNodeKind;\n\nfunction isStandardProjectionPath(path: string): boolean {\n return path.startsWith('shadow.')\n || path === 'transformType'\n || path.startsWith('rendering.')\n || path.startsWith('primitive.')\n || path.startsWith('camera.')\n || path.startsWith('light.');\n}\n\nfunction isStandardSerializedMultiFieldPath<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TContext>(\n path: string,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>,\n): boolean {\n return path === 'enabled'\n || path === 'metadata.shadowInspectorLanguage'\n || path === 'shadow.cast'\n || path === 'shadow.receive'\n || path === 'shadow.mode'\n || path === 'shadow.quality'\n || feature?.isSerializedMultiFieldPath?.(path) === true;\n}\n\nfunction isStandardSerializedMultiProjectionPath<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TContext>(\n path: string,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>,\n): boolean {\n return path === 'shadow.cast'\n || path === 'shadow.receive'\n || path === 'shadow.mode'\n || path === 'shadow.quality'\n || feature?.isSerializedMultiProjectionPath?.(path) === true;\n}\n\nfunction getStandardSerializedMultiProbeValue<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TContext>(\n path: string,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>,\n): unknown {\n if (path === 'enabled') return false;\n if (path === 'shadow.cast' || path === 'shadow.receive' || path === 'shadow.mode') return 'none';\n if (path === 'shadow.quality') return 'medium';\n if (path === 'metadata.shadowInspectorLanguage') return 'en';\n return feature?.getSerializedMultiProbeValue?.(path);\n}\n\nfunction toPrefabShadowMode(value: string): string {\n return value === 'planar' ? 'projected' : value;\n}\n\nfunction readDirectStandardSceneFeatureContribution<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n>(value: unknown): FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext> | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const contribution = value as FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>;\n const contributionHooks: Array<keyof FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>> = [\n 'normalizeInspectorValue',\n 'validateInspectorField',\n 'isInspectorPatchPath',\n 'isProjectionPath',\n 'normalizeDocumentAfterCommand',\n 'normalizeAfterFieldPatch',\n 'fieldMutation',\n 'createInspectorPropertyPatch',\n 'patchGameObjectField',\n 'patchGameObjectsField',\n 'reducePatch',\n 'createHierarchyPatch',\n 'createInspectorSections',\n 'createMultiInspectorSection',\n 'resolveMultiInspectorTargetIds',\n 'isSerializedMultiFieldPath',\n 'isSerializedMultiProjectionPath',\n 'getSerializedMultiProbeValue',\n 'canPatchSerializedMultiField',\n ];\n return contributionHooks.some(key => contribution[key] != null) ? contribution : null;\n}\n\nfunction composeStandardSceneFeatureContributions<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n>(\n contributions: readonly FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>[],\n): FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext> | undefined {\n if (contributions.length === 0) return undefined;\n const firstResult = <T>(read: (contribution: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>) => T | null | undefined): T | null => {\n for (const contribution of contributions) {\n const result = read(contribution);\n if (result != null) return result;\n }\n return null;\n };\n return {\n normalizeInspectorValue(path, value) {\n for (const contribution of contributions) {\n const result = contribution.normalizeInspectorValue?.(path, value);\n if (result !== undefined) return result;\n }\n return undefined;\n },\n validateInspectorField: input => firstResult(contribution => contribution.validateInspectorField?.(input)),\n isInspectorPatchPath: path => contributions.some(contribution => contribution.isInspectorPatchPath?.(path)),\n isProjectionPath: path => contributions.some(contribution => contribution.isProjectionPath?.(path)),\n normalizeDocumentAfterCommand: (document, command) => contributions.reduce(\n (next, contribution) => contribution.normalizeDocumentAfterCommand?.(next, command) ?? next,\n document,\n ),\n normalizeAfterFieldPatch: (document, targetId, path, value) => contributions.reduce(\n (next, contribution) => contribution.normalizeAfterFieldPatch?.(next, targetId, path, value) ?? next,\n document,\n ),\n fieldMutation: composeStandardSceneFieldMutations(contributions),\n createInspectorPropertyPatch: input => firstResult(contribution => contribution.createInspectorPropertyPatch?.(input)),\n patchGameObjectField: input => firstResult(contribution => contribution.patchGameObjectField?.(input)),\n patchGameObjectsField: input => firstResult(contribution => contribution.patchGameObjectsField?.(input)),\n reducePatch: input => firstResult(contribution => contribution.reducePatch?.(input)),\n createHierarchyPatch: (document, featureId) => firstResult(contribution => contribution.createHierarchyPatch?.(document, featureId)),\n createInspectorSections: input => contributions.flatMap(contribution => contribution.createInspectorSections?.(input) ?? []),\n isSerializedMultiFieldPath: path => contributions.some(contribution => contribution.isSerializedMultiFieldPath?.(path)),\n isSerializedMultiProjectionPath: path => contributions.some(contribution => contribution.isSerializedMultiProjectionPath?.(path)),\n getSerializedMultiProbeValue(path) {\n for (const contribution of contributions) {\n const result = contribution.getSerializedMultiProbeValue?.(path);\n if (result !== undefined) return result;\n }\n return undefined;\n },\n canPatchSerializedMultiField: input => contributions.every(\n contribution => contribution.canPatchSerializedMultiField?.(input) !== false,\n ),\n };\n}\n\nfunction composeStandardSceneFieldMutations<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n>(\n contributions: readonly FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>[],\n): FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>['fieldMutation'] {\n const mutations = contributions.flatMap(contribution => contribution.fieldMutation ? [contribution.fieldMutation] : []);\n if (mutations.length === 0) return undefined;\n return {\n isCustomTransformType: (value): value is string => mutations.some(mutation => mutation.isCustomTransformType?.(value)),\n applyCustomTransformType(gameObject, transformType) {\n for (const mutation of mutations) mutation.clearCustomTransformState?.(gameObject, transformType);\n for (const mutation of mutations) mutation.applyCustomTransformType?.(gameObject, transformType);\n },\n clearCustomTransformState(gameObject, transformType) {\n for (const mutation of mutations) mutation.clearCustomTransformState?.(gameObject, transformType);\n },\n patchCustomTransformField(gameObject, path, value) {\n for (const mutation of mutations) {\n if (mutation.patchCustomTransformField?.(gameObject, path, value)) return true;\n }\n return false;\n },\n };\n}\n"]}
1
+ {"version":3,"file":"standard-scene-assembly.js","sourceRoot":"","sources":["../../src/product/standard-scene-assembly.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n DocumentCommand,\n InspectorObject,\n InspectorProperty,\n InspectorSection,\n InspectorValidationResult,\n SceneGraphTreeItem,\n EditorCoreMarkerGraphCommand,\n EditorSceneFieldSchemaEntry,\n} from '@fps-games/editor-core';\nimport {\n getEditorSceneMarkerTypeCatalogFromGraph,\n} from '@fps-games/editor-core';\nimport type {\n EditorDiagnostic,\n EditorDiagnosticLocator,\n SpatialMarkerGraph,\n SpatialMarkerTypeDefinition,\n SpatialRelationTypeDefinition,\n} from '@fps-games/editor-protocol';\nimport {\n addEditorSceneMaterialAsset,\n addEditorSceneMaterialAssetAndBind,\n assertEditorSceneMaterialAssetIntegrity,\n collectEditorSceneMaterialAssetBindingIds,\n createEditorSceneMaterialBrowserAssetItems,\n deleteDefaultEditorSceneMaterialAsset,\n ensureDefaultEditorSceneMaterialAssets,\n ensureImportedEditorSceneMaterialDefaults,\n findEditorSceneMaterialAsset,\n formatEditorSceneMaterialSlotLabel,\n getArtistMaterialInspectorText,\n hasEditorSceneMaterialAsset,\n isEditorSceneArtistMaterialPatchPath,\n isEditorSceneMaterialBindingPath,\n normalizeEditorSceneMaterialAssetValue,\n parseEditorSceneDuplicateMaterialAssetValue,\n parseEditorSceneMaterialAssetFieldPath,\n readArtistMaterialInspectorLanguage,\n reconcileEditorSceneMaterialSlotReimportBindings,\n validateEditorSceneMaterialAssetFieldValue,\n type ArtistMaterialInspectorText,\n type EditorSceneAssetMeshSelectionTarget,\n type MaterialInspectorServices,\n collectEditorSceneChildMaterialSlots,\n createEditorSceneAssetMeshSelectionId,\n createTexturePickerControlOptions,\n findEditorSceneInspectorTextureAssetFromContext,\n getEditorSceneSlotSelectionKey,\n resolveEditorSceneAssetMeshSelectionTarget,\n isEditorSceneAssetMeshWritablePath,\n patchEditorSceneMaterialAssetField,\n} from '../material-binding/index';\nimport sceneMaterialInspectorInternals from '../material-binding/scene-inspector';\nimport {\n addEditorScenePrefabAsset,\n addEditorSceneMaterialAssetAndBindPrefabOverride,\n createEditorScenePrefabBrowserAssetItems,\n resolveEditorScenePrefabInstanceMarkers,\n resolveEditorScenePrefabStageMarkers,\n createPrefabInstanceInspectorSection,\n normalizeEditorScenePrefabAssetFieldValue,\n normalizeEditorScenePrimitiveShape,\n patchEditorScenePrefabAssetField,\n replaceEditorScenePrefabAsset,\n validateEditorScenePrefabAssetFieldValue,\n type EditorScenePrefabStageInspectorContext,\n type PrefabStageInspectorServices,\n} from '../prefab-stage/index';\nimport prefabStageInspectorInternals from '../prefab-stage/stage-inspector';\nimport {\n createPlayableEditorSceneMarkerGraphFacade,\n isEditorSceneMarkerGameObject,\n type PlayableEditorSceneMarkerGraphFacade,\n} from '../marker-scene/index';\nimport {\n createPlayableEditorSceneHierarchyFacade,\n createPlayableEditorSceneFieldMutationOptions,\n createPlayableEditorSceneObjectCommandFacade,\n collectEditorSceneSubtreeIdList,\n createEditorSceneGameObjectGuid,\n createUniqueEditorSceneGameObjectId,\n ensureEditorSceneGameObjectGuids,\n findEditorSceneGameObject,\n isEditorSceneCameraGameObject as isCameraGameObject,\n isEditorSceneLightGameObject as isLightGameObject,\n isEditorSceneProtectedSystemGameObject as isProtectedSystemGameObject,\n isEditorSceneProtectedSystemGameObjectId as isProtectedSystemGameObjectId,\n isEditorSceneRootTransformPath,\n isEditorSceneSelectableHierarchyId,\n normalizeEditorSceneRootTransformDocument,\n resolveEditorSceneRootContainerId,\n toEditorSceneLocalTransformForParent,\n type PlayableEditorSceneObjectCommandServices,\n} from '../session/index';\nimport {\n createEditorSceneDocumentInspectorProperty,\n createEditorSceneDocumentInspectorSections,\n createPlayableEditorSceneInspectorMultiObject,\n createPlayableEditorSceneInspectorObject,\n createPlayableEditorSceneInspectorSections,\n createPlayableEditorSceneMarkerInspectorSection,\n createPlayableEditorSceneOutlineInspectorSection,\n createEditorSceneCameraInspectorSection,\n createEditorSceneLightInspectorSections,\n createEditorScenePlayableFieldInspectorExtraValidator,\n createEditorSceneRuntimeInspectorSectionsForDocument,\n createEditorSceneRuntimeInspectorSnapshot,\n normalizeEditorScenePlayableInspectorValue,\n validateEditorSceneFieldInspectorValue,\n type EditorSceneFieldInspectorExtraValidator,\n type EditorSceneRuntimeDocumentInspectorServices,\n type EditorSceneRuntimeInspectorSnapshot,\n} from '../inspector/index';\nimport {\n} from '../serialized-property/index';\nimport {\n createPlayableEditorSceneInspectorPropertyPatch,\n patchPlayableEditorSceneGameObjectFieldWithServices,\n patchPlayableEditorSceneGameObjectsFieldWithServices,\n type PlayableEditorSceneInspectorPropertyPatchResult,\n type PlayableEditorScenePropertyPatchServices,\n} from '../session/property-patches';\nimport { createFpsGameEditorDeclarativeGroundDecalSceneFeature } from './ground-decal-scene-feature';\nimport {\n createPlayableEditorSceneSessionFacade,\n type PlayableEditorSceneSessionFacade,\n} from './scene-session';\nimport {\n ensurePlayableEditorSceneEnvironmentDefaultsCore,\n patchPlayableEditorSceneDirectionalLightAngleField,\n isBlockedPlayableEditorSceneSystemFieldPatch,\n reducePlayableEditorSceneDocumentCore,\n type PlayableEditorSceneFieldMutationServices,\n type PlayableEditorSceneReducerCoreServices,\n type PlayableEditorSceneReducerSystemDefaultServices,\n} from '../session/reducer-core';\nimport {\n DEFAULT_EDITOR_SCENE_CAMERA,\n DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT,\n DEFAULT_EDITOR_SCENE_SUN_LIGHT,\n createDefaultEditorSceneCameraGameObject,\n createDefaultEditorSceneEnvironmentLightGameObject,\n createDefaultEditorSceneSunLightGameObject,\n createEditorSceneIdentityTransformComponent,\n hasInvalidEditorSceneCameraRelationships,\n mergeEditorSceneCameraDefaults,\n mergeEditorSceneLightDefaults,\n normalizeEditorSceneCameraAfterFieldPatch,\n normalizeEditorSceneCameraGameObject,\n normalizeEditorScenePlainTransformGameObject,\n normalizeEditorSceneSystemLightGameObject,\n} from '../session/system-defaults';\nimport {\n createEditorSceneReadonlyInspectorProperty,\n} from '../inspector/readonly';\nimport {\n getEditorSceneAuthoringSourceRef,\n} from '../authoring/source';\nimport {\n isEditorSceneLightDirectionAnglePath,\n} from '../inspector/light-fields';\nimport {\n EDITOR_SCENE_ROOT_TRANSFORM,\n type PlayableEditorSceneDocumentPatch,\n} from '../session/index';\nimport {\n type EditorSceneAsset,\n type EditorSceneAssetLibraryItem,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n type EditorSceneNodeKind,\n readEditorSceneNodeKind,\n} from '../document/index';\ntype PlayableLocalEditorMarkerGraphCommand = EditorCoreMarkerGraphCommand;\n\nexport interface FpsGameEditorStandardSceneFeatureContribution<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n> {\n normalizeInspectorValue?: (path: string, value: unknown) => unknown;\n validateInspectorField?: (input: {\n document: TDocument | null;\n gameObject: TGameObject | null;\n path: string;\n value: unknown;\n }) => InspectorValidationResult | null;\n isInspectorPatchPath?: (path: string) => boolean;\n isProjectionPath?: (path: string) => boolean;\n normalizeDocumentAfterCommand?: (document: TDocument, command: DocumentCommand<TDocument, TPatch>) => TDocument;\n normalizeAfterFieldPatch?: (document: TDocument, targetId: string, path: string, value: unknown) => TDocument;\n fieldMutation?: Partial<Pick<\n PlayableEditorSceneFieldMutationServices<TDocument, TGameObject>,\n 'isCustomTransformType' | 'applyCustomTransformType' | 'clearCustomTransformState' | 'patchCustomTransformField'\n >>;\n createInspectorPropertyPatch?: (input: {\n document: TDocument;\n gameObject: TGameObject;\n path: string;\n value: unknown;\n collectChangedIds: () => string[];\n }) => PlayableEditorSceneInspectorPropertyPatchResult<TPatch> | null;\n patchGameObjectField?: (input: {\n document: TDocument;\n targetId: string;\n path: string;\n value: unknown;\n }) => TDocument | null;\n patchGameObjectsField?: (input: {\n document: TDocument;\n targetIds: readonly string[];\n path: string;\n value: unknown;\n patchSingle: (document: TDocument, targetId: string, path: string, value: unknown) => TDocument;\n }) => TDocument | null;\n reducePatch?: (input: {\n document: TDocument;\n patch: Record<string, unknown>;\n command: DocumentCommand<TDocument, TPatch>;\n }) => TDocument | null;\n createHierarchyPatch?: (document: TDocument, featureId: string) => FpsGameEditorStandardScenePatchResult<TPatch> | null;\n createInspectorSections?: (input: {\n document: TDocument;\n gameObject: TGameObject;\n nodeKind: EditorSceneNodeKind;\n context: TContext;\n createDocumentInspectorProperty: FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, EditorSceneAssetLibraryItem, TContext>['createDocumentInspectorProperty'];\n }) => Array<InspectorSection<TDocument> | null | undefined>;\n createMultiInspectorSection?: (input: {\n document: TDocument;\n targetIds: string[];\n activeId: string | null;\n context: TContext;\n }) => InspectorSection<TDocument> | null;\n resolveMultiInspectorTargetIds?: (document: TDocument, targetIds: readonly string[]) => string[];\n isSerializedMultiFieldPath?: (path: string) => boolean;\n isSerializedMultiProjectionPath?: (path: string) => boolean;\n getSerializedMultiProbeValue?: (path: string) => unknown;\n canPatchSerializedMultiField?: (input: {\n document: TDocument;\n targetId: string;\n path: string;\n value: unknown;\n }) => boolean;\n}\n\nexport interface FpsGameEditorStandardSceneAssemblyOptions<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TAssetItem extends EditorSceneAssetLibraryItem,\n TContext extends { textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[] } = {\n textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[];\n },\n> {\n markerTypes: readonly SpatialMarkerTypeDefinition[];\n relationTypes: readonly SpatialRelationTypeDefinition[];\n formatMarkerTypeLabel?: (type: string, fallback: string) => string;\n getRenderingProfile: () => { shadows: { defaultMode: string } };\n resolveFieldSchema?: (path: string, nodeKind: EditorSceneNodeKind) => EditorSceneFieldSchemaEntry | null;\n features?: readonly { id: string; config: unknown; scene?: unknown }[];\n resolveFeatureSceneContribution?: (\n feature: { id: string; config: unknown; scene?: unknown },\n ) => FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext> | null;\n createPatch: {\n gameObjectField(targetId: string, path: string, value: unknown): TPatch;\n gameObjectFieldBatch(fields: Array<{ targetId: string; path: string; value: unknown }>): TPatch;\n materialAssetField(materialAssetId: string, path: string, value: unknown): TPatch;\n markerGraph(command: PlayableLocalEditorMarkerGraphCommand): TPatch;\n };\n clearFeatureStateFromSystemObject?: (next: TGameObject, original: TGameObject) => TGameObject;\n}\n\nexport interface FpsGameEditorStandardScenePatchResult<TPatch> {\n patch: TPatch;\n label: string;\n changedId?: string;\n changedIds: string[];\n reprojectIds?: string[];\n createdId?: string;\n selectId?: string | null;\n}\n\nexport function resolveFpsGameEditorFeatureSceneContribution<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n>(\n feature: { id: string; config: unknown; scene?: unknown },\n getDocumentInspectorPropertyFactory?: () => unknown,\n): FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext> | null {\n if (!feature.scene || typeof feature.scene !== 'object' || Array.isArray(feature.scene)) return null;\n const descriptor = feature.scene as { kind?: unknown; contribution?: unknown };\n if (descriptor.kind !== feature.id) return null;\n const direct = readDirectStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>(descriptor.contribution);\n if (direct) return direct;\n return getDocumentInspectorPropertyFactory\n ? createFpsGameEditorDeclarativeGroundDecalSceneFeature<TPatch>(feature as any, getDocumentInspectorPropertyFactory) as any\n : null;\n}\n\nexport interface FpsGameEditorStandardSceneAssembly<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TAssetItem extends EditorSceneAssetLibraryItem,\n TContext,\n> {\n defaults: {\n camera: typeof DEFAULT_EDITOR_SCENE_CAMERA;\n sunLight: typeof DEFAULT_EDITOR_SCENE_SUN_LIGHT;\n environmentLight: typeof DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT;\n };\n reduceDocument(document: TDocument, command: DocumentCommand<TDocument, TPatch>): TDocument;\n ensureEnvironmentDefaults(document: TDocument): TDocument;\n isSelectableHierarchyId(document: TDocument, id: string): boolean;\n resolveDiagnosticLocator(document: TDocument, diagnostic: EditorDiagnostic): EditorDiagnosticLocator | null;\n getHierarchyItems: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['getHierarchyItems'];\n normalizeHierarchyDocument: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['normalizeHierarchyDocument'];\n createRenamePatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createRenamePatch'];\n createCreateGroupPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createCreateGroupPatch'];\n createCreatePrimitivePatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createCreatePrimitivePatch'];\n createDeleteSubtreePatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createDeleteSubtreePatch'];\n createReparentPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createReparentPatch'];\n createHierarchyMovePatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createHierarchyMovePatch'];\n createGroupSelectionPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createGroupSelectionPatch'];\n createDuplicateSelectionPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createDuplicateSelectionPatch'];\n createPlacedAssetPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createPlacedAssetPatch'];\n validateReparent: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['validateReparent'];\n validateHierarchyMove: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['validateHierarchyMove'];\n validateGroupSelection: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['validateGroupSelection'];\n collectSubtreeIds(document: TDocument, rootIds: string[]): string[];\n createFeatureHierarchyPatch(document: TDocument, featureId: string): FpsGameEditorStandardScenePatchResult<TPatch> | null;\n createInspectorPropertyPatch(input: { document: TDocument; targetId: string; path: string; value: unknown }): PlayableEditorSceneInspectorPropertyPatchResult<TPatch> | null;\n patchGameObjectField(document: TDocument, targetId: string, path: string, value: unknown): TDocument;\n patchGameObjectsField(document: TDocument, targetIds: readonly string[], path: string, value: unknown): TDocument;\n canCreateSerializedMultiPropertyPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['canCreateSerializedMultiPropertyPatch'];\n createSerializedMultiPropertyPatch: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createSerializedMultiPropertyPatch'];\n createBrowserAssetItems: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['createBrowserAssetItems'];\n addAssetLibraryItemToDocument: PlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>['addAssetLibraryItemToDocument'];\n getInspectorObject(document: TDocument, targetId: string, context?: TContext): InspectorObject<TDocument> | null;\n getInspectorMultiObject(document: TDocument, targetIds: string[], activeId: string | null, context?: TContext): InspectorObject<TDocument> | null;\n getPrefabStageInspectorObject(document: TDocument, descriptor: { assetId: string; label: string; sourceAssetId?: string }, selectedItemId: string | null, context?: TContext & EditorScenePrefabStageInspectorContext): InspectorObject<TDocument> | null;\n getRuntimeInspectorSections(context: { document: TDocument; targetIds?: string[]; activeId: string | null; projectionNode?: unknown | null; projectedRoot?: unknown }): InspectorSection<TDocument>[];\n createRuntimeInspectorSnapshot(context: { projectionNode?: unknown | null; projectedRoot?: unknown }): EditorSceneRuntimeInspectorSnapshot;\n createDocumentInspectorProperty(document: TDocument | null, nodeKind: EditorSceneNodeKind, property: Omit<InspectorProperty<TDocument>, 'readOnly' | 'persistence' | 'validate'>): InspectorProperty<TDocument>;\n getMarkerGraph(document: TDocument): SpatialMarkerGraph;\n getMarkerTypeCatalog(document?: TDocument): SpatialMarkerTypeDefinition[];\n getPrefabInstanceMarkerOverlays(document: TDocument): ReturnType<typeof resolveEditorScenePrefabInstanceMarkers>;\n getPrefabStageMarkerOverlays(document: TDocument, prefabAssetId: string, previewInstanceId: string): ReturnType<typeof resolveEditorScenePrefabStageMarkers>;\n getRelationTypeCatalog(): SpatialRelationTypeDefinition[];\n createMarkerGraphPatch(document: TDocument, command: PlayableLocalEditorMarkerGraphCommand): FpsGameEditorStandardScenePatchResult<TPatch> | null;\n reduceMarkerGraphPatch(document: TDocument, command: PlayableLocalEditorMarkerGraphCommand): TDocument;\n syncMarkerGraphDocument(document: TDocument): TDocument;\n resolveMarkerKind(document: TDocument, markerType: string, authoredKind?: string): string;\n assertMaterialAssetIntegrity: typeof assertEditorSceneMaterialAssetIntegrity;\n}\n\nexport function createFpsGameEditorStandardSceneAssembly<\n TDocument extends EditorSceneDocument<TGameObject, TAsset>,\n TGameObject extends EditorSceneGameObject,\n TPatch extends PlayableEditorSceneDocumentPatch<any, any, any, any, any, any>,\n TAssetItem extends EditorSceneAssetLibraryItem,\n TAsset extends EditorSceneAsset = TDocument['assets'][number],\n TContext extends { textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[] } = {\n textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[];\n },\n>(options: FpsGameEditorStandardSceneAssemblyOptions<TDocument, TGameObject, TPatch, TAssetItem, TContext>): FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, TAssetItem, TContext> {\n const featureContributions = (options.features ?? []).flatMap((configuredFeature) => {\n const resolved = options.resolveFeatureSceneContribution?.(configuredFeature)\n ?? resolveFpsGameEditorFeatureSceneContribution<TDocument, TGameObject, TPatch, TContext>(\n configuredFeature,\n () => createDocumentInspectorProperty,\n )\n ?? readDirectStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>(configuredFeature.scene);\n return resolved ? [resolved] : [];\n });\n const feature = composeStandardSceneFeatureContributions(featureContributions);\n const markerFacade = createPlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>({\n options: { builtInMarkerTypes: options.markerTypes },\n createPatch: options.createPatch.markerGraph,\n getMarkerTypeCatalogFromGraph: graph => mergeMarkerTypeCatalog(options.markerTypes, graph),\n });\n const findGameObject = (document: TDocument, id: string | null | undefined): TGameObject | null => (\n id ? (findEditorSceneGameObject(document, id) as TGameObject | null) : null\n );\n const extraValidators = (): ReadonlyArray<EditorSceneFieldInspectorExtraValidator<TDocument, EditorSceneNodeKind>> => [\n input => feature?.validateInspectorField?.({\n document: input.document ?? null,\n gameObject: input.document\n ? findGameObject(input.document, (input as { targetId?: string }).targetId)\n : null,\n path: input.path,\n value: input.value,\n }) ?? null,\n input => validateProjectFieldSchema(\n options.resolveFieldSchema?.(input.path, input.nodeKind) ?? null,\n input.path,\n input.value,\n ),\n createEditorScenePlayableFieldInspectorExtraValidator<TDocument, TGameObject>({\n hasMaterialAsset: hasEditorSceneMaterialAsset as any,\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n isDirectionalLightAnglePath: isEditorSceneLightDirectionAnglePath,\n }),\n ];\n const normalizeValue = (path: string, value: unknown): unknown => (\n feature?.normalizeInspectorValue?.(path, value)\n ?? normalizeEditorScenePlayableInspectorValue(path, value, { isDirectionalLightAnglePath: isEditorSceneLightDirectionAnglePath })\n );\n const validateValue = (document: TDocument, gameObject: TGameObject, path: string, value: unknown): InspectorValidationResult => {\n if (isEditorSceneLightDirectionAnglePath(path) && gameObject.light?.type !== 'directional') {\n return { ok: false, message: `Unsupported scene node field: ${path}.` };\n }\n const custom = feature?.validateInspectorField?.({ document, gameObject, path, value });\n if (custom) return custom;\n return validateEditorSceneFieldInspectorValue({\n document,\n path,\n nodeKind: readNodeKind(gameObject),\n value,\n extraValidators: extraValidators(),\n });\n };\n const createDocumentInspectorProperty = (\n document: TDocument | null,\n nodeKind: EditorSceneNodeKind,\n property: Omit<InspectorProperty<TDocument>, 'readOnly' | 'persistence' | 'validate'>,\n ): InspectorProperty<TDocument> => createEditorSceneDocumentInspectorProperty({\n document,\n nodeKind,\n property,\n extraValidators: extraValidators(),\n });\n const systemDefaults = createSystemDefaultServices<TGameObject>(options.clearFeatureStateFromSystemObject);\n const fieldMutationServices: PlayableEditorSceneFieldMutationServices<TDocument, TGameObject> = {\n systemDefaults,\n normalizeFieldValue: normalizeValue,\n validateField: validateValue,\n normalizePrimitiveShape: normalizeEditorScenePrimitiveShape,\n findGameObject,\n isCameraGameObject: isCameraGameObject as any,\n isLightGameObject: isLightGameObject as any,\n isProtectedSystemGameObject: isProtectedSystemGameObject as any,\n hasCamera: (document, exceptId) => document.scene.gameObjects.some((object: TGameObject) => object.id !== exceptId && isCameraGameObject(object)),\n ...feature?.fieldMutation,\n };\n const propertyPatchServices = createPropertyPatchServices(options, markerFacade, fieldMutationServices, findGameObject, normalizeValue, validateValue, feature);\n const patchGameObjectField = (document: TDocument, targetId: string, path: string, value: unknown): TDocument => (\n patchPlayableEditorSceneGameObjectFieldWithServices(document, targetId, path, value, propertyPatchServices as any)\n );\n const patchGameObjectsField = (document: TDocument, targetIds: readonly string[], path: string, value: unknown): TDocument => (\n patchPlayableEditorSceneGameObjectsFieldWithServices(document, targetIds, path, value, propertyPatchServices as any)\n );\n const reducerServices = createReducerServices(options, markerFacade, fieldMutationServices, patchGameObjectField, patchGameObjectsField, feature);\n const hierarchyFacade = createHierarchyFacade<TDocument, TGameObject, TPatch>(markerFacade);\n const objectCommandServices: PlayableEditorSceneObjectCommandServices<TDocument, TGameObject, TPatch> = {\n isRootTransformPath: isEditorSceneRootTransformPath,\n validateSerializedPropertyField: input => validateValue(input.document, input.gameObject as TGameObject, input.path, input.value),\n findGameObject,\n isCameraGameObject: isCameraGameObject as any,\n isLightGameObject: isLightGameObject as any,\n isSerializedMultiFieldPath: path => isStandardSerializedMultiFieldPath(path, feature),\n isSerializedMultiProjectionPath: path => isStandardSerializedMultiProjectionPath(path, feature),\n getSerializedMultiPropertyProbeValue: path => getStandardSerializedMultiProbeValue(path, feature),\n canPatchCustomSerializedMultiField: input => feature?.canPatchSerializedMultiField?.(input) ?? true,\n createInspectorPropertyPatch: input => createPlayableEditorSceneInspectorPropertyPatch(input, propertyPatchServices as any),\n createFieldBatchPatch: options.createPatch.gameObjectFieldBatch,\n };\n const sessionFacade = createPlayableEditorSceneSessionFacade<TDocument, TGameObject, TPatch, TAssetItem>({\n hierarchyFacade,\n objectCommandServices,\n assetPlacementServices: {\n createGameObjectGuid: createEditorSceneGameObjectGuid,\n resolveLocalTransform: ({ document, parentId, worldTransform }) => toEditorSceneLocalTransformForParent(document, parentId ?? undefined, worldTransform),\n },\n });\n const runtimeInspectorServices: EditorSceneRuntimeDocumentInspectorServices<TDocument, TGameObject> = {\n findGameObject,\n hasModelRenderer: gameObject => !!gameObject.components?.some(component => component.type === 'ModelRenderer'),\n readNodeKind,\n };\n const assembly = {} as FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, TAssetItem, TContext>;\n Object.assign(assembly, {\n defaults: {\n camera: DEFAULT_EDITOR_SCENE_CAMERA,\n sunLight: DEFAULT_EDITOR_SCENE_SUN_LIGHT,\n environmentLight: DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT,\n },\n reduceDocument: (document: TDocument, command: DocumentCommand<TDocument, TPatch>) => reducePlayableEditorSceneDocumentCore(document, command, reducerServices),\n ensureEnvironmentDefaults: (document: TDocument) => ensurePlayableEditorSceneEnvironmentDefaultsCore(document, reducerServices),\n isSelectableHierarchyId: (document: TDocument, id: string) => isEditorSceneSelectableHierarchyId(document, id, { resolveAssetMeshSelectionTarget: resolveEditorSceneAssetMeshSelectionTarget as any }),\n resolveDiagnosticLocator: (document: TDocument, diagnostic: EditorDiagnostic): EditorDiagnosticLocator | null => {\n const locator = diagnostic.locator;\n if (!locator?.objectId || !locator.materialSlotId) return locator ?? null;\n const gameObject = findGameObject(document, locator.objectId);\n if (!gameObject) return locator;\n const slot = collectEditorSceneChildMaterialSlots(document as any, gameObject as any)\n .find(candidate => candidate.slotId === locator.materialSlotId);\n if (!slot) return locator;\n return {\n ...locator,\n rowId: createEditorSceneAssetMeshSelectionId(\n gameObject.id,\n getEditorSceneSlotSelectionKey(slot),\n ),\n path: `overrides.materialSlotBindings.${slot.slotId}.materialAssetId`,\n };\n },\n getHierarchyItems: sessionFacade.getHierarchyItems,\n normalizeHierarchyDocument: sessionFacade.normalizeHierarchyDocument,\n createRenamePatch: sessionFacade.createRenamePatch,\n createCreateGroupPatch: sessionFacade.createCreateGroupPatch,\n createCreatePrimitivePatch: sessionFacade.createCreatePrimitivePatch,\n createDeleteSubtreePatch: sessionFacade.createDeleteSubtreePatch,\n createReparentPatch: sessionFacade.createReparentPatch,\n createHierarchyMovePatch: sessionFacade.createHierarchyMovePatch,\n createGroupSelectionPatch: sessionFacade.createGroupSelectionPatch,\n createDuplicateSelectionPatch: sessionFacade.createDuplicateSelectionPatch,\n createPlacedAssetPatch: sessionFacade.createPlacedAssetPatch,\n validateReparent: sessionFacade.validateReparent,\n validateHierarchyMove: sessionFacade.validateHierarchyMove,\n validateGroupSelection: sessionFacade.validateGroupSelection,\n collectSubtreeIds: collectEditorSceneSubtreeIdList,\n createFeatureHierarchyPatch: (document: TDocument, featureId: string) => feature?.createHierarchyPatch?.(document, featureId) ?? null,\n createInspectorPropertyPatch: (input: { document: TDocument; targetId: string; path: string; value: unknown }) => createPlayableEditorSceneInspectorPropertyPatch(input, propertyPatchServices as any),\n patchGameObjectField,\n patchGameObjectsField,\n canCreateSerializedMultiPropertyPatch: sessionFacade.canCreateSerializedMultiPropertyPatch,\n createSerializedMultiPropertyPatch: sessionFacade.createSerializedMultiPropertyPatch,\n createBrowserAssetItems: sessionFacade.createBrowserAssetItems,\n addAssetLibraryItemToDocument: sessionFacade.addAssetLibraryItemToDocument,\n getInspectorObject: (document: TDocument, targetId: string, context: TContext = {} as TContext) => createStandardInspectorObject(assembly, options, markerFacade, document, targetId, context, createDocumentInspectorProperty, findGameObject, extraValidators, feature),\n getInspectorMultiObject: (document: TDocument, targetIds: string[], activeId: string | null, context: TContext = {} as TContext) => createStandardMultiInspectorObject(document, targetIds, activeId, context, featureContributions),\n getPrefabStageInspectorObject: (document: TDocument, descriptor: { assetId: string; label: string; sourceAssetId?: string }, selectedItemId: string | null, context: TContext & EditorScenePrefabStageInspectorContext = {} as TContext & EditorScenePrefabStageInspectorContext) => prefabStageInspectorInternals.createEditorScenePrefabStageInspectorObjectWithCachedMaterialUsage(document, descriptor, selectedItemId, context, {\n createIdentityTransformComponent: createEditorSceneIdentityTransformComponent,\n mergeLightDefaults: mergeEditorSceneLightDefaults,\n defaultShadowMode: toPrefabShadowMode(options.getRenderingProfile().shadows.defaultMode),\n sunLightId: 'sun_light',\n normalizePrefabAssetFieldValue: normalizeEditorScenePrefabAssetFieldValue,\n validatePrefabAssetFieldValue: validateEditorScenePrefabAssetFieldValue,\n markerTypeCatalog: markerFacade.getMarkerTypeCatalog(document),\n } as PrefabStageInspectorServices) as InspectorObject<TDocument> | null,\n getRuntimeInspectorSections: (context: { document: TDocument; targetIds?: string[]; activeId: string | null; projectionNode?: unknown | null; projectedRoot?: unknown }) => createEditorSceneRuntimeInspectorSectionsForDocument({ ...context, sourceRef: getEditorSceneAuthoringSourceRef(context.document) }, runtimeInspectorServices),\n createRuntimeInspectorSnapshot: (context: { projectionNode?: unknown | null; projectedRoot?: unknown }) => createEditorSceneRuntimeInspectorSnapshot({ projectedRoot: context.projectedRoot, projectionNode: context.projectionNode ?? null }),\n createDocumentInspectorProperty,\n getMarkerGraph: markerFacade.getMarkerGraph,\n getMarkerTypeCatalog: markerFacade.getMarkerTypeCatalog,\n getPrefabInstanceMarkerOverlays: (document: TDocument) => resolveEditorScenePrefabInstanceMarkers(\n document,\n markerFacade.getMarkerTypeCatalog(document),\n ),\n getPrefabStageMarkerOverlays: (document: TDocument, prefabAssetId: string, previewInstanceId: string) => resolveEditorScenePrefabStageMarkers(\n document,\n prefabAssetId,\n previewInstanceId,\n markerFacade.getMarkerTypeCatalog(document),\n ),\n getRelationTypeCatalog: () => options.relationTypes.map(entry => structuredClone(entry)),\n createMarkerGraphPatch: markerFacade.createMarkerGraphPatch,\n reduceMarkerGraphPatch: markerFacade.reduceMarkerGraphPatch,\n syncMarkerGraphDocument: markerFacade.syncMarkerGraphDocument,\n resolveMarkerKind: markerFacade.resolveMarkerKind,\n assertMaterialAssetIntegrity: assertEditorSceneMaterialAssetIntegrity,\n });\n return assembly;\n}\n\nfunction createSystemDefaultServices<TGameObject extends EditorSceneGameObject>(\n clearFeatureState?: (next: TGameObject, original: TGameObject) => TGameObject,\n): PlayableEditorSceneReducerSystemDefaultServices<TGameObject> {\n const normalize = (base: (gameObject: EditorSceneGameObject) => EditorSceneGameObject) => (gameObject: TGameObject): TGameObject => {\n const next = base(gameObject) as TGameObject;\n return clearFeatureState?.(next, gameObject) ?? next;\n };\n return {\n environmentLightId: 'environment_light',\n sunLightId: 'sun_light',\n horizontalLightAnglePath: 'light.directionHorizontalAngleDeg',\n elevationLightAnglePath: 'light.directionElevationAngleDeg',\n normalizeEnvironmentLightGameObject: gameObject => normalize(value => normalizeEditorSceneSystemLightGameObject(value, 'hemispheric'))(gameObject),\n normalizeSunLightGameObject: gameObject => normalize(value => normalizeEditorSceneSystemLightGameObject(value, 'directional'))(gameObject),\n normalizeCameraGameObject: normalize(normalizeEditorSceneCameraGameObject),\n normalizePlainTransformGameObject: normalize(normalizeEditorScenePlainTransformGameObject),\n createDefaultCameraGameObject: createDefaultEditorSceneCameraGameObject as any,\n createDefaultEnvironmentLightGameObject: createDefaultEditorSceneEnvironmentLightGameObject as any,\n createDefaultSunLightGameObject: createDefaultEditorSceneSunLightGameObject as any,\n mergeCameraDefaults: mergeEditorSceneCameraDefaults as any,\n normalizeCameraAfterFieldPatch: normalizeEditorSceneCameraAfterFieldPatch as any,\n hasInvalidCameraRelationships: hasInvalidEditorSceneCameraRelationships as any,\n mergeLightDefaults: mergeEditorSceneLightDefaults as any,\n };\n}\n\nfunction createReducerServices<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch>(\n options: FpsGameEditorStandardSceneAssemblyOptions<TDocument, TGameObject, TPatch, any, any>,\n markerFacade: PlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>,\n fieldMutationServices: PlayableEditorSceneFieldMutationServices<TDocument, TGameObject>,\n patchGameObjectField: (document: TDocument, targetId: string, path: string, value: unknown) => TDocument,\n patchGameObjectsField: (document: TDocument, targetIds: readonly string[], path: string, value: unknown) => TDocument,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, any>,\n): PlayableEditorSceneReducerCoreServices<TDocument, TGameObject> {\n return {\n ...fieldMutationServices,\n normalizeRootTransformDocument: normalizeEditorSceneRootTransformDocument as any,\n syncMarkerGraphDocument: markerFacade.syncMarkerGraphDocument,\n ensureGameObjectGuids: ensureEditorSceneGameObjectGuids as any,\n normalizeDocumentAfterCommand: (document, command) => feature?.normalizeDocumentAfterCommand?.(document, command as DocumentCommand<TDocument, TPatch>) ?? document,\n patchMaterialAssetField: (document, id, path, value) => patchEditorSceneMaterialAssetField(document as any, id, path, value) as TDocument,\n addMaterialAsset: (document, asset) => addEditorSceneMaterialAsset(document as any, asset as any) as TDocument,\n deleteMaterialAsset: (document, id) => deleteDefaultEditorSceneMaterialAsset(document as any, id) as TDocument,\n addMaterialAssetAndBind: (document, targetId, path, asset) => addEditorSceneMaterialAssetAndBind(document as any, targetId, path, asset as any) as TDocument,\n addPrefabAsset: (document, prefab, source) => addEditorScenePrefabAsset(document as any, prefab as any, source as any) as TDocument,\n patchPrefabAssetField: (document, assetId, path, value) => patchEditorScenePrefabAssetField(document as any, assetId, path, value) as TDocument,\n replacePrefabAsset: (document, assetId, prefab, source) => replaceEditorScenePrefabAsset(document as any, assetId, prefab as any, source as any) as TDocument,\n addMaterialAssetAndBindPrefabOverride: (document, assetId, path, asset) => addEditorSceneMaterialAssetAndBindPrefabOverride(document as any, assetId, path, asset as any) as TDocument,\n patchGameObjectField,\n patchGameObjectsField,\n reduceExtensionPatch: ({ document, patch, command }) => {\n if (patch.kind === 'game-object.field-batch' && Array.isArray(patch.fields)) {\n return (patch.fields as Array<{ targetId: string; path: string; value: unknown }>).reduce(\n (next, field) => patchGameObjectsField(next, [field.targetId], field.path, field.value),\n document,\n );\n }\n return feature?.reducePatch?.({ document, patch, command: command as DocumentCommand<TDocument, TPatch> }) ?? null;\n },\n isCustomFieldPatchPath: feature?.isInspectorPatchPath,\n reduceMarkerGraphPatch: (document, command) => markerFacade.reduceMarkerGraphPatch(document, command as PlayableLocalEditorMarkerGraphCommand),\n isDirectionalLightAnglePath: isEditorSceneLightDirectionAnglePath,\n validateSerializedPropertyField: input => fieldMutationServices.validateField(input.document, input.gameObject as TGameObject, input.path, input.value),\n createGameObjectGuid: createEditorSceneGameObjectGuid,\n createUniqueId: createUniqueEditorSceneGameObjectId,\n resolveLocalTransform: ({ document, parentId, worldTransform }) => toEditorSceneLocalTransformForParent(document, parentId ?? undefined, worldTransform),\n resolveRootContainerId: resolveEditorSceneRootContainerId,\n ensureDefaultMaterialAssets: ensureDefaultEditorSceneMaterialAssets as any,\n reconcileMaterialSlotReimportBindings: reconcileEditorSceneMaterialSlotReimportBindings as any,\n ensureImportedMaterialDefaults: ensureImportedEditorSceneMaterialDefaults as any,\n };\n}\n\nfunction createPropertyPatchServices<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch>(\n options: FpsGameEditorStandardSceneAssemblyOptions<TDocument, TGameObject, TPatch, any, any>,\n markerFacade: PlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>,\n fieldMutationServices: PlayableEditorSceneFieldMutationServices<TDocument, TGameObject>,\n findGameObject: (document: TDocument, id: string | null | undefined) => TGameObject | null,\n normalizeValue: (path: string, value: unknown) => unknown,\n validateValue: (document: TDocument, gameObject: TGameObject, path: string, value: unknown) => InspectorValidationResult,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, any>,\n): PlayableEditorScenePropertyPatchServices<TDocument, TGameObject, TPatch, any> {\n return {\n fieldMutationOptions: createPlayableEditorSceneFieldMutationOptions(fieldMutationServices),\n findGameObject,\n normalizeValue,\n validateValue,\n blockFieldPatch: (document, targetId, path, value) => isBlockedPlayableEditorSceneSystemFieldPatch(document, targetId, path, value, fieldMutationServices),\n isRootTransformPath: isEditorSceneRootTransformPath,\n resolveAssetMeshSelectionTarget: resolveEditorSceneAssetMeshSelectionTarget as any,\n isAssetMeshWritablePath: isEditorSceneAssetMeshWritablePath,\n parseDuplicateMaterialAssetValue: parseEditorSceneDuplicateMaterialAssetValue,\n isMaterialBindingPath: isEditorSceneMaterialBindingPath,\n isMaterialBindingPathAllowed: (gameObject, path) => isEditorSceneMaterialBindingPath(path) && (!!options.resolveFieldSchema?.(path, readNodeKind(gameObject)) || path.startsWith('overrides.materialSlotBindings.')),\n findMaterialAssetName: (document, id) => findEditorSceneMaterialAsset(document as any, id)?.name ?? null,\n parseMaterialAssetFieldPath: parseEditorSceneMaterialAssetFieldPath,\n normalizeMaterialAssetValue: normalizeEditorSceneMaterialAssetValue,\n hasMaterialAsset: hasEditorSceneMaterialAsset as any,\n validateMaterialAssetFieldValue: validateEditorSceneMaterialAssetFieldValue,\n collectMaterialAssetBindingIds: collectEditorSceneMaterialAssetBindingIds as any,\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n createMarkerTargetUpdateCommand: markerFacade.createMarkerTargetUpdateCommand,\n createMarkerTypeUpdateCommand: markerFacade.createMarkerTypeUpdateCommand,\n createMarkerGraphPatch: options.createPatch.markerGraph as any,\n isDirectionalLightAnglePath: isEditorSceneLightDirectionAnglePath,\n createDirectionalLightPatch: options.createPatch.gameObjectField,\n patchDirectionalLightAngleField: (document, targetId, path, value) => patchPlayableEditorSceneDirectionalLightAngleField(document, targetId, path, value, fieldMutationServices),\n createCustomInspectorPropertyPatch: ({ document, gameObject, path, value }) => feature?.createInspectorPropertyPatch?.({\n document,\n gameObject,\n path,\n value,\n collectChangedIds: () => collectEditorSceneSubtreeIdList(document, [gameObject.id]),\n }) as any ?? null,\n patchCustomGameObjectField: feature?.patchGameObjectField,\n patchCustomGameObjectsField: feature?.patchGameObjectsField,\n normalizeAfterFieldPatch: (document, targetId, path, value) => feature?.normalizeAfterFieldPatch?.(document, targetId, path, value) ?? document,\n isProjectionShapePath: isStandardProjectionPath,\n isArtistMaterialPatchPath: isEditorSceneArtistMaterialPatchPath,\n isCustomProjectionPath: feature?.isProjectionPath,\n collectChangedIdsForFieldPath: (document, targetId, path) => path.startsWith('transform.') ? collectEditorSceneSubtreeIdList(document, [targetId]) : [targetId],\n createGameObjectFieldPatch: options.createPatch.gameObjectField,\n createMaterialAssetFieldPatch: options.createPatch.materialAssetField,\n };\n}\n\nfunction createHierarchyFacade<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch>(\n markerFacade: PlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>,\n) {\n return createPlayableEditorSceneHierarchyFacade<TDocument, TGameObject, TPatch>({\n findGameObject: (document, id) => id ? findEditorSceneGameObject(document, id) as TGameObject | null : null,\n resolveRootContainerId: resolveEditorSceneRootContainerId,\n isProtectedSystemGameObject: isProtectedSystemGameObject as any,\n isProtectedSystemGameObjectId: isProtectedSystemGameObjectId as any,\n decorateHierarchyItem: ({ item, gameObject }) => gameObject && isEditorSceneMarkerGameObject(gameObject)\n ? { ...item, role: 'marker', icon: 'view-overlay', canHaveChildren: false }\n : item,\n collectHierarchyItemChildren: ({ gameObject, document }) => {\n if (readNodeKind(gameObject) === 'primitive') return [];\n return collectEditorSceneChildMaterialSlots(document as any, gameObject as any).map((slot: any, index: number): SceneGraphTreeItem => ({\n id: createEditorSceneAssetMeshSelectionId(gameObject.id, getEditorSceneSlotSelectionKey(slot)),\n label: slot.label || formatEditorSceneMaterialSlotLabel(slot.ownerNodePath, index, getArtistMaterialInspectorText(readArtistMaterialInspectorLanguage(gameObject))),\n parentId: gameObject.id,\n role: 'object',\n icon: 'material-slot',\n selectable: true,\n protected: false,\n canHaveChildren: false,\n renamable: false,\n deletable: false,\n draggable: false,\n }));\n },\n });\n}\n\nfunction createStandardInspectorObject<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TAssetItem extends EditorSceneAssetLibraryItem, TContext extends { textureAssets?: readonly { id: string; label: string; url: string; meta?: string }[] }>(\n assembly: FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, TAssetItem, TContext>,\n options: FpsGameEditorStandardSceneAssemblyOptions<TDocument, TGameObject, TPatch, TAssetItem, TContext>,\n markerFacade: PlayableEditorSceneMarkerGraphFacade<TDocument, TPatch>,\n document: TDocument,\n targetId: string,\n context: TContext,\n createDocumentInspectorProperty: FpsGameEditorStandardSceneAssembly<TDocument, TGameObject, TPatch, TAssetItem, TContext>['createDocumentInspectorProperty'],\n findGameObject: (document: TDocument, id: string | null | undefined) => TGameObject | null,\n extraValidators: () => ReadonlyArray<EditorSceneFieldInspectorExtraValidator<TDocument, EditorSceneNodeKind>>,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>,\n): InspectorObject<TDocument> | null {\n return createPlayableEditorSceneInspectorObject({\n document,\n targetId,\n context,\n resolveAssetMeshSelectionTarget: resolveEditorSceneAssetMeshSelectionTarget as any,\n createAssetMeshInspectorSections: (targetDocument: TDocument, target: any, targetContext: TContext) => sceneMaterialInspectorInternals.createEditorSceneAssetMeshInspectorSectionsWithCachedUsage(targetDocument as any, target as any, targetContext as any) as InspectorSection<TDocument>[],\n findGameObject,\n readNodeKind,\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n createInspectorSections: (targetDocument: TDocument, gameObject: TGameObject, targetContext: TContext) => {\n const nodeKind = readNodeKind(gameObject);\n return createPlayableEditorSceneInspectorSections({\n document: targetDocument,\n gameObject,\n context: targetContext,\n nodeKind,\n isCameraGameObject,\n isLightGameObject,\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n createBaseSections: () => createEditorSceneDocumentInspectorSections({\n document: targetDocument,\n gameObject,\n nodeKind,\n extraValidators: extraValidators(),\n rootTransform: EDITOR_SCENE_ROOT_TRANSFORM,\n renderingProfile: options.getRenderingProfile() as any,\n }) as InspectorSection<TDocument>[],\n createCustomSections: () => feature?.createInspectorSections?.({\n document: targetDocument,\n gameObject,\n nodeKind,\n context: targetContext,\n createDocumentInspectorProperty,\n }) ?? [],\n createCameraSection: () => createEditorSceneCameraInspectorSection({\n nodeKind,\n camera: gameObject.camera,\n rig: mergeEditorSceneCameraDefaults(gameObject.camera) as any,\n createDocumentInspectorProperty,\n }) as InspectorSection<TDocument>,\n createLightSections: () => createEditorSceneLightInspectorSections({\n nodeKind,\n gameObject,\n light: mergeEditorSceneLightDefaults(gameObject.light, gameObject.id === 'environment_light' ? 'hemispheric' : 'directional'),\n createDocumentInspectorProperty,\n normalizeValue: (path, value) => feature?.normalizeInspectorValue?.(path, value) ?? normalizeEditorScenePlayableInspectorValue(path, value),\n defaultEnvironmentGroundColor: DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT.groundColor,\n renderingProfile: options.getRenderingProfile() as any,\n }) as InspectorSection<TDocument>[],\n createMarkerSection: () => isEditorSceneMarkerGameObject(gameObject) ? createPlayableEditorSceneMarkerInspectorSection({\n document: targetDocument,\n gameObject,\n nodeKind,\n markerTypeCatalog: markerFacade.getMarkerTypeCatalog(targetDocument),\n resolveMarkerKind: (_document: unknown, marker: { type: string; kind?: string }) => markerFacade.resolveMarkerKind(targetDocument, marker.type, marker.kind),\n isMarkerGameObject: isEditorSceneMarkerGameObject as any,\n formatMarkerTypeLabel: options.formatMarkerTypeLabel ?? ((_type, fallback) => fallback),\n createDocumentInspectorProperty,\n } as any) as unknown as InspectorSection<TDocument> : null,\n createPrefabInstanceSection: () => createPrefabInstanceInspectorSection(targetDocument as any, gameObject as any) as InspectorSection<TDocument> | null,\n createMaterialSections: () => sceneMaterialInspectorInternals.createArtistMaterialInspectorSectionsWithCachedUsage(targetDocument as any, gameObject as any, nodeKind, targetContext as any, {\n createDocumentInspectorProperty,\n } as MaterialInspectorServices) as InspectorSection<TDocument>[],\n createOutlineSection: () => createPlayableEditorSceneOutlineInspectorSection({\n nodeKind,\n outline: (gameObject.overrides as { outline?: unknown } | undefined)?.outline,\n createDocumentInspectorProperty,\n }),\n } as any) as InspectorSection<TDocument>[];\n },\n } as any) as InspectorObject<TDocument> | null;\n}\n\nfunction createStandardMultiInspectorObject<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TContext>(\n document: TDocument,\n targetIds: string[],\n activeId: string | null,\n context: TContext,\n features: readonly FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>[],\n): InspectorObject<TDocument> | null {\n let extraSection: InspectorSection<TDocument> | null = null;\n let fallbackTargetIds: string[] = [];\n for (const feature of features) {\n const section = feature.createMultiInspectorSection?.({ document, targetIds, activeId, context }) ?? null;\n if (!section) continue;\n extraSection = section;\n fallbackTargetIds = feature.resolveMultiInspectorTargetIds?.(document, targetIds) ?? [];\n break;\n }\n return createPlayableEditorSceneInspectorMultiObject({\n document,\n selectedIds: targetIds,\n activeId,\n extraSection,\n resolveFallbackTargetIds: () => fallbackTargetIds,\n formatFallbackLabel: ids => `${ids.length} Objects`,\n fallbackSelectionKind: 'transform',\n });\n}\n\nfunction validateProjectFieldSchema(\n schema: EditorSceneFieldSchemaEntry | null,\n path: string,\n value: unknown,\n): InspectorValidationResult | null {\n if (!schema) return null;\n if (value == null && schema.allowDelete === false) {\n return {\n ok: false,\n message: `Scene node field cannot be deleted: ${path}.`,\n };\n }\n if (!schema.validate(value)) {\n return {\n ok: false,\n message: `Invalid value for scene node field: ${path}.`,\n };\n }\n return { ok: true, value };\n}\n\nfunction mergeMarkerTypeCatalog(\n builtIns: readonly SpatialMarkerTypeDefinition[],\n graph?: SpatialMarkerGraph | null,\n): SpatialMarkerTypeDefinition[] {\n return getEditorSceneMarkerTypeCatalogFromGraph(graph, { builtInMarkerTypes: builtIns });\n}\n\nconst readNodeKind = readEditorSceneNodeKind;\n\nfunction isStandardProjectionPath(path: string): boolean {\n return path.startsWith('shadow.')\n || path === 'transformType'\n || path.startsWith('rendering.')\n || path.startsWith('primitive.')\n || path.startsWith('camera.')\n || path.startsWith('light.');\n}\n\nfunction isStandardSerializedMultiFieldPath<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TContext>(\n path: string,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>,\n): boolean {\n return path === 'enabled'\n || path === 'metadata.shadowInspectorLanguage'\n || path === 'shadow.cast'\n || path === 'shadow.receive'\n || path === 'shadow.mode'\n || path === 'shadow.quality'\n || feature?.isSerializedMultiFieldPath?.(path) === true;\n}\n\nfunction isStandardSerializedMultiProjectionPath<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TContext>(\n path: string,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>,\n): boolean {\n return path === 'shadow.cast'\n || path === 'shadow.receive'\n || path === 'shadow.mode'\n || path === 'shadow.quality'\n || feature?.isSerializedMultiProjectionPath?.(path) === true;\n}\n\nfunction getStandardSerializedMultiProbeValue<TDocument extends EditorSceneDocument, TGameObject extends EditorSceneGameObject, TPatch, TContext>(\n path: string,\n feature?: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>,\n): unknown {\n if (path === 'enabled') return false;\n if (path === 'shadow.cast' || path === 'shadow.receive' || path === 'shadow.mode') return 'none';\n if (path === 'shadow.quality') return 'medium';\n if (path === 'metadata.shadowInspectorLanguage') return 'en';\n return feature?.getSerializedMultiProbeValue?.(path);\n}\n\nfunction toPrefabShadowMode(value: string): string {\n return value === 'planar' ? 'projected' : value;\n}\n\nfunction readDirectStandardSceneFeatureContribution<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n>(value: unknown): FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext> | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return null;\n const contribution = value as FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>;\n const contributionHooks: Array<keyof FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>> = [\n 'normalizeInspectorValue',\n 'validateInspectorField',\n 'isInspectorPatchPath',\n 'isProjectionPath',\n 'normalizeDocumentAfterCommand',\n 'normalizeAfterFieldPatch',\n 'fieldMutation',\n 'createInspectorPropertyPatch',\n 'patchGameObjectField',\n 'patchGameObjectsField',\n 'reducePatch',\n 'createHierarchyPatch',\n 'createInspectorSections',\n 'createMultiInspectorSection',\n 'resolveMultiInspectorTargetIds',\n 'isSerializedMultiFieldPath',\n 'isSerializedMultiProjectionPath',\n 'getSerializedMultiProbeValue',\n 'canPatchSerializedMultiField',\n ];\n return contributionHooks.some(key => contribution[key] != null) ? contribution : null;\n}\n\nfunction composeStandardSceneFeatureContributions<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n>(\n contributions: readonly FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>[],\n): FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext> | undefined {\n if (contributions.length === 0) return undefined;\n const firstResult = <T>(read: (contribution: FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>) => T | null | undefined): T | null => {\n for (const contribution of contributions) {\n const result = read(contribution);\n if (result != null) return result;\n }\n return null;\n };\n return {\n normalizeInspectorValue(path, value) {\n for (const contribution of contributions) {\n const result = contribution.normalizeInspectorValue?.(path, value);\n if (result !== undefined) return result;\n }\n return undefined;\n },\n validateInspectorField: input => firstResult(contribution => contribution.validateInspectorField?.(input)),\n isInspectorPatchPath: path => contributions.some(contribution => contribution.isInspectorPatchPath?.(path)),\n isProjectionPath: path => contributions.some(contribution => contribution.isProjectionPath?.(path)),\n normalizeDocumentAfterCommand: (document, command) => contributions.reduce(\n (next, contribution) => contribution.normalizeDocumentAfterCommand?.(next, command) ?? next,\n document,\n ),\n normalizeAfterFieldPatch: (document, targetId, path, value) => contributions.reduce(\n (next, contribution) => contribution.normalizeAfterFieldPatch?.(next, targetId, path, value) ?? next,\n document,\n ),\n fieldMutation: composeStandardSceneFieldMutations(contributions),\n createInspectorPropertyPatch: input => firstResult(contribution => contribution.createInspectorPropertyPatch?.(input)),\n patchGameObjectField: input => firstResult(contribution => contribution.patchGameObjectField?.(input)),\n patchGameObjectsField: input => firstResult(contribution => contribution.patchGameObjectsField?.(input)),\n reducePatch: input => firstResult(contribution => contribution.reducePatch?.(input)),\n createHierarchyPatch: (document, featureId) => firstResult(contribution => contribution.createHierarchyPatch?.(document, featureId)),\n createInspectorSections: input => contributions.flatMap(contribution => contribution.createInspectorSections?.(input) ?? []),\n isSerializedMultiFieldPath: path => contributions.some(contribution => contribution.isSerializedMultiFieldPath?.(path)),\n isSerializedMultiProjectionPath: path => contributions.some(contribution => contribution.isSerializedMultiProjectionPath?.(path)),\n getSerializedMultiProbeValue(path) {\n for (const contribution of contributions) {\n const result = contribution.getSerializedMultiProbeValue?.(path);\n if (result !== undefined) return result;\n }\n return undefined;\n },\n canPatchSerializedMultiField: input => contributions.every(\n contribution => contribution.canPatchSerializedMultiField?.(input) !== false,\n ),\n };\n}\n\nfunction composeStandardSceneFieldMutations<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TPatch,\n TContext,\n>(\n contributions: readonly FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>[],\n): FpsGameEditorStandardSceneFeatureContribution<TDocument, TGameObject, TPatch, TContext>['fieldMutation'] {\n const mutations = contributions.flatMap(contribution => contribution.fieldMutation ? [contribution.fieldMutation] : []);\n if (mutations.length === 0) return undefined;\n return {\n isCustomTransformType: (value): value is string => mutations.some(mutation => mutation.isCustomTransformType?.(value)),\n applyCustomTransformType(gameObject, transformType) {\n for (const mutation of mutations) mutation.clearCustomTransformState?.(gameObject, transformType);\n for (const mutation of mutations) mutation.applyCustomTransformType?.(gameObject, transformType);\n },\n clearCustomTransformState(gameObject, transformType) {\n for (const mutation of mutations) mutation.clearCustomTransformState?.(gameObject, transformType);\n },\n patchCustomTransformField(gameObject, path, value) {\n for (const mutation of mutations) {\n if (mutation.patchCustomTransformField?.(gameObject, path, value)) return true;\n }\n return false;\n },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/scene-source/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,2BAA2B,EAC3B,mBAAmB,EACpB,MAAM,aAAa,CAAC;AA0BrB,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,4BAA4B,EAC5B,+BAA+B,EAC/B,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,wBAAsB,mBAAmB,CACvC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,EAE3D,OAAO,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAC5D,OAAO,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC,CAuBrD;AAED,wBAAsB,mBAAmB,CACvC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,EAE3D,WAAW,EAAE,SAAS,EACtB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CA+B/C;AAuBD,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAC5D,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAIxC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAC5D,OAAO,CAAC,yBAAyB,CAAC,CAIpC;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAC5D,OAAO,CAAC,wBAAwB,CAAC,CAKnC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,4BAA4B,EAAE,cAAc,CAAC,GAC3D,wBAAwB,GAAG,IAAI,CAgBjC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/scene-source/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,2BAA2B,EAC3B,mBAAmB,EACpB,MAAM,aAAa,CAAC;AA0BrB,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,4BAA4B,EAC5B,+BAA+B,EAC/B,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,wBAAsB,mBAAmB,CACvC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,EAE3D,OAAO,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAC5D,OAAO,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC,CAuBrD;AAED,wBAAsB,mBAAmB,CACvC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,EAE3D,WAAW,EAAE,SAAS,EACtB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAuC/C;AAuBD,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAC5D,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAIxC;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAC5D,OAAO,CAAC,yBAAyB,CAAC,CAIpC;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,4BAA4B,GAAG,oBAAoB,GAC5D,OAAO,CAAC,wBAAwB,CAAC,CAKnC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,4BAA4B,EAAE,cAAc,CAAC,GAC3D,wBAAwB,GAAG,IAAI,CAgBjC"}
@@ -35,12 +35,20 @@ export async function loadSceneMainSource(options) {
35
35
  export async function saveSceneMainSource(editorScene, options) {
36
36
  const client = resolveClientOptions(options);
37
37
  assertPlayableEditorSceneDocumentContract(editorScene);
38
+ const expectedAuthoringSourceRevision = typeof options?.expectedAuthoringSourceRevision === 'number'
39
+ ? options.expectedAuthoringSourceRevision
40
+ : typeof editorScene.meta?.authoringSource?.revision === 'number'
41
+ ? editorScene.meta.authoringSource.revision
42
+ : undefined;
38
43
  const saved = await client.fetchJson(joinEndpoint(client.endpointBase, '/save-editor-scene'), {
39
44
  method: 'POST',
40
45
  headers: { 'Content-Type': 'application/json' },
41
46
  body: JSON.stringify({
42
47
  editorScene,
43
48
  mode: options?.mode ?? 'local-commit-save',
49
+ ...(typeof expectedAuthoringSourceRevision === 'number'
50
+ ? { expectedAuthoringSourceRevision }
51
+ : {}),
44
52
  ...createSceneMainSourceSaveCompanionConfigPayload(options),
45
53
  }),
46
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/scene-source/client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createEditorSceneAuthoringSourceDescriptor,\n ensureEditorSceneAuthoringSource,\n} from '../authoring';\nimport type {\n EditorSceneAssetLibraryItem,\n EditorSceneDocument,\n} from '../document';\nimport {\n fetchJson,\n joinEndpoint,\n PLAYABLE_AUTHORING_API_BASE,\n} from '../shared/http';\nimport { readString } from '../shared/json';\nimport {\n readCompiledRuntimeSceneArtifact,\n summarizeSaveResult,\n} from './artifacts';\nimport {\n createSceneMainSourceSaveCompanionConfigPayload,\n readSceneMainSourceSaveCompanionConfigs,\n} from './companion-configs';\nimport {\n readEditorAssetLibrary,\n readEditorScene,\n readRuntimeInputDrift,\n summarizeEditorSceneSource,\n} from './protocol';\nimport { assertPlayableEditorSceneDocumentContract } from '../scene-compiler/validation';\nimport {\n assertShadowMapExperimentConfig,\n type ShadowMapExperimentConfig,\n} from '@fps-games/playable-rendering';\nimport {\n resolveEditorProjectFileExtension,\n resolveEditorProjectMediaSupport,\n readEditorProjectFileContent,\n readEditorProjectFileSnapshot,\n type EditorProjectFileContent,\n type EditorProjectFileSnapshot,\n type EditorProjectMediaSource,\n} from '../project-files/index';\nimport type {\n SceneMainSourceClientOptions,\n SceneMainSourceDriverLoadResult,\n SceneMainSourceSaveOptions,\n SceneMainSourceSaveResult,\n SceneSourceFetchJson,\n} from './types';\n\nexport async function loadSceneMainSource<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n>(\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Promise<SceneMainSourceDriverLoadResult<TDocument>> {\n const client = resolveClientOptions(options);\n const json = await client.fetchJson(joinEndpoint(client.endpointBase, '/editor-scene'));\n const editorScene = readEditorScene<TDocument>(json.editorScene);\n if (!editorScene) throw new Error('project authoring endpoint did not return editorScene');\n const document = ensureEditorSceneAuthoringSource(editorScene);\n const drift = readRuntimeInputDrift(json.drift);\n const companionConfigs = readSceneMainSourceSaveCompanionConfigs(json);\n const renderingConfig = companionConfigs.rendering ?? undefined;\n const shadowMapExperimentConfig = readSceneMainSourceShadowMapExperimentConfig(json);\n const assets = Object.prototype.hasOwnProperty.call(json, 'assets')\n ? readEditorAssetLibrary(json.assets)\n : undefined;\n return {\n source: createEditorSceneAuthoringSourceDescriptor(document, readString(json.editorScenePath)),\n document,\n ...(assets ? { assets } : {}),\n drift,\n companionConfigs,\n ...(renderingConfig ? { renderingConfig } : {}),\n ...(shadowMapExperimentConfig ? { shadowMapExperimentConfig } : {}),\n summary: summarizeEditorSceneSource(document, drift),\n };\n}\n\nexport async function saveSceneMainSource<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n>(\n editorScene: TDocument,\n options?: SceneMainSourceSaveOptions,\n): Promise<SceneMainSourceSaveResult<TDocument>> {\n const client = resolveClientOptions(options);\n assertPlayableEditorSceneDocumentContract(editorScene);\n const saved = await client.fetchJson(joinEndpoint(client.endpointBase, '/save-editor-scene'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n editorScene,\n mode: options?.mode ?? 'local-commit-save',\n ...createSceneMainSourceSaveCompanionConfigPayload(options),\n }),\n });\n const document = Object.prototype.hasOwnProperty.call(saved, 'editorScene')\n ? readRequiredEditorScene<TDocument>(saved.editorScene, '$.editorScene')\n : editorScene;\n const source = createEditorSceneAuthoringSourceDescriptor(document, readString(saved.editorScenePath));\n const compiledArtifact = readCompiledRuntimeSceneArtifact(saved, source);\n const companionConfigs = readSceneMainSourceSaveCompanionConfigs(saved);\n const renderingConfig = companionConfigs.rendering ?? undefined;\n const shadowMapExperimentConfig = readSceneMainSourceShadowMapExperimentConfig(saved);\n return {\n source,\n document,\n summary: summarizeSaveResult(saved),\n compiledArtifact,\n companionConfigs,\n expectedVersion: typeof saved.expectedVersion === 'number' ? saved.expectedVersion : undefined,\n renderingConfig,\n ...(shadowMapExperimentConfig ? { shadowMapExperimentConfig } : {}),\n sceneJsonText: typeof saved.sceneJsonText === 'string' ? saved.sceneJsonText : undefined,\n };\n}\n\nfunction readSceneMainSourceShadowMapExperimentConfig(\n value: Record<string, unknown>,\n): ShadowMapExperimentConfig | undefined {\n if (!Object.prototype.hasOwnProperty.call(value, 'shadowMapExperimentConfig')) return undefined;\n const config = value.shadowMapExperimentConfig;\n if (config == null) return undefined;\n assertShadowMapExperimentConfig(config);\n return structuredClone(config);\n}\n\nfunction readRequiredEditorScene<TDocument extends EditorSceneDocument>(\n value: unknown,\n path: string,\n): TDocument {\n const document = readEditorScene<TDocument>(value);\n if (document) return document;\n const error = new Error(`schema.invalidType: ${path}`);\n Object.assign(error, { code: 'schema.invalidType', path });\n throw error;\n}\n\nexport async function loadEditorAssetLibrary(\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Promise<EditorSceneAssetLibraryItem[]> {\n const client = resolveClientOptions(options);\n const json = await client.fetchJson(joinEndpoint(client.endpointBase, '/editor-asset-library'));\n return readEditorAssetLibrary(json.assets);\n}\n\nexport async function loadEditorProjectFiles(\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Promise<EditorProjectFileSnapshot> {\n const client = resolveClientOptions(options);\n const json = await client.fetchJson(joinEndpoint(client.endpointBase, '/project-files'));\n return readEditorProjectFileSnapshot(json);\n}\n\nexport async function loadEditorProjectFile(\n path: string,\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Promise<EditorProjectFileContent> {\n const client = resolveClientOptions(options);\n const endpoint = joinEndpoint(client.endpointBase, `/project-file?path=${encodeURIComponent(path)}`);\n const json = await client.fetchJson(endpoint);\n return readEditorProjectFileContent(json);\n}\n\nexport function resolveEditorProjectMediaSource(\n path: string,\n options?: Pick<SceneMainSourceClientOptions, 'endpointBase'>,\n): EditorProjectMediaSource | null {\n const relativePath = normalizeEditorProjectClientPath(path);\n if (!relativePath) return null;\n const support = resolveEditorProjectMediaSupport(relativePath);\n if (!support) return null;\n const endpointBase = options?.endpointBase ?? PLAYABLE_AUTHORING_API_BASE;\n const pathSegments = relativePath.split('/');\n const name = pathSegments[pathSegments.length - 1] ?? relativePath;\n return {\n path: relativePath,\n name,\n extension: resolveEditorProjectFileExtension(name),\n kind: support.kind,\n mimeType: support.mimeType,\n url: joinEndpoint(endpointBase, `/project-media?path=${encodeURIComponent(relativePath)}`),\n };\n}\n\nfunction normalizeEditorProjectClientPath(value: string): string | null {\n const normalized = value.trim().replace(/\\\\/g, '/').replace(/^\\/+/, '');\n if (!normalized || /^[A-Za-z]:\\//.test(normalized)) return null;\n const segments = normalized.split('/');\n return segments.some(segment => !segment || segment === '.' || segment === '..')\n ? null\n : segments.join('/');\n}\n\nfunction resolveClientOptions(\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Required<SceneMainSourceClientOptions> {\n if (typeof options === 'function') {\n return {\n endpointBase: PLAYABLE_AUTHORING_API_BASE,\n fetchJson: options,\n };\n }\n return {\n endpointBase: options?.endpointBase ?? PLAYABLE_AUTHORING_API_BASE,\n fetchJson: options?.fetchJson ?? fetchJson,\n };\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/scene-source/client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createEditorSceneAuthoringSourceDescriptor,\n ensureEditorSceneAuthoringSource,\n} from '../authoring';\nimport type {\n EditorSceneAssetLibraryItem,\n EditorSceneDocument,\n} from '../document';\nimport {\n fetchJson,\n joinEndpoint,\n PLAYABLE_AUTHORING_API_BASE,\n} from '../shared/http';\nimport { readString } from '../shared/json';\nimport {\n readCompiledRuntimeSceneArtifact,\n summarizeSaveResult,\n} from './artifacts';\nimport {\n createSceneMainSourceSaveCompanionConfigPayload,\n readSceneMainSourceSaveCompanionConfigs,\n} from './companion-configs';\nimport {\n readEditorAssetLibrary,\n readEditorScene,\n readRuntimeInputDrift,\n summarizeEditorSceneSource,\n} from './protocol';\nimport { assertPlayableEditorSceneDocumentContract } from '../scene-compiler/validation';\nimport {\n assertShadowMapExperimentConfig,\n type ShadowMapExperimentConfig,\n} from '@fps-games/playable-rendering';\nimport {\n resolveEditorProjectFileExtension,\n resolveEditorProjectMediaSupport,\n readEditorProjectFileContent,\n readEditorProjectFileSnapshot,\n type EditorProjectFileContent,\n type EditorProjectFileSnapshot,\n type EditorProjectMediaSource,\n} from '../project-files/index';\nimport type {\n SceneMainSourceClientOptions,\n SceneMainSourceDriverLoadResult,\n SceneMainSourceSaveOptions,\n SceneMainSourceSaveResult,\n SceneSourceFetchJson,\n} from './types';\n\nexport async function loadSceneMainSource<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n>(\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Promise<SceneMainSourceDriverLoadResult<TDocument>> {\n const client = resolveClientOptions(options);\n const json = await client.fetchJson(joinEndpoint(client.endpointBase, '/editor-scene'));\n const editorScene = readEditorScene<TDocument>(json.editorScene);\n if (!editorScene) throw new Error('project authoring endpoint did not return editorScene');\n const document = ensureEditorSceneAuthoringSource(editorScene);\n const drift = readRuntimeInputDrift(json.drift);\n const companionConfigs = readSceneMainSourceSaveCompanionConfigs(json);\n const renderingConfig = companionConfigs.rendering ?? undefined;\n const shadowMapExperimentConfig = readSceneMainSourceShadowMapExperimentConfig(json);\n const assets = Object.prototype.hasOwnProperty.call(json, 'assets')\n ? readEditorAssetLibrary(json.assets)\n : undefined;\n return {\n source: createEditorSceneAuthoringSourceDescriptor(document, readString(json.editorScenePath)),\n document,\n ...(assets ? { assets } : {}),\n drift,\n companionConfigs,\n ...(renderingConfig ? { renderingConfig } : {}),\n ...(shadowMapExperimentConfig ? { shadowMapExperimentConfig } : {}),\n summary: summarizeEditorSceneSource(document, drift),\n };\n}\n\nexport async function saveSceneMainSource<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n>(\n editorScene: TDocument,\n options?: SceneMainSourceSaveOptions,\n): Promise<SceneMainSourceSaveResult<TDocument>> {\n const client = resolveClientOptions(options);\n assertPlayableEditorSceneDocumentContract(editorScene);\n const expectedAuthoringSourceRevision = typeof options?.expectedAuthoringSourceRevision === 'number'\n ? options.expectedAuthoringSourceRevision\n : typeof editorScene.meta?.authoringSource?.revision === 'number'\n ? editorScene.meta.authoringSource.revision\n : undefined;\n const saved = await client.fetchJson(joinEndpoint(client.endpointBase, '/save-editor-scene'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n editorScene,\n mode: options?.mode ?? 'local-commit-save',\n ...(typeof expectedAuthoringSourceRevision === 'number'\n ? { expectedAuthoringSourceRevision }\n : {}),\n ...createSceneMainSourceSaveCompanionConfigPayload(options),\n }),\n });\n const document = Object.prototype.hasOwnProperty.call(saved, 'editorScene')\n ? readRequiredEditorScene<TDocument>(saved.editorScene, '$.editorScene')\n : editorScene;\n const source = createEditorSceneAuthoringSourceDescriptor(document, readString(saved.editorScenePath));\n const compiledArtifact = readCompiledRuntimeSceneArtifact(saved, source);\n const companionConfigs = readSceneMainSourceSaveCompanionConfigs(saved);\n const renderingConfig = companionConfigs.rendering ?? undefined;\n const shadowMapExperimentConfig = readSceneMainSourceShadowMapExperimentConfig(saved);\n return {\n source,\n document,\n summary: summarizeSaveResult(saved),\n compiledArtifact,\n companionConfigs,\n expectedVersion: typeof saved.expectedVersion === 'number' ? saved.expectedVersion : undefined,\n renderingConfig,\n ...(shadowMapExperimentConfig ? { shadowMapExperimentConfig } : {}),\n sceneJsonText: typeof saved.sceneJsonText === 'string' ? saved.sceneJsonText : undefined,\n };\n}\n\nfunction readSceneMainSourceShadowMapExperimentConfig(\n value: Record<string, unknown>,\n): ShadowMapExperimentConfig | undefined {\n if (!Object.prototype.hasOwnProperty.call(value, 'shadowMapExperimentConfig')) return undefined;\n const config = value.shadowMapExperimentConfig;\n if (config == null) return undefined;\n assertShadowMapExperimentConfig(config);\n return structuredClone(config);\n}\n\nfunction readRequiredEditorScene<TDocument extends EditorSceneDocument>(\n value: unknown,\n path: string,\n): TDocument {\n const document = readEditorScene<TDocument>(value);\n if (document) return document;\n const error = new Error(`schema.invalidType: ${path}`);\n Object.assign(error, { code: 'schema.invalidType', path });\n throw error;\n}\n\nexport async function loadEditorAssetLibrary(\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Promise<EditorSceneAssetLibraryItem[]> {\n const client = resolveClientOptions(options);\n const json = await client.fetchJson(joinEndpoint(client.endpointBase, '/editor-asset-library'));\n return readEditorAssetLibrary(json.assets);\n}\n\nexport async function loadEditorProjectFiles(\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Promise<EditorProjectFileSnapshot> {\n const client = resolveClientOptions(options);\n const json = await client.fetchJson(joinEndpoint(client.endpointBase, '/project-files'));\n return readEditorProjectFileSnapshot(json);\n}\n\nexport async function loadEditorProjectFile(\n path: string,\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Promise<EditorProjectFileContent> {\n const client = resolveClientOptions(options);\n const endpoint = joinEndpoint(client.endpointBase, `/project-file?path=${encodeURIComponent(path)}`);\n const json = await client.fetchJson(endpoint);\n return readEditorProjectFileContent(json);\n}\n\nexport function resolveEditorProjectMediaSource(\n path: string,\n options?: Pick<SceneMainSourceClientOptions, 'endpointBase'>,\n): EditorProjectMediaSource | null {\n const relativePath = normalizeEditorProjectClientPath(path);\n if (!relativePath) return null;\n const support = resolveEditorProjectMediaSupport(relativePath);\n if (!support) return null;\n const endpointBase = options?.endpointBase ?? PLAYABLE_AUTHORING_API_BASE;\n const pathSegments = relativePath.split('/');\n const name = pathSegments[pathSegments.length - 1] ?? relativePath;\n return {\n path: relativePath,\n name,\n extension: resolveEditorProjectFileExtension(name),\n kind: support.kind,\n mimeType: support.mimeType,\n url: joinEndpoint(endpointBase, `/project-media?path=${encodeURIComponent(relativePath)}`),\n };\n}\n\nfunction normalizeEditorProjectClientPath(value: string): string | null {\n const normalized = value.trim().replace(/\\\\/g, '/').replace(/^\\/+/, '');\n if (!normalized || /^[A-Za-z]:\\//.test(normalized)) return null;\n const segments = normalized.split('/');\n return segments.some(segment => !segment || segment === '.' || segment === '..')\n ? null\n : segments.join('/');\n}\n\nfunction resolveClientOptions(\n options?: SceneMainSourceClientOptions | SceneSourceFetchJson,\n): Required<SceneMainSourceClientOptions> {\n if (typeof options === 'function') {\n return {\n endpointBase: PLAYABLE_AUTHORING_API_BASE,\n fetchJson: options,\n };\n }\n return {\n endpointBase: options?.endpointBase ?? PLAYABLE_AUTHORING_API_BASE,\n fetchJson: options?.fetchJson ?? fetchJson,\n };\n}\n"]}
@@ -21,6 +21,7 @@ export interface SceneMainSourceDriverLoadResult<TDocument extends EditorSceneDo
21
21
  }
22
22
  export interface SceneMainSourceSaveOptions extends SceneMainSourceClientOptions {
23
23
  mode?: SceneMainSourceSaveMode;
24
+ expectedAuthoringSourceRevision?: number;
24
25
  companionConfigs?: Partial<SceneMainSourceCompanionConfigs> | null;
25
26
  renderingConfig?: Record<string, unknown> | null;
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scene-source/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scene-source/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EACV,2BAA2B,EAC3B,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AAEpF,MAAM,WAAW,4BAA4B;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,MAAM,WAAW,+BAA+B,CAC9C,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,EAC3D,MAAM,GAAG,2BAA2B;IAEpC,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,+BAA+B,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA2B,SAAQ,4BAA4B;IAC9E,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC,+BAA+B,CAAC,GAAG,IAAI,CAAC;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,yBAAyB,CACxC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,CAC3D,SAAQ,yBAAyB,CAAC,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,CAAC,EAAE,+BAA+B,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,4BAA4B,GACpC,gBAAgB,GAChB,gBAAgB,EAAE,GAClB,IAAI,GACJ,SAAS,CAAC;AAEd,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,IACzD,CAAC,KAAK,EAAE;IACV,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,SAAS,CAAC;CACrB,KAAK,4BAA4B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAE3E,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,WAAW,uCAAuC,CACtD,SAAS,SAAS,mBAAmB,GAAG,mBAAmB;IAE3D,MAAM,EAAE,+BAA+B,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,0BAA0B,GAAG,MAAM,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAEpF,MAAM,WAAW,uCAAuC,CACtD,SAAS,SAAS,mBAAmB,GAAG,mBAAmB;IAE3D,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,0BAA0B,CACpC,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,IACzD,CACF,KAAK,EAAE,uCAAuC,CAAC,SAAS,CAAC,KACtD,2BAA2B,CAAC,0BAA0B,GAAG,kCAAkC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAErH,MAAM,WAAW,wCAAwC,CACvD,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,CAC3D,SAAQ,uCAAuC,CAAC,SAAS,CAAC;IAC1D,KAAK,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,4CAA4C,CAC3D,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,CAC3D,SAAQ,uCAAuC,CAAC,SAAS,CAAC;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iDAAiD,CAChE,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,CAC3D,SAAQ,uCAAuC,CAAC,SAAS,CAAC;IAC1D,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B,CAC3C,SAAS,SAAS,mBAAmB,GAAG,mBAAmB,CAC3D,SAAQ,4BAA4B;IACpC,OAAO,CAAC,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,uCAAuC,CAAC,SAAS,CAAC,KACtD,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACpD,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,wCAAwC,CAAC,SAAS,CAAC,KACvD,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,wCAAwC,CAAC,SAAS,CAAC,KACvD,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,CACZ,KAAK,EAAE,4CAA4C,CAAC,SAAS,CAAC,KAC3D,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACvC,sBAAsB,CAAC,EAAE,CACvB,KAAK,EAAE,iDAAiD,CAAC,SAAS,CAAC,KAChE,2BAA2B,CAAC,IAAI,CAAC,CAAC;CACxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scene-source/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n AuthoringSourceDescriptor,\n AuthoringSourceSaveResult,\n CompiledArtifact,\n} from '@fps-games/editor-core';\nimport type { EditorSceneRuntimeInputDrift } from '../authoring';\nimport type {\n EditorSceneAssetLibraryItem,\n EditorSceneDocument,\n} from '../document';\nimport type { SceneMainSourceCompanionConfigs } from './companion-configs';\nimport type { ShadowMapExperimentConfig } from '@fps-games/playable-rendering';\n\nexport type SceneSourceFetchJson = (\n url: string,\n init?: RequestInit,\n) => Promise<Record<string, unknown>>;\n\nexport type SceneMainSourceSaveMode = 'local-commit-save' | 'prepare-platform-save';\n\nexport interface SceneMainSourceClientOptions {\n endpointBase?: string;\n fetchJson?: SceneSourceFetchJson;\n}\n\nexport interface SceneMainSourceDriverLoadResult<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n TAsset = EditorSceneAssetLibraryItem,\n> {\n source: AuthoringSourceDescriptor;\n document: TDocument;\n assets?: TAsset[];\n drift: EditorSceneRuntimeInputDrift | null;\n companionConfigs?: SceneMainSourceCompanionConfigs;\n renderingConfig?: Record<string, unknown>;\n shadowMapExperimentConfig?: ShadowMapExperimentConfig;\n summary?: string;\n}\n\nexport interface SceneMainSourceSaveOptions extends SceneMainSourceClientOptions {\n mode?: SceneMainSourceSaveMode;\n companionConfigs?: Partial<SceneMainSourceCompanionConfigs> | null;\n renderingConfig?: Record<string, unknown> | null;\n}\n\nexport interface SceneMainSourceSaveResult<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends AuthoringSourceSaveResult<TDocument> {\n compiledArtifact?: CompiledArtifact;\n companionConfigs?: SceneMainSourceCompanionConfigs;\n expectedVersion?: number;\n renderingConfig?: Record<string, unknown>;\n shadowMapExperimentConfig?: ShadowMapExperimentConfig;\n sceneJsonText?: string;\n}\n\nexport type SceneMainSourceCompileResult =\n | CompiledArtifact\n | CompiledArtifact[]\n | null\n | undefined;\n\nexport type SceneMainSourceCompile<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> = (input: {\n source: AuthoringSourceDescriptor;\n document: TDocument;\n}) => SceneMainSourceCompileResult | Promise<SceneMainSourceCompileResult>;\n\nexport type SceneMainSourceMaybePromise<T> = T | Promise<T>;\n\nexport interface SceneMainSourceDriverLoadLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> {\n loaded: SceneMainSourceDriverLoadResult<TDocument>;\n context?: unknown;\n}\n\nexport type SceneMainSourcePrepareLoad = () => SceneMainSourceMaybePromise<unknown>;\n\nexport interface SceneMainSourceDriverSaveLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> {\n source: AuthoringSourceDescriptor;\n document: TDocument;\n}\n\nexport interface SceneMainSourcePreparedSaveOptions {\n saveOptions?: SceneMainSourceSaveOptions;\n context?: unknown;\n}\n\nexport type SceneMainSourcePrepareSave<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> = (\n input: SceneMainSourceDriverSaveLifecycleInput<TDocument>,\n) => SceneMainSourceMaybePromise<SceneMainSourceSaveOptions | SceneMainSourcePreparedSaveOptions | null | undefined>;\n\nexport interface SceneMainSourceDriverSavedLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends SceneMainSourceDriverSaveLifecycleInput<TDocument> {\n saved: SceneMainSourceSaveResult<TDocument>;\n context?: unknown;\n}\n\nexport interface SceneMainSourceDriverSaveErrorLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends SceneMainSourceDriverSaveLifecycleInput<TDocument> {\n error: unknown;\n context?: unknown;\n}\n\nexport interface SceneMainSourceRuntimeSceneArtifactLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends SceneMainSourceDriverSaveLifecycleInput<TDocument> {\n artifact: CompiledArtifact;\n phase: 'save' | 'compile';\n}\n\nexport interface SceneMainSourceDriverOptions<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends SceneMainSourceClientOptions {\n compile?: SceneMainSourceCompile<TDocument>;\n prepareLoad?: SceneMainSourcePrepareLoad;\n afterLoad?: (\n input: SceneMainSourceDriverLoadLifecycleInput<TDocument>,\n ) => SceneMainSourceMaybePromise<void>;\n prepareSave?: SceneMainSourcePrepareSave<TDocument>;\n isSaveCurrent?: (\n input: SceneMainSourceDriverSavedLifecycleInput<TDocument>,\n ) => boolean;\n afterSave?: (\n input: SceneMainSourceDriverSavedLifecycleInput<TDocument>,\n ) => SceneMainSourceMaybePromise<void>;\n onSaveError?: (\n input: SceneMainSourceDriverSaveErrorLifecycleInput<TDocument>,\n ) => SceneMainSourceMaybePromise<void>;\n onRuntimeSceneArtifact?: (\n input: SceneMainSourceRuntimeSceneArtifactLifecycleInput<TDocument>,\n ) => SceneMainSourceMaybePromise<void>;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scene-source/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n AuthoringSourceDescriptor,\n AuthoringSourceSaveResult,\n CompiledArtifact,\n} from '@fps-games/editor-core';\nimport type { EditorSceneRuntimeInputDrift } from '../authoring';\nimport type {\n EditorSceneAssetLibraryItem,\n EditorSceneDocument,\n} from '../document';\nimport type { SceneMainSourceCompanionConfigs } from './companion-configs';\nimport type { ShadowMapExperimentConfig } from '@fps-games/playable-rendering';\n\nexport type SceneSourceFetchJson = (\n url: string,\n init?: RequestInit,\n) => Promise<Record<string, unknown>>;\n\nexport type SceneMainSourceSaveMode = 'local-commit-save' | 'prepare-platform-save';\n\nexport interface SceneMainSourceClientOptions {\n endpointBase?: string;\n fetchJson?: SceneSourceFetchJson;\n}\n\nexport interface SceneMainSourceDriverLoadResult<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n TAsset = EditorSceneAssetLibraryItem,\n> {\n source: AuthoringSourceDescriptor;\n document: TDocument;\n assets?: TAsset[];\n drift: EditorSceneRuntimeInputDrift | null;\n companionConfigs?: SceneMainSourceCompanionConfigs;\n renderingConfig?: Record<string, unknown>;\n shadowMapExperimentConfig?: ShadowMapExperimentConfig;\n summary?: string;\n}\n\nexport interface SceneMainSourceSaveOptions extends SceneMainSourceClientOptions {\n mode?: SceneMainSourceSaveMode;\n expectedAuthoringSourceRevision?: number;\n companionConfigs?: Partial<SceneMainSourceCompanionConfigs> | null;\n renderingConfig?: Record<string, unknown> | null;\n}\n\nexport interface SceneMainSourceSaveResult<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends AuthoringSourceSaveResult<TDocument> {\n compiledArtifact?: CompiledArtifact;\n companionConfigs?: SceneMainSourceCompanionConfigs;\n expectedVersion?: number;\n renderingConfig?: Record<string, unknown>;\n shadowMapExperimentConfig?: ShadowMapExperimentConfig;\n sceneJsonText?: string;\n}\n\nexport type SceneMainSourceCompileResult =\n | CompiledArtifact\n | CompiledArtifact[]\n | null\n | undefined;\n\nexport type SceneMainSourceCompile<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> = (input: {\n source: AuthoringSourceDescriptor;\n document: TDocument;\n}) => SceneMainSourceCompileResult | Promise<SceneMainSourceCompileResult>;\n\nexport type SceneMainSourceMaybePromise<T> = T | Promise<T>;\n\nexport interface SceneMainSourceDriverLoadLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> {\n loaded: SceneMainSourceDriverLoadResult<TDocument>;\n context?: unknown;\n}\n\nexport type SceneMainSourcePrepareLoad = () => SceneMainSourceMaybePromise<unknown>;\n\nexport interface SceneMainSourceDriverSaveLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> {\n source: AuthoringSourceDescriptor;\n document: TDocument;\n}\n\nexport interface SceneMainSourcePreparedSaveOptions {\n saveOptions?: SceneMainSourceSaveOptions;\n context?: unknown;\n}\n\nexport type SceneMainSourcePrepareSave<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> = (\n input: SceneMainSourceDriverSaveLifecycleInput<TDocument>,\n) => SceneMainSourceMaybePromise<SceneMainSourceSaveOptions | SceneMainSourcePreparedSaveOptions | null | undefined>;\n\nexport interface SceneMainSourceDriverSavedLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends SceneMainSourceDriverSaveLifecycleInput<TDocument> {\n saved: SceneMainSourceSaveResult<TDocument>;\n context?: unknown;\n}\n\nexport interface SceneMainSourceDriverSaveErrorLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends SceneMainSourceDriverSaveLifecycleInput<TDocument> {\n error: unknown;\n context?: unknown;\n}\n\nexport interface SceneMainSourceRuntimeSceneArtifactLifecycleInput<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends SceneMainSourceDriverSaveLifecycleInput<TDocument> {\n artifact: CompiledArtifact;\n phase: 'save' | 'compile';\n}\n\nexport interface SceneMainSourceDriverOptions<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n> extends SceneMainSourceClientOptions {\n compile?: SceneMainSourceCompile<TDocument>;\n prepareLoad?: SceneMainSourcePrepareLoad;\n afterLoad?: (\n input: SceneMainSourceDriverLoadLifecycleInput<TDocument>,\n ) => SceneMainSourceMaybePromise<void>;\n prepareSave?: SceneMainSourcePrepareSave<TDocument>;\n isSaveCurrent?: (\n input: SceneMainSourceDriverSavedLifecycleInput<TDocument>,\n ) => boolean;\n afterSave?: (\n input: SceneMainSourceDriverSavedLifecycleInput<TDocument>,\n ) => SceneMainSourceMaybePromise<void>;\n onSaveError?: (\n input: SceneMainSourceDriverSaveErrorLifecycleInput<TDocument>,\n ) => SceneMainSourceMaybePromise<void>;\n onRuntimeSceneArtifact?: (\n input: SceneMainSourceRuntimeSceneArtifactLifecycleInput<TDocument>,\n ) => SceneMainSourceMaybePromise<void>;\n}\n"]}