@fps-games/editor 0.2.0-beta.4 → 0.2.1-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 (1397) hide show
  1. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/editor-state.js +12 -6
  3. package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
  4. package/dist/agent-bridge/capabilities/hierarchy.d.ts +4 -0
  5. package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +1 -0
  6. package/dist/agent-bridge/capabilities/hierarchy.js +209 -0
  7. package/dist/agent-bridge/capabilities/hierarchy.js.map +1 -0
  8. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -1
  9. package/dist/agent-bridge/capabilities/prefabs.js +208 -73
  10. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
  11. package/dist/agent-bridge/capabilities/scene-objects.d.ts +3 -4
  12. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -1
  13. package/dist/agent-bridge/capabilities/scene-objects.js +24 -23
  14. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
  15. package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -1
  16. package/dist/agent-bridge/capabilities/shadows.js +829 -66
  17. package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
  18. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
  19. package/dist/agent-bridge/capabilities/ui-regions.js +3 -1
  20. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  21. package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -1
  22. package/dist/agent-bridge/capabilities/viewport.js +22 -9
  23. package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
  24. package/dist/agent-bridge/capability-sources.d.ts.map +1 -1
  25. package/dist/agent-bridge/capability-sources.js +2 -0
  26. package/dist/agent-bridge/capability-sources.js.map +1 -1
  27. package/dist/agent-bridge/register.d.ts.map +1 -1
  28. package/dist/agent-bridge/register.js +194 -0
  29. package/dist/agent-bridge/register.js.map +1 -1
  30. package/dist/agent-bridge/shared.d.ts +231 -11
  31. package/dist/agent-bridge/shared.d.ts.map +1 -1
  32. package/dist/agent-bridge/shared.js +162 -20
  33. package/dist/agent-bridge/shared.js.map +1 -1
  34. package/dist/agent-bridge/source-types.d.ts +17 -1
  35. package/dist/agent-bridge/source-types.d.ts.map +1 -1
  36. package/dist/agent-bridge/source-types.js.map +1 -1
  37. package/dist/build-info.json +57 -42
  38. package/dist/index.d.ts +7 -6
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -3
  41. package/dist/index.js.map +1 -1
  42. package/dist/internal/babylon-preview-engine.d.ts +3 -0
  43. package/dist/internal/babylon-preview-engine.d.ts.map +1 -0
  44. package/dist/internal/babylon-preview-engine.js +11 -0
  45. package/dist/internal/babylon-preview-engine.js.map +1 -0
  46. package/dist/internal/product-local-editor-cleanup.d.ts +5 -0
  47. package/dist/internal/product-local-editor-cleanup.d.ts.map +1 -0
  48. package/dist/internal/product-local-editor-cleanup.js +20 -0
  49. package/dist/internal/product-local-editor-cleanup.js.map +1 -0
  50. package/dist/local-editor-agent-actions.d.ts +2 -4
  51. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  52. package/dist/local-editor-agent-actions.js +56 -32
  53. package/dist/local-editor-agent-actions.js.map +1 -1
  54. package/dist/local-editor-agent-context.d.ts +5 -5
  55. package/dist/local-editor-agent-context.d.ts.map +1 -1
  56. package/dist/local-editor-agent-context.js.map +1 -1
  57. package/dist/local-editor-harness.d.ts +340 -35
  58. package/dist/local-editor-harness.d.ts.map +1 -1
  59. package/dist/local-editor-harness.js +3834 -1321
  60. package/dist/local-editor-harness.js.map +1 -1
  61. package/dist/local-editor-marker-graph.d.ts +15 -15
  62. package/dist/local-editor-marker-graph.d.ts.map +1 -1
  63. package/dist/local-editor-marker-graph.js +3 -0
  64. package/dist/local-editor-marker-graph.js.map +1 -1
  65. package/dist/local-editor-performance-stats.d.ts +3 -2
  66. package/dist/local-editor-performance-stats.d.ts.map +1 -1
  67. package/dist/local-editor-performance-stats.js.map +1 -1
  68. package/dist/local-editor-prefab-stage-transaction.d.ts +19 -0
  69. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -0
  70. package/dist/local-editor-prefab-stage-transaction.js +45 -0
  71. package/dist/local-editor-prefab-stage-transaction.js.map +1 -0
  72. package/dist/local-editor-scene-view-interaction-runtime.d.ts +3 -1
  73. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  74. package/dist/local-editor-scene-view-interaction-runtime.js +24 -0
  75. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  76. package/dist/local-editor-tools.d.ts +18 -0
  77. package/dist/local-editor-tools.d.ts.map +1 -0
  78. package/dist/local-editor-tools.js +53 -0
  79. package/dist/local-editor-tools.js.map +1 -0
  80. package/dist/playable-babylon-rendering.d.ts +9 -0
  81. package/dist/playable-babylon-rendering.d.ts.map +1 -1
  82. package/dist/playable-babylon-rendering.js +162 -6
  83. package/dist/playable-babylon-rendering.js.map +1 -1
  84. package/dist/playable-local-editor-entry.d.ts +68 -0
  85. package/dist/playable-local-editor-entry.d.ts.map +1 -0
  86. package/dist/playable-local-editor-entry.js +424 -0
  87. package/dist/playable-local-editor-entry.js.map +1 -0
  88. package/dist/playable-local-editor-host.d.ts +51 -29
  89. package/dist/playable-local-editor-host.d.ts.map +1 -1
  90. package/dist/playable-local-editor-host.js +23 -11
  91. package/dist/playable-local-editor-host.js.map +1 -1
  92. package/dist/playable-product-local-editor.d.ts +10 -12
  93. package/dist/playable-product-local-editor.d.ts.map +1 -1
  94. package/dist/playable-product-local-editor.js +178 -85
  95. package/dist/playable-product-local-editor.js.map +1 -1
  96. package/dist/playable-product-projection-preview.d.ts +4 -1
  97. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  98. package/dist/playable-product-projection-preview.js +122 -5
  99. package/dist/playable-product-projection-preview.js.map +1 -1
  100. package/dist/playable-product-rendering.d.ts +12 -0
  101. package/dist/playable-product-rendering.d.ts.map +1 -1
  102. package/dist/playable-product-rendering.js +128 -6
  103. package/dist/playable-product-rendering.js.map +1 -1
  104. package/dist/playable-product-scene-capabilities.d.ts +24 -7
  105. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  106. package/dist/playable-product-scene-capabilities.js +172 -15
  107. package/dist/playable-product-scene-capabilities.js.map +1 -1
  108. package/dist/playable-project-mode.d.ts +17 -0
  109. package/dist/playable-project-mode.d.ts.map +1 -0
  110. package/dist/playable-project-mode.js +2 -0
  111. package/dist/playable-project-mode.js.map +1 -0
  112. package/dist/playable-runtime-babylon.d.ts +3 -6
  113. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  114. package/dist/playable-runtime-babylon.js +1 -5
  115. package/dist/playable-runtime-babylon.js.map +1 -1
  116. package/dist/playable-sdk.d.ts +16 -9
  117. package/dist/playable-sdk.d.ts.map +1 -1
  118. package/dist/playable-sdk.js +6 -4
  119. package/dist/playable-sdk.js.map +1 -1
  120. package/dist/playable-standard-project.d.ts +23 -14
  121. package/dist/playable-standard-project.d.ts.map +1 -1
  122. package/dist/playable-standard-project.js +53 -19
  123. package/dist/playable-standard-project.js.map +1 -1
  124. package/dist/vite-client.d.ts +4 -0
  125. package/node_modules/@babel/helper-string-parser/lib/index.js +0 -1
  126. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js +0 -1
  127. package/node_modules/@babel/helper-validator-identifier/lib/index.js +0 -1
  128. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js +0 -1
  129. package/node_modules/@babel/parser/lib/index.js +0 -1
  130. package/node_modules/@babel/types/lib/asserts/assertNode.js +0 -1
  131. package/node_modules/@babel/types/lib/asserts/generated/index.js +0 -1
  132. package/node_modules/@babel/types/lib/ast-types/generated/index.js +0 -1
  133. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -1
  134. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -1
  135. package/node_modules/@babel/types/lib/builders/generated/index.js +0 -1
  136. package/node_modules/@babel/types/lib/builders/generated/lowercase.js +0 -1
  137. package/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
  138. package/node_modules/@babel/types/lib/builders/productions.js +0 -1
  139. package/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -1
  140. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -1
  141. package/node_modules/@babel/types/lib/builders/validateNode.js +0 -1
  142. package/node_modules/@babel/types/lib/clone/clone.js +0 -1
  143. package/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -1
  144. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -1
  145. package/node_modules/@babel/types/lib/clone/cloneNode.js +0 -1
  146. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -1
  147. package/node_modules/@babel/types/lib/comments/addComment.js +0 -1
  148. package/node_modules/@babel/types/lib/comments/addComments.js +0 -1
  149. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -1
  150. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -1
  151. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -1
  152. package/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -1
  153. package/node_modules/@babel/types/lib/comments/removeComments.js +0 -1
  154. package/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
  155. package/node_modules/@babel/types/lib/constants/index.js +0 -1
  156. package/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -1
  157. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +0 -1
  158. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -1
  159. package/node_modules/@babel/types/lib/converters/toBlock.js +0 -1
  160. package/node_modules/@babel/types/lib/converters/toComputedKey.js +0 -1
  161. package/node_modules/@babel/types/lib/converters/toExpression.js +0 -1
  162. package/node_modules/@babel/types/lib/converters/toIdentifier.js +0 -1
  163. package/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -1
  164. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -1
  165. package/node_modules/@babel/types/lib/converters/toStatement.js +0 -1
  166. package/node_modules/@babel/types/lib/converters/valueToNode.js +0 -1
  167. package/node_modules/@babel/types/lib/definitions/core.js +0 -1
  168. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js +0 -1
  169. package/node_modules/@babel/types/lib/definitions/experimental.js +0 -1
  170. package/node_modules/@babel/types/lib/definitions/flow.js +0 -1
  171. package/node_modules/@babel/types/lib/definitions/index.js +0 -1
  172. package/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
  173. package/node_modules/@babel/types/lib/definitions/misc.js +0 -1
  174. package/node_modules/@babel/types/lib/definitions/placeholders.js +0 -1
  175. package/node_modules/@babel/types/lib/definitions/typescript.js +0 -1
  176. package/node_modules/@babel/types/lib/definitions/utils.js +0 -1
  177. package/node_modules/@babel/types/lib/index.js +0 -1
  178. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -1
  179. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +0 -1
  180. package/node_modules/@babel/types/lib/modifications/inherits.js +0 -1
  181. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -1
  182. package/node_modules/@babel/types/lib/modifications/removeProperties.js +0 -1
  183. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -1
  184. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +0 -1
  185. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js +0 -1
  186. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +0 -1
  187. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js +0 -1
  188. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -1
  189. package/node_modules/@babel/types/lib/traverse/traverse.js +0 -1
  190. package/node_modules/@babel/types/lib/traverse/traverseFast.js +0 -1
  191. package/node_modules/@babel/types/lib/utils/deprecationWarning.js +0 -1
  192. package/node_modules/@babel/types/lib/utils/inherit.js +0 -1
  193. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +0 -1
  194. package/node_modules/@babel/types/lib/utils/shallowEqual.js +0 -1
  195. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -1
  196. package/node_modules/@babel/types/lib/validators/generated/index.js +0 -1
  197. package/node_modules/@babel/types/lib/validators/is.js +0 -1
  198. package/node_modules/@babel/types/lib/validators/isBinding.js +0 -1
  199. package/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -1
  200. package/node_modules/@babel/types/lib/validators/isImmutable.js +0 -1
  201. package/node_modules/@babel/types/lib/validators/isLet.js +0 -1
  202. package/node_modules/@babel/types/lib/validators/isNode.js +0 -1
  203. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +0 -1
  204. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -1
  205. package/node_modules/@babel/types/lib/validators/isReferenced.js +0 -1
  206. package/node_modules/@babel/types/lib/validators/isScope.js +0 -1
  207. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +0 -1
  208. package/node_modules/@babel/types/lib/validators/isType.js +0 -1
  209. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -1
  210. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -1
  211. package/node_modules/@babel/types/lib/validators/isVar.js +0 -1
  212. package/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -1
  213. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
  214. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -1
  215. package/node_modules/@babel/types/lib/validators/validate.js +0 -1
  216. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.d.ts +69 -0
  217. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.js +132 -0
  218. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.d.ts +8 -0
  219. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.js +7 -0
  220. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.d.ts +14 -0
  221. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.js +328 -0
  222. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.d.ts +9 -0
  223. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.js +1 -0
  224. package/node_modules/@babylonjs/loaders/BVH/index.d.ts +2 -0
  225. package/node_modules/@babylonjs/loaders/BVH/index.js +3 -0
  226. package/node_modules/@babylonjs/loaders/OBJ/index.d.ts +4 -0
  227. package/node_modules/@babylonjs/loaders/OBJ/index.js +4 -0
  228. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.d.ts +41 -0
  229. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.js +230 -0
  230. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.d.ts +136 -0
  231. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.js +317 -0
  232. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.d.ts +4 -0
  233. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.js +4 -0
  234. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.d.ts +47 -0
  235. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.js +1 -0
  236. package/node_modules/@babylonjs/loaders/OBJ/solidParser.d.ts +175 -0
  237. package/node_modules/@babylonjs/loaders/OBJ/solidParser.js +903 -0
  238. package/node_modules/@babylonjs/loaders/SPLAT/index.d.ts +2 -0
  239. package/node_modules/@babylonjs/loaders/SPLAT/index.js +3 -0
  240. package/node_modules/@babylonjs/loaders/SPLAT/sog.d.ts +84 -0
  241. package/node_modules/@babylonjs/loaders/SPLAT/sog.js +294 -0
  242. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.d.ts +26 -0
  243. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.js +10 -0
  244. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.d.ts +100 -0
  245. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.js +536 -0
  246. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.d.ts +20 -0
  247. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.js +15 -0
  248. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.d.ts +33 -0
  249. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.js +1 -0
  250. package/node_modules/@babylonjs/loaders/SPLAT/spz.d.ts +11 -0
  251. package/node_modules/@babylonjs/loaders/SPLAT/spz.js +168 -0
  252. package/node_modules/@babylonjs/loaders/STL/index.d.ts +1 -0
  253. package/node_modules/@babylonjs/loaders/STL/index.js +1 -0
  254. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.d.ts +78 -0
  255. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.js +238 -0
  256. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.d.ts +8 -0
  257. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.js +7 -0
  258. package/node_modules/@babylonjs/loaders/bvh/license.md +21 -0
  259. package/node_modules/@babylonjs/loaders/dynamic.d.ts +5 -0
  260. package/node_modules/@babylonjs/loaders/dynamic.js +56 -0
  261. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.d.ts +16 -0
  262. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.js +64 -0
  263. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.d.ts +144 -0
  264. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.js +1841 -0
  265. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.d.ts +412 -0
  266. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.js +95 -0
  267. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.d.ts +71 -0
  268. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.js +254 -0
  269. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.d.ts +13 -0
  270. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.js +130 -0
  271. package/node_modules/@babylonjs/loaders/glTF/1.0/index.d.ts +5 -0
  272. package/node_modules/@babylonjs/loaders/glTF/1.0/index.js +5 -0
  273. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.d.ts +41 -0
  274. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.js +93 -0
  275. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.d.ts +41 -0
  276. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.js +83 -0
  277. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +48 -0
  278. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.js +115 -0
  279. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +39 -0
  280. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +94 -0
  281. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +39 -0
  282. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.js +50 -0
  283. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.d.ts +34 -0
  284. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.js +38 -0
  285. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.d.ts +33 -0
  286. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.js +37 -0
  287. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +53 -0
  288. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.js +73 -0
  289. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +47 -0
  290. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -0
  291. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.js +251 -0
  292. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.js +77 -0
  293. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +47 -0
  294. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +92 -0
  295. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +355 -0
  296. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1678 -0
  297. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
  298. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +19 -0
  299. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
  300. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.js +3 -0
  301. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +70 -0
  302. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +438 -0
  303. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.d.ts +38 -0
  304. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.js +150 -0
  305. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +41 -0
  306. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.js +91 -0
  307. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +42 -0
  308. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.js +65 -0
  309. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +43 -0
  310. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.js +79 -0
  311. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.d.ts +49 -0
  312. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.js +119 -0
  313. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +43 -0
  314. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +58 -0
  315. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +43 -0
  316. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +69 -0
  317. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +43 -0
  318. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.js +56 -0
  319. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +42 -0
  320. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +47 -0
  321. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +43 -0
  322. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.js +77 -0
  323. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.d.ts +46 -0
  324. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.js +54 -0
  325. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +42 -0
  326. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.js +68 -0
  327. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +42 -0
  328. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +80 -0
  329. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +43 -0
  330. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.js +73 -0
  331. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.d.ts +42 -0
  332. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.js +76 -0
  333. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +42 -0
  334. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.js +303 -0
  335. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +42 -0
  336. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.js +66 -0
  337. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.d.ts +112 -0
  338. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.js +262 -0
  339. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.d.ts +43 -0
  340. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.js +82 -0
  341. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +45 -0
  342. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +109 -0
  343. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +29 -0
  344. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.js +22 -0
  345. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +31 -0
  346. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.js +189 -0
  347. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
  348. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.js +123 -0
  349. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.d.ts +30 -0
  350. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.js +66 -0
  351. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +33 -0
  352. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.js +37 -0
  353. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.d.ts +37 -0
  354. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.js +58 -0
  355. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +39 -0
  356. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.js +47 -0
  357. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +56 -0
  358. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.js +228 -0
  359. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.d.ts +104 -0
  360. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.js +337 -0
  361. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +27 -0
  362. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.js +39 -0
  363. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +27 -0
  364. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.js +38 -0
  365. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.d.ts +4 -0
  366. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.js +212 -0
  367. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +45 -0
  368. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.js +100 -0
  369. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.d.ts +43 -0
  370. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.js +44 -0
  371. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.d.ts +306 -0
  372. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.js +884 -0
  373. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.d.ts +450 -0
  374. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.js +2485 -0
  375. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.d.ts +42 -0
  376. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.js +79 -0
  377. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.d.ts +165 -0
  378. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.js +1 -0
  379. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.d.ts +25 -0
  380. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.js +32 -0
  381. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.d.ts +262 -0
  382. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.js +1 -0
  383. package/node_modules/@babylonjs/loaders/glTF/2.0/index.d.ts +8 -0
  384. package/node_modules/@babylonjs/loaders/glTF/2.0/index.js +9 -0
  385. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.d.ts +364 -0
  386. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.js +1 -0
  387. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.d.ts +674 -0
  388. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.js +1034 -0
  389. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +705 -0
  390. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.js +1126 -0
  391. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.d.ts +553 -0
  392. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.js +998 -0
  393. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.d.ts +15 -0
  394. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.js +17 -0
  395. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.d.ts +35 -0
  396. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.js +131 -0
  397. package/node_modules/@babylonjs/loaders/glTF/index.d.ts +5 -0
  398. package/node_modules/@babylonjs/loaders/glTF/index.js +6 -0
  399. package/node_modules/@babylonjs/loaders/index.d.ts +6 -0
  400. package/node_modules/@babylonjs/loaders/index.js +7 -0
  401. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.d.ts +1 -0
  402. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.js +15 -0
  403. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.d.ts +1 -0
  404. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.js +13 -0
  405. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.d.ts +2 -0
  406. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.js +18 -0
  407. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.d.ts +2 -0
  408. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.js +15 -0
  409. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.d.ts +2 -0
  410. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.js +3 -0
  411. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.d.ts +2 -0
  412. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.js +34 -0
  413. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.d.ts +2 -0
  414. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.js +3 -0
  415. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.d.ts +3 -0
  416. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.js +4 -0
  417. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.d.ts +1 -0
  418. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.js +15 -0
  419. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.d.ts +1 -0
  420. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.js +15 -0
  421. package/node_modules/@babylonjs/loaders/legacy/legacy.d.ts +8 -0
  422. package/node_modules/@babylonjs/loaders/legacy/legacy.js +10 -0
  423. package/node_modules/@babylonjs/loaders/license.md +71 -0
  424. package/node_modules/@babylonjs/loaders/package.json +49 -0
  425. package/node_modules/@babylonjs/loaders/readme.md +23 -0
  426. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts +22 -0
  427. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts.map +1 -0
  428. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js +187 -0
  429. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js.map +1 -0
  430. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
  431. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
  432. package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
  433. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  434. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts +19 -0
  435. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts.map +1 -0
  436. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js +212 -0
  437. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js.map +1 -0
  438. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts +17 -2
  439. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts.map +1 -1
  440. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js +192 -17
  441. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  442. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +2 -0
  443. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  444. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +139 -3
  445. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  446. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts +4 -0
  447. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts.map +1 -1
  448. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  449. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts +1 -0
  450. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts.map +1 -1
  451. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js +1 -0
  452. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  453. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts +14 -0
  454. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts.map +1 -0
  455. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js +14 -0
  456. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js.map +1 -0
  457. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts +59 -0
  458. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  459. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js +725 -0
  460. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  461. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts +136 -0
  462. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  463. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js +2735 -0
  464. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js.map +1 -0
  465. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  466. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +1 -1
  467. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  468. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +2 -1
  469. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  470. package/node_modules/@fps-games/editor-babylon/dist/index.js +2 -1
  471. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  472. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts +2 -0
  473. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts.map +1 -1
  474. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js +59 -6
  475. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  476. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -1
  477. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +81 -11
  478. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  479. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +2 -8
  480. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  481. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +17 -5
  482. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  483. package/node_modules/@fps-games/editor-babylon/dist/projection.js +300 -362
  484. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  485. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +4 -0
  486. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
  487. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +76 -10
  488. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  489. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts +46 -0
  490. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts.map +1 -0
  491. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js +304 -0
  492. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js.map +1 -0
  493. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +85 -0
  494. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -0
  495. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +1600 -0
  496. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -0
  497. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +11 -3
  498. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  499. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +105 -15
  500. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  501. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts +25 -0
  502. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts.map +1 -0
  503. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js +44 -0
  504. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js.map +1 -0
  505. package/node_modules/@fps-games/editor-babylon/package.json +6 -5
  506. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +8 -11
  507. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  508. package/node_modules/@fps-games/editor-browser/dist/index.js +6 -9
  509. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  510. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts +2 -0
  511. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts.map +1 -0
  512. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js +36 -0
  513. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js.map +1 -0
  514. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts +2 -0
  515. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts.map +1 -1
  516. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js +17 -0
  517. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  518. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +1 -1
  519. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
  520. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +6 -0
  521. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  522. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts.map +1 -1
  523. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +157 -77
  524. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  525. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.d.ts.map +1 -1
  526. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js +27 -21
  527. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  528. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +19 -0
  529. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -0
  530. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +44 -0
  531. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -0
  532. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +36 -6
  533. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  534. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +829 -866
  535. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  536. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts +8 -7
  537. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts.map +1 -1
  538. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js +1 -7
  539. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  540. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts +7 -0
  541. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts.map +1 -0
  542. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js +20 -0
  543. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js.map +1 -0
  544. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +6 -7
  545. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  546. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +266 -114
  547. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  548. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  549. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  550. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +5 -0
  551. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  552. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  553. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +3 -17
  554. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  555. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts +14 -0
  556. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts.map +1 -1
  557. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js +44 -62
  558. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  559. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +10 -7
  560. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  561. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +591 -639
  562. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  563. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +8 -36
  564. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
  565. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +25 -103
  566. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  567. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  568. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +29 -110
  569. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  570. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +1 -3
  571. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
  572. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +6 -90
  573. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  574. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -1
  575. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +9 -54
  576. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  577. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +16 -1
  578. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -1
  579. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +44 -39
  580. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -1
  581. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts +4 -0
  582. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts.map +1 -0
  583. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js +44 -0
  584. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js.map +1 -0
  585. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.d.ts.map +1 -1
  586. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js +35 -44
  587. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  588. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -1
  589. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +40 -24
  590. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  591. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.d.ts.map +1 -1
  592. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js +2 -20
  593. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  594. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +52 -341
  595. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  596. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  597. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +4 -14
  598. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  599. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +33 -119
  600. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  601. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +5 -10
  602. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  603. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +595 -544
  604. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  605. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts +2 -3
  606. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts.map +1 -1
  607. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js +0 -180
  608. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  609. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts +5 -0
  610. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts.map +1 -0
  611. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js +5 -0
  612. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js.map +1 -0
  613. package/node_modules/@fps-games/editor-browser/package.json +15 -4
  614. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts +22 -0
  615. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts.map +1 -0
  616. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js +226 -0
  617. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js.map +1 -0
  618. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -1
  619. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  620. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +94 -2
  621. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  622. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +24 -2
  623. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  624. package/node_modules/@fps-games/editor-core/dist/editor-session.js +70 -10
  625. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  626. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +112 -0
  627. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -0
  628. package/node_modules/@fps-games/editor-core/dist/editor-tools.js +613 -0
  629. package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -0
  630. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +46 -0
  631. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -1
  632. package/node_modules/@fps-games/editor-core/dist/inspector.js +62 -0
  633. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  634. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -0
  635. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  636. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  637. package/node_modules/@fps-games/editor-core/package.json +14 -6
  638. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  639. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +14 -3
  640. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  641. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +1 -1
  642. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -1
  643. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +1 -1
  644. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  645. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +14 -0
  646. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  647. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +49 -1
  648. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  649. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +58 -2
  650. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  651. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  652. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +48 -6
  653. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  654. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +28 -3
  655. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  656. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +314 -6
  657. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  658. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts +2 -0
  659. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts.map +1 -1
  660. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js +2 -0
  661. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  662. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts +11 -0
  663. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts.map +1 -0
  664. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js +27 -0
  665. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js.map +1 -0
  666. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts +5 -0
  667. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts.map +1 -0
  668. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js +285 -0
  669. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js.map +1 -0
  670. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +7 -3
  671. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  672. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  673. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +3 -0
  674. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  675. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +6 -0
  676. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  677. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  678. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +23 -81
  679. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  680. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts +41 -0
  681. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts.map +1 -0
  682. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js +93 -0
  683. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js.map +1 -0
  684. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts +29 -0
  685. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts.map +1 -0
  686. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js +77 -0
  687. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js.map +1 -0
  688. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts +51 -0
  689. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts.map +1 -0
  690. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js +105 -0
  691. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js.map +1 -0
  692. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts +60 -0
  693. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts.map +1 -0
  694. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js +287 -0
  695. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js.map +1 -0
  696. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +6 -1
  697. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  698. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  699. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +1 -0
  700. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  701. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +53 -17
  702. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  703. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +16 -8
  704. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  705. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +10 -6
  706. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  707. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +5 -3
  708. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  709. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +2 -1
  710. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  711. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  712. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +134 -66
  713. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  714. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +11 -0
  715. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  716. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +21 -14
  717. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  718. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +17 -9
  719. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  720. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  721. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  722. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +20 -0
  723. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  724. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
  725. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +49 -10
  726. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  727. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +2 -2
  728. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  729. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -0
  730. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  731. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts +7 -0
  732. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts.map +1 -1
  733. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js +130 -20
  734. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  735. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts +1 -1
  736. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts.map +1 -1
  737. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js +12 -3
  738. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  739. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts +11 -0
  740. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts.map +1 -0
  741. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js +136 -0
  742. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js.map +1 -0
  743. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts +1 -0
  744. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts.map +1 -1
  745. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js +1 -0
  746. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  747. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts +36 -51
  748. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts.map +1 -1
  749. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js +40 -65
  750. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  751. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +5 -2
  752. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  753. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +207 -1
  754. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  755. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  756. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  757. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +3 -0
  758. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  759. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +18 -7
  760. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  761. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +110 -18
  762. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  763. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +5 -0
  764. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  765. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +6 -0
  766. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  767. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts +5 -2
  768. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  769. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +22 -2
  770. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  771. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  772. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +144 -0
  773. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  774. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +16 -0
  775. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
  776. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  777. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  778. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
  779. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  780. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
  781. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  782. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  783. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +2 -0
  784. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -1
  785. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +241 -13
  786. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  787. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +1 -0
  788. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -1
  789. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +1 -0
  790. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  791. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts +31 -0
  792. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts.map +1 -0
  793. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js +170 -0
  794. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js.map +1 -0
  795. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +153 -13
  796. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -1
  797. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  798. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts +17 -0
  799. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts.map +1 -1
  800. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js +1295 -3
  801. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  802. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  803. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +14 -0
  804. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  805. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.d.ts.map +1 -1
  806. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js +57 -34
  807. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  808. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
  809. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +4 -1
  810. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  811. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +4 -0
  812. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  813. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  814. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
  815. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +20 -198
  816. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  817. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.d.ts.map +1 -1
  818. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js +5 -1
  819. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  820. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts +5 -0
  821. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
  822. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +144 -8
  823. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  824. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts +1 -1
  825. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts.map +1 -1
  826. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js +30 -1
  827. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  828. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts +6 -0
  829. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts.map +1 -1
  830. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  831. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +31 -3
  832. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  833. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +5 -2
  834. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  835. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +40 -4
  836. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  837. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  838. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +116 -3
  839. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  840. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +2 -1
  841. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  842. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -0
  843. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  844. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +17 -1
  845. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  846. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +50 -2
  847. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  848. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  849. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +7 -5
  850. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  851. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +5 -6
  852. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  853. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +31 -17
  854. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  855. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +6 -0
  856. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  857. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  858. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  859. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +417 -2
  860. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -1
  861. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +692 -2
  862. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  863. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts +55 -0
  864. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts.map +1 -0
  865. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js +2 -0
  866. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js.map +1 -0
  867. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +3 -18
  868. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  869. package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
  870. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  871. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  872. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.d.ts.map +1 -1
  873. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js +5 -0
  874. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  875. package/node_modules/@fps-games/editor-tooling/dist/vite.d.ts.map +1 -1
  876. package/node_modules/@fps-games/editor-tooling/dist/vite.js +151 -5
  877. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  878. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  879. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts +107 -0
  880. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts.map +1 -0
  881. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js +770 -0
  882. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js.map +1 -0
  883. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts +21 -0
  884. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts.map +1 -0
  885. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js +172 -0
  886. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js.map +1 -0
  887. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts +14 -0
  888. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts.map +1 -0
  889. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js +32 -0
  890. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js.map +1 -0
  891. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts +3 -0
  892. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -0
  893. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +653 -0
  894. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -0
  895. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts +3 -0
  896. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts.map +1 -0
  897. package/node_modules/@fps-games/editor-ui/dist/gallery.js +3 -0
  898. package/node_modules/@fps-games/editor-ui/dist/gallery.js.map +1 -0
  899. package/node_modules/@fps-games/editor-ui/dist/index.d.ts +5 -0
  900. package/node_modules/@fps-games/editor-ui/dist/index.d.ts.map +1 -0
  901. package/node_modules/@fps-games/editor-ui/dist/index.js +5 -0
  902. package/node_modules/@fps-games/editor-ui/dist/index.js.map +1 -0
  903. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts +7 -0
  904. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts.map +1 -0
  905. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js +29 -0
  906. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js.map +1 -0
  907. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts +2 -0
  908. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts.map +1 -0
  909. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js +95 -0
  910. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js.map +1 -0
  911. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts +28 -0
  912. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts.map +1 -0
  913. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js +387 -0
  914. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js.map +1 -0
  915. package/node_modules/@fps-games/editor-ui/package.json +23 -0
  916. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  917. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts +1 -0
  918. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts.map +1 -1
  919. package/node_modules/@fps-games/playable-contracts/dist/index.js +1 -0
  920. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  921. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts +116 -0
  922. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts.map +1 -0
  923. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js +403 -0
  924. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js.map +1 -0
  925. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  926. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts +3 -0
  927. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts.map +1 -1
  928. package/node_modules/@fps-games/playable-rendering/dist/index.js +3 -0
  929. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  930. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js +5 -25
  931. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  932. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts +3 -0
  933. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts.map +1 -1
  934. package/node_modules/@fps-games/playable-rendering/dist/runtime.js +3 -0
  935. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  936. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts +61 -0
  937. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts.map +1 -0
  938. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js +176 -0
  939. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js.map +1 -0
  940. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts +84 -0
  941. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  942. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js +362 -0
  943. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js.map +1 -0
  944. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts +167 -0
  945. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts.map +1 -0
  946. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js +484 -0
  947. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js.map +1 -0
  948. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  949. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts +5 -0
  950. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts.map +1 -1
  951. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js +1 -0
  952. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  953. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  954. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  955. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  956. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  957. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  958. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  959. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  960. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  961. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts +6 -0
  962. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts.map +1 -0
  963. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js +16 -0
  964. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js.map +1 -0
  965. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts +7 -0
  966. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts.map +1 -0
  967. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js +47 -0
  968. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js.map +1 -0
  969. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +306 -0
  970. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -0
  971. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +1237 -0
  972. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -0
  973. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts +8 -0
  974. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts.map +1 -0
  975. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js +32 -0
  976. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js.map +1 -0
  977. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +2 -0
  978. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts.map +1 -0
  979. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +2 -0
  980. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -0
  981. package/node_modules/@fps-games/plugin-hierarchy/package.json +57 -0
  982. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  983. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  984. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  985. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  986. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  987. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  988. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  989. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  990. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  991. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  992. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  993. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  994. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  995. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  996. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  997. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  998. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  999. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts +8 -0
  1000. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts.map +1 -0
  1001. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js +35 -0
  1002. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js.map +1 -0
  1003. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts +11 -0
  1004. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts.map +1 -0
  1005. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js +14 -0
  1006. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js.map +1 -0
  1007. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +2 -0
  1008. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts.map +1 -0
  1009. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +2 -0
  1010. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -0
  1011. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +53 -0
  1012. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  1013. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  1014. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  1015. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  1016. package/node_modules/@playcanvas/observer/LICENSE +19 -0
  1017. package/node_modules/@playcanvas/observer/README.md +72 -0
  1018. package/node_modules/@playcanvas/observer/dist/index.cjs +2033 -0
  1019. package/node_modules/@playcanvas/observer/dist/index.js +2039 -0
  1020. package/node_modules/@playcanvas/observer/dist/index.mjs +2026 -0
  1021. package/node_modules/@playcanvas/observer/package.json +78 -0
  1022. package/node_modules/@playcanvas/observer/types/event-handle.d.ts +41 -0
  1023. package/node_modules/@playcanvas/observer/types/events.d.ts +162 -0
  1024. package/node_modules/@playcanvas/observer/types/history.d.ts +123 -0
  1025. package/node_modules/@playcanvas/observer/types/index.d.ts +15 -0
  1026. package/node_modules/@playcanvas/observer/types/observer-history.d.ts +32 -0
  1027. package/node_modules/@playcanvas/observer/types/observer-list.d.ts +39 -0
  1028. package/node_modules/@playcanvas/observer/types/observer.d.ts +157 -0
  1029. package/node_modules/@playcanvas/observer/types/utils.d.ts +33 -0
  1030. package/node_modules/@playcanvas/pcui/LICENSE +19 -0
  1031. package/node_modules/@playcanvas/pcui/README.md +164 -0
  1032. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1033. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1034. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1035. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1036. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1037. package/node_modules/@playcanvas/pcui/dist/module/src/Math/color-value.mjs +77 -0
  1038. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1039. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1040. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1041. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1042. package/node_modules/@playcanvas/pcui/dist/module/src/class.mjs +19 -0
  1043. package/node_modules/@playcanvas/pcui/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1044. package/node_modules/@playcanvas/pcui/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1045. package/node_modules/@playcanvas/pcui/dist/module/src/components/Button/index.mjs +119 -0
  1046. package/node_modules/@playcanvas/pcui/dist/module/src/components/Canvas/index.mjs +104 -0
  1047. package/node_modules/@playcanvas/pcui/dist/module/src/components/Code/index.mjs +43 -0
  1048. package/node_modules/@playcanvas/pcui/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1049. package/node_modules/@playcanvas/pcui/dist/module/src/components/Container/index.mjs +642 -0
  1050. package/node_modules/@playcanvas/pcui/dist/module/src/components/Divider/index.mjs +20 -0
  1051. package/node_modules/@playcanvas/pcui/dist/module/src/components/Element/index.mjs +829 -0
  1052. package/node_modules/@playcanvas/pcui/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1053. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridView/index.mjs +448 -0
  1054. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1055. package/node_modules/@playcanvas/pcui/dist/module/src/components/InfoBox/index.mjs +90 -0
  1056. package/node_modules/@playcanvas/pcui/dist/module/src/components/InputElement/index.mjs +186 -0
  1057. package/node_modules/@playcanvas/pcui/dist/module/src/components/Label/index.mjs +124 -0
  1058. package/node_modules/@playcanvas/pcui/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1059. package/node_modules/@playcanvas/pcui/dist/module/src/components/Menu/index.mjs +174 -0
  1060. package/node_modules/@playcanvas/pcui/dist/module/src/components/MenuItem/index.mjs +223 -0
  1061. package/node_modules/@playcanvas/pcui/dist/module/src/components/NumericInput/index.mjs +400 -0
  1062. package/node_modules/@playcanvas/pcui/dist/module/src/components/Overlay/index.mjs +108 -0
  1063. package/node_modules/@playcanvas/pcui/dist/module/src/components/Panel/index.mjs +400 -0
  1064. package/node_modules/@playcanvas/pcui/dist/module/src/components/Progress/index.mjs +45 -0
  1065. package/node_modules/@playcanvas/pcui/dist/module/src/components/RadioButton/index.mjs +113 -0
  1066. package/node_modules/@playcanvas/pcui/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1067. package/node_modules/@playcanvas/pcui/dist/module/src/components/SliderInput/index.mjs +333 -0
  1068. package/node_modules/@playcanvas/pcui/dist/module/src/components/Spinner/index.mjs +34 -0
  1069. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1070. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextInput/index.mjs +98 -0
  1071. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeView/index.mjs +1131 -0
  1072. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1073. package/node_modules/@playcanvas/pcui/dist/module/src/components/VectorInput/index.mjs +366 -0
  1074. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/search.mjs +194 -0
  1075. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/utils.mjs +43 -0
  1076. package/node_modules/@playcanvas/pcui/dist/module/src/index.mjs +56 -0
  1077. package/node_modules/@playcanvas/pcui/dist/pcui-theme-green.scss +2798 -0
  1078. package/node_modules/@playcanvas/pcui/dist/pcui-theme-grey.scss +2798 -0
  1079. package/node_modules/@playcanvas/pcui/package.json +150 -0
  1080. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1081. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1082. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1083. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1084. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1085. package/node_modules/@playcanvas/pcui/react/dist/module/src/Math/color-value.mjs +77 -0
  1086. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1087. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1088. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1089. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1090. package/node_modules/@playcanvas/pcui/react/dist/module/src/class.mjs +19 -0
  1091. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/component.mjs +11 -0
  1092. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1093. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/component.mjs +11 -0
  1094. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1095. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/component.mjs +16 -0
  1096. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/index.mjs +119 -0
  1097. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/component.mjs +16 -0
  1098. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/index.mjs +104 -0
  1099. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/component.mjs +11 -0
  1100. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/index.mjs +43 -0
  1101. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/component.mjs +16 -0
  1102. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1103. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/component.mjs +36 -0
  1104. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/index.mjs +642 -0
  1105. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/component.mjs +11 -0
  1106. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/index.mjs +20 -0
  1107. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/component.mjs +107 -0
  1108. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/index.mjs +829 -0
  1109. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/component.mjs +16 -0
  1110. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1111. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/component.mjs +38 -0
  1112. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/index.mjs +448 -0
  1113. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/component.mjs +11 -0
  1114. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1115. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/component.mjs +16 -0
  1116. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/index.mjs +90 -0
  1117. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InputElement/index.mjs +186 -0
  1118. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/component.mjs +16 -0
  1119. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/index.mjs +124 -0
  1120. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/component.mjs +42 -0
  1121. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1122. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/component.mjs +23 -0
  1123. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/index.mjs +174 -0
  1124. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/MenuItem/index.mjs +223 -0
  1125. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/component.mjs +11 -0
  1126. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/index.mjs +400 -0
  1127. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/component.mjs +11 -0
  1128. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/index.mjs +108 -0
  1129. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/component.mjs +32 -0
  1130. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/index.mjs +400 -0
  1131. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/component.mjs +11 -0
  1132. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/index.mjs +45 -0
  1133. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/component.mjs +11 -0
  1134. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/index.mjs +113 -0
  1135. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/component.mjs +21 -0
  1136. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1137. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/component.mjs +12 -0
  1138. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/index.mjs +333 -0
  1139. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/component.mjs +16 -0
  1140. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/index.mjs +34 -0
  1141. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/component.mjs +11 -0
  1142. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1143. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/component.mjs +23 -0
  1144. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/index.mjs +98 -0
  1145. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/component.mjs +52 -0
  1146. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/index.mjs +1131 -0
  1147. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/component.mjs +33 -0
  1148. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1149. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/component.mjs +11 -0
  1150. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/index.mjs +366 -0
  1151. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/search.mjs +194 -0
  1152. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/utils.mjs +43 -0
  1153. package/node_modules/@playcanvas/pcui/react/dist/module/src/index.mjs +39 -0
  1154. package/node_modules/@playcanvas/pcui/react/package.json +18 -0
  1155. package/node_modules/@playcanvas/pcui/react/types/Math/color-value.d.ts +3 -0
  1156. package/node_modules/@playcanvas/pcui/react/types/binding/BindingBase/index.d.ts +178 -0
  1157. package/node_modules/@playcanvas/pcui/react/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1158. package/node_modules/@playcanvas/pcui/react/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1159. package/node_modules/@playcanvas/pcui/react/types/binding/BindingTwoWay/index.d.ts +54 -0
  1160. package/node_modules/@playcanvas/pcui/react/types/binding/index.d.ts +5 -0
  1161. package/node_modules/@playcanvas/pcui/react/types/class.d.ts +17 -0
  1162. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/component.d.ts +9 -0
  1163. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/index.d.ts +140 -0
  1164. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/component.d.ts +9 -0
  1165. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/index.d.ts +41 -0
  1166. package/node_modules/@playcanvas/pcui/react/types/components/Button/component.d.ts +11 -0
  1167. package/node_modules/@playcanvas/pcui/react/types/components/Button/index.d.ts +75 -0
  1168. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/component.d.ts +11 -0
  1169. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/index.d.ts +61 -0
  1170. package/node_modules/@playcanvas/pcui/react/types/components/Code/component.d.ts +9 -0
  1171. package/node_modules/@playcanvas/pcui/react/types/components/Code/index.d.ts +33 -0
  1172. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/component.d.ts +11 -0
  1173. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/index.d.ts +99 -0
  1174. package/node_modules/@playcanvas/pcui/react/types/components/Container/component.d.ts +15 -0
  1175. package/node_modules/@playcanvas/pcui/react/types/components/Container/index.d.ts +292 -0
  1176. package/node_modules/@playcanvas/pcui/react/types/components/Divider/component.d.ts +10 -0
  1177. package/node_modules/@playcanvas/pcui/react/types/components/Divider/index.d.ts +13 -0
  1178. package/node_modules/@playcanvas/pcui/react/types/components/Element/component.d.ts +23 -0
  1179. package/node_modules/@playcanvas/pcui/react/types/components/Element/index.d.ts +671 -0
  1180. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/component.d.ts +11 -0
  1181. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/index.d.ts +152 -0
  1182. package/node_modules/@playcanvas/pcui/react/types/components/GridView/component.d.ts +14 -0
  1183. package/node_modules/@playcanvas/pcui/react/types/components/GridView/index.d.ts +103 -0
  1184. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/component.d.ts +9 -0
  1185. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/index.d.ts +82 -0
  1186. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/component.d.ts +11 -0
  1187. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/index.d.ts +71 -0
  1188. package/node_modules/@playcanvas/pcui/react/types/components/InputElement/index.d.ts +84 -0
  1189. package/node_modules/@playcanvas/pcui/react/types/components/Label/component.d.ts +11 -0
  1190. package/node_modules/@playcanvas/pcui/react/types/components/Label/index.d.ts +85 -0
  1191. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/component.d.ts +10 -0
  1192. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/index.d.ts +62 -0
  1193. package/node_modules/@playcanvas/pcui/react/types/components/Menu/component.d.ts +14 -0
  1194. package/node_modules/@playcanvas/pcui/react/types/components/Menu/index.d.ts +70 -0
  1195. package/node_modules/@playcanvas/pcui/react/types/components/MenuItem/index.d.ts +139 -0
  1196. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/component.d.ts +9 -0
  1197. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/index.d.ts +173 -0
  1198. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/component.d.ts +9 -0
  1199. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/index.d.ts +53 -0
  1200. package/node_modules/@playcanvas/pcui/react/types/components/Panel/component.d.ts +16 -0
  1201. package/node_modules/@playcanvas/pcui/react/types/components/Panel/index.d.ts +178 -0
  1202. package/node_modules/@playcanvas/pcui/react/types/components/Progress/component.d.ts +9 -0
  1203. package/node_modules/@playcanvas/pcui/react/types/components/Progress/index.d.ts +33 -0
  1204. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/component.d.ts +9 -0
  1205. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/index.d.ts +33 -0
  1206. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/component.d.ts +12 -0
  1207. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/index.d.ts +278 -0
  1208. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/component.d.ts +10 -0
  1209. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/index.d.ts +133 -0
  1210. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/component.d.ts +11 -0
  1211. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/index.d.ts +27 -0
  1212. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/component.d.ts +9 -0
  1213. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/index.d.ts +24 -0
  1214. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/component.d.ts +12 -0
  1215. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/index.d.ts +40 -0
  1216. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/component.d.ts +17 -0
  1217. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/index.d.ts +359 -0
  1218. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/component.d.ts +13 -0
  1219. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/index.d.ts +224 -0
  1220. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/component.d.ts +9 -0
  1221. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/index.d.ts +176 -0
  1222. package/node_modules/@playcanvas/pcui/react/types/components/components.d.ts +30 -0
  1223. package/node_modules/@playcanvas/pcui/react/types/components/index.d.ts +32 -0
  1224. package/node_modules/@playcanvas/pcui/react/types/helpers/search.d.ts +31 -0
  1225. package/node_modules/@playcanvas/pcui/react/types/helpers/utils.d.ts +2 -0
  1226. package/node_modules/@playcanvas/pcui/react/types/index.d.ts +4 -0
  1227. package/node_modules/@playcanvas/pcui/styles/dist/index.mjs +11 -0
  1228. package/node_modules/@playcanvas/pcui/styles/package.json +17 -0
  1229. package/node_modules/@playcanvas/pcui/types/Math/color-value.d.ts +3 -0
  1230. package/node_modules/@playcanvas/pcui/types/binding/BindingBase/index.d.ts +178 -0
  1231. package/node_modules/@playcanvas/pcui/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1232. package/node_modules/@playcanvas/pcui/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1233. package/node_modules/@playcanvas/pcui/types/binding/BindingTwoWay/index.d.ts +54 -0
  1234. package/node_modules/@playcanvas/pcui/types/binding/index.d.ts +5 -0
  1235. package/node_modules/@playcanvas/pcui/types/class.d.ts +17 -0
  1236. package/node_modules/@playcanvas/pcui/types/components/ArrayInput/index.d.ts +140 -0
  1237. package/node_modules/@playcanvas/pcui/types/components/BooleanInput/index.d.ts +41 -0
  1238. package/node_modules/@playcanvas/pcui/types/components/Button/index.d.ts +75 -0
  1239. package/node_modules/@playcanvas/pcui/types/components/Canvas/index.d.ts +61 -0
  1240. package/node_modules/@playcanvas/pcui/types/components/Code/index.d.ts +33 -0
  1241. package/node_modules/@playcanvas/pcui/types/components/ColorPicker/index.d.ts +99 -0
  1242. package/node_modules/@playcanvas/pcui/types/components/Container/index.d.ts +292 -0
  1243. package/node_modules/@playcanvas/pcui/types/components/Divider/index.d.ts +13 -0
  1244. package/node_modules/@playcanvas/pcui/types/components/Element/index.d.ts +671 -0
  1245. package/node_modules/@playcanvas/pcui/types/components/GradientPicker/index.d.ts +152 -0
  1246. package/node_modules/@playcanvas/pcui/types/components/GridView/index.d.ts +103 -0
  1247. package/node_modules/@playcanvas/pcui/types/components/GridViewItem/index.d.ts +82 -0
  1248. package/node_modules/@playcanvas/pcui/types/components/InfoBox/index.d.ts +71 -0
  1249. package/node_modules/@playcanvas/pcui/types/components/InputElement/index.d.ts +84 -0
  1250. package/node_modules/@playcanvas/pcui/types/components/Label/index.d.ts +85 -0
  1251. package/node_modules/@playcanvas/pcui/types/components/LabelGroup/index.d.ts +62 -0
  1252. package/node_modules/@playcanvas/pcui/types/components/Menu/index.d.ts +70 -0
  1253. package/node_modules/@playcanvas/pcui/types/components/MenuItem/index.d.ts +139 -0
  1254. package/node_modules/@playcanvas/pcui/types/components/NumericInput/index.d.ts +173 -0
  1255. package/node_modules/@playcanvas/pcui/types/components/Overlay/index.d.ts +53 -0
  1256. package/node_modules/@playcanvas/pcui/types/components/Panel/index.d.ts +178 -0
  1257. package/node_modules/@playcanvas/pcui/types/components/Progress/index.d.ts +33 -0
  1258. package/node_modules/@playcanvas/pcui/types/components/RadioButton/index.d.ts +33 -0
  1259. package/node_modules/@playcanvas/pcui/types/components/SelectInput/index.d.ts +278 -0
  1260. package/node_modules/@playcanvas/pcui/types/components/SliderInput/index.d.ts +133 -0
  1261. package/node_modules/@playcanvas/pcui/types/components/Spinner/index.d.ts +27 -0
  1262. package/node_modules/@playcanvas/pcui/types/components/TextAreaInput/index.d.ts +24 -0
  1263. package/node_modules/@playcanvas/pcui/types/components/TextInput/index.d.ts +40 -0
  1264. package/node_modules/@playcanvas/pcui/types/components/TreeView/index.d.ts +359 -0
  1265. package/node_modules/@playcanvas/pcui/types/components/TreeViewItem/index.d.ts +224 -0
  1266. package/node_modules/@playcanvas/pcui/types/components/VectorInput/index.d.ts +176 -0
  1267. package/node_modules/@playcanvas/pcui/types/components/index.d.ts +32 -0
  1268. package/node_modules/@playcanvas/pcui/types/helpers/search.d.ts +31 -0
  1269. package/node_modules/@playcanvas/pcui/types/helpers/utils.d.ts +2 -0
  1270. package/node_modules/@playcanvas/pcui/types/index.d.ts +20 -0
  1271. package/node_modules/babylonjs-gltf2interface/babylon.glTF2Interface.d.ts +1655 -0
  1272. package/node_modules/babylonjs-gltf2interface/license.md +71 -0
  1273. package/node_modules/babylonjs-gltf2interface/package.json +26 -0
  1274. package/package.json +31 -19
  1275. package/dist/editor-plugin-hierarchy-command.d.ts +0 -19
  1276. package/dist/editor-plugin-hierarchy-command.d.ts.map +0 -1
  1277. package/dist/editor-plugin-hierarchy-command.js +0 -119
  1278. package/dist/editor-plugin-hierarchy-command.js.map +0 -1
  1279. package/node_modules/@babel/helper-string-parser/lib/index.js.map +0 -1
  1280. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +0 -1
  1281. package/node_modules/@babel/helper-validator-identifier/lib/index.js.map +0 -1
  1282. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +0 -1
  1283. package/node_modules/@babel/parser/lib/index.js.map +0 -1
  1284. package/node_modules/@babel/types/lib/asserts/assertNode.js.map +0 -1
  1285. package/node_modules/@babel/types/lib/asserts/generated/index.js.map +0 -1
  1286. package/node_modules/@babel/types/lib/ast-types/generated/index.js.map +0 -1
  1287. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +0 -1
  1288. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +0 -1
  1289. package/node_modules/@babel/types/lib/builders/generated/index.js.map +0 -1
  1290. package/node_modules/@babel/types/lib/builders/generated/lowercase.js.map +0 -1
  1291. package/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +0 -1
  1292. package/node_modules/@babel/types/lib/builders/productions.js.map +0 -1
  1293. package/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +0 -1
  1294. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +0 -1
  1295. package/node_modules/@babel/types/lib/builders/validateNode.js.map +0 -1
  1296. package/node_modules/@babel/types/lib/clone/clone.js.map +0 -1
  1297. package/node_modules/@babel/types/lib/clone/cloneDeep.js.map +0 -1
  1298. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +0 -1
  1299. package/node_modules/@babel/types/lib/clone/cloneNode.js.map +0 -1
  1300. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +0 -1
  1301. package/node_modules/@babel/types/lib/comments/addComment.js.map +0 -1
  1302. package/node_modules/@babel/types/lib/comments/addComments.js.map +0 -1
  1303. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +0 -1
  1304. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +0 -1
  1305. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +0 -1
  1306. package/node_modules/@babel/types/lib/comments/inheritsComments.js.map +0 -1
  1307. package/node_modules/@babel/types/lib/comments/removeComments.js.map +0 -1
  1308. package/node_modules/@babel/types/lib/constants/generated/index.js.map +0 -1
  1309. package/node_modules/@babel/types/lib/constants/index.js.map +0 -1
  1310. package/node_modules/@babel/types/lib/converters/ensureBlock.js.map +0 -1
  1311. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +0 -1
  1312. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +0 -1
  1313. package/node_modules/@babel/types/lib/converters/toBlock.js.map +0 -1
  1314. package/node_modules/@babel/types/lib/converters/toComputedKey.js.map +0 -1
  1315. package/node_modules/@babel/types/lib/converters/toExpression.js.map +0 -1
  1316. package/node_modules/@babel/types/lib/converters/toIdentifier.js.map +0 -1
  1317. package/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +0 -1
  1318. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +0 -1
  1319. package/node_modules/@babel/types/lib/converters/toStatement.js.map +0 -1
  1320. package/node_modules/@babel/types/lib/converters/valueToNode.js.map +0 -1
  1321. package/node_modules/@babel/types/lib/definitions/core.js.map +0 -1
  1322. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map +0 -1
  1323. package/node_modules/@babel/types/lib/definitions/experimental.js.map +0 -1
  1324. package/node_modules/@babel/types/lib/definitions/flow.js.map +0 -1
  1325. package/node_modules/@babel/types/lib/definitions/index.js.map +0 -1
  1326. package/node_modules/@babel/types/lib/definitions/jsx.js.map +0 -1
  1327. package/node_modules/@babel/types/lib/definitions/misc.js.map +0 -1
  1328. package/node_modules/@babel/types/lib/definitions/placeholders.js.map +0 -1
  1329. package/node_modules/@babel/types/lib/definitions/typescript.js.map +0 -1
  1330. package/node_modules/@babel/types/lib/definitions/utils.js.map +0 -1
  1331. package/node_modules/@babel/types/lib/index.js.map +0 -1
  1332. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +0 -1
  1333. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +0 -1
  1334. package/node_modules/@babel/types/lib/modifications/inherits.js.map +0 -1
  1335. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +0 -1
  1336. package/node_modules/@babel/types/lib/modifications/removeProperties.js.map +0 -1
  1337. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +0 -1
  1338. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +0 -1
  1339. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map +0 -1
  1340. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +0 -1
  1341. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map +0 -1
  1342. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +0 -1
  1343. package/node_modules/@babel/types/lib/traverse/traverse.js.map +0 -1
  1344. package/node_modules/@babel/types/lib/traverse/traverseFast.js.map +0 -1
  1345. package/node_modules/@babel/types/lib/utils/deprecationWarning.js.map +0 -1
  1346. package/node_modules/@babel/types/lib/utils/inherit.js.map +0 -1
  1347. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +0 -1
  1348. package/node_modules/@babel/types/lib/utils/shallowEqual.js.map +0 -1
  1349. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +0 -1
  1350. package/node_modules/@babel/types/lib/validators/generated/index.js.map +0 -1
  1351. package/node_modules/@babel/types/lib/validators/is.js.map +0 -1
  1352. package/node_modules/@babel/types/lib/validators/isBinding.js.map +0 -1
  1353. package/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +0 -1
  1354. package/node_modules/@babel/types/lib/validators/isImmutable.js.map +0 -1
  1355. package/node_modules/@babel/types/lib/validators/isLet.js.map +0 -1
  1356. package/node_modules/@babel/types/lib/validators/isNode.js.map +0 -1
  1357. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +0 -1
  1358. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +0 -1
  1359. package/node_modules/@babel/types/lib/validators/isReferenced.js.map +0 -1
  1360. package/node_modules/@babel/types/lib/validators/isScope.js.map +0 -1
  1361. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +0 -1
  1362. package/node_modules/@babel/types/lib/validators/isType.js.map +0 -1
  1363. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +0 -1
  1364. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +0 -1
  1365. package/node_modules/@babel/types/lib/validators/isVar.js.map +0 -1
  1366. package/node_modules/@babel/types/lib/validators/matchesPattern.js.map +0 -1
  1367. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +0 -1
  1368. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +0 -1
  1369. package/node_modules/@babel/types/lib/validators/validate.js.map +0 -1
  1370. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +0 -37
  1371. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +0 -1
  1372. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +0 -451
  1373. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +0 -1
  1374. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts +0 -49
  1375. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +0 -1
  1376. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +0 -627
  1377. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +0 -1
  1378. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts +0 -52
  1379. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +0 -1
  1380. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +0 -450
  1381. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +0 -1
  1382. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +0 -21
  1383. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +0 -1
  1384. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +0 -75
  1385. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +0 -1
  1386. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts +0 -7
  1387. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts.map +0 -1
  1388. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js +0 -186
  1389. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js.map +0 -1
  1390. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +0 -5
  1391. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +0 -1
  1392. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +0 -98
  1393. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +0 -1
  1394. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +0 -63
  1395. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +0 -1
  1396. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +0 -301
  1397. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +0 -1
