@fps-games/editor 0.1.5-beta.4 → 0.1.6-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/dist/build-info.json +16 -16
  2. package/dist/local-editor-agent-actions.d.ts +8 -1
  3. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  4. package/dist/local-editor-agent-actions.js +171 -12
  5. package/dist/local-editor-agent-actions.js.map +1 -1
  6. package/dist/local-editor-agent-context.d.ts +29 -1
  7. package/dist/local-editor-agent-context.d.ts.map +1 -1
  8. package/dist/local-editor-agent-context.js +403 -0
  9. package/dist/local-editor-agent-context.js.map +1 -1
  10. package/dist/local-editor-harness.d.ts +103 -5
  11. package/dist/local-editor-harness.d.ts.map +1 -1
  12. package/dist/local-editor-harness.js +1982 -101
  13. package/dist/local-editor-harness.js.map +1 -1
  14. package/dist/local-editor-marker-graph.d.ts +92 -0
  15. package/dist/local-editor-marker-graph.d.ts.map +1 -0
  16. package/dist/local-editor-marker-graph.js +1432 -0
  17. package/dist/local-editor-marker-graph.js.map +1 -0
  18. package/dist/local-editor-performance-stats.js +1 -1
  19. package/dist/local-editor-performance-stats.js.map +1 -1
  20. package/dist/playable-babylon-facade.d.ts +2 -2
  21. package/dist/playable-babylon-facade.d.ts.map +1 -1
  22. package/dist/playable-babylon-facade.js +1 -1
  23. package/dist/playable-babylon-facade.js.map +1 -1
  24. package/dist/playable-local-editor-host.d.ts +52 -7
  25. package/dist/playable-local-editor-host.d.ts.map +1 -1
  26. package/dist/playable-local-editor-host.js +23 -1
  27. package/dist/playable-local-editor-host.js.map +1 -1
  28. package/dist/playable-sdk.d.ts +4 -2
  29. package/dist/playable-sdk.d.ts.map +1 -1
  30. package/dist/playable-sdk.js +2 -1
  31. package/dist/playable-sdk.js.map +1 -1
  32. package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
  33. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.d.ts.map +1 -1
  34. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +11 -0
  35. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  36. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.d.ts +3 -1
  37. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.d.ts.map +1 -1
  38. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js +114 -18
  39. package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js.map +1 -1
  40. package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts +1 -0
  41. package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts.map +1 -1
  42. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js +3 -0
  43. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -1
  44. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +3 -0
  45. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  46. package/node_modules/@fps-games/editor-babylon/dist/index.js +3 -0
  47. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  48. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.d.ts +52 -0
  49. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.d.ts.map +1 -0
  50. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +1395 -0
  51. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -0
  52. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts.map +1 -1
  53. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js +4 -65
  54. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
  55. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts +28 -0
  56. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -0
  57. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +235 -0
  58. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -0
  59. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +37 -0
  60. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +1 -0
  61. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +451 -0
  62. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +1 -0
  63. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map +1 -1
  64. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +24 -10
  65. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  66. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.d.ts +1 -0
  67. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.d.ts.map +1 -1
  68. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js +20 -4
  69. package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js.map +1 -1
  70. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.d.ts +9 -0
  71. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.d.ts.map +1 -0
  72. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js +64 -0
  73. package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js.map +1 -0
  74. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +44 -1
  75. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  76. package/node_modules/@fps-games/editor-babylon/dist/projection.js +311 -70
  77. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  78. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  79. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +5 -2
  80. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  81. package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
  82. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  83. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +5 -0
  84. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -0
  85. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +23 -0
  86. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -0
  87. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +1 -1
  88. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +69 -0
  89. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
  90. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +1 -1
  91. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +1 -0
  92. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +1 -1
  93. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +2 -0
  94. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  95. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +38 -1
  96. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  97. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +1 -1
  98. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +1 -1
  99. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  100. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +8 -2
  101. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  102. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  103. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  104. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +7 -0
  105. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  106. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js +1 -1
  107. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -1
  108. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +4 -0
  109. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  110. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +1471 -29
  111. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  112. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +52 -0
  113. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -0
  114. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +131 -0
  115. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -0
  116. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts +1 -1
  117. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  118. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
  119. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +9 -2
  120. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  121. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +234 -3
  122. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  123. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +10 -1
  124. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  125. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +3 -1
  126. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  127. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +4 -3
  128. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  129. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +1274 -55
  130. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  131. package/node_modules/@fps-games/editor-browser/package.json +3 -3
  132. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -1
  133. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  134. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +2 -0
  135. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
  136. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js +1 -0
  137. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  138. package/node_modules/@fps-games/editor-core/package.json +2 -2
  139. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  140. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts.map +1 -1
  141. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +17 -3
  142. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  143. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  144. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +2 -1
  145. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  146. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts +3 -2
  147. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts.map +1 -1
  148. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts +1 -0
  149. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts.map +1 -1
  150. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js +68 -2
  151. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
  152. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.d.ts +1 -1
  153. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.d.ts.map +1 -1
  154. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js +1 -1
  155. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js.map +1 -1
  156. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +56 -1
  157. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  158. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +531 -0
  159. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  160. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +103 -2
  161. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  162. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts +1 -1
  163. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts.map +1 -1
  164. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js +1 -1
  165. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
  166. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.d.ts.map +1 -1
  167. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js +9 -1
  168. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
  169. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts +1 -0
  170. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts.map +1 -1
  171. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js +3 -0
  172. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
  173. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  174. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +3 -7
  175. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  176. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
  177. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +6 -0
  178. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  179. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts +2 -10
  180. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts.map +1 -1
  181. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  182. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +8 -0
  183. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  184. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  185. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +66 -31
  186. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  187. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
  188. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  189. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
  190. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +40 -2
  191. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  192. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts +1 -0
  193. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts.map +1 -1
  194. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js +20 -0
  195. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
  196. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
  197. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +68 -27
  198. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  199. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.d.ts.map +1 -1
  200. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js +7 -4
  201. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
  202. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.d.ts.map +1 -1
  203. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js +2 -1
  204. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
  205. package/node_modules/@fps-games/editor-playable-sdk/package.json +3 -3
  206. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +57 -3
  207. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
  208. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  209. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +19 -0
  210. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  211. package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
  212. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  213. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.d.ts +128 -0
  214. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.d.ts.map +1 -0
  215. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js +2 -0
  216. package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js.map +1 -0
  217. package/node_modules/@fps-games/editor-protocol/package.json +1 -1
  218. package/package.json +8 -8