@@ -7,29 +7,29 @@ import { createLocalEditorTooltipController } from './local-editor-ui-tooltip.js
7
7
  import { createLocalEditorViewportRevealController } from './local-editor-ui-dock-panel.js';
8
8
  import { createLocalEditorModalDialog } from './local-editor-ui-modal-dialog.js';
9
9
  import { parseLocalEditorBrowserInspectorGroupValueClipboardPayload, } from './local-editor-inspector-clipboard.js';
10
- import { LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES, resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath, } from './local-editor-inspector-groups.js';
11
- import { DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS, DEFAULT_EDITOR_TRANSFORM_TOOL_DESCRIPTORS, } from '@fps-games/editor-core';
10
+ import { writeLocalEditorClipboardText } from './local-editor-clipboard.js';
11
+ import { LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES, resolveLocalEditorBrowserInspectorProportionalScaleValues, resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath, resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath, } from './local-editor-inspector-groups.js';
12
+ import { DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS, } from '@fps-games/editor-core';
13
+ import { createEditorUiLayerHost } from '@fps-games/editor-ui';
12
14
  export { createLocalEditorViewportRevealController, isLocalEditorElementVisibleInViewport, resolveLocalEditorViewportRevealScrollTop, revealLocalEditorElementInViewport, } from './local-editor-ui-dock-panel.js';
13
- export { createLocalEditorHierarchyBlankMenu, createLocalEditorHierarchyCopyShortcutAction, createLocalEditorHierarchyDeleteShortcutAction, createLocalEditorHierarchyDuplicateShortcutAction, createLocalEditorHierarchyNodeMenu, createLocalEditorHierarchyPasteShortcutAction, createLocalEditorHierarchySelectAllShortcutAction, } from './local-editor-ui-hierarchy-actions.js';
14
- export { createLocalEditorHierarchyController, resolveLocalEditorHierarchyCreateMarkerParentId, resolveLocalEditorHierarchyToolbarActiveId, } from './local-editor-ui-hierarchy-controller.js';
15
- export { resolveLocalEditorHierarchySearchRows, } from './local-editor-ui-hierarchy-view.js';
16
- export { createLocalEditorHierarchyAttachDialog, resolveLocalEditorHierarchyAttachTargets, } from './local-editor-ui-hierarchy-attach-dialog.js';
17
- export { canLocalEditorHierarchyNodeHaveChildren, canLocalEditorHierarchyNodeDelete, canLocalEditorHierarchyNodeRename, canLocalEditorHierarchyNodeToggleEnabled, createLocalEditorHierarchyTreeModel, isLocalEditorHierarchyNodeSelectable, isLocalEditorHierarchyNodeMovable, } from './local-editor-ui-hierarchy-tree.js';
15
+ export { canUseHierarchyProviderReparent, createHierarchyEnabledOperationRequest, createLocalEditorHierarchyController, createHierarchyOperationMenuItems, createHierarchyToolbarCreateMenuItems, matchesHierarchyOperationShortcut, } from './local-editor-ui-hierarchy-controller.js';
16
+ export { createLocalEditorHierarchyViewAdapter, } from './local-editor-ui-hierarchy-view-adapter.js';
18
17
  export { createLocalEditorContextMenuController, } from './local-editor-ui-context-menu.js';
19
18
  export { createLocalEditorTooltipController, } from './local-editor-ui-tooltip.js';
20
19
  import { createLocalEditorWorkbenchInputRouter } from './local-editor-ui-input-router.js';
21
20
  import { createLocalEditorPanelRegistry } from './local-editor-ui-panel-registry.js';
21
+ import { createLocalEditorFormalSurfaceVisibilityController, disposeLocalEditorFormalSurfaces, shouldRenderLocalEditorInspectorPreview, } from './local-editor-ui-formal-surface-visibility.js';
22
22
  import * as LocalEditorShared from './local-editor-ui-shared.js';
23
23
  import { findLocalEditorRenderingAction } from './local-editor-rendering-actions.js';
24
24
  import { createShortcutHelpPanel as createLocalEditorShortcutHelpPanel } from './local-editor-ui-shortcuts.js';
25
25
  import { applyLocalEditorTheme, ensureLocalEditorTheme, LOCAL_EDITOR_THEME_CLASS, normalizeLocalEditorThemeName, } from './local-editor-ui-theme.js';
26
26
  import { createDefaultLocalEditorWorkbenchLayout, createLocalEditorWorkbenchLayoutController, createLocalEditorWorkbench, createSceneHeaderToolbar, createWorkbenchPanelContent, } from './local-editor-ui-workbench.js';
27
27
  import { createLocalEditorIcon, isLocalEditorIconName } from './local-editor-ui-icons.js';
28
- import { createLocalEditorStatusCenterViewModel, resolveLocalEditorStatusDiagnostics, shouldCloseLocalEditorStatusCenter, } from './local-editor-ui-status-diagnostics.js';
29
- import { formatLocalEditorStatusDiagnosticDetails } from './local-editor-ui-hierarchy-projection.js';
28
+ import { createLocalEditorStatusCenterViewModel, resolveLocalEditorStatusDiagnosticLocatePlan, settleLocalEditorStatusDiagnosticRequest, resolveLocalEditorStatusDiagnostics, shouldCloseLocalEditorStatusCenter, } from './local-editor-ui-status-diagnostics.js';
29
+ import { formatLocalEditorStatusDiagnosticDetails } from './local-editor-ui-status-format.js';
30
30
  import { resolveLocalEditorBrowserAssetKind, } from './local-editor-ui-asset-kind.js';
31
- import { createLocalEditorPrefabStageTitle, findLocalEditorPrefabStageStructureItem, formatLocalEditorPrefabStageComparisonPreviewStatus, LOCAL_EDITOR_PREFAB_COMPARISON_COLUMN_WIDTH_PX, resolveLocalEditorRightDockVisibility, resolveLocalEditorPrefabStageComparisonPreviewTone, resolveLocalEditorPrefabStageWorkbenchLayout, resolveLocalEditorPreviewToolSupport, shouldLocalEditorClosePerformanceMonitor, shouldLocalEditorPrefabStageBlockHierarchyShortcut, shouldShowLocalEditorPrefabComparisonColumn, shouldToggleLocalEditorPrefabComparisonShortcut, } from './local-editor-ui-prefab-stage.js';
32
- export { applyLocalEditorBrowserInspectorControlBinding, createLocalEditorBrowserInspectorControlRegistry, formatLocalEditorBrowserInspectorNumberValue, formatLocalEditorBrowserInspectorValue, parseLocalEditorBrowserInspectorNumberValue, resolveLocalEditorBrowserInspectorSectionStatus, resolveLocalEditorBrowserInspectorControlRegistration, } from './local-editor-ui-panels.js';
31
+ import { createLocalEditorPrefabStageTitle, findLocalEditorPrefabStageStructureItem, resolveLocalEditorRightDockVisibility, resolveLocalEditorPrefabStageWorkbenchLayout, resolveLocalEditorPreviewToolSupport, shouldLocalEditorClosePerformanceMonitor, } from './local-editor-ui-prefab-stage.js';
32
+ export { applyLocalEditorBrowserInspectorControlBinding, createLocalEditorBrowserInspectorControlRegistry, formatLocalEditorBrowserInspectorNumberValue, formatLocalEditorBrowserInspectorValue, parseLocalEditorBrowserInspectorNumberValue, resolveLocalEditorBrowserInspectorSectionStatus, resolveLocalEditorBrowserInspectorControlRegistration, shouldShowPrefabModelAddAction, } from './local-editor-ui-panels.js';
33
33
  export { createLocalEditorBrowserInspectorGroupValueClipboardPayload, createLocalEditorBrowserInspectorVectorCopyPayload, parseLocalEditorBrowserInspectorGroupValueClipboardPayload, } from './local-editor-inspector-clipboard.js';
34
34
  export { LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES, isLocalEditorBrowserInspectorTransformVectorGroupPath, resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath, resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath, resolveLocalEditorBrowserInspectorVectorGroupPathFromProperties, } from './local-editor-inspector-groups.js';
35
35
  export { DEFAULT_LOCAL_EDITOR_THEME, LOCAL_EDITOR_THEME_CLASS, applyLocalEditorTheme, normalizeLocalEditorThemeName, } from './local-editor-ui-theme.js';