@@ -1,3 +1,17 @@
1
+ import { mergeArtistMaterialProfiles, } from '@fps-games/editor-protocol';
2
+ import { isEditorSceneArtistMaterialPatchPath, normalizeEditorSceneMaterialSlotOwnerPath, readEditorSceneChildMaterialBindingOwnerPath, readEditorSceneMaterialSlotBindingSlotId, } from '../material-binding/paths.js';
3
+ const EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX = 'prefab.';
4
+ const EDITOR_SCENE_PREFAB_CORE_MATERIAL_OVERRIDE_PROFILE_FIELD_PATHS = new Set([
5
+ 'profile.baseColor.color',
6
+ 'profile.baseColor.texture.textureAssetId',
7
+ 'profile.normal.texture.textureAssetId',
8
+ 'profile.normal.strength',
9
+ 'profile.metallic',
10
+ 'profile.roughness',
11
+ 'profile.emission.color',
12
+ 'profile.emission.intensity',
13
+ 'profile.emission.texture.textureAssetId',
14
+ ]);
1
15
  export function cloneEditorSceneDocument(document) {
2
16
  return structuredClone(document);
3
17
  }
@@ -7,6 +21,337 @@ export function findEditorSceneTransform(gameObject) {
7
21
  export function findEditorSceneModelRenderer(gameObject) {
8
22
  return gameObject.components.find(isEditorSceneModelRendererComponent) ?? null;
9
23
  }
24
+ export function isEditorScenePrefabAsset(asset) {
25
+ return asset?.type === 'prefab' && readEditorSceneNonEmptyString(asset.prefab?.sourceAssetId) != null;
26
+ }
27
+ export function isEditorScenePrefabInstance(gameObject) {
28
+ return readEditorSceneNonEmptyString(gameObject?.prefab?.prefabId) != null;
29
+ }
30
+ export function resolveEditorScenePrefabSourceAssetId(prefabAsset) {
31
+ return readEditorSceneNonEmptyString(prefabAsset?.prefab?.sourceAssetId);
32
+ }
33
+ export function createEditorScenePrefabDefinitionFromAsset(sourceAsset, options = {}) {
34
+ return {
35
+ id: options.id ?? `${sourceAsset.id}-prefab`,
36
+ ...(options.guid ? { guid: options.guid } : {}),
37
+ type: 'prefab',
38
+ displayName: options.displayName ?? createEditorScenePrefabDisplayName(sourceAsset),
39
+ category: options.category ?? 'Prefab',
40
+ prefab: {
41
+ sourceAssetId: sourceAsset.id,
42
+ ...(sourceAsset.guid ? { sourceAssetGuid: sourceAsset.guid } : {}),
43
+ ...(options.defaults ? { defaults: { ...options.defaults } } : {}),
44
+ },
45
+ ...(options.metadata ? { metadata: { ...options.metadata } } : {}),
46
+ };
47
+ }
48
+ export function createEditorScenePrefabInstanceGameObject(input) {
49
+ const sourceAssetId = resolveEditorScenePrefabSourceAssetId(input.prefabAsset);
50
+ if (!sourceAssetId) {
51
+ throw new Error(`Prefab asset "${input.prefabAsset.id}" does not define a source asset.`);
52
+ }
53
+ const defaults = input.prefabAsset.prefab?.defaults;
54
+ return {
55
+ id: input.id,
56
+ ...(input.guid ? { guid: input.guid } : {}),
57
+ name: input.name ?? input.prefabAsset.displayName ?? input.prefabAsset.id,
58
+ kind: 'instance',
59
+ ...(input.parentId ? { parentId: input.parentId } : {}),
60
+ active: input.active ?? defaults?.active ?? true,
61
+ ...(input.shadowMode ?? defaults?.shadowMode ? { shadowMode: input.shadowMode ?? defaults?.shadowMode } : {}),
62
+ prefab: {
63
+ prefabId: input.prefabAsset.id,
64
+ ...(input.prefabAsset.guid ? { prefabGuid: input.prefabAsset.guid } : {}),
65
+ sourceAssetId,
66
+ },
67
+ ...(input.metadata ? { metadata: { ...input.metadata } } : {}),
68
+ ...(input.overrides !== undefined ? { overrides: input.overrides } : {}),
69
+ components: [
70
+ input.transform,
71
+ {
72
+ type: 'ModelRenderer',
73
+ assetId: sourceAssetId,
74
+ },
75
+ ],
76
+ };
77
+ }
78
+ export function createEditorScenePrefabDefinitionFromGameObject(document, gameObjectId, options = {}) {
79
+ const gameObject = findEditorSceneGameObject(document, gameObjectId);
80
+ if (!gameObject)
81
+ return null;
82
+ const modelRenderer = findEditorSceneModelRenderer(gameObject);
83
+ const sourceAssetId = readEditorSceneNonEmptyString(modelRenderer?.assetId);
84
+ if (!sourceAssetId)
85
+ return null;
86
+ const sourceAsset = document.assets.find(asset => asset.id === sourceAssetId);
87
+ if (!sourceAsset || isEditorScenePrefabAsset(sourceAsset))
88
+ return null;
89
+ const displayName = options.displayName
90
+ ?? createEditorScenePrefabDisplayName({ id: gameObject.id, displayName: gameObject.name ?? sourceAsset.displayName });
91
+ return createEditorScenePrefabDefinitionFromAsset(sourceAsset, {
92
+ id: options.id ?? createUniqueEditorScenePrefabAssetId(document, `${gameObject.id}-prefab`),
93
+ guid: options.guid ?? options.createGuid?.() ?? createEditorScenePrefabGuid(),
94
+ displayName,
95
+ category: options.category,
96
+ defaults: options.defaults,
97
+ metadata: options.metadata,
98
+ });
99
+ }
100
+ export function createEditorSceneDuplicatedPrefabDefinition(document, prefabAssetId, options = {}) {
101
+ const source = document.assets.find(asset => asset.id === prefabAssetId);
102
+ if (!source || !isEditorScenePrefabAsset(source))
103
+ return null;
104
+ const sourcePrefab = structuredClone(source.prefab);
105
+ const displayName = options.displayName
106
+ ?? createUniqueEditorScenePrefabDisplayName(document.assets.map(asset => asset.displayName ?? asset.id), `${source.displayName ?? source.id} Copy`);
107
+ return {
108
+ ...structuredClone(source),
109
+ id: options.id ?? createUniqueEditorScenePrefabAssetId(document, `${source.id}_copy`),
110
+ guid: options.guid ?? options.createGuid?.() ?? createEditorScenePrefabGuid(),
111
+ displayName,
112
+ category: options.category ?? source.category,
113
+ prefab: {
114
+ ...sourcePrefab,
115
+ ...(sourcePrefab.defaults ? { defaults: { ...sourcePrefab.defaults } } : {}),
116
+ },
117
+ ...(options.metadata ? { metadata: { ...options.metadata } } : {}),
118
+ };
119
+ }
120
+ export function readEditorScenePrefabOverrideMaterialPath(path) {
121
+ if (!path.startsWith(EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX))
122
+ return null;
123
+ const materialPath = path.slice(EDITOR_SCENE_PREFAB_OVERRIDE_FIELD_PATH_PREFIX.length);
124
+ return isEditorSceneArtistMaterialPatchPath(materialPath) ? materialPath : null;
125
+ }
126
+ export function isEditorScenePrefabOverridePath(path) {
127
+ return readEditorScenePrefabOverrideMaterialPath(path) != null;
128
+ }
129
+ export function isEditorScenePrefabCoreMaterialOverridePath(path) {
130
+ const materialPath = readEditorScenePrefabOverrideMaterialPath(path);
131
+ if (!materialPath)
132
+ return false;
133
+ if (materialPath.endsWith('.materialAssetId'))
134
+ return true;
135
+ const profilePath = readEditorScenePrefabOverrideProfileFieldPath(path);
136
+ return profilePath != null && EDITOR_SCENE_PREFAB_CORE_MATERIAL_OVERRIDE_PROFILE_FIELD_PATHS.has(profilePath);
137
+ }
138
+ export function readEditorScenePrefabOverrideProfileFieldPath(path) {
139
+ const materialPath = readEditorScenePrefabOverrideMaterialPath(path);
140
+ if (!materialPath)
141
+ return null;
142
+ const marker = '.override.';
143
+ const markerIndex = materialPath.lastIndexOf(marker);
144
+ if (markerIndex < 0)
145
+ return null;
146
+ const profilePath = materialPath.slice(markerIndex + marker.length);
147
+ return profilePath ? `profile.${profilePath}` : null;
148
+ }
149
+ export function patchEditorScenePrefabOverride(prefabAsset, path, value) {
150
+ const materialPath = readEditorScenePrefabOverrideMaterialPath(path);
151
+ if (!materialPath || !isEditorScenePrefabAsset(prefabAsset))
152
+ return prefabAsset;
153
+ const segments = splitEditorScenePrefabOverrideFieldPath(materialPath);
154
+ if (!segments)
155
+ return prefabAsset;
156
+ const next = structuredClone(prefabAsset);
157
+ next.prefab = structuredClone(next.prefab ?? prefabAsset.prefab);
158
+ applyEditorScenePrefabOverrideJsonPatch(next.prefab, segments, value);
159
+ const prunedOverrides = pruneEditorScenePrefabOverrides(next.prefab?.overrides);
160
+ if (prunedOverrides) {
161
+ next.prefab.overrides = prunedOverrides;
162
+ }
163
+ else {
164
+ delete next.prefab.overrides;
165
+ }
166
+ return JSON.stringify(next) === JSON.stringify(prefabAsset) ? prefabAsset : next;
167
+ }
168
+ export function mergeEditorSceneMaterialBindingOverrides(base, override) {
169
+ const baseMaterialAssetId = readEditorSceneNonEmptyString(base?.materialAssetId);
170
+ const overrideMaterialAssetId = readEditorSceneNonEmptyString(override?.materialAssetId);
171
+ const profile = mergeArtistMaterialProfiles(base?.override, override?.override);
172
+ return pruneEditorSceneMaterialBinding({
173
+ ...(overrideMaterialAssetId ?? baseMaterialAssetId
174
+ ? { materialAssetId: overrideMaterialAssetId ?? baseMaterialAssetId }
175
+ : {}),
176
+ ...(hasEditorSceneObjectFields(profile) ? { override: profile } : {}),
177
+ });
178
+ }
179
+ export function mergeEditorScenePrefabOverrides(base, override) {
180
+ const next = {};
181
+ const materialBinding = mergeEditorSceneMaterialBindingOverrides(base?.materialBinding, override?.materialBinding);
182
+ if (materialBinding)
183
+ next.materialBinding = materialBinding;
184
+ const materialSlotBindings = mergeEditorSceneMaterialBindingRecords(base?.materialSlotBindings, override?.materialSlotBindings);
185
+ if (materialSlotBindings)
186
+ next.materialSlotBindings = materialSlotBindings;
187
+ const childMaterialBindings = mergeEditorSceneMaterialBindingRecords(base?.childMaterialBindings, override?.childMaterialBindings);
188
+ if (childMaterialBindings)
189
+ next.childMaterialBindings = childMaterialBindings;
190
+ return hasEditorSceneObjectFields(next) ? next : undefined;
191
+ }
192
+ export function resolveEditorScenePrefabInstanceEffectiveOverrides(document, gameObjectId) {
193
+ const relation = resolveEditorScenePrefabInstanceRelation(document, gameObjectId);
194
+ if (!relation.gameObject || !relation.prefab)
195
+ return undefined;
196
+ return mergeEditorScenePrefabOverrides(relation.definition?.prefab?.overrides, readEditorScenePrefabOverrides(relation.gameObject.overrides));
197
+ }
198
+ export function createEditorScenePrefabAgentSummary(document, gameObjectId) {
199
+ const relation = resolveEditorScenePrefabInstanceRelation(document, gameObjectId);
200
+ if (!relation.gameObject || !relation.prefab)
201
+ return null;
202
+ const errorCount = relation.diagnostics.filter(diagnostic => diagnostic.severity === 'error').length;
203
+ const warningCount = relation.diagnostics.filter(diagnostic => diagnostic.severity === 'warning').length;
204
+ const sourceAssetId = resolveEditorScenePrefabSourceAssetId(relation.definition)
205
+ ?? readEditorSceneNonEmptyString(relation.prefab.sourceAssetId)
206
+ ?? undefined;
207
+ const effectiveOverrides = resolveEditorScenePrefabInstanceEffectiveOverrides(document, gameObjectId);
208
+ const summary = {
209
+ kind: 'prefab-instance',
210
+ status: errorCount > 0 ? 'error' : warningCount > 0 ? 'warning' : 'ok',
211
+ prefabId: relation.prefab.prefabId,
212
+ ...(relation.prefab.prefabGuid ? { prefabGuid: relation.prefab.prefabGuid } : {}),
213
+ ...(readEditorSceneNonEmptyString(relation.definition?.displayName)
214
+ ? { prefabDisplayName: readEditorSceneNonEmptyString(relation.definition?.displayName) }
215
+ : {}),
216
+ ...(sourceAssetId ? { sourceAssetId } : {}),
217
+ ...(readEditorSceneNonEmptyString(relation.sourceAsset?.guid) ? { sourceAssetGuid: readEditorSceneNonEmptyString(relation.sourceAsset?.guid) } : {}),
218
+ ...(readEditorSceneNonEmptyString(relation.sourceAsset?.displayName)
219
+ ? { sourceAssetDisplayName: readEditorSceneNonEmptyString(relation.sourceAsset?.displayName) }
220
+ : {}),
221
+ ...(readEditorSceneNonEmptyString(relation.prefab.sourceAssetId) ? { instanceSourceAssetId: readEditorSceneNonEmptyString(relation.prefab.sourceAssetId) } : {}),
222
+ diagnostics: relation.diagnostics.map(diagnostic => ({ ...diagnostic })),
223
+ materialTargets: createEditorScenePrefabAgentMaterialTargets(relation.sourceAsset),
224
+ ...(effectiveOverrides ? { effectiveOverrides } : {}),
225
+ };
226
+ return summary;
227
+ }
228
+ export function resolveEditorScenePrefabInstanceRelation(document, gameObjectId) {
229
+ const gameObject = findEditorSceneGameObject(document, gameObjectId);
230
+ const diagnostics = [];
231
+ const prefab = isEditorScenePrefabInstance(gameObject) ? gameObject.prefab : null;
232
+ if (!gameObject || !prefab) {
233
+ diagnostics.push({
234
+ code: 'not-prefab-instance',
235
+ severity: 'info',
236
+ message: gameObject
237
+ ? `GameObject "${gameObject.id}" is not a prefab instance.`
238
+ : `GameObject "${gameObjectId}" was not found.`,
239
+ });
240
+ return {
241
+ gameObject,
242
+ prefab: null,
243
+ definition: null,
244
+ sourceAsset: null,
245
+ diagnostics,
246
+ };
247
+ }
248
+ const definition = document.assets.find(asset => asset.id === prefab.prefabId && isEditorScenePrefabAsset(asset));
249
+ if (!definition) {
250
+ diagnostics.push({
251
+ code: 'missing-prefab-definition',
252
+ severity: 'error',
253
+ message: `Prefab definition "${prefab.prefabId}" was not found.`,
254
+ prefabId: prefab.prefabId,
255
+ });
256
+ }
257
+ const expectedSourceAssetId = resolveEditorScenePrefabSourceAssetId(definition) ?? readEditorSceneNonEmptyString(prefab.sourceAssetId);
258
+ if (definition && prefab.sourceAssetId && expectedSourceAssetId && prefab.sourceAssetId !== expectedSourceAssetId) {
259
+ diagnostics.push({
260
+ code: 'source-asset-mismatch',
261
+ severity: 'warning',
262
+ message: `Prefab instance source "${prefab.sourceAssetId}" does not match definition source "${expectedSourceAssetId}".`,
263
+ prefabId: prefab.prefabId,
264
+ expectedSourceAssetId,
265
+ actualSourceAssetId: prefab.sourceAssetId,
266
+ });
267
+ }
268
+ const sourceAsset = expectedSourceAssetId
269
+ ? document.assets.find(asset => asset.id === expectedSourceAssetId)
270
+ : undefined;
271
+ if (expectedSourceAssetId && !sourceAsset) {
272
+ diagnostics.push({
273
+ code: 'missing-source-asset',
274
+ severity: 'error',
275
+ message: `Prefab source asset "${expectedSourceAssetId}" was not found.`,
276
+ prefabId: prefab.prefabId,
277
+ sourceAssetId: expectedSourceAssetId,
278
+ });
279
+ }
280
+ if (expectedSourceAssetId) {
281
+ const sourcePrefabIds = document.assets
282
+ .filter(asset => isEditorScenePrefabAsset(asset) && resolveEditorScenePrefabSourceAssetId(asset) === expectedSourceAssetId)
283
+ .map(asset => asset.id);
284
+ if (sourcePrefabIds.length > 1) {
285
+ diagnostics.push({
286
+ code: 'duplicate-source-prefab',
287
+ severity: 'info',
288
+ message: `Source asset "${expectedSourceAssetId}" is referenced by ${sourcePrefabIds.length} prefab definitions.`,
289
+ prefabId: prefab.prefabId,
290
+ sourceAssetId: expectedSourceAssetId,
291
+ });
292
+ }
293
+ }
294
+ return {
295
+ gameObject,
296
+ prefab,
297
+ definition: definition ?? null,
298
+ sourceAsset: sourceAsset ?? null,
299
+ diagnostics,
300
+ };
301
+ }
302
+ function createEditorScenePrefabAgentMaterialTargets(sourceAsset) {
303
+ const rawSlots = Array.isArray(sourceAsset?.metadata?.materialSlots) ? sourceAsset.metadata.materialSlots : [];
304
+ const targets = [];
305
+ for (const [index, rawSlot] of rawSlots.entries()) {
306
+ const slot = readEditorScenePrefabAgentMaterialSlot(rawSlot);
307
+ if (!slot)
308
+ continue;
309
+ const targetKey = slot.slotId ?? slot.ownerNodePath;
310
+ const bindingPath = slot.slotId
311
+ ? `prefab.overrides.materialSlotBindings.${slot.slotId}`
312
+ : `prefab.overrides.childMaterialBindings.${slot.ownerNodePath}`;
313
+ targets.push({
314
+ kind: slot.slotId ? 'material-slot' : 'owner-node-path',
315
+ label: slot.label ?? slot.materialName ?? slot.ownerNodePath ?? `Material Slot ${index + 1}`,
316
+ bindingPath,
317
+ materialAssetIdPath: `${bindingPath}.materialAssetId`,
318
+ overridePath: `${bindingPath}.override`,
319
+ ...(slot.slotId ? { slotId: slot.slotId } : {}),
320
+ ...(slot.ownerNodePath ? { ownerNodePath: slot.ownerNodePath } : {}),
321
+ ...(slot.sourceMaterialIndex != null ? { sourceMaterialIndex: slot.sourceMaterialIndex } : {}),
322
+ ...(slot.materialName ? { sourceMaterialName: slot.materialName } : {}),
323
+ });
324
+ if (!targetKey)
325
+ targets.pop();
326
+ }
327
+ return targets;
328
+ }
329
+ function readEditorScenePrefabAgentMaterialSlot(value) {
330
+ if (typeof value === 'string') {
331
+ const ownerNodePath = normalizeEditorSceneMaterialSlotOwnerPath(readEditorSceneNonEmptyString(value) ?? '');
332
+ return ownerNodePath ? { ownerNodePath } : null;
333
+ }
334
+ if (!value || typeof value !== 'object' || Array.isArray(value))
335
+ return null;
336
+ const record = value;
337
+ const ownerNodePath = normalizeEditorSceneMaterialSlotOwnerPath(readEditorSceneNonEmptyString(record.ownerNodePath)
338
+ ?? readEditorSceneNonEmptyString(record.path)
339
+ ?? readEditorSceneNonEmptyString(record.name)
340
+ ?? '');
341
+ const slotId = readEditorSceneNonEmptyString(record.slotId) ?? undefined;
342
+ if (!slotId && !ownerNodePath)
343
+ return null;
344
+ const label = readEditorSceneNonEmptyString(record.label) ?? undefined;
345
+ const materialName = readEditorSceneNonEmptyString(record.materialName) ?? undefined;
346
+ const sourceMaterialIndex = Number.isInteger(record.sourceMaterialIndex) ? record.sourceMaterialIndex : undefined;
347
+ return {
348
+ ...(slotId ? { slotId } : {}),
349
+ ownerNodePath,
350
+ ...(label ? { label } : {}),
351
+ ...(materialName ? { materialName } : {}),
352
+ ...(sourceMaterialIndex != null ? { sourceMaterialIndex } : {}),
353
+ };
354
+ }
10
355
  export function readEditorSceneNodeKind(gameObject) {
11
356
  if (gameObject.kind === 'group'
12
357
  || gameObject.kind === 'instance'
@@ -14,6 +359,8 @@ export function readEditorSceneNodeKind(gameObject) {
14
359
  || gameObject.kind === 'primitive') {
15
360
  return gameObject.kind;
16
361
  }
362
+ if (isEditorScenePrefabInstance(gameObject))
363
+ return 'instance';
17
364
  if (gameObject.primitive)
18
365
  return 'primitive';
19
366
  if (findEditorSceneModelRenderer(gameObject))
@@ -57,4 +404,188 @@ function readEditorSceneLegacyGroundDecalAlphaIndex(gameObject) {
57
404
  function readEditorSceneFiniteNumber(value) {
58
405
  return typeof value === 'number' && Number.isFinite(value) ? value : null;
59
406
  }
407
+ function readEditorSceneNonEmptyString(value) {
408
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;
409
+ }
410
+ function findEditorSceneGameObject(document, gameObjectId) {
411
+ return document.scene.gameObjects.find(gameObject => gameObject.id === gameObjectId) ?? null;
412
+ }
413
+ function createEditorScenePrefabDisplayName(sourceAsset) {
414
+ const displayName = readEditorSceneNonEmptyString(sourceAsset.displayName)
415
+ ?? readEditorSceneNonEmptyString(sourceAsset.id)
416
+ ?? 'Prefab';
417
+ return `${displayName} Prefab`;
418
+ }
419
+ function createEditorScenePrefabGuid() {
420
+ const randomId = globalThis.crypto?.randomUUID?.() ?? `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
421
+ return `prefab_${randomId}`;
422
+ }
423
+ function createUniqueEditorScenePrefabAssetId(document, preferredId) {
424
+ const used = new Set(document.assets.map(asset => asset.id));
425
+ const base = normalizeEditorScenePrefabIdentifierPart(preferredId) ?? 'prefab';
426
+ if (!used.has(base))
427
+ return base;
428
+ let suffix = 1;
429
+ let candidate = `${base}_${suffix}`;
430
+ while (used.has(candidate)) {
431
+ suffix += 1;
432
+ candidate = `${base}_${suffix}`;
433
+ }
434
+ return candidate;
435
+ }
436
+ function createUniqueEditorScenePrefabDisplayName(existingNames, preferredName) {
437
+ const used = new Set(existingNames
438
+ .map(name => readEditorSceneNonEmptyString(name))
439
+ .filter((name) => !!name));
440
+ if (!used.has(preferredName))
441
+ return preferredName;
442
+ let suffix = 1;
443
+ let candidate = `${preferredName} ${suffix}`;
444
+ while (used.has(candidate)) {
445
+ suffix += 1;
446
+ candidate = `${preferredName} ${suffix}`;
447
+ }
448
+ return candidate;
449
+ }
450
+ function normalizeEditorScenePrefabIdentifierPart(value) {
451
+ const raw = readEditorSceneNonEmptyString(value);
452
+ if (!raw)
453
+ return null;
454
+ const normalized = raw
455
+ .replace(/\s+/g, '_')
456
+ .replace(/[^a-zA-Z0-9_:-]/g, '_')
457
+ .replace(/_+/g, '_')
458
+ .replace(/^_+|_+$/g, '');
459
+ return normalized || null;
460
+ }
461
+ function splitEditorScenePrefabOverrideFieldPath(path) {
462
+ if (path === 'overrides.materialBinding.materialAssetId') {
463
+ return ['overrides', 'materialBinding', 'materialAssetId'];
464
+ }
465
+ const rootOverridePrefix = 'overrides.materialBinding.override.';
466
+ if (path.startsWith(rootOverridePrefix)) {
467
+ const profilePath = path.slice(rootOverridePrefix.length);
468
+ return splitEditorScenePrefabProfilePath(['overrides', 'materialBinding', 'override'], profilePath);
469
+ }
470
+ const slotMaterialAssetId = readEditorSceneMaterialSlotBindingSlotId(path, 'materialAssetId');
471
+ if (slotMaterialAssetId) {
472
+ return ['overrides', 'materialSlotBindings', slotMaterialAssetId, 'materialAssetId'];
473
+ }
474
+ const slotOverrideId = readEditorSceneMaterialSlotBindingSlotId(path, 'override');
475
+ if (slotOverrideId) {
476
+ const profilePath = readEditorSceneBindingOverrideProfilePath(path);
477
+ return profilePath
478
+ ? splitEditorScenePrefabProfilePath(['overrides', 'materialSlotBindings', slotOverrideId, 'override'], profilePath)
479
+ : null;
480
+ }
481
+ const childMaterialAssetId = readEditorSceneChildMaterialBindingOwnerPath(path, 'materialAssetId');
482
+ if (childMaterialAssetId) {
483
+ return ['overrides', 'childMaterialBindings', childMaterialAssetId, 'materialAssetId'];
484
+ }
485
+ const childOverrideOwnerPath = readEditorSceneChildMaterialBindingOwnerPath(path, 'override');
486
+ if (childOverrideOwnerPath) {
487
+ const profilePath = readEditorSceneBindingOverrideProfilePath(path);
488
+ return profilePath
489
+ ? splitEditorScenePrefabProfilePath(['overrides', 'childMaterialBindings', childOverrideOwnerPath, 'override'], profilePath)
490
+ : null;
491
+ }
492
+ return null;
493
+ }
494
+ function readEditorSceneBindingOverrideProfilePath(path) {
495
+ const marker = '.override.';
496
+ const markerIndex = path.lastIndexOf(marker);
497
+ if (markerIndex < 0)
498
+ return null;
499
+ const profilePath = path.slice(markerIndex + marker.length);
500
+ return profilePath ? profilePath : null;
501
+ }
502
+ function splitEditorScenePrefabProfilePath(prefix, profilePath) {
503
+ const profileSegments = profilePath.split('.').filter(Boolean);
504
+ if (profileSegments.length === 0 || profileSegments.some(isUnsafeEditorScenePrefabOverridePathSegment))
505
+ return null;
506
+ return [...prefix, ...profileSegments];
507
+ }
508
+ function applyEditorScenePrefabOverrideJsonPatch(target, segments, value) {
509
+ if (segments.some(isUnsafeEditorScenePrefabOverridePathSegment))
510
+ return;
511
+ let cursor = target;
512
+ for (const segment of segments.slice(0, -1)) {
513
+ const current = cursor[segment];
514
+ if (!current || typeof current !== 'object' || Array.isArray(current)) {
515
+ cursor[segment] = {};
516
+ }
517
+ cursor = cursor[segment];
518
+ }
519
+ const leaf = segments[segments.length - 1];
520
+ if (!leaf)
521
+ return;
522
+ if (value == null)
523
+ delete cursor[leaf];
524
+ else
525
+ cursor[leaf] = structuredClone(value);
526
+ }
527
+ function pruneEditorScenePrefabOverrides(overrides) {
528
+ if (!overrides || typeof overrides !== 'object' || Array.isArray(overrides))
529
+ return undefined;
530
+ const source = overrides;
531
+ const next = {};
532
+ const materialBinding = pruneEditorSceneMaterialBinding(source.materialBinding);
533
+ if (materialBinding)
534
+ next.materialBinding = materialBinding;
535
+ const materialSlotBindings = pruneEditorSceneMaterialBindingRecord(source.materialSlotBindings);
536
+ if (materialSlotBindings)
537
+ next.materialSlotBindings = materialSlotBindings;
538
+ const childMaterialBindings = pruneEditorSceneMaterialBindingRecord(source.childMaterialBindings);
539
+ if (childMaterialBindings)
540
+ next.childMaterialBindings = childMaterialBindings;
541
+ return hasEditorSceneObjectFields(next) ? next : undefined;
542
+ }
543
+ function pruneEditorSceneMaterialBinding(binding) {
544
+ if (!binding || typeof binding !== 'object' || Array.isArray(binding))
545
+ return undefined;
546
+ const source = binding;
547
+ const materialAssetId = readEditorSceneNonEmptyString(source.materialAssetId);
548
+ const profile = mergeArtistMaterialProfiles(source.override);
549
+ const next = {
550
+ ...(materialAssetId ? { materialAssetId } : {}),
551
+ ...(hasEditorSceneObjectFields(profile) ? { override: profile } : {}),
552
+ };
553
+ return hasEditorSceneObjectFields(next) ? next : undefined;
554
+ }
555
+ function pruneEditorSceneMaterialBindingRecord(record) {
556
+ if (!record || typeof record !== 'object' || Array.isArray(record))
557
+ return undefined;
558
+ const next = {};
559
+ for (const [key, binding] of Object.entries(record)) {
560
+ const normalizedKey = readEditorSceneNonEmptyString(key);
561
+ if (!normalizedKey)
562
+ continue;
563
+ const prunedBinding = pruneEditorSceneMaterialBinding(binding);
564
+ if (prunedBinding)
565
+ next[normalizedKey] = prunedBinding;
566
+ }
567
+ return hasEditorSceneObjectFields(next) ? next : undefined;
568
+ }
569
+ function mergeEditorSceneMaterialBindingRecords(base, override) {
570
+ const keys = new Set([
571
+ ...Object.keys(base ?? {}),
572
+ ...Object.keys(override ?? {}),
573
+ ]);
574
+ const next = {};
575
+ for (const key of keys) {
576
+ const binding = mergeEditorSceneMaterialBindingOverrides(base?.[key], override?.[key]);
577
+ if (binding)
578
+ next[key] = binding;
579
+ }
580
+ return hasEditorSceneObjectFields(next) ? next : undefined;
581
+ }
582
+ function readEditorScenePrefabOverrides(value) {
583
+ return pruneEditorScenePrefabOverrides(value);
584
+ }
585
+ function hasEditorSceneObjectFields(value) {
586
+ return !!value && typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length > 0;
587
+ }
588
+ function isUnsafeEditorScenePrefabOverridePathSegment(segment) {
589
+ return segment === '__proto__' || segment === 'prototype' || segment === 'constructor';
590
+ }
60
591
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/document/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/document/helpers.ts"],"names":[],"mappings":"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"}