@@ -91,12 +91,6 @@ function isInspectorSerializedInputValue(value) {
91
91
  || typeof value === 'boolean'
92
92
  || (!!value && typeof value === 'object' && !Array.isArray(value));
93
93
  }
94
- const TRANSFORM_TOOL_ICONS = {
95
- select: 'select',
96
- move: 'move',
97
- rotate: 'rotate',
98
- scale: 'scale',
99
- };
100
94
  const TRANSFORM_SPACE_ICONS = {
101
95
  world: 'world',
102
96
  local: 'local',
@@ -165,12 +159,6 @@ const TRANSFORM_ACTION_LABELS = {
165
159
  'distribute-y': '分布 Y',
166
160
  'distribute-z': '分布 Z',
167
161
  };
168
- function createTransformToolTooltip(descriptor) {
169
- const toolLabel = descriptor.shortcut
170
- ? `${descriptor.label}工具 (${descriptor.shortcut})`
171
- : `${descriptor.label}工具`;
172
- return `${toolLabel} · ${LocalEditorShared.toTransformMouseHint(descriptor.tool)}`;
173
- }
174
162
  function createToolbarIconButton(doc, label, icon, tooltip = label, toolbarRole = 'command') {
175
163
  return LocalEditorShared.createButton(doc, label, {
176
164
  icon,
@@ -185,6 +173,42 @@ function setToolbarButtonTooltip(button, tooltip) {
185
173
  button.dataset.editorTooltip = tooltip;
186
174
  button.setAttribute('aria-label', tooltip);
187
175
  }
176
+ export function matchesContextActionShortcut(shortcut, event) {
177
+ if (!shortcut)
178
+ return false;
179
+ const parts = shortcut.toLowerCase().split('+').map(part => part.trim()).filter(Boolean);
180
+ const key = parts[parts.length - 1];
181
+ if (!key || event.key.toLowerCase() !== key)
182
+ return false;
183
+ const needsPrimary = parts.includes('mod');
184
+ if (needsPrimary !== (event.metaKey || event.ctrlKey))
185
+ return false;
186
+ if (parts.includes('shift') !== event.shiftKey)
187
+ return false;
188
+ if (parts.includes('alt') !== event.altKey)
189
+ return false;
190
+ return true;
191
+ }
192
+ function renderContextActionButtons(group, actions, busy) {
193
+ group.replaceChildren();
194
+ const visible = actions
195
+ .filter(action => action.availability.state !== 'hidden')
196
+ .sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
197
+ group.style.display = visible.length > 0 ? 'flex' : 'none';
198
+ for (const action of visible) {
199
+ const icon = isLocalEditorIconName(action.icon) ? action.icon : 'execute';
200
+ const tooltip = action.shortcut ? `${action.label} (${action.shortcut})` : action.label;
201
+ const button = createToolbarIconButton(group.ownerDocument, action.label, icon, tooltip);
202
+ button.dataset.editorContextAction = action.id;
203
+ button.disabled = busy || action.availability.state !== 'enabled';
204
+ if (action.availability.state === 'disabled' && action.availability.reason) {
205
+ setToolbarButtonTooltip(button, action.availability.reason);
206
+ }
207
+ if (action.danger)
208
+ button.style.color = 'var(--fps-editor-danger-strong)';
209
+ group.appendChild(button);
210
+ }
211
+ }
188
212
  function createAgentBridgeStatusTooltip(status) {
189
213
  const label = formatAgentBridgeStatusLabel(status?.status);
190
214
  const details = [
@@ -282,7 +306,8 @@ function createInspectorPropertyInputs(input, source, lockedVectorGroups) {
282
306
  const propertyInput = createInspectorPropertyInput(input, source);
283
307
  if (!propertyInput)
284
308
  return null;
285
- const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(propertyInput.path);
309
+ const vectorAxis = resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath(propertyInput.path);
310
+ const groupPath = vectorAxis?.groupPath ?? null;
286
311
  const forceVectorLock = input.dataset.serializedForceVectorLock === 'true';
287
312
  if (!groupPath || (!forceVectorLock && !lockedVectorGroups.has(groupPath)))
288
313
  return [propertyInput];
@@ -290,9 +315,30 @@ function createInspectorPropertyInputs(input, source, lockedVectorGroups) {
290
315
  return [propertyInput];
291
316
  if (typeof propertyInput.value !== 'number' || !Number.isFinite(propertyInput.value))
292
317
  return [propertyInput];
318
+ if (groupPath !== 'transform.scale' || !vectorAxis)
319
+ return [propertyInput];
320
+ const group = input.closest('[data-editor-inspector-vector-group-path="transform.scale"]');
321
+ const baseValue = {};
322
+ for (const field of group?.querySelectorAll('input[data-serialized-path]') ?? []) {
323
+ const fieldAxis = resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath(field.dataset.serializedPath);
324
+ const serializedBaseValue = field.dataset.serializedVectorBaseValue;
325
+ if (fieldAxis?.groupPath !== groupPath || serializedBaseValue == null)
326
+ continue;
327
+ const numericBaseValue = Number(serializedBaseValue);
328
+ if (Number.isFinite(numericBaseValue))
329
+ baseValue[fieldAxis.axis] = numericBaseValue;
330
+ }
331
+ if (!LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.every(axis => typeof baseValue[axis] === 'number')) {
332
+ return [propertyInput];
333
+ }
334
+ const serializedPrecision = Number(input.dataset.serializedNumberPrecision);
335
+ const scaleValues = resolveLocalEditorBrowserInspectorProportionalScaleValues(baseValue, vectorAxis.axis, propertyInput.value, Number.isInteger(serializedPrecision) ? serializedPrecision : 4);
336
+ if (!scaleValues)
337
+ return [propertyInput];
293
338
  return LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.map(axis => ({
294
339
  ...propertyInput,
295
340
  path: `${groupPath}.${axis}`,
341
+ value: scaleValues[axis],
296
342
  }));
297
343
  }
298
344
  function createInspectorVectorPastePropertyInputs(input, payload) {
@@ -334,23 +380,22 @@ function applyInspectorVectorPasteToDom(input, payload) {
334
380
  function applyInspectorLockedVectorInputToDom(input, propertyInputs) {
335
381
  if (!(input instanceof HTMLInputElement))
336
382
  return;
337
- const first = propertyInputs[0];
338
- if (!first || propertyInputs.length !== LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.length)
383
+ if (propertyInputs.length !== LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.length)
339
384
  return;
340
- if (typeof first.value !== 'number' || !Number.isFinite(first.value))
341
- return;
342
- const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(first.path);
385
+ const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(propertyInputs[0]?.path);
343
386
  if (!groupPath)
344
387
  return;
388
+ const values = new Map(propertyInputs.map(propertyInput => [propertyInput.path, propertyInput.value]));
345
389
  const group = input.closest('[data-editor-inspector-vector-group-path]');
346
390
  const fields = group
347
391
  ? Array.from(group.querySelectorAll('input[data-serialized-path]'))
348
392
  : [input];
349
- const formatted = LocalEditorPanels.formatLocalEditorBrowserInspectorNumberValue(first.value);
350
393
  for (const field of fields) {
351
- if (resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(field.dataset.serializedPath) === groupPath) {
352
- field.value = formatted;
353
- }
394
+ const path = field.dataset.serializedPath;
395
+ const value = path ? values.get(path) : undefined;
396
+ if (typeof value !== 'number' || !Number.isFinite(value))
397
+ continue;
398
+ field.value = String(Object.is(value, -0) ? 0 : value);
354
399
  }
355
400
  }
356
401
  function readRenderingInputValue(input, source) {
@@ -765,6 +810,9 @@ function consumeLocalEditorKeyboardCommittedValue(input) {
765
810
  delete input.dataset.editorKeyboardCommittedValue;
766
811
  return true;
767
812
  }
813
+ function hasLocalEditorUiKeyboardCommitPending(input) {
814
+ return input.dataset.editorUiKeyboardCommitPending === 'true';
815
+ }
768
816
  function isLocalEditorKeyboardCommitEvent(event, input) {
769
817
  if (event.key !== 'Enter' || event.isComposing)
770
818
  return false;
@@ -780,6 +828,7 @@ function commitLocalEditorInspectorInput(input, callbacks, lockedInspectorVector
780
828
  const propertyInputs = createInspectorPropertyInputs(input, 'input', lockedInspectorVectorGroups);
781
829
  if (!propertyInputs)
782
830
  return false;
831
+ delete input.dataset.editorUiKeyboardCommitPending;
783
832
  applyInspectorLockedVectorInputToDom(input, propertyInputs);
784
833
  markLocalEditorKeyboardCommittedValue(input);
785
834
  for (const propertyInput of propertyInputs)
@@ -1176,7 +1225,7 @@ const PREFAB_IMPORT_STATS_METRICS = [
1176
1225
  ];
1177
1226
  function createSceneFrameRateOverlay(doc) {
1178
1227
  const root = doc.createElement('div');
1179
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1228
+ root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');
1180
1229
  root.dataset.editorSceneFrameRateOverlay = 'true';
1181
1230
  root.style.cssText = [
1182
1231
  'position:absolute',
@@ -1266,7 +1315,7 @@ function renderSceneFrameRateOverlay(overlay, stats) {
1266
1315
  }
1267
1316
  function createPerformanceMonitorOverlay(doc) {
1268
1317
  const root = doc.createElement('section');
1269
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1318
+ root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');
1270
1319
  root.dataset.editorPerformanceMonitorOverlay = 'true';
1271
1320
  root.setAttribute('aria-label', '编辑器性能监控');
1272
1321
  root.style.cssText = [
@@ -1394,7 +1443,7 @@ function renderPerformanceMonitorOverlay(overlay, stats, open) {
1394
1443
  }
1395
1444
  function createPrefabImportStatsOverlay(doc) {
1396
1445
  const root = doc.createElement('section');
1397
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1446
+ root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');
1398
1447
  root.dataset.editorPrefabImportStatsOverlay = 'true';
1399
1448
  root.setAttribute('aria-label', 'Prefab import diagnostics');
1400
1449
  root.style.cssText = [
@@ -1505,7 +1554,7 @@ function renderPrefabImportStatsOverlay(overlay, stage) {
1505
1554
  }
1506
1555
  function createPrefabStagePreviewLayout(doc) {
1507
1556
  const root = doc.createElement('section');
1508
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1557
+ root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-prefab-stage-layout');
1509
1558
  root.dataset.editorPrefabStagePreviewLayout = 'true';
1510
1559
  root.setAttribute('aria-label', 'Prefab stage preview layout');
1511
1560
  root.style.cssText = [
@@ -1532,215 +1581,8 @@ function createPrefabStagePreviewLayout(doc) {
1532
1581
  'overflow:hidden',
1533
1582
  'pointer-events:none',
1534
1583
  ].join(';');
1535
- const comparisonColumn = doc.createElement('aside');
1536
- comparisonColumn.dataset.editorPrefabStageComparisonColumn = 'true';
1537
- comparisonColumn.setAttribute('aria-label', 'Prefab comparison previews');
1538
- comparisonColumn.style.cssText = [
1539
- 'position:absolute',
1540
- 'top:0',
1541
- 'right:0',
1542
- 'bottom:0',
1543
- `width:${LOCAL_EDITOR_PREFAB_COMPARISON_COLUMN_WIDTH_PX}px`,
1544
- 'display:none',
1545
- 'flex-direction:column',
1546
- 'box-sizing:border-box',
1547
- 'gap:10px',
1548
- 'padding:10px',
1549
- 'border-left:1px solid color-mix(in srgb, var(--fps-editor-divider) 82%, transparent)',
1550
- 'background:transparent',
1551
- 'box-shadow:none',
1552
- 'pointer-events:auto',
1553
- 'overflow:hidden',
1554
- ].join(';');
1555
- root.append(mainRegion, comparisonColumn);
1556
- return { root, mainRegion, comparisonColumn };
1557
- }
1558
- function createPrefabComparisonPreviewOverlay(doc) {
1559
- const root = doc.createElement('section');
1560
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1561
- root.dataset.editorPrefabComparisonPreviewOverlay = 'true';
1562
- root.setAttribute('aria-label', 'Prefab clone and InstanceMesh comparison previews');
1563
- root.style.cssText = [
1564
- 'display:none',
1565
- 'flex:1 1 auto',
1566
- 'min-height:0',
1567
- 'width:100%',
1568
- 'box-sizing:border-box',
1569
- 'grid-template-rows:minmax(0,1fr) minmax(0,1fr)',
1570
- 'gap:10px',
1571
- 'overflow:hidden',
1572
- 'font-family:var(--fps-editor-font)',
1573
- 'pointer-events:auto',
1574
- ].join(';');
1575
- return { root, cards: new Map() };
1576
- }
1577
- function renderPrefabComparisonPreviewOverlay(overlay, stage) {
1578
- const previews = stage?.comparisonPreviews ?? [];
1579
- if (!stage || previews.length === 0) {
1580
- overlay.root.style.display = 'none';
1581
- return;
1582
- }
1583
- overlay.root.style.display = 'grid';
1584
- const visibleIds = new Set();
1585
- for (const preview of previews) {
1586
- const card = getOrCreatePrefabComparisonPreviewCard(overlay, preview);
1587
- visibleIds.add(preview.id);
1588
- card.root.style.display = 'flex';
1589
- card.title.textContent = preview.label;
1590
- card.statusLabel.textContent = formatLocalEditorPrefabStageComparisonPreviewStatus(preview.status);
1591
- card.statusLabel.style.color = getPrefabComparisonPreviewStatusColor(preview.status);
1592
- card.surface.dataset.editorPrefabComparisonPreviewId = preview.id;
1593
- card.surface.dataset.editorPrefabComparisonPreviewSurface = preview.projectionNodeId;
1594
- card.surface.dataset.editorPrefabComparisonPreviewStatus = preview.status;
1595
- card.surface.style.background = preview.status === 'ready'
1596
- ? 'transparent'
1597
- : 'color-mix(in srgb, var(--fps-editor-field) 74%, transparent)';
1598
- card.surface.textContent = preview.status === 'ready'
1599
- ? ''
1600
- : preview.status === 'loading'
1601
- ? 'Preview loading'
1602
- : 'Preview unavailable';
1603
- card.root.title = [
1604
- `${preview.label}: ${preview.status}`,
1605
- `mode: ${preview.mode}`,
1606
- `projection: ${preview.projectionNodeId}`,
1607
- ].join(' | ');
1608
- }
1609
- for (const [id, card] of overlay.cards) {
1610
- if (!visibleIds.has(id))
1611
- card.root.style.display = 'none';
1612
- }
1613
- }
1614
- function readPrefabComparisonPreviewSurfaces(overlay) {
1615
- if (overlay.root.style.display === 'none')
1616
- return [];
1617
- const surfaces = [];
1618
- for (const [previewId, card] of overlay.cards) {
1619
- if (card.root.style.display === 'none')
1620
- continue;
1621
- const projectionNodeId = card.surface.dataset.editorPrefabComparisonPreviewSurface;
1622
- if (!projectionNodeId)
1623
- continue;
1624
- const rect = card.surface.getBoundingClientRect();
1625
- if (rect.width < 1 || rect.height < 1)
1626
- continue;
1627
- surfaces.push({
1628
- previewId,
1629
- projectionNodeId,
1630
- element: card.surface,
1631
- rect,
1632
- });
1633
- }
1634
- return surfaces;
1635
- }
1636
- function findPrefabComparisonPreviewSurface(target) {
1637
- return target instanceof HTMLElement
1638
- ? target.closest('[data-editor-prefab-comparison-preview-surface]')
1639
- : null;
1640
- }
1641
- function readPrefabComparisonPreviewSurfaceId(surface) {
1642
- return surface.dataset.editorPrefabComparisonPreviewId
1643
- ?? surface.closest('[data-editor-prefab-comparison-preview]')?.dataset.editorPrefabComparisonPreview
1644
- ?? null;
1645
- }
1646
- function isPrefabComparisonPreviewSurfaceReady(surface) {
1647
- return surface.dataset.editorPrefabComparisonPreviewStatus === 'ready';
1648
- }
1649
- function getOrCreatePrefabComparisonPreviewCard(overlay, preview) {
1650
- const existing = overlay.cards.get(preview.id);
1651
- if (existing)
1652
- return existing;
1653
- const doc = overlay.root.ownerDocument;
1654
- const root = doc.createElement('article');
1655
- root.dataset.editorPrefabComparisonPreview = preview.id;
1656
- root.style.cssText = [
1657
- 'display:flex',
1658
- 'flex-direction:column',
1659
- 'min-width:0',
1660
- 'min-height:0',
1661
- 'flex:1 1 0',
1662
- 'box-sizing:border-box',
1663
- 'padding:8px',
1664
- 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',
1665
- 'border-radius:6px',
1666
- 'background:transparent',
1667
- 'box-shadow:none',
1668
- 'color:var(--fps-editor-text)',
1669
- 'pointer-events:auto',
1670
- 'overflow:hidden',
1671
- ].join(';');
1672
- const header = doc.createElement('div');
1673
- header.style.cssText = [
1674
- 'display:flex',
1675
- 'align-items:center',
1676
- 'justify-content:space-between',
1677
- 'gap:8px',
1678
- 'margin-bottom:7px',
1679
- 'padding:6px 8px',
1680
- 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 74%, transparent)',
1681
- 'border-radius:5px',
1682
- 'background:color-mix(in srgb, var(--fps-editor-chrome) 86%, transparent)',
1683
- 'box-shadow:0 6px 14px color-mix(in srgb, #000 18%, transparent)',
1684
- ].join(';');
1685
- const title = doc.createElement('div');
1686
- title.textContent = preview.label;
1687
- title.style.cssText = [
1688
- 'min-width:0',
1689
- 'overflow:hidden',
1690
- 'text-overflow:ellipsis',
1691
- 'white-space:nowrap',
1692
- 'color:var(--fps-editor-text-strong)',
1693
- 'font-size:12px',
1694
- 'line-height:1.2',
1695
- 'font-weight:900',
1696
- ].join(';');
1697
- const statusLabel = doc.createElement('span');
1698
- statusLabel.textContent = 'UNAVAILABLE';
1699
- statusLabel.style.cssText = [
1700
- 'flex:0 0 auto',
1701
- 'padding:2px 5px',
1702
- 'border:1px solid var(--fps-editor-border-soft)',
1703
- 'border-radius:4px',
1704
- 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',
1705
- 'font-size:9px',
1706
- 'line-height:1',
1707
- 'font-weight:900',
1708
- ].join(';');
1709
- header.append(title, statusLabel);
1710
- const surface = doc.createElement('div');
1711
- surface.style.cssText = [
1712
- 'display:flex',
1713
- 'flex:1 1 auto',
1714
- 'align-items:center',
1715
- 'justify-content:center',
1716
- 'width:100%',
1717
- 'min-height:0',
1718
- 'box-sizing:border-box',
1719
- 'border:1px solid color-mix(in srgb, var(--fps-editor-border-soft) 84%, transparent)',
1720
- 'border-radius:4px',
1721
- 'background:transparent',
1722
- 'overflow:hidden',
1723
- 'color:var(--fps-editor-muted)',
1724
- 'font-size:10px',
1725
- 'font-weight:800',
1726
- 'text-align:center',
1727
- 'touch-action:none',
1728
- 'user-select:none',
1729
- 'cursor:grab',
1730
- ].join(';');
1731
- root.append(header, surface);
1732
- overlay.root.appendChild(root);
1733
- const card = { root, title, statusLabel, surface };
1734
- overlay.cards.set(preview.id, card);
1735
- return card;
1736
- }
1737
- function getPrefabComparisonPreviewStatusColor(status) {
1738
- const tone = resolveLocalEditorPrefabStageComparisonPreviewTone(status);
1739
- return tone === 'success'
1740
- ? 'var(--fps-editor-success)'
1741
- : tone === 'warning'
1742
- ? 'var(--fps-editor-warn)'
1743
- : 'var(--fps-editor-danger-strong)';
1584
+ root.append(mainRegion);
1585
+ return { root, mainRegion };
1744
1586
  }
1745
1587
  function formatPrefabImportStatsStatusLabel(status) {
1746
1588
  return status === 'ready' ? 'READY' : status === 'loading' ? 'LOADING' : 'MISSING';
@@ -2381,8 +2223,22 @@ export function resolveAssetBrowserDoubleClickAction(state, asset) {
2381
2223
  return 'asset.edit-prefab';
2382
2224
  return null;
2383
2225
  }
2384
- function copyTextToClipboard(win, text) {
2385
- void win?.navigator?.clipboard?.writeText?.(text);
2226
+ function copyTextToClipboard(win, text, onResult) {
2227
+ void writeLocalEditorClipboardText(win, text).then(onResult ?? (() => undefined));
2228
+ }
2229
+ function copyEditorStatusText(button, win, text) {
2230
+ const idleLabel = button.getAttribute('aria-label') ?? '复制诊断';
2231
+ copyTextToClipboard(win, text, copied => {
2232
+ const resultLabel = copied ? '已复制' : '复制失败,请检查浏览器剪贴板权限';
2233
+ button.dataset.editorStatusCopyResult = copied ? 'success' : 'error';
2234
+ button.title = resultLabel;
2235
+ button.setAttribute('aria-label', resultLabel);
2236
+ win?.setTimeout(() => {
2237
+ delete button.dataset.editorStatusCopyResult;
2238
+ button.title = idleLabel;
2239
+ button.setAttribute('aria-label', idleLabel);
2240
+ }, 1600);
2241
+ });
2386
2242
  }
2387
2243
  function readInspectorAssetPickerOptions(property) {
2388
2244
  const title = readControlOptionString(property, 'pickerTitle') || property.label;
@@ -2538,6 +2394,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2538
2394
  const root = options.root ?? doc.body;
2539
2395
  const callbacks = options.callbacks ?? {};
2540
2396
  const localTestActionsEnabled = options.localTestActions === true;
2397
+ const gameModeEntryVisible = options.gameModeEntryVisible !== false;
2541
2398
  ensureLocalEditorTheme(doc);
2542
2399
  let activeTheme = normalizeLocalEditorThemeName(options.theme);
2543
2400
  const inputRouter = createLocalEditorWorkbenchInputRouter(doc, {
@@ -2561,34 +2418,19 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2561
2418
  });
2562
2419
  construction.addCleanup('tooltip-controller', () => tooltipController.dispose());
2563
2420
  let currentState = null;
2421
+ let pendingStatusDiagnosticRequest = null;
2564
2422
  let inspectorFilter = '';
2565
2423
  const lockedInspectorVectorGroups = new Set();
2566
2424
  let assetBrowserTab = 'all';
2567
- const workbenchLayout = createDefaultLocalEditorWorkbenchLayout();
2425
+ const hierarchySurface = options.hierarchy?.surface;
2426
+ if (!hierarchySurface)
2427
+ throw new Error('Hierarchy surface is required by the Local Editor workbench.');
2428
+ const hierarchyKernel = options.hierarchy?.kernel ?? hierarchySurface.createKernel();
2429
+ const workbenchLayout = createDefaultLocalEditorWorkbenchLayout(hierarchySurface);
2568
2430
  const panelRegistry = createLocalEditorPanelRegistry(workbenchLayout);
2569
2431
  const hostChrome = doc.createElement('div');
2570
2432
  hostChrome.dataset.editorWorkbenchRegion = 'top-bar';
2571
- hostChrome.className = LOCAL_EDITOR_THEME_CLASS;
2572
- hostChrome.style.cssText = [
2573
- 'position:fixed',
2574
- 'top:12px',
2575
- 'left:50%',
2576
- 'transform:translateX(-50%)',
2577
- 'z-index:2147483640',
2578
- 'display:none',
2579
- 'align-items:center',
2580
- 'gap:8px',
2581
- 'height:34px',
2582
- 'padding:0 8px',
2583
- 'border:1px solid var(--fps-editor-border)',
2584
- 'border-radius:3px',
2585
- 'background:var(--fps-editor-chrome)',
2586
- 'box-shadow:var(--fps-editor-shadow-panel)',
2587
- 'font-family:var(--fps-editor-font)',
2588
- 'color:var(--fps-editor-text)',
2589
- 'font-size:12px',
2590
- 'pointer-events:auto',
2591
- ].join(';');
2433
+ hostChrome.className = `${LOCAL_EDITOR_THEME_CLASS} fps-editor-ui-host-chrome`;
2592
2434
  const hostModeLabel = doc.createElement('span');
2593
2435
  hostModeLabel.textContent = '本地宿主 · 游戏模式';
2594
2436
  hostModeLabel.style.cssText = [
@@ -2624,7 +2466,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2624
2466
  const localTestButton = createToolbarIconButton(doc, '本地测试', 'execute', '打开本地测试操作');
2625
2467
  localTestButton.dataset.editorLocalTestToggle = 'true';
2626
2468
  const localTestMenu = doc.createElement('div');
2627
- localTestMenu.classList.add(LOCAL_EDITOR_THEME_CLASS);
2469
+ localTestMenu.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2628
2470
  localTestMenu.dataset.editorLocalTestMenu = 'true';
2629
2471
  localTestMenu.style.cssText = [
2630
2472
  'position:fixed',
@@ -2646,6 +2488,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2646
2488
  localTestMenu.appendChild(button);
2647
2489
  }
2648
2490
  const localTestGroup = doc.createElement('div');
2491
+ localTestGroup.className = 'fps-editor-ui-toolbar-group';
2649
2492
  localTestGroup.style.cssText = [
2650
2493
  `display:${localTestActionsEnabled ? 'flex' : 'none'}`,
2651
2494
  'align-items:center',
@@ -2657,7 +2500,6 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2657
2500
  let helpOpen = false;
2658
2501
  let editorStatusCenterOpen = false;
2659
2502
  let performanceMonitorOpen = false;
2660
- let prefabComparisonPreviewOpen = true;
2661
2503
  let assetPreviewOpen = false;
2662
2504
  let previewedAsset = null;
2663
2505
  let assetPreviewMode = 'preview';
@@ -2665,14 +2507,14 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2665
2507
  let assetPickerFilter = '';
2666
2508
  let assetPickerInput = null;
2667
2509
  let assetPickerProperty = null;
2668
- let prefabComparisonPreviewDrag = null;
2510
+ let hierarchyOperationInputRequest = null;
2669
2511
  let prefabStageMainWorkbenchLayoutSnapshot = null;
2670
- const editorStatusButton = createToolbarIconButton(doc, '编辑器状态', 'status', '编辑器状态');
2512
+ const editorStatusButton = createToolbarIconButton(doc, '验证中心', 'status', '编辑器状态与验证中心');
2671
2513
  editorStatusButton.dataset.editorStatusButton = 'true';
2672
2514
  editorStatusButton.dataset.editorStatusToggle = 'true';
2673
2515
  editorStatusButton.setAttribute('aria-expanded', 'false');
2674
2516
  const editorStatusCenter = doc.createElement('div');
2675
- editorStatusCenter.classList.add(LOCAL_EDITOR_THEME_CLASS);
2517
+ editorStatusCenter.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover', 'fps-editor-ui-status-center');
2676
2518
  editorStatusCenter.dataset.editorStatusCenter = 'true';
2677
2519
  editorStatusCenter.style.cssText = [
2678
2520
  'position:fixed',
@@ -2691,19 +2533,29 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2691
2533
  'pointer-events:auto',
2692
2534
  ].join(';');
2693
2535
  const editorStatusCenterHeader = doc.createElement('div');
2694
- editorStatusCenterHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';
2536
+ editorStatusCenterHeader.className = 'fps-editor-ui-surface-header';
2695
2537
  const editorStatusCenterTitle = doc.createElement('div');
2696
- editorStatusCenterTitle.textContent = '编辑器状态';
2538
+ editorStatusCenterTitle.className = 'fps-editor-ui-surface-title';
2539
+ editorStatusCenterTitle.textContent = '验证中心';
2697
2540
  editorStatusCenterTitle.style.cssText = 'font-size:13px;font-weight:900;color:var(--fps-editor-text-strong)';
2541
+ const editorStatusCenterActions = doc.createElement('div');
2542
+ editorStatusCenterActions.className = 'fps-editor-ui-surface-actions';
2698
2543
  const editorStatusCopyAllButton = LocalEditorShared.createButton(doc, '复制全部', { icon: 'copy' });
2699
2544
  editorStatusCopyAllButton.dataset.editorStatusCopyAll = 'true';
2700
2545
  editorStatusCopyAllButton.style.cssText += ';min-height:26px;padding:3px 8px;font-size:11px';
2546
+ const editorStatusCloseButton = createToolbarIconButton(doc, '关闭', 'discard', '关闭验证中心');
2547
+ editorStatusCloseButton.dataset.editorStatusClose = 'true';
2548
+ editorStatusCloseButton.style.minWidth = '28px';
2549
+ editorStatusCenterActions.appendChild(editorStatusCopyAllButton);
2550
+ editorStatusCenterActions.appendChild(editorStatusCloseButton);
2701
2551
  editorStatusCenterHeader.appendChild(editorStatusCenterTitle);
2702
- editorStatusCenterHeader.appendChild(editorStatusCopyAllButton);
2552
+ editorStatusCenterHeader.appendChild(editorStatusCenterActions);
2703
2553
  const editorStatusCenterSummary = doc.createElement('div');
2554
+ editorStatusCenterSummary.className = 'fps-editor-ui-status-summary';
2704
2555
  editorStatusCenterSummary.dataset.editorStatusSummary = 'true';
2705
2556
  editorStatusCenterSummary.style.cssText = 'font-size:11px;line-height:1.45;color:var(--fps-editor-muted-strong)';
2706
2557
  const editorStatusCenterList = doc.createElement('div');
2558
+ editorStatusCenterList.className = 'fps-editor-ui-status-list';
2707
2559
  editorStatusCenterList.dataset.editorStatusList = 'true';
2708
2560
  editorStatusCenterList.style.cssText = 'display:flex;flex-direction:column;gap:7px;overflow:auto;min-height:0';
2709
2561
  editorStatusCenter.appendChild(editorStatusCenterHeader);
@@ -2713,6 +2565,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2713
2565
  agentBridgeStatusButton.dataset.editorAgentBridgeStatusButton = 'true';
2714
2566
  agentBridgeStatusButton.style.cursor = 'help';
2715
2567
  const workbench = createLocalEditorWorkbench(doc);
2568
+ const editorUiLayerHost = createEditorUiLayerHost(doc, workbench.root);
2569
+ construction.addCleanup('editor-ui-layer-host', () => editorUiLayerHost.dispose());
2716
2570
  const leftDockTabs = doc.createElement('div');
2717
2571
  const hierarchyPanel = createWorkbenchPanelContent(doc);
2718
2572
  const assetPanel = workbench.bottomDock;
@@ -2730,10 +2584,48 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2730
2584
  workbench.rightDock.appendChild(pluginsPanel);
2731
2585
  construction.appendRootChild(workbench.root);
2732
2586
  tooltipSurfaces.add(workbench.root);
2587
+ const disposeRightDockFormalSurfaces = () => {
2588
+ disposeLocalEditorFormalSurfaces([
2589
+ () => LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel),
2590
+ () => LocalEditorPanels.disposeInspectorPanelUi(renderingPanel),
2591
+ ]);
2592
+ };
2593
+ const rightDockFormalSurfaceVisibility = createLocalEditorFormalSurfaceVisibilityController({
2594
+ disposeHidden() {
2595
+ disposeRightDockFormalSurfaces();
2596
+ },
2597
+ rehydrateVisible() {
2598
+ disposeRightDockFormalSurfaces();
2599
+ if (currentState?.mode !== 'editor' || currentState.prefabStage)
2600
+ return;
2601
+ const activeRightTab = panelRegistry.getRightDockTab();
2602
+ if (activeRightTab === 'inspector') {
2603
+ LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {
2604
+ ...options.inspector,
2605
+ layerHost: editorUiLayerHost,
2606
+ lockedVectorGroups: lockedInspectorVectorGroups,
2607
+ });
2608
+ }
2609
+ else if (activeRightTab === 'rendering') {
2610
+ LocalEditorPanels.renderRenderingPanel(doc, renderingPanel, currentState, { layerHost: editorUiLayerHost });
2611
+ }
2612
+ },
2613
+ });
2733
2614
  const workbenchLayoutController = createLocalEditorWorkbenchLayoutController(doc, workbench, {
2734
- onAfterApply(layout) {
2615
+ onBeforeApply(_layout, dockDisplay) {
2616
+ if (currentState?.mode === 'editor' && currentState.prefabStage)
2617
+ return;
2618
+ if (dockDisplay.rightDockVisible) {
2619
+ rightDockFormalSurfaceVisibility.apply(true);
2620
+ }
2621
+ },
2622
+ onAfterApply(layout, dockDisplay) {
2735
2623
  if (currentState?.mode === 'editor' && currentState.prefabStage) {
2736
2624
  applyPrefabStageWorkbenchLayoutOverride(layout);
2625
+ return;
2626
+ }
2627
+ if (!dockDisplay.rightDockVisible) {
2628
+ rightDockFormalSurfaceVisibility.apply(false);
2737
2629
  }
2738
2630
  },
2739
2631
  });
@@ -2748,6 +2640,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2748
2640
  let lastRenderedSelectedAssetId;
2749
2641
  const sceneToolOverlay = createSceneHeaderToolbar(doc);
2750
2642
  const sceneTitle = doc.createElement('div');
2643
+ sceneTitle.className = 'fps-editor-ui-surface-title';
2751
2644
  sceneTitle.textContent = 'Preview';
2752
2645
  sceneTitle.style.cssText = [
2753
2646
  'height:100%',
@@ -2762,8 +2655,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2762
2655
  'white-space:nowrap',
2763
2656
  ].join(';');
2764
2657
  const sceneQuickActions = doc.createElement('div');
2658
+ sceneQuickActions.className = 'fps-editor-ui-toolbar-group';
2659
+ sceneQuickActions.dataset.editorUiFirst = 'true';
2765
2660
  sceneQuickActions.style.cssText = 'display:flex;align-items:center;gap:4px';
2766
2661
  const sceneUtilityActions = doc.createElement('div');
2662
+ sceneUtilityActions.className = 'fps-editor-ui-toolbar-group';
2767
2663
  sceneUtilityActions.style.cssText = [
2768
2664
  'display:flex',
2769
2665
  'align-items:center',
@@ -2772,6 +2668,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2772
2668
  'border-left:1px solid var(--fps-editor-divider)',
2773
2669
  ].join(';');
2774
2670
  const toolGroup = doc.createElement('div');
2671
+ toolGroup.className = 'fps-editor-ui-toolbar-group';
2775
2672
  toolGroup.style.cssText = [
2776
2673
  'display:flex',
2777
2674
  'align-items:center',
@@ -2780,21 +2677,40 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2780
2677
  'border-left:1px solid var(--fps-editor-divider)',
2781
2678
  ].join(';');
2782
2679
  const toolButtons = new Map();
2783
- const transformToolDescriptors = Object.values(DEFAULT_EDITOR_TRANSFORM_TOOL_DESCRIPTORS);
2784
- for (const descriptor of transformToolDescriptors) {
2785
- const tooltip = createTransformToolTooltip(descriptor);
2786
- const button = LocalEditorShared.createButton(doc, descriptor.label, {
2787
- icon: TRANSFORM_TOOL_ICONS[descriptor.tool],
2788
- labelMode: 'icon-only',
2789
- variant: 'toolbar-icon',
2790
- tooltip,
2791
- ariaLabel: tooltip,
2792
- });
2793
- button.dataset.transformTool = descriptor.tool;
2794
- toolButtons.set(descriptor.tool, button);
2795
- toolGroup.appendChild(button);
2796
- }
2680
+ const synchronizeToolButtons = (presentations) => {
2681
+ const primaryTools = presentations.filter(tool => tool.kind === 'primary');
2682
+ const nextIds = new Set(primaryTools.map(tool => tool.id));
2683
+ for (const [toolId, button] of toolButtons) {
2684
+ if (nextIds.has(toolId))
2685
+ continue;
2686
+ button.remove();
2687
+ toolButtons.delete(toolId);
2688
+ }
2689
+ for (const tool of primaryTools) {
2690
+ let button = toolButtons.get(tool.id);
2691
+ const tooltip = tool.shortcut ? `${tool.label}工具 (${tool.shortcut})` : `${tool.label}工具`;
2692
+ if (!button) {
2693
+ button = LocalEditorShared.createButton(doc, tool.label, {
2694
+ icon: tool.icon && isLocalEditorIconName(tool.icon) ? tool.icon : 'object',
2695
+ labelMode: 'icon-only',
2696
+ variant: 'toolbar-icon',
2697
+ tooltip,
2698
+ ariaLabel: tooltip,
2699
+ });
2700
+ button.dataset.editorToolId = tool.id;
2701
+ toolButtons.set(tool.id, button);
2702
+ }
2703
+ setToolbarButtonTooltip(button, tool.availability.state === 'enabled'
2704
+ ? tooltip
2705
+ : `${tooltip} · ${tool.availability.reason}`);
2706
+ button.style.display = tool.availability.state === 'hidden' ? 'none' : 'inline-flex';
2707
+ button.disabled = tool.availability.state !== 'enabled';
2708
+ LocalEditorShared.applyButtonActiveState(button, tool.active);
2709
+ toolGroup.appendChild(button);
2710
+ }
2711
+ };
2797
2712
  const spaceGroup = doc.createElement('div');
2713
+ spaceGroup.className = 'fps-editor-ui-toolbar-group';
2798
2714
  spaceGroup.style.cssText = [
2799
2715
  'display:flex',
2800
2716
  'align-items:center',
@@ -2811,6 +2727,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2811
2727
  spaceGroup.appendChild(button);
2812
2728
  }
2813
2729
  const snapGroup = doc.createElement('div');
2730
+ snapGroup.className = 'fps-editor-ui-toolbar-group';
2814
2731
  snapGroup.style.cssText = [
2815
2732
  'display:flex',
2816
2733
  'align-items:center',
@@ -2821,7 +2738,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2821
2738
  const snapButton = createToolbarIconButton(doc, '吸附设置', 'snap', '吸附设置', 'settings');
2822
2739
  snapButton.dataset.transformSnapToggle = 'true';
2823
2740
  const snapSettingsPopover = doc.createElement('div');
2824
- snapSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
2741
+ snapSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2825
2742
  snapSettingsPopover.dataset.transformSnapSettingsPopover = 'true';
2826
2743
  snapSettingsPopover.setAttribute('role', 'dialog');
2827
2744
  snapSettingsPopover.setAttribute('aria-label', '吸附设置');
@@ -2903,6 +2820,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2903
2820
  }
2904
2821
  snapGroup.appendChild(snapButton);
2905
2822
  const placementGroup = doc.createElement('div');
2823
+ placementGroup.className = 'fps-editor-ui-toolbar-group';
2906
2824
  placementGroup.style.cssText = [
2907
2825
  'display:flex',
2908
2826
  'align-items:center',
@@ -2913,7 +2831,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2913
2831
  const placementButton = createToolbarIconButton(doc, '放置模式', PLACEMENT_MODE_ICONS.off, '放置模式', 'settings');
2914
2832
  placementButton.dataset.placementModeToggle = 'true';
2915
2833
  const placementSettingsPopover = doc.createElement('div');
2916
- placementSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
2834
+ placementSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2917
2835
  placementSettingsPopover.dataset.placementSettingsPopover = 'true';
2918
2836
  placementSettingsPopover.setAttribute('role', 'dialog');
2919
2837
  placementSettingsPopover.setAttribute('aria-label', '放置模式');
@@ -2945,6 +2863,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2945
2863
  }));
2946
2864
  placementGroup.appendChild(placementButton);
2947
2865
  const actionGroup = doc.createElement('div');
2866
+ actionGroup.className = 'fps-editor-ui-toolbar-group';
2948
2867
  actionGroup.style.cssText = [
2949
2868
  'display:flex',
2950
2869
  'align-items:center',
@@ -2955,7 +2874,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2955
2874
  const transformActionButton = createToolbarIconButton(doc, '对齐与分布', 'arrange', '对齐与分布', 'settings');
2956
2875
  transformActionButton.dataset.transformActionToggle = 'true';
2957
2876
  const transformActionPopover = doc.createElement('div');
2958
- transformActionPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
2877
+ transformActionPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2959
2878
  transformActionPopover.dataset.transformActionPopover = 'true';
2960
2879
  transformActionPopover.setAttribute('role', 'dialog');
2961
2880
  transformActionPopover.setAttribute('aria-label', '对齐与分布');
@@ -3010,6 +2929,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3010
2929
  }
3011
2930
  actionGroup.appendChild(transformActionButton);
3012
2931
  const staticShadowBakeGroup = doc.createElement('div');
2932
+ staticShadowBakeGroup.className = 'fps-editor-ui-toolbar-group';
3013
2933
  staticShadowBakeGroup.style.cssText = [
3014
2934
  'display:none',
3015
2935
  'align-items:center',
@@ -3022,7 +2942,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3022
2942
  staticShadowBakeButton.dataset.editorRenderingAction = STATIC_SHADOW_BAKE_ACTION_ID;
3023
2943
  staticShadowBakeGroup.appendChild(staticShadowBakeButton);
3024
2944
  const staticShadowBakePopover = doc.createElement('div');
3025
- staticShadowBakePopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
2945
+ staticShadowBakePopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
3026
2946
  staticShadowBakePopover.dataset.editorToolbarStaticShadowBakePopover = 'true';
3027
2947
  staticShadowBakePopover.setAttribute('role', 'dialog');
3028
2948
  staticShadowBakePopover.setAttribute('aria-label', '静态阴影烘焙进度');
@@ -3110,23 +3030,22 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3110
3030
  performanceMonitorButton.dataset.performanceMonitorToggle = 'true';
3111
3031
  const gridToggleButton = createToolbarIconButton(doc, '网格', 'grid', '显示 / 隐藏 Scene View 网格');
3112
3032
  gridToggleButton.dataset.editorGridToggle = 'true';
3113
- const prefabComparisonPreviewButton = createToolbarIconButton(doc, '对比预览', 'eye', 'Compare Previews (Shift+P)', 'toggle');
3114
- prefabComparisonPreviewButton.dataset.prefabComparisonPreviewToggle = 'true';
3115
3033
  const sceneHelpButton = createToolbarIconButton(doc, '快捷键', 'help', '快捷键与操作说明');
3116
3034
  sceneQuickActions.appendChild(localTestGroup);
3117
- const prefabStageBackButton = createToolbarIconButton(doc, '返回场景', 'chevron-right', '返回主场景');
3118
- prefabStageBackButton.dataset.editorPrefabStageBack = 'true';
3119
- prefabStageBackButton.style.display = 'none';
3120
- sceneQuickActions.appendChild(prefabStageBackButton);
3035
+ const contextActionGroup = doc.createElement('div');
3036
+ contextActionGroup.className = 'fps-editor-ui-toolbar-group';
3037
+ contextActionGroup.dataset.editorContextActions = 'true';
3038
+ contextActionGroup.style.cssText = 'display:none;align-items:center;gap:4px';
3039
+ sceneQuickActions.appendChild(contextActionGroup);
3121
3040
  sceneQuickActions.appendChild(undoButton);
3122
3041
  sceneQuickActions.appendChild(redoButton);
3123
3042
  sceneQuickActions.appendChild(dirtyBadge);
3124
3043
  sceneUtilityActions.appendChild(performanceMonitorButton);
3125
3044
  sceneUtilityActions.appendChild(gridToggleButton);
3126
- sceneUtilityActions.appendChild(prefabComparisonPreviewButton);
3127
3045
  sceneUtilityActions.appendChild(themeToggleButton);
3128
3046
  sceneUtilityActions.appendChild(sceneHelpButton);
3129
3047
  const cameraPreviewGroup = doc.createElement('div');
3048
+ cameraPreviewGroup.className = 'fps-editor-ui-toolbar-group';
3130
3049
  cameraPreviewGroup.style.cssText = [
3131
3050
  'display:flex',
3132
3051
  'align-items:center',
@@ -3138,6 +3057,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3138
3057
  sceneCameraButton.dataset.sceneCameraPreviewToggle = 'true';
3139
3058
  cameraPreviewGroup.appendChild(sceneCameraButton);
3140
3059
  const viewportToolsGroup = doc.createElement('div');
3060
+ viewportToolsGroup.className = 'fps-editor-ui-toolbar-group';
3141
3061
  viewportToolsGroup.style.cssText = [
3142
3062
  'display:flex',
3143
3063
  'align-items:center',
@@ -3158,6 +3078,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3158
3078
  const markerVisibilityButton = createToolbarIconButton(doc, '标记视图', 'view-overlay', '隐藏标记与关系线', 'toggle');
3159
3079
  markerVisibilityButton.dataset.viewportMarkerVisibilityToggle = 'true';
3160
3080
  viewportToolsGroup.appendChild(markerVisibilityButton);
3081
+ const showAllPrefabMarkersButton = createToolbarIconButton(doc, '全部 Prefab 标记', 'view-overlay', '显示所有 Prefab 实例的标记', 'toggle');
3082
+ showAllPrefabMarkersButton.dataset.viewportShowAllPrefabMarkersToggle = 'true';
3083
+ viewportToolsGroup.appendChild(showAllPrefabMarkersButton);
3161
3084
  const overlaySettingsButton = createToolbarIconButton(doc, '视口信息层设置', 'view-overlay', '视口信息层设置', 'settings');
3162
3085
  overlaySettingsButton.dataset.viewportOverlaySettingsToggle = 'true';
3163
3086
  viewportToolsGroup.appendChild(overlaySettingsButton);
@@ -3168,7 +3091,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3168
3091
  clearMeasurementButton.dataset.viewportMeasurementClear = 'true';
3169
3092
  viewportToolsGroup.appendChild(clearMeasurementButton);
3170
3093
  const overlaySettingsPopover = doc.createElement('div');
3171
- overlaySettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
3094
+ overlaySettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
3172
3095
  overlaySettingsPopover.dataset.viewportOverlaySettingsPopover = 'true';
3173
3096
  overlaySettingsPopover.setAttribute('role', 'dialog');
3174
3097
  overlaySettingsPopover.setAttribute('aria-label', '视口信息层设置');
@@ -3212,7 +3135,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3212
3135
  toolbarOverflowButton.dataset.editorToolbarOverflowToggle = 'true';
3213
3136
  toolbarOverflowButton.style.display = 'none';
3214
3137
  const toolbarOverflowMenu = doc.createElement('div');
3215
- toolbarOverflowMenu.classList.add(LOCAL_EDITOR_THEME_CLASS);
3138
+ toolbarOverflowMenu.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
3216
3139
  toolbarOverflowMenu.dataset.editorToolbarOverflowMenu = 'true';
3217
3140
  toolbarOverflowMenu.style.cssText = [
3218
3141
  'position:fixed',
@@ -3235,111 +3158,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3235
3158
  const sceneFrameRateOverlay = createSceneFrameRateOverlay(doc);
3236
3159
  const performanceMonitorOverlay = createPerformanceMonitorOverlay(doc);
3237
3160
  const prefabImportStatsOverlay = createPrefabImportStatsOverlay(doc);
3238
- const prefabComparisonPreviewOverlay = createPrefabComparisonPreviewOverlay(doc);
3239
3161
  const prefabStagePreviewLayout = createPrefabStagePreviewLayout(doc);
3240
3162
  prefabImportStatsOverlay.root.style.position = 'absolute';
3241
3163
  prefabImportStatsOverlay.root.style.top = '10px';
3242
3164
  prefabImportStatsOverlay.root.style.right = '14px';
3243
- prefabComparisonPreviewOverlay.root.style.height = '100%';
3244
3165
  prefabStagePreviewLayout.mainRegion.appendChild(prefabImportStatsOverlay.root);
3245
- prefabStagePreviewLayout.comparisonColumn.appendChild(prefabComparisonPreviewOverlay.root);
3246
- const emitPrefabComparisonPreviewInteraction = (input) => {
3247
- if (currentState?.mode !== 'editor' || !currentState.prefabStage)
3248
- return;
3249
- callbacks.onPrefabComparisonPreviewInteraction?.(input);
3250
- };
3251
- const endPrefabComparisonPreviewDrag = (pointerId) => {
3252
- const drag = prefabComparisonPreviewDrag;
3253
- if (!drag || (pointerId != null && drag.pointerId !== pointerId))
3254
- return;
3255
- try {
3256
- if (!drag.surface.hasPointerCapture || drag.surface.hasPointerCapture(drag.pointerId)) {
3257
- drag.surface.releasePointerCapture?.(drag.pointerId);
3258
- }
3259
- }
3260
- catch {
3261
- // Pointer capture may already be released by the browser when this cleanup runs.
3262
- }
3263
- drag.surface.style.cursor = 'grab';
3264
- prefabComparisonPreviewDrag = null;
3265
- };
3266
- const onPrefabComparisonPreviewPointerDown = (event) => {
3267
- if (event.button !== 0 || currentState?.mode !== 'editor' || !currentState.prefabStage)
3268
- return;
3269
- const surface = findPrefabComparisonPreviewSurface(event.target);
3270
- if (!surface || !isPrefabComparisonPreviewSurfaceReady(surface))
3271
- return;
3272
- const previewId = readPrefabComparisonPreviewSurfaceId(surface);
3273
- if (!previewId)
3274
- return;
3275
- event.preventDefault();
3276
- event.stopPropagation();
3277
- endPrefabComparisonPreviewDrag();
3278
- try {
3279
- surface.setPointerCapture?.(event.pointerId);
3280
- }
3281
- catch {
3282
- // Pointer capture is an input nicety; drag state still works through the overlay listener.
3283
- }
3284
- surface.style.cursor = 'grabbing';
3285
- prefabComparisonPreviewDrag = {
3286
- pointerId: event.pointerId,
3287
- previewId,
3288
- surface,
3289
- lastClientX: event.clientX,
3290
- lastClientY: event.clientY,
3291
- };
3292
- };
3293
- const onPrefabComparisonPreviewPointerMove = (event) => {
3294
- const drag = prefabComparisonPreviewDrag;
3295
- if (!drag || drag.pointerId !== event.pointerId)
3296
- return;
3297
- event.preventDefault();
3298
- event.stopPropagation();
3299
- const deltaX = event.clientX - drag.lastClientX;
3300
- const deltaY = event.clientY - drag.lastClientY;
3301
- drag.lastClientX = event.clientX;
3302
- drag.lastClientY = event.clientY;
3303
- if (Math.abs(deltaX) < 0.001 && Math.abs(deltaY) < 0.001)
3304
- return;
3305
- emitPrefabComparisonPreviewInteraction({
3306
- kind: 'orbit',
3307
- previewId: drag.previewId,
3308
- deltaX,
3309
- deltaY,
3310
- });
3311
- };
3312
- const onPrefabComparisonPreviewPointerEnd = (event) => {
3313
- const drag = prefabComparisonPreviewDrag;
3314
- if (!drag || drag.pointerId !== event.pointerId)
3315
- return;
3316
- event.preventDefault();
3317
- event.stopPropagation();
3318
- endPrefabComparisonPreviewDrag(event.pointerId);
3319
- };
3320
- const onPrefabComparisonPreviewWheel = (event) => {
3321
- if (currentState?.mode !== 'editor' || !currentState.prefabStage)
3322
- return;
3323
- const surface = findPrefabComparisonPreviewSurface(event.target);
3324
- if (!surface || !isPrefabComparisonPreviewSurfaceReady(surface))
3325
- return;
3326
- const previewId = readPrefabComparisonPreviewSurfaceId(surface);
3327
- if (!previewId)
3328
- return;
3329
- event.preventDefault();
3330
- event.stopPropagation();
3331
- emitPrefabComparisonPreviewInteraction({
3332
- kind: 'zoom',
3333
- previewId,
3334
- deltaY: event.deltaY,
3335
- });
3336
- };
3337
- prefabComparisonPreviewOverlay.root.addEventListener('pointerdown', onPrefabComparisonPreviewPointerDown);
3338
- prefabComparisonPreviewOverlay.root.addEventListener('pointermove', onPrefabComparisonPreviewPointerMove);
3339
- prefabComparisonPreviewOverlay.root.addEventListener('pointerup', onPrefabComparisonPreviewPointerEnd);
3340
- prefabComparisonPreviewOverlay.root.addEventListener('pointercancel', onPrefabComparisonPreviewPointerEnd);
3341
- prefabComparisonPreviewOverlay.root.addEventListener('lostpointercapture', onPrefabComparisonPreviewPointerEnd);
3342
- prefabComparisonPreviewOverlay.root.addEventListener('wheel', onPrefabComparisonPreviewWheel, { passive: false });
3343
3166
  const spatialOverlay = createSpatialOverlay(doc);
3344
3167
  const measurementOverlay = createMeasurementOverlay(doc);
3345
3168
  sceneToolOverlay.appendChild(sceneTitle);
@@ -3397,7 +3220,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3397
3220
  construction.appendRootChild(shortcutHelpPanel);
3398
3221
  tooltipSurfaces.add(shortcutHelpPanel);
3399
3222
  const assetPreviewModal = doc.createElement('div');
3400
- assetPreviewModal.classList.add(LOCAL_EDITOR_THEME_CLASS);
3223
+ assetPreviewModal.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-modal-root', 'fps-editor-ui-asset-preview-modal');
3401
3224
  assetPreviewModal.dataset.editorAssetPreviewModal = 'true';
3402
3225
  assetPreviewModal.dataset.editorWorkbenchRegion = 'modal';
3403
3226
  assetPreviewModal.style.cssText = [
@@ -3414,6 +3237,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3414
3237
  'pointer-events:auto',
3415
3238
  ].join(';');
3416
3239
  const assetPreviewDialog = doc.createElement('div');
3240
+ assetPreviewDialog.className = 'fps-editor-ui-modal';
3417
3241
  assetPreviewDialog.setAttribute('role', 'dialog');
3418
3242
  assetPreviewDialog.setAttribute('aria-modal', 'true');
3419
3243
  assetPreviewDialog.setAttribute('aria-label', '资产预览');
@@ -3431,8 +3255,10 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3431
3255
  'overflow:auto',
3432
3256
  ].join(';');
3433
3257
  const assetPreviewHeader = doc.createElement('div');
3258
+ assetPreviewHeader.className = 'fps-editor-ui-modal-header';
3434
3259
  assetPreviewHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';
3435
3260
  const assetPreviewTitle = doc.createElement('h2');
3261
+ assetPreviewTitle.className = 'fps-editor-ui-modal-title';
3436
3262
  assetPreviewTitle.style.cssText = [
3437
3263
  'min-width:0',
3438
3264
  'margin:0',
@@ -3474,7 +3300,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3474
3300
  construction.appendRootChild(assetPreviewModal);
3475
3301
  tooltipSurfaces.add(assetPreviewModal);
3476
3302
  const assetPickerModal = doc.createElement('div');
3477
- assetPickerModal.classList.add(LOCAL_EDITOR_THEME_CLASS);
3303
+ assetPickerModal.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-modal-root', 'fps-editor-ui-asset-modal');
3478
3304
  assetPickerModal.dataset.editorAssetPickerModal = 'true';
3479
3305
  assetPickerModal.dataset.editorWorkbenchRegion = 'modal';
3480
3306
  assetPickerModal.style.cssText = [
@@ -3491,6 +3317,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3491
3317
  'pointer-events:auto',
3492
3318
  ].join(';');
3493
3319
  const assetPickerDialog = doc.createElement('div');
3320
+ assetPickerDialog.className = 'fps-editor-ui-modal';
3494
3321
  assetPickerDialog.setAttribute('role', 'dialog');
3495
3322
  assetPickerDialog.setAttribute('aria-modal', 'true');
3496
3323
  assetPickerDialog.setAttribute('aria-label', '资产选择');
@@ -3508,8 +3335,10 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3508
3335
  'overflow:hidden',
3509
3336
  ].join(';');
3510
3337
  const assetPickerHeader = doc.createElement('div');
3338
+ assetPickerHeader.className = 'fps-editor-ui-modal-header';
3511
3339
  assetPickerHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';
3512
3340
  const assetPickerTitle = doc.createElement('h2');
3341
+ assetPickerTitle.className = 'fps-editor-ui-modal-title';
3513
3342
  assetPickerTitle.style.cssText = [
3514
3343
  'min-width:0',
3515
3344
  'margin:0',
@@ -3525,6 +3354,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3525
3354
  assetPickerHeader.appendChild(assetPickerTitle);
3526
3355
  assetPickerHeader.appendChild(assetPickerCloseButton);
3527
3356
  const assetPickerSearch = doc.createElement('input');
3357
+ assetPickerSearch.className = 'fps-editor-ui-modal-search';
3528
3358
  assetPickerSearch.type = 'search';
3529
3359
  assetPickerSearch.dataset.editorAssetPickerSearch = 'true';
3530
3360
  assetPickerSearch.placeholder = '搜索资产';
@@ -3539,6 +3369,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3539
3369
  'padding:0 8px',
3540
3370
  ].join(';');
3541
3371
  const assetPickerList = doc.createElement('div');
3372
+ assetPickerList.className = 'fps-editor-ui-modal-grid';
3542
3373
  assetPickerList.style.cssText = [
3543
3374
  'min-height:180px',
3544
3375
  'max-height:min(430px,calc(100vh - 196px))',
@@ -3563,7 +3394,6 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3563
3394
  applyLocalEditorTheme(performanceMonitorOverlay.root, activeTheme);
3564
3395
  applyLocalEditorTheme(prefabStagePreviewLayout.root, activeTheme);
3565
3396
  applyLocalEditorTheme(prefabImportStatsOverlay.root, activeTheme);
3566
- applyLocalEditorTheme(prefabComparisonPreviewOverlay.root, activeTheme);
3567
3397
  applyLocalEditorTheme(shortcutHelpPanel, activeTheme);
3568
3398
  applyLocalEditorTheme(assetPreviewModal, activeTheme);
3569
3399
  applyLocalEditorTheme(assetPickerModal, activeTheme);
@@ -3612,37 +3442,145 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3612
3442
  if (viewModel.diagnostics.length === 0) {
3613
3443
  const empty = doc.createElement('div');
3614
3444
  empty.dataset.editorStatusEmpty = 'true';
3615
- empty.textContent = '没有需要处理的错误或警告。';
3445
+ empty.textContent = '当前没有诊断信息。';
3616
3446
  empty.style.cssText = 'padding:14px 8px;text-align:center;color:var(--fps-editor-muted);font-size:12px';
3617
3447
  editorStatusCenterList.appendChild(empty);
3618
3448
  return;
3619
3449
  }
3450
+ const currentScopeId = state?.prefabStage
3451
+ ? `prefab-stage:${state.prefabStage.assetId}`
3452
+ : 'scene';
3453
+ let previousGroup = '';
3620
3454
  viewModel.entries.forEach(({ diagnostic, copyText }, index) => {
3455
+ const group = `${diagnostic.severity}\u0000${diagnostic.phase ?? 'edit'}\u0000${diagnostic.source}`;
3456
+ if (group !== previousGroup) {
3457
+ const groupHeader = doc.createElement('div');
3458
+ groupHeader.dataset.editorStatusGroup = group;
3459
+ groupHeader.textContent = `${diagnostic.severity === 'error' ? '错误' : diagnostic.severity === 'warning' ? '警告' : '信息'} · ${diagnostic.phase ?? 'edit'} · ${diagnostic.source}`;
3460
+ groupHeader.style.cssText = 'padding:5px 2px 1px;font-size:10px;font-weight:900;color:var(--fps-editor-muted-strong);text-transform:uppercase';
3461
+ editorStatusCenterList.appendChild(groupHeader);
3462
+ previousGroup = group;
3463
+ }
3621
3464
  const item = doc.createElement('div');
3622
3465
  item.dataset.editorStatusDiagnostic = diagnostic.code;
3466
+ const diagnosticBorder = diagnostic.severity === 'error'
3467
+ ? 'var(--fps-editor-danger-border)'
3468
+ : diagnostic.severity === 'warning'
3469
+ ? 'var(--fps-editor-warn-border)'
3470
+ : 'var(--fps-editor-border)';
3471
+ const diagnosticBackground = diagnostic.severity === 'error'
3472
+ ? 'var(--fps-editor-danger-soft)'
3473
+ : diagnostic.severity === 'warning'
3474
+ ? 'var(--fps-editor-warn-soft)'
3475
+ : 'var(--fps-editor-surface-soft)';
3623
3476
  item.style.cssText = [
3624
3477
  'display:grid',
3625
3478
  'grid-template-columns:minmax(0,1fr) auto',
3626
3479
  'gap:8px',
3627
3480
  'padding:8px',
3628
- `border:1px solid ${diagnostic.severity === 'error' ? 'var(--fps-editor-danger-border)' : 'var(--fps-editor-warn-border)'}`,
3481
+ `border:1px solid ${diagnosticBorder}`,
3629
3482
  'border-radius:3px',
3630
- `background:${diagnostic.severity === 'error' ? 'var(--fps-editor-danger-soft)' : 'var(--fps-editor-warn-soft)'}`,
3483
+ `background:${diagnosticBackground}`,
3631
3484
  ].join(';');
3632
3485
  const content = doc.createElement('div');
3633
3486
  content.style.cssText = 'min-width:0;display:flex;flex-direction:column;gap:4px';
3487
+ const locateAction = diagnostic.actions?.find(action => action.kind === 'locate');
3488
+ const locatePlan = resolveLocalEditorStatusDiagnosticLocatePlan(diagnostic, currentScopeId);
3489
+ const locator = locatePlan.locator;
3490
+ const canLocate = locatePlan.canLocate && !!callbacks.onStatusDiagnosticLocate;
3491
+ const locate = () => {
3492
+ const navigationRequest = {
3493
+ settled: false,
3494
+ ...(locator.assetId ? { assetId: locator.assetId } : {}),
3495
+ ...(locator.path ? {
3496
+ path: {
3497
+ value: locator.path,
3498
+ ...(locator.scopeId ? { scopeId: locator.scopeId } : {}),
3499
+ ...(diagnostic.documentRevision != null ? { documentRevision: diagnostic.documentRevision } : {}),
3500
+ ...(diagnostic.projectionRevision != null ? { projectionRevision: diagnostic.projectionRevision } : {}),
3501
+ },
3502
+ } : {}),
3503
+ };
3504
+ pendingStatusDiagnosticRequest = navigationRequest;
3505
+ if (locator.assetId) {
3506
+ assetBrowserTab = 'all';
3507
+ panelRegistry.setBottomDockTab('assets');
3508
+ workbenchLayoutController.setBottomCollapsed(false);
3509
+ callbacks.onAssetFilterChange?.('');
3510
+ }
3511
+ if (locator.path) {
3512
+ inspectorFilter = '';
3513
+ panelRegistry.setRightDockTab('inspector');
3514
+ const layout = workbenchLayoutController.getLayout();
3515
+ if (layout.rightCollapsed) {
3516
+ workbenchLayoutController.setLayout({ ...layout, rightCollapsed: false });
3517
+ }
3518
+ }
3519
+ const result = callbacks.onStatusDiagnosticLocate?.({
3520
+ ...diagnostic,
3521
+ locator,
3522
+ });
3523
+ const settle = (accepted) => {
3524
+ pendingStatusDiagnosticRequest = settleLocalEditorStatusDiagnosticRequest(pendingStatusDiagnosticRequest, navigationRequest, accepted);
3525
+ if (accepted !== false && pendingStatusDiagnosticRequest === navigationRequest && currentState) {
3526
+ revealPendingStatusDiagnosticPath(currentState);
3527
+ revealPendingStatusDiagnosticAsset(currentState);
3528
+ clearCompletedStatusDiagnosticRequest(navigationRequest);
3529
+ }
3530
+ };
3531
+ if (result && typeof result.then === 'function') {
3532
+ void result.then(settle, () => settle(false));
3533
+ }
3534
+ else {
3535
+ settle(result);
3536
+ }
3537
+ };
3538
+ if (canLocate) {
3539
+ content.dataset.editorStatusLocate = locator.objectId
3540
+ ?? locator.rowId
3541
+ ?? locator.prefabNodeId
3542
+ ?? locator.assetId
3543
+ ?? locator.path
3544
+ ?? '';
3545
+ content.setAttribute('role', 'button');
3546
+ content.tabIndex = 0;
3547
+ content.style.cursor = 'pointer';
3548
+ content.addEventListener('click', locate);
3549
+ content.addEventListener('keydown', event => {
3550
+ if (event.key !== 'Enter' && event.key !== ' ')
3551
+ return;
3552
+ event.preventDefault();
3553
+ locate();
3554
+ });
3555
+ }
3634
3556
  const code = doc.createElement('div');
3635
- code.textContent = `${diagnostic.severity === 'error' ? '错误' : '警告'} · ${diagnostic.code}`;
3636
- code.style.cssText = `font-size:11px;font-weight:900;color:${diagnostic.severity === 'error' ? 'var(--fps-editor-danger-strong)' : 'var(--fps-editor-warn)'}`;
3557
+ code.textContent = `${diagnostic.severity === 'error' ? '错误' : diagnostic.severity === 'warning' ? '警告' : '信息'} · ${diagnostic.code}`;
3558
+ code.style.cssText = `font-size:11px;font-weight:900;color:${diagnostic.severity === 'error' ? 'var(--fps-editor-danger-strong)' : diagnostic.severity === 'warning' ? 'var(--fps-editor-warn)' : 'var(--fps-editor-text-strong)'}`;
3637
3559
  const message = doc.createElement('div');
3638
3560
  message.textContent = diagnostic.message;
3639
3561
  message.style.cssText = 'font-size:12px;line-height:1.45;color:var(--fps-editor-text-strong);overflow-wrap:anywhere';
3562
+ const suggestion = doc.createElement('div');
3563
+ suggestion.dataset.editorStatusSuggestion = diagnostic.code;
3564
+ suggestion.textContent = diagnostic.suggestion ? `建议:${diagnostic.suggestion}` : '';
3565
+ suggestion.style.cssText = 'font-size:11px;line-height:1.4;color:var(--fps-editor-muted-strong);overflow-wrap:anywhere';
3566
+ suggestion.style.display = diagnostic.suggestion ? 'block' : 'none';
3640
3567
  const meta = doc.createElement('div');
3641
- const diagnosticLocation = [diagnostic.scopeId, diagnostic.rowId, diagnostic.targetId]
3568
+ const diagnosticLocation = [
3569
+ locator.scopeId,
3570
+ locator.rowId,
3571
+ locator.objectId,
3572
+ locator.prefabAssetId,
3573
+ locator.prefabNodeId,
3574
+ locator.assetId,
3575
+ locator.materialSlotId,
3576
+ locator.path,
3577
+ ]
3642
3578
  .filter(value => value !== undefined && value !== null && value !== '')
3643
3579
  .join(' / ');
3644
3580
  meta.textContent = [
3645
3581
  `来源: ${diagnostic.source}`,
3582
+ diagnostic.producer ? `producer: ${diagnostic.producer}` : '',
3583
+ diagnostic.phase ? `phase: ${diagnostic.phase}` : '',
3646
3584
  diagnosticLocation ? `位置: ${diagnosticLocation}` : '',
3647
3585
  diagnostic.documentRevision != null ? `document revision: ${diagnostic.documentRevision}` : '',
3648
3586
  diagnostic.projectionRevision != null ? `projection revision: ${diagnostic.projectionRevision}` : '',
@@ -3652,15 +3590,33 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3652
3590
  meta.style.display = meta.textContent ? 'block' : 'none';
3653
3591
  content.appendChild(code);
3654
3592
  content.appendChild(message);
3593
+ content.appendChild(suggestion);
3655
3594
  content.appendChild(meta);
3595
+ const actions = doc.createElement('div');
3596
+ actions.style.cssText = 'display:flex;align-items:flex-start;gap:4px';
3597
+ if (locateAction) {
3598
+ const locateButton = doc.createElement('button');
3599
+ locateButton.type = 'button';
3600
+ locateButton.dataset.editorStatusAction = locateAction.id;
3601
+ locateButton.textContent = locateAction.label;
3602
+ locateButton.disabled = !canLocate;
3603
+ locateButton.style.cssText = 'font:inherit;font-size:10px;padding:3px 6px;border:1px solid var(--fps-editor-border);border-radius:3px;background:var(--fps-editor-surface);color:var(--fps-editor-text-strong);cursor:pointer;white-space:nowrap';
3604
+ locateButton.addEventListener('click', event => {
3605
+ event.stopPropagation();
3606
+ if (canLocate)
3607
+ locate();
3608
+ });
3609
+ actions.appendChild(locateButton);
3610
+ }
3656
3611
  const copy = createToolbarIconButton(doc, `复制诊断 ${index + 1}`, 'copy', '复制该诊断');
3657
3612
  copy.dataset.editorStatusCopy = String(index);
3658
3613
  copy.addEventListener('click', event => {
3659
3614
  event.stopPropagation();
3660
- copyTextToClipboard(doc.defaultView, copyText);
3615
+ copyEditorStatusText(copy, doc.defaultView, copyText);
3661
3616
  });
3662
3617
  item.appendChild(content);
3663
- item.appendChild(copy);
3618
+ actions.appendChild(copy);
3619
+ item.appendChild(actions);
3664
3620
  editorStatusCenterList.appendChild(item);
3665
3621
  });
3666
3622
  }
@@ -4137,7 +4093,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4137
4093
  };
4138
4094
  const onEditorStatusCopyAllClick = (event) => {
4139
4095
  event.stopPropagation();
4140
- copyTextToClipboard(doc.defaultView, createLocalEditorStatusCenterViewModel(currentState).copyAllText);
4096
+ copyEditorStatusText(editorStatusCopyAllButton, doc.defaultView, createLocalEditorStatusCenterViewModel(currentState).copyAllText);
4097
+ };
4098
+ const onEditorStatusCloseClick = (event) => {
4099
+ event.stopPropagation();
4100
+ closeEditorStatusCenter();
4141
4101
  };
4142
4102
  const onToolbarOverflowPointerDown = (event) => {
4143
4103
  const target = event.target instanceof HTMLElement ? event.target : null;
@@ -4176,6 +4136,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4176
4136
  localTestButton.addEventListener('click', onLocalTestButtonClick);
4177
4137
  editorStatusButton.addEventListener('click', onEditorStatusButtonClick);
4178
4138
  editorStatusCopyAllButton.addEventListener('click', onEditorStatusCopyAllClick);
4139
+ editorStatusCloseButton.addEventListener('click', onEditorStatusCloseClick);
4179
4140
  doc.addEventListener('pointerdown', onToolbarOverflowPointerDown);
4180
4141
  construction.addCleanup('toolbar-overflow-pointerdown', () => {
4181
4142
  doc.removeEventListener('pointerdown', onToolbarOverflowPointerDown);
@@ -4208,9 +4169,6 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4208
4169
  performanceMonitorButton.addEventListener('click', () => {
4209
4170
  setPerformanceMonitorOpen(!performanceMonitorOpen);
4210
4171
  });
4211
- prefabComparisonPreviewButton.addEventListener('click', () => {
4212
- setPrefabComparisonPreviewOpen(!prefabComparisonPreviewOpen);
4213
- });
4214
4172
  gridToggleButton.addEventListener('click', () => {
4215
4173
  const visible = currentState?.grid?.visible ?? true;
4216
4174
  callbacks.onGridVisibleChange?.(!visible);
@@ -4270,6 +4228,12 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4270
4228
  callbacks.onMarkerViewportVisibilityChange?.(!markersVisible);
4271
4229
  return;
4272
4230
  }
4231
+ const showAllPrefabMarkersToggle = target?.closest('[data-viewport-show-all-prefab-markers-toggle]');
4232
+ if (showAllPrefabMarkersToggle) {
4233
+ const showAllPrefabMarkers = currentState?.viewportTools?.showAllPrefabMarkers ?? false;
4234
+ callbacks.onShowAllPrefabMarkersChange?.(!showAllPrefabMarkers);
4235
+ return;
4236
+ }
4273
4237
  const overlayToggle = target?.closest('[data-viewport-overlay-settings-toggle]');
4274
4238
  if (overlayToggle) {
4275
4239
  event.stopPropagation();
@@ -4307,17 +4271,6 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4307
4271
  if (notify)
4308
4272
  callbacks.onPerformanceMonitorOpenChange?.(performanceMonitorOpen);
4309
4273
  };
4310
- const setPrefabComparisonPreviewOpen = (open) => {
4311
- if (prefabComparisonPreviewOpen === open)
4312
- return;
4313
- if (!open)
4314
- endPrefabComparisonPreviewDrag();
4315
- prefabComparisonPreviewOpen = open;
4316
- if (currentState)
4317
- renderPreviewState(currentState);
4318
- LocalEditorShared.applyButtonActiveState(prefabComparisonPreviewButton, prefabComparisonPreviewOpen);
4319
- callbacks.onPrefabComparisonPreviewLayoutChange?.();
4320
- };
4321
4274
  const openAssetPreviewModal = (asset) => {
4322
4275
  if (!asset.preview)
4323
4276
  return;
@@ -4369,6 +4322,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4369
4322
  contextMenu.close();
4370
4323
  if (helpOpen)
4371
4324
  setShortcutHelpOpen(false);
4325
+ settleHierarchyOperationInputRequest(null);
4372
4326
  assetPickerInput = input;
4373
4327
  assetPickerProperty = property;
4374
4328
  assetPickerFilter = '';
@@ -4379,12 +4333,40 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4379
4333
  assetPickerSearch.focus({ preventScroll: true });
4380
4334
  assetPickerSearch.select();
4381
4335
  };
4336
+ const requestHierarchyOperationInput = (operation, context) => {
4337
+ if (!operation.inputPresentation || currentState?.mode !== 'editor' || currentState.busy) {
4338
+ return Promise.resolve(null);
4339
+ }
4340
+ contextMenu.close();
4341
+ if (helpOpen)
4342
+ setShortcutHelpOpen(false);
4343
+ assetPickerInput = null;
4344
+ assetPickerProperty = null;
4345
+ settleHierarchyOperationInputRequest(null);
4346
+ assetPickerFilter = '';
4347
+ assetPickerOpen = true;
4348
+ closeAssetPreviewModal();
4349
+ renderAssetPickerModal();
4350
+ syncInputModalOpen();
4351
+ assetPickerSearch.focus({ preventScroll: true });
4352
+ assetPickerSearch.select();
4353
+ return new Promise(resolve => {
4354
+ hierarchyOperationInputRequest = { operation, context, resolve };
4355
+ renderAssetPickerModal();
4356
+ });
4357
+ };
4358
+ function settleHierarchyOperationInputRequest(value) {
4359
+ const request = hierarchyOperationInputRequest;
4360
+ hierarchyOperationInputRequest = null;
4361
+ request?.resolve(value);
4362
+ }
4382
4363
  const closeInspectorAssetPicker = () => {
4383
4364
  if (!assetPickerOpen)
4384
4365
  return;
4385
4366
  assetPickerOpen = false;
4386
4367
  assetPickerInput = null;
4387
4368
  assetPickerProperty = null;
4369
+ settleHierarchyOperationInputRequest(null);
4388
4370
  assetPickerFilter = '';
4389
4371
  renderAssetPickerModal();
4390
4372
  syncInputModalOpen();
@@ -4784,15 +4766,33 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4784
4766
  });
4785
4767
  }
4786
4768
  function renderAssetPickerModal() {
4787
- if (!assetPickerOpen || !assetPickerProperty || !assetPickerInput) {
4769
+ if (!assetPickerOpen || (!hierarchyOperationInputRequest && (!assetPickerProperty || !assetPickerInput))) {
4788
4770
  assetPickerModal.style.display = 'none';
4771
+ delete assetPickerModal.dataset.editorAssetPickerMode;
4789
4772
  assetPickerTitle.textContent = '';
4790
4773
  assetPickerSearch.value = '';
4791
4774
  while (assetPickerList.firstChild)
4792
4775
  assetPickerList.removeChild(assetPickerList.firstChild);
4793
4776
  return;
4794
4777
  }
4795
- const options = readInspectorAssetPickerOptions(assetPickerProperty);
4778
+ const operationInput = hierarchyOperationInputRequest?.operation.inputPresentation;
4779
+ const options = operationInput
4780
+ ? {
4781
+ title: operationInput.title,
4782
+ candidates: (currentState?.assets ?? [])
4783
+ .filter(asset => (operationInput.assetKinds.includes(resolveLocalEditorBrowserAssetKind(asset))
4784
+ && asset.placeable !== false
4785
+ && asset.disabled !== true))
4786
+ .map(asset => ({
4787
+ label: asset.label,
4788
+ value: asset.assetId ?? asset.id,
4789
+ meta: asset.meta ?? asset.assetId ?? asset.id,
4790
+ kind: asset.kind ?? resolveLocalEditorBrowserAssetKind(asset),
4791
+ preview: asset.preview,
4792
+ })),
4793
+ }
4794
+ : readInspectorAssetPickerOptions(assetPickerProperty);
4795
+ assetPickerModal.dataset.editorAssetPickerMode = operationInput ? 'hierarchy-operation' : 'inspector';
4796
4796
  assetPickerTitle.textContent = options.title;
4797
4797
  assetPickerSearch.value = assetPickerFilter;
4798
4798
  while (assetPickerList.firstChild)
@@ -4811,7 +4811,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4811
4811
  assetPickerList.appendChild(empty);
4812
4812
  }
4813
4813
  for (const candidate of candidates) {
4814
- assetPickerList.appendChild(createInspectorAssetPickerCandidateButton(candidate, assetPickerInput.value));
4814
+ assetPickerList.appendChild(createInspectorAssetPickerCandidateButton(candidate, assetPickerInput?.value ?? ''));
4815
4815
  }
4816
4816
  assetPickerModal.style.display = 'flex';
4817
4817
  }
@@ -4855,8 +4855,13 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4855
4855
  sceneHelpButton.addEventListener('click', () => {
4856
4856
  setShortcutHelpOpen(!helpOpen);
4857
4857
  });
4858
- prefabStageBackButton.addEventListener('click', () => {
4859
- callbacks.onExitPrefabStage?.();
4858
+ contextActionGroup.addEventListener('click', (event) => {
4859
+ const button = event.target instanceof Element
4860
+ ? event.target.closest('[data-editor-context-action]')
4861
+ : null;
4862
+ if (!button || button.disabled)
4863
+ return;
4864
+ callbacks.onContextAction?.(button.dataset.editorContextAction ?? '');
4860
4865
  });
4861
4866
  themeToggleButton.addEventListener('click', () => {
4862
4867
  setActiveTheme(activeTheme === 'dark' ? 'light' : 'dark');
@@ -4910,6 +4915,18 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4910
4915
  return;
4911
4916
  }
4912
4917
  const candidateButton = target?.closest('[data-editor-asset-picker-candidate]');
4918
+ if (candidateButton && hierarchyOperationInputRequest?.operation.inputPresentation) {
4919
+ const value = candidateButton.dataset.editorAssetPickerCandidate ?? '';
4920
+ const presentation = hierarchyOperationInputRequest.operation.inputPresentation;
4921
+ const asset = currentState?.assets.find(candidate => (candidate.assetId ?? candidate.id) === value);
4922
+ if (asset)
4923
+ callbacks.onSelectAsset?.(asset.id);
4924
+ settleHierarchyOperationInputRequest(Object.freeze({
4925
+ [presentation.field]: presentation.multiple ? Object.freeze([value]) : value,
4926
+ }));
4927
+ closeInspectorAssetPicker();
4928
+ return;
4929
+ }
4913
4930
  if (candidateButton && assetPickerInput) {
4914
4931
  assetPickerInput.value = candidateButton.dataset.editorAssetPickerCandidate ?? '';
4915
4932
  assetPickerInput.dispatchEvent(new Event('change', { bubbles: true }));
@@ -4925,9 +4942,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4925
4942
  });
4926
4943
  toolGroup.addEventListener('click', (event) => {
4927
4944
  const target = event.target instanceof HTMLElement ? event.target : null;
4928
- const tool = target?.closest('[data-transform-tool]')?.dataset.transformTool;
4929
- if (tool)
4930
- callbacks.onTransformToolChange?.(tool);
4945
+ const toolId = target?.closest('[data-editor-tool-id]')?.dataset.editorToolId;
4946
+ if (toolId)
4947
+ callbacks.onToolActivate?.(toolId);
4931
4948
  });
4932
4949
  spaceGroup.addEventListener('click', (event) => {
4933
4950
  const target = event.target instanceof HTMLElement ? event.target : null;
@@ -5014,8 +5031,47 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5014
5031
  if (button.dataset.editorAssetId !== assetId)
5015
5032
  continue;
5016
5033
  assetBrowserViewportReveal.revealElement(button);
5034
+ return true;
5035
+ }
5036
+ return false;
5037
+ }
5038
+ function revealPendingStatusDiagnosticPath(state) {
5039
+ const request = pendingStatusDiagnosticRequest;
5040
+ const path = request?.path;
5041
+ if (!request?.settled || !path || panelRegistry.getRightDockTab() !== 'inspector')
5042
+ return;
5043
+ const hierarchySnapshot = hierarchyKernel.getViewModel()?.snapshot;
5044
+ const current = (!path.scopeId || path.scopeId === hierarchySnapshot?.scopeKey)
5045
+ && (path.documentRevision == null || path.documentRevision === state.documentRevision)
5046
+ && (path.projectionRevision == null || path.projectionRevision === hierarchySnapshot?.revision);
5047
+ const target = [...inspectorPanel.querySelectorAll('[data-serialized-path]')]
5048
+ .find(element => current && element.dataset.serializedPath === path.value);
5049
+ delete request.path;
5050
+ if (!target) {
5051
+ clearCompletedStatusDiagnosticRequest(request);
5017
5052
  return;
5018
5053
  }
5054
+ target.closest('details')?.setAttribute('open', '');
5055
+ target.scrollIntoView({ block: 'center', inline: 'nearest' });
5056
+ const focusTarget = target.matches('input,select,textarea,button,[tabindex]')
5057
+ ? target
5058
+ : target.querySelector('input,select,textarea,button,[tabindex]');
5059
+ focusTarget?.focus({ preventScroll: true });
5060
+ clearCompletedStatusDiagnosticRequest(request);
5061
+ }
5062
+ function revealPendingStatusDiagnosticAsset(state) {
5063
+ const request = pendingStatusDiagnosticRequest;
5064
+ if (!request?.settled || !request.assetId || panelRegistry.getBottomDockTab() !== 'assets')
5065
+ return;
5066
+ const revealId = state.selectedAssetId ?? request.assetId;
5067
+ revealSelectedAssetBrowserItem(revealId);
5068
+ delete request.assetId;
5069
+ clearCompletedStatusDiagnosticRequest(request);
5070
+ }
5071
+ function clearCompletedStatusDiagnosticRequest(request) {
5072
+ if (pendingStatusDiagnosticRequest === request && !request.path && !request.assetId) {
5073
+ pendingStatusDiagnosticRequest = null;
5074
+ }
5019
5075
  }
5020
5076
  function createCurrentAssetBrowserActionContext() {
5021
5077
  const stage = currentState?.prefabStage;
@@ -5055,6 +5111,18 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5055
5111
  });
5056
5112
  return;
5057
5113
  }
5114
+ const addToPrefabButton = target?.closest('[data-editor-asset-add-to-prefab]');
5115
+ const addToPrefabAssetId = addToPrefabButton?.dataset.editorAssetAddToPrefab;
5116
+ if (addToPrefabAssetId && currentState) {
5117
+ const asset = currentState.assets.find(candidate => candidate.id === addToPrefabAssetId);
5118
+ if (asset && LocalEditorPanels.shouldShowPrefabModelAddAction(currentState, asset)) {
5119
+ event.preventDefault();
5120
+ event.stopPropagation();
5121
+ callbacks.onSelectAsset?.(asset.id);
5122
+ callbacks.onAssetAction?.(createAssetBrowserActionInput('asset.add-to-current-prefab', asset, createCurrentAssetBrowserActionContext()));
5123
+ }
5124
+ return;
5125
+ }
5058
5126
  const assetButton = target?.closest('[data-editor-asset-id]');
5059
5127
  if (assetButton?.dataset.editorAssetId) {
5060
5128
  suppressAssetBrowserRevealIfVisible(assetButton);
@@ -5154,11 +5222,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5154
5222
  const hierarchyController = createLocalEditorHierarchyController({
5155
5223
  doc,
5156
5224
  panel: hierarchyPanel,
5157
- callbacks,
5158
5225
  inputRouter,
5159
5226
  contextMenu,
5227
+ kernel: hierarchyKernel,
5228
+ onOperationResult: options.hierarchy?.onOperationResult,
5160
5229
  getState: () => currentState,
5161
- contextActions: options.hierarchy?.contextActions,
5162
5230
  requestRender: () => {
5163
5231
  if (currentState)
5164
5232
  render(currentState);
@@ -5169,6 +5237,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5169
5237
  if (assetPreviewOpen)
5170
5238
  closeAssetPreviewModal();
5171
5239
  },
5240
+ requestOperationInput: requestHierarchyOperationInput,
5172
5241
  });
5173
5242
  construction.addCleanup('hierarchy-controller', () => hierarchyController.dispose());
5174
5243
  assetPanel.addEventListener('input', (event) => {
@@ -5294,14 +5363,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5294
5363
  const materialSlotSelectTarget = target?.closest('[data-editor-inspector-material-slot-select]');
5295
5364
  const materialSlotSelectionId = materialSlotSelectTarget?.dataset.editorInspectorMaterialSlotSelect;
5296
5365
  if (materialSlotSelectionId) {
5297
- const precondition = createCurrentHierarchyCommandPrecondition();
5298
- if (!precondition)
5299
- return;
5300
- callbacks.onSelectHierarchyItem?.({
5301
- id: materialSlotSelectionId,
5302
- additive: event.shiftKey && !event.metaKey && !event.ctrlKey,
5303
- toggle: event.metaKey || event.ctrlKey,
5304
- }, precondition);
5366
+ void hierarchyKernel.dispatch({
5367
+ type: 'selection',
5368
+ targetId: materialSlotSelectionId,
5369
+ modifier: event.metaKey || event.ctrlKey ? 'toggle' : event.shiftKey ? 'range' : 'replace',
5370
+ });
5305
5371
  return;
5306
5372
  }
5307
5373
  const copyButton = target?.closest('[data-editor-inspector-asset-copy]');
@@ -5336,6 +5402,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5336
5402
  : null;
5337
5403
  if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId)
5338
5404
  return;
5405
+ if (hasLocalEditorUiKeyboardCommitPending(input))
5406
+ return;
5339
5407
  if (input instanceof HTMLInputElement && (input.type === 'text' || input.type === 'number')) {
5340
5408
  if (readInspectorCommitMode(input) !== 'change')
5341
5409
  return;
@@ -5362,6 +5430,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5362
5430
  const input = event.target instanceof HTMLInputElement ? event.target : null;
5363
5431
  if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId)
5364
5432
  return;
5433
+ if (hasLocalEditorUiKeyboardCommitPending(input))
5434
+ return;
5365
5435
  if (readInspectorCommitMode(input) !== 'blur')
5366
5436
  return;
5367
5437
  if (consumeLocalEditorKeyboardCommittedValue(input))
@@ -5395,6 +5465,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5395
5465
  : null;
5396
5466
  if (!input?.dataset.editorRenderingProperty)
5397
5467
  return;
5468
+ if (hasLocalEditorUiKeyboardCommitPending(input))
5469
+ return;
5398
5470
  if ((input instanceof HTMLInputElement && (input.type === 'text' || input.type === 'number')) || input instanceof HTMLTextAreaElement) {
5399
5471
  if (readRenderingCommitMode(input) !== 'change')
5400
5472
  return;
@@ -5422,6 +5494,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5422
5494
  : null;
5423
5495
  if (!input?.dataset.editorRenderingProperty)
5424
5496
  return;
5497
+ if (hasLocalEditorUiKeyboardCommitPending(input))
5498
+ return;
5425
5499
  if (input instanceof HTMLSelectElement)
5426
5500
  return;
5427
5501
  if (readRenderingCommitMode(input) !== 'blur')
@@ -5499,6 +5573,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5499
5573
  closeInspectorAssetPicker();
5500
5574
  return;
5501
5575
  }
5576
+ if (key === 'escape' && editorStatusCenterOpen) {
5577
+ event.preventDefault();
5578
+ closeEditorStatusCenter();
5579
+ return;
5580
+ }
5502
5581
  if (key === 'escape' && snapSettingsOpen) {
5503
5582
  event.preventDefault();
5504
5583
  closeSnapSettingsPopover();
@@ -5527,17 +5606,13 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5527
5606
  const primaryModifier = event.metaKey || event.ctrlKey;
5528
5607
  const handleDocumentShortcut = inputRouter.shouldHandleDocumentShortcut(event);
5529
5608
  const handleGlobalShortcut = inputRouter.shouldHandleGlobalShortcut(event);
5530
- if (shouldToggleLocalEditorPrefabComparisonShortcut({
5531
- inPrefabStage: currentState.prefabStage != null,
5532
- handleGlobalShortcut,
5533
- key,
5534
- shiftKey: event.shiftKey,
5535
- metaKey: event.metaKey,
5536
- ctrlKey: event.ctrlKey,
5537
- altKey: event.altKey,
5538
- })) {
5609
+ const contextAction = currentState.contextActions?.find(action => (action.availability.state !== 'hidden'
5610
+ && matchesContextActionShortcut(action.shortcut, event)));
5611
+ if (handleDocumentShortcut && contextAction) {
5539
5612
  event.preventDefault();
5540
- setPrefabComparisonPreviewOpen(!prefabComparisonPreviewOpen);
5613
+ if (contextAction.availability.state === 'enabled') {
5614
+ callbacks.onContextAction?.(contextAction.id);
5615
+ }
5541
5616
  return;
5542
5617
  }
5543
5618
  if (handleDocumentShortcut
@@ -5562,33 +5637,17 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5562
5637
  callbacks.onRedo?.();
5563
5638
  return;
5564
5639
  }
5565
- if (shouldLocalEditorPrefabStageBlockHierarchyShortcut({
5566
- inPrefabStage: currentState.prefabStage != null,
5567
- handleGlobalShortcut,
5568
- key,
5569
- metaKey: event.metaKey,
5570
- ctrlKey: event.ctrlKey,
5571
- altKey: event.altKey,
5572
- })) {
5573
- event.preventDefault();
5574
- return;
5575
- }
5576
- if (!currentState.prefabStage && handleGlobalShortcut && hierarchyController.handleEditShortcut(event)) {
5640
+ if (handleGlobalShortcut && hierarchyController.handleEditShortcut(event)) {
5577
5641
  return;
5578
5642
  }
5579
5643
  if (!handleGlobalShortcut || event.metaKey || event.ctrlKey || event.altKey)
5580
5644
  return;
5581
- const toolByKey = {
5582
- q: 'select',
5583
- w: 'move',
5584
- e: 'rotate',
5585
- r: 'scale',
5586
- };
5587
- const tool = toolByKey[key];
5645
+ const tool = currentState.tools?.find(candidate => (candidate.kind === 'primary'
5646
+ && candidate.shortcut?.toLowerCase() === key));
5588
5647
  if (tool) {
5589
5648
  event.preventDefault();
5590
- if (isPreviewToolEnabled(tool))
5591
- callbacks.onTransformToolChange?.(tool);
5649
+ if (tool.availability.state === 'enabled')
5650
+ callbacks.onToolActivate?.(tool.id);
5592
5651
  return;
5593
5652
  }
5594
5653
  if (key === 'f') {
@@ -5617,24 +5676,13 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5617
5676
  : snap.scaleStep;
5618
5677
  return Number.isFinite(value) ? String(value) : '';
5619
5678
  }
5620
- function createCurrentHierarchyCommandPrecondition() {
5621
- if (!currentState)
5622
- return null;
5623
- const documentRevision = currentState.documentRevision ?? 0;
5624
- return {
5625
- scopeId: currentState.prefabStage ? `prefab-stage:${currentState.prefabStage.assetId}` : 'scene',
5626
- documentRevision,
5627
- projectionRevision: currentState.hierarchyProjectionRevision ?? documentRevision,
5628
- };
5629
- }
5630
5679
  function isTransformActionEnabled(action, operationState) {
5631
5680
  return action.startsWith('align-')
5632
5681
  ? operationState.canAlign
5633
5682
  : operationState.canDistribute;
5634
5683
  }
5635
5684
  function getPreviewToolSupport(tool) {
5636
- const inPrefabStage = currentState?.mode === 'editor' && !!currentState.prefabStage;
5637
- return resolveLocalEditorPreviewToolSupport({ inPrefabStage, tool });
5685
+ return resolveLocalEditorPreviewToolSupport({ capabilities: currentState?.capabilities, tool });
5638
5686
  }
5639
5687
  function isPreviewToolVisible(tool) {
5640
5688
  return currentState?.mode === 'editor' && getPreviewToolSupport(tool).support !== 'hidden';
@@ -5675,29 +5723,20 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5675
5723
  };
5676
5724
  }
5677
5725
  function renderPrefabStagePropertiesPanel(stage) {
5678
- inspectorPanel.dataset.editorPanelId = 'prefab-properties';
5726
+ inspectorPanel.dataset.editorPanelId = 'inspector';
5679
5727
  inspectorPanel.style.display = '';
5680
5728
  renderingPanel.style.display = 'none';
5681
- if (stage.inspectorObject) {
5682
- LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, {
5683
- ...currentState,
5684
- selectedIds: stage.inspectorObject.targetIds,
5685
- activeId: stage.inspectorObject.activeId,
5686
- selectionSummary: {
5687
- count: stage.inspectorObject.targetIds.length,
5688
- activeId: stage.inspectorObject.activeId,
5689
- },
5690
- inspectorObject: stage.inspectorObject,
5691
- inspectorMultiObject: null,
5692
- }, inspectorFilter, {
5729
+ if (currentState?.inspectorObject) {
5730
+ LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {
5693
5731
  ...options.inspector,
5732
+ layerHost: editorUiLayerHost,
5694
5733
  title: 'Prefab Properties',
5695
5734
  emptyText: 'Select an item in Prefab Explorer.',
5696
- summaryTitle: 'Prefab',
5697
5735
  lockedVectorGroups: lockedInspectorVectorGroups,
5698
5736
  });
5699
5737
  return;
5700
5738
  }
5739
+ LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel);
5701
5740
  LocalEditorShared.clearElement(inspectorPanel);
5702
5741
  inspectorPanel.appendChild(createPrefabStagePanelHeader('Prefab Properties', 'inspector'));
5703
5742
  const selectedItem = findLocalEditorPrefabStageStructureItem(stage, stage.selectedItemId);
@@ -5855,7 +5894,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5855
5894
  : 'var(--fps-editor-muted)';
5856
5895
  setToolbarButtonIcon(doc, editorStatusButton, statusViewModel.icon);
5857
5896
  setToolbarButtonTooltip(editorStatusButton, [
5858
- `编辑器状态:${editorStatusText}`,
5897
+ `验证中心:${editorStatusText}`,
5859
5898
  state.statusDetails && state.statusDetails !== state.status ? state.statusDetails : '',
5860
5899
  transformStatusText,
5861
5900
  LocalEditorShared.toTransformOperationStatusLabel(transformOperations.settings),
@@ -5878,20 +5917,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5878
5917
  renderCoordinateAxesOverlay(coordinateAxesOverlay, inEditor ? state.coordinateAxes ?? null : null);
5879
5918
  renderSceneFrameRateOverlay(sceneFrameRateOverlay, inEditor && !inPrefabStage ? state.sceneFrameStats ?? null : null);
5880
5919
  renderPerformanceMonitorOverlay(performanceMonitorOverlay, inEditor && !inPrefabStage ? state.performanceStats ?? null : null, inEditor && !inPrefabStage && performanceMonitorOpen);
5881
- const comparisonColumnVisible = shouldShowLocalEditorPrefabComparisonColumn({
5882
- inPrefabStage: inEditor && inPrefabStage,
5883
- userOpen: prefabComparisonPreviewOpen,
5884
- sceneWidth: workbench.sceneFrame.clientWidth,
5885
- });
5886
- if (!comparisonColumnVisible)
5887
- endPrefabComparisonPreviewDrag();
5888
5920
  prefabStagePreviewLayout.root.style.display = inEditor && inPrefabStage ? 'block' : 'none';
5889
- prefabStagePreviewLayout.mainRegion.style.right = comparisonColumnVisible
5890
- ? `${LOCAL_EDITOR_PREFAB_COMPARISON_COLUMN_WIDTH_PX}px`
5891
- : '0';
5892
- prefabStagePreviewLayout.comparisonColumn.style.display = comparisonColumnVisible ? 'flex' : 'none';
5893
5921
  renderPrefabImportStatsOverlay(prefabImportStatsOverlay, inEditor && inPrefabStage ? state.prefabStage ?? null : null);
5894
- renderPrefabComparisonPreviewOverlay(prefabComparisonPreviewOverlay, inEditor && inPrefabStage && comparisonColumnVisible ? state.prefabStage ?? null : null);
5895
5922
  renderSpatialOverlay(spatialOverlay, inEditor ? state.viewportSpatialOverlay ?? null : null);
5896
5923
  renderMeasurementOverlay(measurementOverlay, inEditor ? state.viewportMeasurement ?? null : null);
5897
5924
  const boxSelection = state.boxSelection;
@@ -5917,10 +5944,17 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5917
5944
  ...preview,
5918
5945
  };
5919
5946
  renderPreviewState(currentState);
5920
- if (shouldRenderInspectorPreview && panelRegistry.getRightDockTab() === 'inspector') {
5947
+ if (shouldRenderLocalEditorInspectorPreview({
5948
+ hasInspectorPreview: shouldRenderInspectorPreview,
5949
+ mode: currentState.mode,
5950
+ inPrefabStage: !!currentState.prefabStage,
5951
+ rightDockVisible: rightDockFormalSurfaceVisibility.isVisible(),
5952
+ activeRightTab: panelRegistry.getRightDockTab(),
5953
+ })) {
5921
5954
  const rightDockScrollSnapshot = captureLocalEditorRightDockScrollSnapshot(currentState, 'inspector', inspectorFilter, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);
5922
5955
  LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {
5923
5956
  ...options.inspector,
5957
+ layerHost: editorUiLayerHost,
5924
5958
  lockedVectorGroups: lockedInspectorVectorGroups,
5925
5959
  });
5926
5960
  restoreLocalEditorRightDockScrollSnapshot(rightDockScrollSnapshot, currentState, 'inspector', inspectorFilter, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);
@@ -5939,9 +5973,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5939
5973
  const previousInPrefabStage = previousState?.mode === 'editor' && !!previousState.prefabStage;
5940
5974
  if (!inEditor || disabled)
5941
5975
  contextMenu.close();
5942
- hostChrome.style.display = !inEditor && localTestActionsEnabled ? 'flex' : 'none';
5976
+ hostChrome.style.display = !inEditor && localTestActionsEnabled && gameModeEntryVisible ? 'flex' : 'none';
5943
5977
  enterEditorButton.disabled = disabled;
5944
- for (const button of [saveButton, saveAndRunButton, discardRunButton, undoButton, redoButton, sceneHelpButton, sceneCameraButton, performanceMonitorButton, gridToggleButton, prefabComparisonPreviewButton]) {
5978
+ for (const button of [saveButton, saveAndRunButton, discardRunButton, undoButton, redoButton, sceneHelpButton, sceneCameraButton, performanceMonitorButton, gridToggleButton]) {
5945
5979
  button.style.display = 'inline-flex';
5946
5980
  button.disabled = disabled;
5947
5981
  }
@@ -5965,6 +5999,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5965
5999
  assetPickerOpen = false;
5966
6000
  assetPickerInput = null;
5967
6001
  assetPickerProperty = null;
6002
+ settleHierarchyOperationInputRequest(null);
5968
6003
  }
5969
6004
  syncInputModalOpen();
5970
6005
  const transformTool = state.transformTool ?? null;
@@ -5972,7 +6007,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5972
6007
  workbench.root.dataset.editorPrefabStage = String(inPrefabStage);
5973
6008
  sceneTitle.textContent = createLocalEditorPrefabStageTitle(prefabStage);
5974
6009
  sceneToolOverlay.style.display = inEditor ? 'flex' : 'none';
5975
- prefabStageBackButton.style.display = inPrefabStage ? 'inline-flex' : 'none';
6010
+ renderContextActionButtons(contextActionGroup, state.contextActions ?? [], disabled);
5976
6011
  if (inPrefabStage && !previousInPrefabStage) {
5977
6012
  prefabStageMainWorkbenchLayoutSnapshot = workbenchLayoutController.getLayout();
5978
6013
  workbenchLayoutController.setBottomCollapsed(false);
@@ -5981,6 +6016,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5981
6016
  workbenchLayoutController.setLayout(prefabStageMainWorkbenchLayoutSnapshot, true);
5982
6017
  prefabStageMainWorkbenchLayoutSnapshot = null;
5983
6018
  }
6019
+ if (!inPrefabStage) {
6020
+ LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel);
6021
+ }
5984
6022
  workbench.leftToggle.style.display = '';
5985
6023
  workbench.rightToggle.style.display = '';
5986
6024
  workbench.bottomToggle.style.display = '';
@@ -6047,6 +6085,10 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6047
6085
  markerVisibilityButton.disabled = disabled;
6048
6086
  setToolbarButtonTooltip(markerVisibilityButton, markersVisible ? '隐藏标记与关系线' : '显示标记与关系线');
6049
6087
  LocalEditorShared.applyButtonActiveState(markerVisibilityButton, markersVisible);
6088
+ const showAllPrefabMarkers = viewportTools?.showAllPrefabMarkers ?? false;
6089
+ showAllPrefabMarkersButton.disabled = disabled || !!state.prefabStage;
6090
+ setToolbarButtonTooltip(showAllPrefabMarkersButton, showAllPrefabMarkers ? '仅显示选中 Prefab 实例的标记' : '显示所有 Prefab 实例的标记');
6091
+ LocalEditorShared.applyButtonActiveState(showAllPrefabMarkersButton, showAllPrefabMarkers);
6050
6092
  overlaySettingsButton.disabled = !isPreviewToolEnabled('spatial-overlay');
6051
6093
  setToolbarButtonTooltip(overlaySettingsButton, '视口信息层设置');
6052
6094
  LocalEditorShared.applyButtonActiveState(overlaySettingsButton, overlaySettingsOpen);
@@ -6075,24 +6117,15 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6075
6117
  ? performanceMonitorOpen ? '隐藏性能监控' : '显示性能监控'
6076
6118
  : performanceMonitorSupport.reason);
6077
6119
  LocalEditorShared.applyButtonActiveState(performanceMonitorButton, performanceMonitorOpen);
6078
- prefabComparisonPreviewButton.style.display = isPreviewToolVisible('prefab-comparison') ? 'inline-flex' : 'none';
6079
- prefabComparisonPreviewButton.disabled = !isPreviewToolEnabled('prefab-comparison');
6080
- const prefabComparisonSupport = getPreviewToolSupport('prefab-comparison');
6081
- setToolbarButtonTooltip(prefabComparisonPreviewButton, prefabComparisonSupport.support === 'enabled'
6082
- ? prefabComparisonPreviewOpen
6083
- ? '隐藏对比预览 (Shift+P)'
6084
- : '显示对比预览 (Shift+P)'
6085
- : prefabComparisonSupport.reason);
6086
- LocalEditorShared.applyButtonActiveState(prefabComparisonPreviewButton, inPrefabStage && prefabComparisonPreviewOpen);
6087
6120
  gridToggleButton.disabled = disabled || !gridState.available;
6088
6121
  setToolbarButtonTooltip(gridToggleButton, gridState.visible ? '隐藏 Scene View 网格' : '显示 Scene View 网格');
6089
6122
  LocalEditorShared.applyButtonActiveState(gridToggleButton, gridState.visible);
6090
- toolGroup.style.display = isPreviewToolVisible('select') ? 'flex' : 'none';
6123
+ synchronizeToolButtons(state.tools ?? []);
6124
+ toolGroup.style.display = inEditor
6125
+ && (state.tools ?? []).some(tool => tool.kind === 'primary' && tool.availability.state !== 'hidden')
6126
+ ? 'flex'
6127
+ : 'none';
6091
6128
  spaceGroup.style.display = isPreviewToolVisible('transform-space') ? 'flex' : 'none';
6092
- for (const [tool, button] of toolButtons) {
6093
- button.disabled = !isPreviewToolEnabled(tool);
6094
- LocalEditorShared.applyButtonActiveState(button, transformTool?.activeTool === tool);
6095
- }
6096
6129
  for (const [space, button] of Object.entries(spaceButtons)) {
6097
6130
  button.disabled = !isPreviewToolEnabled('transform-space');
6098
6131
  LocalEditorShared.applyButtonActiveState(button, transformTool?.activeSpace === space);
@@ -6152,9 +6185,14 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6152
6185
  dirtyBadge.style.display = inEditor && state.session?.dirty ? 'inline-flex' : 'none';
6153
6186
  renderPreviewState(state);
6154
6187
  scheduleToolbarOverflowLayout();
6155
- if (!inEditor)
6188
+ if (!inEditor) {
6189
+ LocalEditorPanels.disposeInspectorPanelUi(renderingPanel);
6156
6190
  return;
6191
+ }
6157
6192
  const activeRightTab = panelRegistry.getRightDockTab();
6193
+ if (inPrefabStage || activeRightTab !== 'rendering') {
6194
+ LocalEditorPanels.disposeInspectorPanelUi(renderingPanel);
6195
+ }
6158
6196
  if (inPrefabStage && prefabStage) {
6159
6197
  const rightDockVisibility = resolveLocalEditorRightDockVisibility({
6160
6198
  inPrefabStage: true,
@@ -6185,10 +6223,12 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6185
6223
  if (activeBottomTab === 'assets' && selectedAssetChanged && state.selectedAssetId && !suppressAssetScroll) {
6186
6224
  revealSelectedAssetBrowserItem(state.selectedAssetId);
6187
6225
  }
6226
+ revealPendingStatusDiagnosticAsset(state);
6188
6227
  lastRenderedAssetBrowserTab = assetBrowserTab;
6189
6228
  lastRenderedBottomDockTab = activeBottomTab;
6190
6229
  lastRenderedSelectedAssetId = state.selectedAssetId ?? null;
6191
6230
  restoreLocalEditorEditableFocus(doc, focusSnapshot);
6231
+ revealPendingStatusDiagnosticPath(state);
6192
6232
  return;
6193
6233
  }
6194
6234
  leftDockTabs.style.display = '';
@@ -6227,18 +6267,25 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6227
6267
  if (activeBottomTab === 'assets' && selectedAssetChanged && state.selectedAssetId && !suppressAssetScroll) {
6228
6268
  revealSelectedAssetBrowserItem(state.selectedAssetId);
6229
6269
  }
6270
+ revealPendingStatusDiagnosticAsset(state);
6230
6271
  lastRenderedAssetBrowserTab = assetBrowserTab;
6231
6272
  lastRenderedBottomDockTab = activeBottomTab;
6232
6273
  lastRenderedSelectedAssetId = state.selectedAssetId;
6233
6274
  LocalEditorPanels.renderWorkbenchRightDockTabs(doc, rightDockTabs, activeRightTab, panelRegistry.getPanels('right'));
6234
- if (activeRightTab === 'inspector') {
6275
+ const rightDockVisible = rightDockFormalSurfaceVisibility.isVisible();
6276
+ if (!rightDockVisible) {
6277
+ LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel);
6278
+ LocalEditorPanels.disposeInspectorPanelUi(renderingPanel);
6279
+ }
6280
+ else if (activeRightTab === 'inspector') {
6235
6281
  LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, state, inspectorFilter, {
6236
6282
  ...options.inspector,
6283
+ layerHost: editorUiLayerHost,
6237
6284
  lockedVectorGroups: lockedInspectorVectorGroups,
6238
6285
  });
6239
6286
  }
6240
6287
  else if (activeRightTab === 'rendering') {
6241
- LocalEditorPanels.renderRenderingPanel(doc, renderingPanel, state);
6288
+ LocalEditorPanels.renderRenderingPanel(doc, renderingPanel, state, { layerHost: editorUiLayerHost });
6242
6289
  }
6243
6290
  else if (activeRightTab === 'markers') {
6244
6291
  LocalEditorPanels.renderMarkerPanel(doc, markersPanel, state);
@@ -6248,6 +6295,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6248
6295
  }
6249
6296
  restoreLocalEditorEditableFocus(doc, focusSnapshot);
6250
6297
  restoreLocalEditorRightDockScrollSnapshot(rightDockScrollSnapshot, state, activeRightTab, inspectorFilter, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);
6298
+ revealPendingStatusDiagnosticPath(state);
6251
6299
  };
6252
6300
  const completedCleanup = new Set();
6253
6301
  let uiDisposed = false;
@@ -6266,15 +6314,15 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6266
6314
  currentState = { ...currentState, performanceStats: stats };
6267
6315
  renderPerformanceMonitorOverlay(performanceMonitorOverlay, currentState?.mode === 'editor' && !currentState.prefabStage ? stats : null, currentState?.mode === 'editor' && !currentState.prefabStage && performanceMonitorOpen);
6268
6316
  },
6269
- getPrefabComparisonPreviewSurfaces() {
6270
- return readPrefabComparisonPreviewSurfaces(prefabComparisonPreviewOverlay);
6271
- },
6272
6317
  alert(input) {
6273
6318
  return modalDialog.alert(input);
6274
6319
  },
6275
6320
  confirm(input) {
6276
6321
  return modalDialog.confirm(input);
6277
6322
  },
6323
+ choose(input) {
6324
+ return modalDialog.choose(input);
6325
+ },
6278
6326
  setTheme(theme) {
6279
6327
  setActiveTheme(theme);
6280
6328
  },
@@ -6316,6 +6364,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6316
6364
  doc.defaultView?.removeEventListener('resize', scheduleToolbarOverflowLayout);
6317
6365
  });
6318
6366
  run('host-chrome', () => hostChrome.remove());
6367
+ run('inspector-ui', () => LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel));
6368
+ run('rendering-ui', () => LocalEditorPanels.disposeInspectorPanelUi(renderingPanel));
6369
+ run('editor-ui-layer-host', () => editorUiLayerHost.dispose());
6319
6370
  run('workbench-root', () => workbench.root.remove());
6320
6371
  run('local-test-menu', () => localTestMenu.remove());
6321
6372
  run('editor-status-center', () => editorStatusCenter.remove());