@fps-games/editor 0.2.0-beta.3 → 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 (1400) hide show
  1. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/editor-state.js +32 -17
  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 +243 -60
  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 +111 -25
  14. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
  15. package/dist/agent-bridge/capabilities/selection.d.ts.map +1 -1
  16. package/dist/agent-bridge/capabilities/selection.js +8 -5
  17. package/dist/agent-bridge/capabilities/selection.js.map +1 -1
  18. package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -1
  19. package/dist/agent-bridge/capabilities/shadows.js +839 -67
  20. package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
  21. package/dist/agent-bridge/capabilities/transform.d.ts.map +1 -1
  22. package/dist/agent-bridge/capabilities/transform.js +6 -4
  23. package/dist/agent-bridge/capabilities/transform.js.map +1 -1
  24. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
  25. package/dist/agent-bridge/capabilities/ui-regions.js +3 -1
  26. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  27. package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -1
  28. package/dist/agent-bridge/capabilities/viewport.js +92 -47
  29. package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
  30. package/dist/agent-bridge/capability-sources.d.ts.map +1 -1
  31. package/dist/agent-bridge/capability-sources.js +2 -0
  32. package/dist/agent-bridge/capability-sources.js.map +1 -1
  33. package/dist/agent-bridge/register.d.ts.map +1 -1
  34. package/dist/agent-bridge/register.js +194 -0
  35. package/dist/agent-bridge/register.js.map +1 -1
  36. package/dist/agent-bridge/shared.d.ts +232 -7
  37. package/dist/agent-bridge/shared.d.ts.map +1 -1
  38. package/dist/agent-bridge/shared.js +174 -0
  39. package/dist/agent-bridge/shared.js.map +1 -1
  40. package/dist/agent-bridge/source-types.d.ts +17 -1
  41. package/dist/agent-bridge/source-types.d.ts.map +1 -1
  42. package/dist/agent-bridge/source-types.js.map +1 -1
  43. package/dist/build-info.json +57 -42
  44. package/dist/index.d.ts +7 -6
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +4 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/internal/babylon-preview-engine.d.ts +3 -0
  49. package/dist/internal/babylon-preview-engine.d.ts.map +1 -0
  50. package/dist/internal/babylon-preview-engine.js +11 -0
  51. package/dist/internal/babylon-preview-engine.js.map +1 -0
  52. package/dist/internal/product-local-editor-cleanup.d.ts +5 -0
  53. package/dist/internal/product-local-editor-cleanup.d.ts.map +1 -0
  54. package/dist/internal/product-local-editor-cleanup.js +20 -0
  55. package/dist/internal/product-local-editor-cleanup.js.map +1 -0
  56. package/dist/local-editor-agent-actions.d.ts +2 -4
  57. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  58. package/dist/local-editor-agent-actions.js +61 -33
  59. package/dist/local-editor-agent-actions.js.map +1 -1
  60. package/dist/local-editor-agent-context.d.ts +5 -5
  61. package/dist/local-editor-agent-context.d.ts.map +1 -1
  62. package/dist/local-editor-agent-context.js.map +1 -1
  63. package/dist/local-editor-harness.d.ts +340 -35
  64. package/dist/local-editor-harness.d.ts.map +1 -1
  65. package/dist/local-editor-harness.js +3854 -1118
  66. package/dist/local-editor-harness.js.map +1 -1
  67. package/dist/local-editor-marker-graph.d.ts +15 -15
  68. package/dist/local-editor-marker-graph.d.ts.map +1 -1
  69. package/dist/local-editor-marker-graph.js +3 -0
  70. package/dist/local-editor-marker-graph.js.map +1 -1
  71. package/dist/local-editor-performance-stats.d.ts +3 -2
  72. package/dist/local-editor-performance-stats.d.ts.map +1 -1
  73. package/dist/local-editor-performance-stats.js.map +1 -1
  74. package/dist/local-editor-prefab-stage-transaction.d.ts +19 -0
  75. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -0
  76. package/dist/local-editor-prefab-stage-transaction.js +45 -0
  77. package/dist/local-editor-prefab-stage-transaction.js.map +1 -0
  78. package/dist/local-editor-scene-view-interaction-runtime.d.ts +3 -1
  79. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  80. package/dist/local-editor-scene-view-interaction-runtime.js +24 -0
  81. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  82. package/dist/local-editor-tools.d.ts +18 -0
  83. package/dist/local-editor-tools.d.ts.map +1 -0
  84. package/dist/local-editor-tools.js +53 -0
  85. package/dist/local-editor-tools.js.map +1 -0
  86. package/dist/playable-babylon-rendering.d.ts +9 -0
  87. package/dist/playable-babylon-rendering.d.ts.map +1 -1
  88. package/dist/playable-babylon-rendering.js +162 -6
  89. package/dist/playable-babylon-rendering.js.map +1 -1
  90. package/dist/playable-local-editor-entry.d.ts +68 -0
  91. package/dist/playable-local-editor-entry.d.ts.map +1 -0
  92. package/dist/playable-local-editor-entry.js +424 -0
  93. package/dist/playable-local-editor-entry.js.map +1 -0
  94. package/dist/playable-local-editor-host.d.ts +51 -29
  95. package/dist/playable-local-editor-host.d.ts.map +1 -1
  96. package/dist/playable-local-editor-host.js +23 -11
  97. package/dist/playable-local-editor-host.js.map +1 -1
  98. package/dist/playable-product-local-editor.d.ts +10 -12
  99. package/dist/playable-product-local-editor.d.ts.map +1 -1
  100. package/dist/playable-product-local-editor.js +178 -85
  101. package/dist/playable-product-local-editor.js.map +1 -1
  102. package/dist/playable-product-projection-preview.d.ts +4 -1
  103. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  104. package/dist/playable-product-projection-preview.js +122 -5
  105. package/dist/playable-product-projection-preview.js.map +1 -1
  106. package/dist/playable-product-rendering.d.ts +12 -0
  107. package/dist/playable-product-rendering.d.ts.map +1 -1
  108. package/dist/playable-product-rendering.js +128 -6
  109. package/dist/playable-product-rendering.js.map +1 -1
  110. package/dist/playable-product-scene-capabilities.d.ts +24 -7
  111. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  112. package/dist/playable-product-scene-capabilities.js +172 -15
  113. package/dist/playable-product-scene-capabilities.js.map +1 -1
  114. package/dist/playable-project-mode.d.ts +17 -0
  115. package/dist/playable-project-mode.d.ts.map +1 -0
  116. package/dist/playable-project-mode.js +2 -0
  117. package/dist/playable-project-mode.js.map +1 -0
  118. package/dist/playable-runtime-babylon.d.ts +3 -6
  119. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  120. package/dist/playable-runtime-babylon.js +1 -5
  121. package/dist/playable-runtime-babylon.js.map +1 -1
  122. package/dist/playable-sdk.d.ts +16 -9
  123. package/dist/playable-sdk.d.ts.map +1 -1
  124. package/dist/playable-sdk.js +6 -4
  125. package/dist/playable-sdk.js.map +1 -1
  126. package/dist/playable-standard-project.d.ts +23 -14
  127. package/dist/playable-standard-project.d.ts.map +1 -1
  128. package/dist/playable-standard-project.js +53 -19
  129. package/dist/playable-standard-project.js.map +1 -1
  130. package/dist/vite-client.d.ts +4 -0
  131. package/node_modules/@babel/helper-string-parser/lib/index.js +0 -1
  132. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js +0 -1
  133. package/node_modules/@babel/helper-validator-identifier/lib/index.js +0 -1
  134. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js +0 -1
  135. package/node_modules/@babel/parser/lib/index.js +0 -1
  136. package/node_modules/@babel/types/lib/asserts/assertNode.js +0 -1
  137. package/node_modules/@babel/types/lib/asserts/generated/index.js +0 -1
  138. package/node_modules/@babel/types/lib/ast-types/generated/index.js +0 -1
  139. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -1
  140. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -1
  141. package/node_modules/@babel/types/lib/builders/generated/index.js +0 -1
  142. package/node_modules/@babel/types/lib/builders/generated/lowercase.js +0 -1
  143. package/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
  144. package/node_modules/@babel/types/lib/builders/productions.js +0 -1
  145. package/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -1
  146. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -1
  147. package/node_modules/@babel/types/lib/builders/validateNode.js +0 -1
  148. package/node_modules/@babel/types/lib/clone/clone.js +0 -1
  149. package/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -1
  150. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -1
  151. package/node_modules/@babel/types/lib/clone/cloneNode.js +0 -1
  152. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -1
  153. package/node_modules/@babel/types/lib/comments/addComment.js +0 -1
  154. package/node_modules/@babel/types/lib/comments/addComments.js +0 -1
  155. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -1
  156. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -1
  157. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -1
  158. package/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -1
  159. package/node_modules/@babel/types/lib/comments/removeComments.js +0 -1
  160. package/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
  161. package/node_modules/@babel/types/lib/constants/index.js +0 -1
  162. package/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -1
  163. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +0 -1
  164. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -1
  165. package/node_modules/@babel/types/lib/converters/toBlock.js +0 -1
  166. package/node_modules/@babel/types/lib/converters/toComputedKey.js +0 -1
  167. package/node_modules/@babel/types/lib/converters/toExpression.js +0 -1
  168. package/node_modules/@babel/types/lib/converters/toIdentifier.js +0 -1
  169. package/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -1
  170. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -1
  171. package/node_modules/@babel/types/lib/converters/toStatement.js +0 -1
  172. package/node_modules/@babel/types/lib/converters/valueToNode.js +0 -1
  173. package/node_modules/@babel/types/lib/definitions/core.js +0 -1
  174. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js +0 -1
  175. package/node_modules/@babel/types/lib/definitions/experimental.js +0 -1
  176. package/node_modules/@babel/types/lib/definitions/flow.js +0 -1
  177. package/node_modules/@babel/types/lib/definitions/index.js +0 -1
  178. package/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
  179. package/node_modules/@babel/types/lib/definitions/misc.js +0 -1
  180. package/node_modules/@babel/types/lib/definitions/placeholders.js +0 -1
  181. package/node_modules/@babel/types/lib/definitions/typescript.js +0 -1
  182. package/node_modules/@babel/types/lib/definitions/utils.js +0 -1
  183. package/node_modules/@babel/types/lib/index.js +0 -1
  184. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -1
  185. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +0 -1
  186. package/node_modules/@babel/types/lib/modifications/inherits.js +0 -1
  187. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -1
  188. package/node_modules/@babel/types/lib/modifications/removeProperties.js +0 -1
  189. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -1
  190. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +0 -1
  191. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js +0 -1
  192. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +0 -1
  193. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js +0 -1
  194. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -1
  195. package/node_modules/@babel/types/lib/traverse/traverse.js +0 -1
  196. package/node_modules/@babel/types/lib/traverse/traverseFast.js +0 -1
  197. package/node_modules/@babel/types/lib/utils/deprecationWarning.js +0 -1
  198. package/node_modules/@babel/types/lib/utils/inherit.js +0 -1
  199. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +0 -1
  200. package/node_modules/@babel/types/lib/utils/shallowEqual.js +0 -1
  201. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -1
  202. package/node_modules/@babel/types/lib/validators/generated/index.js +0 -1
  203. package/node_modules/@babel/types/lib/validators/is.js +0 -1
  204. package/node_modules/@babel/types/lib/validators/isBinding.js +0 -1
  205. package/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -1
  206. package/node_modules/@babel/types/lib/validators/isImmutable.js +0 -1
  207. package/node_modules/@babel/types/lib/validators/isLet.js +0 -1
  208. package/node_modules/@babel/types/lib/validators/isNode.js +0 -1
  209. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +0 -1
  210. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -1
  211. package/node_modules/@babel/types/lib/validators/isReferenced.js +0 -1
  212. package/node_modules/@babel/types/lib/validators/isScope.js +0 -1
  213. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +0 -1
  214. package/node_modules/@babel/types/lib/validators/isType.js +0 -1
  215. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -1
  216. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -1
  217. package/node_modules/@babel/types/lib/validators/isVar.js +0 -1
  218. package/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -1
  219. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
  220. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -1
  221. package/node_modules/@babel/types/lib/validators/validate.js +0 -1
  222. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.d.ts +69 -0
  223. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.js +132 -0
  224. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.d.ts +8 -0
  225. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.js +7 -0
  226. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.d.ts +14 -0
  227. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.js +328 -0
  228. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.d.ts +9 -0
  229. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.js +1 -0
  230. package/node_modules/@babylonjs/loaders/BVH/index.d.ts +2 -0
  231. package/node_modules/@babylonjs/loaders/BVH/index.js +3 -0
  232. package/node_modules/@babylonjs/loaders/OBJ/index.d.ts +4 -0
  233. package/node_modules/@babylonjs/loaders/OBJ/index.js +4 -0
  234. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.d.ts +41 -0
  235. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.js +230 -0
  236. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.d.ts +136 -0
  237. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.js +317 -0
  238. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.d.ts +4 -0
  239. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.js +4 -0
  240. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.d.ts +47 -0
  241. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.js +1 -0
  242. package/node_modules/@babylonjs/loaders/OBJ/solidParser.d.ts +175 -0
  243. package/node_modules/@babylonjs/loaders/OBJ/solidParser.js +903 -0
  244. package/node_modules/@babylonjs/loaders/SPLAT/index.d.ts +2 -0
  245. package/node_modules/@babylonjs/loaders/SPLAT/index.js +3 -0
  246. package/node_modules/@babylonjs/loaders/SPLAT/sog.d.ts +84 -0
  247. package/node_modules/@babylonjs/loaders/SPLAT/sog.js +294 -0
  248. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.d.ts +26 -0
  249. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.js +10 -0
  250. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.d.ts +100 -0
  251. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.js +536 -0
  252. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.d.ts +20 -0
  253. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.js +15 -0
  254. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.d.ts +33 -0
  255. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.js +1 -0
  256. package/node_modules/@babylonjs/loaders/SPLAT/spz.d.ts +11 -0
  257. package/node_modules/@babylonjs/loaders/SPLAT/spz.js +168 -0
  258. package/node_modules/@babylonjs/loaders/STL/index.d.ts +1 -0
  259. package/node_modules/@babylonjs/loaders/STL/index.js +1 -0
  260. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.d.ts +78 -0
  261. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.js +238 -0
  262. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.d.ts +8 -0
  263. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.js +7 -0
  264. package/node_modules/@babylonjs/loaders/bvh/license.md +21 -0
  265. package/node_modules/@babylonjs/loaders/dynamic.d.ts +5 -0
  266. package/node_modules/@babylonjs/loaders/dynamic.js +56 -0
  267. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.d.ts +16 -0
  268. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.js +64 -0
  269. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.d.ts +144 -0
  270. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.js +1841 -0
  271. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.d.ts +412 -0
  272. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.js +95 -0
  273. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.d.ts +71 -0
  274. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.js +254 -0
  275. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.d.ts +13 -0
  276. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.js +130 -0
  277. package/node_modules/@babylonjs/loaders/glTF/1.0/index.d.ts +5 -0
  278. package/node_modules/@babylonjs/loaders/glTF/1.0/index.js +5 -0
  279. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.d.ts +41 -0
  280. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.js +93 -0
  281. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.d.ts +41 -0
  282. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.js +83 -0
  283. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +48 -0
  284. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.js +115 -0
  285. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +39 -0
  286. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +94 -0
  287. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +39 -0
  288. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.js +50 -0
  289. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.d.ts +34 -0
  290. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.js +38 -0
  291. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.d.ts +33 -0
  292. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.js +37 -0
  293. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +53 -0
  294. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.js +73 -0
  295. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +47 -0
  296. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -0
  297. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.js +251 -0
  298. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.js +77 -0
  299. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +47 -0
  300. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +92 -0
  301. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +355 -0
  302. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1678 -0
  303. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
  304. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +19 -0
  305. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
  306. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.js +3 -0
  307. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +70 -0
  308. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +438 -0
  309. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.d.ts +38 -0
  310. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.js +150 -0
  311. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +41 -0
  312. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.js +91 -0
  313. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +42 -0
  314. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.js +65 -0
  315. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +43 -0
  316. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.js +79 -0
  317. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.d.ts +49 -0
  318. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.js +119 -0
  319. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +43 -0
  320. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +58 -0
  321. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +43 -0
  322. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +69 -0
  323. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +43 -0
  324. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.js +56 -0
  325. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +42 -0
  326. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +47 -0
  327. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +43 -0
  328. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.js +77 -0
  329. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.d.ts +46 -0
  330. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.js +54 -0
  331. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +42 -0
  332. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.js +68 -0
  333. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +42 -0
  334. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +80 -0
  335. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +43 -0
  336. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.js +73 -0
  337. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.d.ts +42 -0
  338. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.js +76 -0
  339. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +42 -0
  340. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.js +303 -0
  341. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +42 -0
  342. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.js +66 -0
  343. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.d.ts +112 -0
  344. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.js +262 -0
  345. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.d.ts +43 -0
  346. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.js +82 -0
  347. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +45 -0
  348. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +109 -0
  349. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +29 -0
  350. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.js +22 -0
  351. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +31 -0
  352. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.js +189 -0
  353. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
  354. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.js +123 -0
  355. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.d.ts +30 -0
  356. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.js +66 -0
  357. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +33 -0
  358. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.js +37 -0
  359. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.d.ts +37 -0
  360. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.js +58 -0
  361. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +39 -0
  362. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.js +47 -0
  363. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +56 -0
  364. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.js +228 -0
  365. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.d.ts +104 -0
  366. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.js +337 -0
  367. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +27 -0
  368. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.js +39 -0
  369. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +27 -0
  370. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.js +38 -0
  371. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.d.ts +4 -0
  372. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.js +212 -0
  373. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +45 -0
  374. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.js +100 -0
  375. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.d.ts +43 -0
  376. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.js +44 -0
  377. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.d.ts +306 -0
  378. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.js +884 -0
  379. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.d.ts +450 -0
  380. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.js +2485 -0
  381. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.d.ts +42 -0
  382. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.js +79 -0
  383. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.d.ts +165 -0
  384. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.js +1 -0
  385. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.d.ts +25 -0
  386. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.js +32 -0
  387. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.d.ts +262 -0
  388. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.js +1 -0
  389. package/node_modules/@babylonjs/loaders/glTF/2.0/index.d.ts +8 -0
  390. package/node_modules/@babylonjs/loaders/glTF/2.0/index.js +9 -0
  391. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.d.ts +364 -0
  392. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.js +1 -0
  393. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.d.ts +674 -0
  394. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.js +1034 -0
  395. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +705 -0
  396. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.js +1126 -0
  397. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.d.ts +553 -0
  398. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.js +998 -0
  399. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.d.ts +15 -0
  400. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.js +17 -0
  401. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.d.ts +35 -0
  402. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.js +131 -0
  403. package/node_modules/@babylonjs/loaders/glTF/index.d.ts +5 -0
  404. package/node_modules/@babylonjs/loaders/glTF/index.js +6 -0
  405. package/node_modules/@babylonjs/loaders/index.d.ts +6 -0
  406. package/node_modules/@babylonjs/loaders/index.js +7 -0
  407. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.d.ts +1 -0
  408. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.js +15 -0
  409. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.d.ts +1 -0
  410. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.js +13 -0
  411. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.d.ts +2 -0
  412. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.js +18 -0
  413. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.d.ts +2 -0
  414. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.js +15 -0
  415. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.d.ts +2 -0
  416. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.js +3 -0
  417. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.d.ts +2 -0
  418. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.js +34 -0
  419. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.d.ts +2 -0
  420. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.js +3 -0
  421. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.d.ts +3 -0
  422. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.js +4 -0
  423. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.d.ts +1 -0
  424. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.js +15 -0
  425. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.d.ts +1 -0
  426. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.js +15 -0
  427. package/node_modules/@babylonjs/loaders/legacy/legacy.d.ts +8 -0
  428. package/node_modules/@babylonjs/loaders/legacy/legacy.js +10 -0
  429. package/node_modules/@babylonjs/loaders/license.md +71 -0
  430. package/node_modules/@babylonjs/loaders/package.json +49 -0
  431. package/node_modules/@babylonjs/loaders/readme.md +23 -0
  432. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts +22 -0
  433. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts.map +1 -0
  434. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js +187 -0
  435. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js.map +1 -0
  436. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
  437. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
  438. package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
  439. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  440. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts +19 -0
  441. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts.map +1 -0
  442. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js +212 -0
  443. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js.map +1 -0
  444. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts +17 -2
  445. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts.map +1 -1
  446. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js +192 -17
  447. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  448. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +2 -0
  449. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  450. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +139 -3
  451. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  452. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts +4 -0
  453. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts.map +1 -1
  454. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  455. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts +1 -0
  456. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts.map +1 -1
  457. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js +1 -0
  458. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  459. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts +14 -0
  460. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts.map +1 -0
  461. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js +14 -0
  462. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js.map +1 -0
  463. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts +59 -0
  464. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  465. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js +725 -0
  466. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  467. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts +136 -0
  468. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  469. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js +2735 -0
  470. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js.map +1 -0
  471. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  472. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +1 -1
  473. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  474. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +2 -1
  475. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  476. package/node_modules/@fps-games/editor-babylon/dist/index.js +2 -1
  477. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  478. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts +2 -0
  479. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts.map +1 -1
  480. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js +59 -6
  481. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  482. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -1
  483. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +81 -11
  484. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  485. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +2 -8
  486. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  487. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +17 -5
  488. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  489. package/node_modules/@fps-games/editor-babylon/dist/projection.js +300 -362
  490. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  491. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +4 -0
  492. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
  493. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +76 -10
  494. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  495. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts +46 -0
  496. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts.map +1 -0
  497. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js +304 -0
  498. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js.map +1 -0
  499. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +85 -0
  500. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -0
  501. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +1600 -0
  502. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -0
  503. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +11 -3
  504. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  505. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +105 -15
  506. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  507. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts +25 -0
  508. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts.map +1 -0
  509. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js +44 -0
  510. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js.map +1 -0
  511. package/node_modules/@fps-games/editor-babylon/package.json +6 -5
  512. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +8 -9
  513. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  514. package/node_modules/@fps-games/editor-browser/dist/index.js +6 -7
  515. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  516. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts +2 -0
  517. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts.map +1 -0
  518. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js +36 -0
  519. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js.map +1 -0
  520. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts +2 -0
  521. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts.map +1 -1
  522. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js +17 -0
  523. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  524. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +1 -1
  525. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
  526. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +6 -0
  527. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  528. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts.map +1 -1
  529. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +157 -77
  530. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  531. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.d.ts.map +1 -1
  532. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js +27 -21
  533. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  534. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +19 -0
  535. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -0
  536. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +44 -0
  537. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -0
  538. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +36 -5
  539. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  540. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +831 -702
  541. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  542. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts +8 -7
  543. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts.map +1 -1
  544. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js +1 -7
  545. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  546. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts +7 -0
  547. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts.map +1 -0
  548. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js +20 -0
  549. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js.map +1 -0
  550. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +6 -7
  551. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  552. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +266 -114
  553. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  554. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  555. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  556. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +11 -0
  557. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  558. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts +3 -0
  559. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  560. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +58 -25
  561. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  562. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts +14 -0
  563. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts.map +1 -1
  564. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js +44 -62
  565. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  566. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +10 -7
  567. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  568. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +591 -639
  569. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  570. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +8 -36
  571. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
  572. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +25 -103
  573. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  574. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  575. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +29 -110
  576. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  577. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +1 -3
  578. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
  579. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +6 -90
  580. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  581. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -1
  582. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +9 -54
  583. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  584. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +39 -0
  585. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -0
  586. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +74 -0
  587. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -0
  588. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts +4 -0
  589. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts.map +1 -0
  590. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js +44 -0
  591. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js.map +1 -0
  592. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.d.ts.map +1 -1
  593. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js +35 -44
  594. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  595. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -1
  596. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +40 -24
  597. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  598. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.d.ts.map +1 -1
  599. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js +2 -20
  600. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  601. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +56 -301
  602. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  603. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  604. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +4 -14
  605. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  606. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +33 -119
  607. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  608. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +5 -10
  609. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  610. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +760 -524
  611. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  612. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts +2 -3
  613. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts.map +1 -1
  614. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js +0 -180
  615. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  616. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts +5 -0
  617. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts.map +1 -0
  618. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js +5 -0
  619. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js.map +1 -0
  620. package/node_modules/@fps-games/editor-browser/package.json +15 -4
  621. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts +22 -0
  622. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts.map +1 -0
  623. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js +226 -0
  624. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js.map +1 -0
  625. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -1
  626. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  627. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +94 -2
  628. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  629. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +26 -1
  630. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  631. package/node_modules/@fps-games/editor-core/dist/editor-session.js +77 -8
  632. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  633. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +112 -0
  634. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -0
  635. package/node_modules/@fps-games/editor-core/dist/editor-tools.js +613 -0
  636. package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -0
  637. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +46 -0
  638. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -1
  639. package/node_modules/@fps-games/editor-core/dist/inspector.js +62 -0
  640. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  641. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -0
  642. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  643. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  644. package/node_modules/@fps-games/editor-core/package.json +14 -6
  645. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  646. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +14 -3
  647. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  648. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +1 -1
  649. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -1
  650. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +1 -1
  651. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  652. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +14 -0
  653. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  654. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +49 -1
  655. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  656. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +58 -2
  657. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  658. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  659. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +48 -6
  660. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  661. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +28 -3
  662. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  663. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +314 -6
  664. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  665. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts +2 -0
  666. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts.map +1 -1
  667. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js +2 -0
  668. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  669. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts +11 -0
  670. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts.map +1 -0
  671. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js +27 -0
  672. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js.map +1 -0
  673. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts +5 -0
  674. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts.map +1 -0
  675. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js +285 -0
  676. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js.map +1 -0
  677. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +7 -3
  678. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  679. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  680. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +3 -0
  681. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  682. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +6 -0
  683. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  684. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  685. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +23 -81
  686. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  687. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts +41 -0
  688. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts.map +1 -0
  689. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js +93 -0
  690. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js.map +1 -0
  691. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts +29 -0
  692. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts.map +1 -0
  693. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js +77 -0
  694. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js.map +1 -0
  695. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts +51 -0
  696. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts.map +1 -0
  697. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js +105 -0
  698. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js.map +1 -0
  699. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts +60 -0
  700. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts.map +1 -0
  701. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js +287 -0
  702. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js.map +1 -0
  703. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +6 -1
  704. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  705. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  706. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +1 -0
  707. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  708. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +53 -17
  709. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  710. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +16 -8
  711. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  712. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +10 -6
  713. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  714. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +5 -3
  715. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  716. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +2 -1
  717. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  718. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  719. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +134 -66
  720. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  721. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +11 -0
  722. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  723. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +21 -14
  724. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  725. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +17 -9
  726. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  727. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  728. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  729. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +20 -0
  730. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  731. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
  732. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +49 -10
  733. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  734. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +2 -2
  735. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  736. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -0
  737. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  738. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts +7 -0
  739. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts.map +1 -1
  740. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js +130 -20
  741. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  742. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts +1 -1
  743. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts.map +1 -1
  744. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js +12 -3
  745. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  746. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts +11 -0
  747. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts.map +1 -0
  748. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js +136 -0
  749. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js.map +1 -0
  750. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts +1 -0
  751. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts.map +1 -1
  752. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js +1 -0
  753. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  754. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts +36 -51
  755. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts.map +1 -1
  756. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js +40 -65
  757. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  758. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +5 -2
  759. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  760. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +207 -1
  761. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  762. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  763. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  764. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +3 -0
  765. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  766. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +18 -7
  767. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  768. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +110 -18
  769. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  770. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +5 -0
  771. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  772. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +6 -0
  773. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  774. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts +5 -2
  775. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  776. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +22 -2
  777. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  778. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  779. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +144 -0
  780. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  781. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +16 -0
  782. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
  783. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  784. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  785. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
  786. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  787. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
  788. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  789. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  790. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +2 -0
  791. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -1
  792. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +241 -13
  793. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  794. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +1 -0
  795. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -1
  796. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +1 -0
  797. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  798. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts +31 -0
  799. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts.map +1 -0
  800. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js +170 -0
  801. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js.map +1 -0
  802. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +153 -13
  803. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -1
  804. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  805. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts +17 -0
  806. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts.map +1 -1
  807. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js +1295 -3
  808. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  809. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  810. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +14 -0
  811. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  812. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.d.ts.map +1 -1
  813. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js +57 -34
  814. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  815. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
  816. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +4 -1
  817. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  818. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +4 -0
  819. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  820. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  821. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
  822. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +20 -198
  823. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  824. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.d.ts.map +1 -1
  825. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js +5 -1
  826. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  827. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts +5 -0
  828. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
  829. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +144 -8
  830. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  831. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts +1 -1
  832. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts.map +1 -1
  833. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js +30 -1
  834. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  835. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts +6 -0
  836. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts.map +1 -1
  837. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  838. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +31 -3
  839. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  840. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +5 -2
  841. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  842. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +40 -4
  843. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  844. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  845. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +116 -3
  846. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  847. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +2 -1
  848. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  849. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -0
  850. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  851. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +17 -1
  852. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  853. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +50 -2
  854. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  855. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  856. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +7 -5
  857. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  858. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +5 -6
  859. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  860. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +31 -17
  861. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  862. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +6 -0
  863. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  864. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  865. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  866. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +417 -2
  867. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -1
  868. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +692 -2
  869. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  870. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts +55 -0
  871. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts.map +1 -0
  872. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js +2 -0
  873. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js.map +1 -0
  874. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +3 -18
  875. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  876. package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
  877. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  878. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  879. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.d.ts.map +1 -1
  880. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js +5 -0
  881. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  882. package/node_modules/@fps-games/editor-tooling/dist/vite.d.ts.map +1 -1
  883. package/node_modules/@fps-games/editor-tooling/dist/vite.js +151 -5
  884. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  885. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  886. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts +107 -0
  887. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts.map +1 -0
  888. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js +770 -0
  889. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js.map +1 -0
  890. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts +21 -0
  891. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts.map +1 -0
  892. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js +172 -0
  893. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js.map +1 -0
  894. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts +14 -0
  895. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts.map +1 -0
  896. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js +32 -0
  897. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js.map +1 -0
  898. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts +3 -0
  899. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -0
  900. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +653 -0
  901. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -0
  902. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts +3 -0
  903. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts.map +1 -0
  904. package/node_modules/@fps-games/editor-ui/dist/gallery.js +3 -0
  905. package/node_modules/@fps-games/editor-ui/dist/gallery.js.map +1 -0
  906. package/node_modules/@fps-games/editor-ui/dist/index.d.ts +5 -0
  907. package/node_modules/@fps-games/editor-ui/dist/index.d.ts.map +1 -0
  908. package/node_modules/@fps-games/editor-ui/dist/index.js +5 -0
  909. package/node_modules/@fps-games/editor-ui/dist/index.js.map +1 -0
  910. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts +7 -0
  911. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts.map +1 -0
  912. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js +29 -0
  913. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js.map +1 -0
  914. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts +2 -0
  915. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts.map +1 -0
  916. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js +95 -0
  917. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js.map +1 -0
  918. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts +28 -0
  919. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts.map +1 -0
  920. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js +387 -0
  921. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js.map +1 -0
  922. package/node_modules/@fps-games/editor-ui/package.json +23 -0
  923. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  924. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts +1 -0
  925. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts.map +1 -1
  926. package/node_modules/@fps-games/playable-contracts/dist/index.js +1 -0
  927. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  928. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts +116 -0
  929. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts.map +1 -0
  930. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js +403 -0
  931. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js.map +1 -0
  932. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  933. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts +3 -0
  934. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts.map +1 -1
  935. package/node_modules/@fps-games/playable-rendering/dist/index.js +3 -0
  936. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  937. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js +5 -25
  938. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  939. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts +3 -0
  940. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts.map +1 -1
  941. package/node_modules/@fps-games/playable-rendering/dist/runtime.js +3 -0
  942. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  943. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts +61 -0
  944. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts.map +1 -0
  945. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js +176 -0
  946. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js.map +1 -0
  947. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts +84 -0
  948. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  949. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js +362 -0
  950. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js.map +1 -0
  951. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts +167 -0
  952. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts.map +1 -0
  953. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js +484 -0
  954. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js.map +1 -0
  955. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  956. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts +5 -0
  957. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts.map +1 -1
  958. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js +1 -0
  959. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  960. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  961. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  962. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  963. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  964. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  965. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  966. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  967. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  968. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts +6 -0
  969. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts.map +1 -0
  970. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js +16 -0
  971. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js.map +1 -0
  972. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts +7 -0
  973. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts.map +1 -0
  974. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js +47 -0
  975. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js.map +1 -0
  976. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +306 -0
  977. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -0
  978. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +1237 -0
  979. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -0
  980. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts +8 -0
  981. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts.map +1 -0
  982. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js +32 -0
  983. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js.map +1 -0
  984. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +2 -0
  985. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts.map +1 -0
  986. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +2 -0
  987. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -0
  988. package/node_modules/@fps-games/plugin-hierarchy/package.json +57 -0
  989. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  990. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  991. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  992. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  993. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  994. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  995. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  996. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  997. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  998. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  999. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  1000. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  1001. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  1002. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  1003. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  1004. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  1005. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  1006. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts +8 -0
  1007. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts.map +1 -0
  1008. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js +35 -0
  1009. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js.map +1 -0
  1010. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts +11 -0
  1011. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts.map +1 -0
  1012. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js +14 -0
  1013. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js.map +1 -0
  1014. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +2 -0
  1015. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts.map +1 -0
  1016. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +2 -0
  1017. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -0
  1018. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +53 -0
  1019. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  1020. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  1021. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  1022. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  1023. package/node_modules/@playcanvas/observer/LICENSE +19 -0
  1024. package/node_modules/@playcanvas/observer/README.md +72 -0
  1025. package/node_modules/@playcanvas/observer/dist/index.cjs +2033 -0
  1026. package/node_modules/@playcanvas/observer/dist/index.js +2039 -0
  1027. package/node_modules/@playcanvas/observer/dist/index.mjs +2026 -0
  1028. package/node_modules/@playcanvas/observer/package.json +78 -0
  1029. package/node_modules/@playcanvas/observer/types/event-handle.d.ts +41 -0
  1030. package/node_modules/@playcanvas/observer/types/events.d.ts +162 -0
  1031. package/node_modules/@playcanvas/observer/types/history.d.ts +123 -0
  1032. package/node_modules/@playcanvas/observer/types/index.d.ts +15 -0
  1033. package/node_modules/@playcanvas/observer/types/observer-history.d.ts +32 -0
  1034. package/node_modules/@playcanvas/observer/types/observer-list.d.ts +39 -0
  1035. package/node_modules/@playcanvas/observer/types/observer.d.ts +157 -0
  1036. package/node_modules/@playcanvas/observer/types/utils.d.ts +33 -0
  1037. package/node_modules/@playcanvas/pcui/LICENSE +19 -0
  1038. package/node_modules/@playcanvas/pcui/README.md +164 -0
  1039. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1040. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1041. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1042. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1043. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1044. package/node_modules/@playcanvas/pcui/dist/module/src/Math/color-value.mjs +77 -0
  1045. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1046. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1047. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1048. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1049. package/node_modules/@playcanvas/pcui/dist/module/src/class.mjs +19 -0
  1050. package/node_modules/@playcanvas/pcui/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1051. package/node_modules/@playcanvas/pcui/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1052. package/node_modules/@playcanvas/pcui/dist/module/src/components/Button/index.mjs +119 -0
  1053. package/node_modules/@playcanvas/pcui/dist/module/src/components/Canvas/index.mjs +104 -0
  1054. package/node_modules/@playcanvas/pcui/dist/module/src/components/Code/index.mjs +43 -0
  1055. package/node_modules/@playcanvas/pcui/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1056. package/node_modules/@playcanvas/pcui/dist/module/src/components/Container/index.mjs +642 -0
  1057. package/node_modules/@playcanvas/pcui/dist/module/src/components/Divider/index.mjs +20 -0
  1058. package/node_modules/@playcanvas/pcui/dist/module/src/components/Element/index.mjs +829 -0
  1059. package/node_modules/@playcanvas/pcui/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1060. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridView/index.mjs +448 -0
  1061. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1062. package/node_modules/@playcanvas/pcui/dist/module/src/components/InfoBox/index.mjs +90 -0
  1063. package/node_modules/@playcanvas/pcui/dist/module/src/components/InputElement/index.mjs +186 -0
  1064. package/node_modules/@playcanvas/pcui/dist/module/src/components/Label/index.mjs +124 -0
  1065. package/node_modules/@playcanvas/pcui/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1066. package/node_modules/@playcanvas/pcui/dist/module/src/components/Menu/index.mjs +174 -0
  1067. package/node_modules/@playcanvas/pcui/dist/module/src/components/MenuItem/index.mjs +223 -0
  1068. package/node_modules/@playcanvas/pcui/dist/module/src/components/NumericInput/index.mjs +400 -0
  1069. package/node_modules/@playcanvas/pcui/dist/module/src/components/Overlay/index.mjs +108 -0
  1070. package/node_modules/@playcanvas/pcui/dist/module/src/components/Panel/index.mjs +400 -0
  1071. package/node_modules/@playcanvas/pcui/dist/module/src/components/Progress/index.mjs +45 -0
  1072. package/node_modules/@playcanvas/pcui/dist/module/src/components/RadioButton/index.mjs +113 -0
  1073. package/node_modules/@playcanvas/pcui/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1074. package/node_modules/@playcanvas/pcui/dist/module/src/components/SliderInput/index.mjs +333 -0
  1075. package/node_modules/@playcanvas/pcui/dist/module/src/components/Spinner/index.mjs +34 -0
  1076. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1077. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextInput/index.mjs +98 -0
  1078. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeView/index.mjs +1131 -0
  1079. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1080. package/node_modules/@playcanvas/pcui/dist/module/src/components/VectorInput/index.mjs +366 -0
  1081. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/search.mjs +194 -0
  1082. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/utils.mjs +43 -0
  1083. package/node_modules/@playcanvas/pcui/dist/module/src/index.mjs +56 -0
  1084. package/node_modules/@playcanvas/pcui/dist/pcui-theme-green.scss +2798 -0
  1085. package/node_modules/@playcanvas/pcui/dist/pcui-theme-grey.scss +2798 -0
  1086. package/node_modules/@playcanvas/pcui/package.json +150 -0
  1087. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1088. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1089. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1090. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1091. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1092. package/node_modules/@playcanvas/pcui/react/dist/module/src/Math/color-value.mjs +77 -0
  1093. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1094. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1095. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1096. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1097. package/node_modules/@playcanvas/pcui/react/dist/module/src/class.mjs +19 -0
  1098. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/component.mjs +11 -0
  1099. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1100. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/component.mjs +11 -0
  1101. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1102. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/component.mjs +16 -0
  1103. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/index.mjs +119 -0
  1104. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/component.mjs +16 -0
  1105. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/index.mjs +104 -0
  1106. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/component.mjs +11 -0
  1107. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/index.mjs +43 -0
  1108. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/component.mjs +16 -0
  1109. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1110. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/component.mjs +36 -0
  1111. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/index.mjs +642 -0
  1112. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/component.mjs +11 -0
  1113. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/index.mjs +20 -0
  1114. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/component.mjs +107 -0
  1115. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/index.mjs +829 -0
  1116. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/component.mjs +16 -0
  1117. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1118. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/component.mjs +38 -0
  1119. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/index.mjs +448 -0
  1120. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/component.mjs +11 -0
  1121. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1122. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/component.mjs +16 -0
  1123. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/index.mjs +90 -0
  1124. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InputElement/index.mjs +186 -0
  1125. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/component.mjs +16 -0
  1126. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/index.mjs +124 -0
  1127. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/component.mjs +42 -0
  1128. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1129. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/component.mjs +23 -0
  1130. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/index.mjs +174 -0
  1131. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/MenuItem/index.mjs +223 -0
  1132. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/component.mjs +11 -0
  1133. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/index.mjs +400 -0
  1134. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/component.mjs +11 -0
  1135. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/index.mjs +108 -0
  1136. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/component.mjs +32 -0
  1137. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/index.mjs +400 -0
  1138. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/component.mjs +11 -0
  1139. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/index.mjs +45 -0
  1140. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/component.mjs +11 -0
  1141. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/index.mjs +113 -0
  1142. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/component.mjs +21 -0
  1143. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1144. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/component.mjs +12 -0
  1145. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/index.mjs +333 -0
  1146. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/component.mjs +16 -0
  1147. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/index.mjs +34 -0
  1148. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/component.mjs +11 -0
  1149. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1150. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/component.mjs +23 -0
  1151. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/index.mjs +98 -0
  1152. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/component.mjs +52 -0
  1153. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/index.mjs +1131 -0
  1154. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/component.mjs +33 -0
  1155. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1156. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/component.mjs +11 -0
  1157. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/index.mjs +366 -0
  1158. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/search.mjs +194 -0
  1159. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/utils.mjs +43 -0
  1160. package/node_modules/@playcanvas/pcui/react/dist/module/src/index.mjs +39 -0
  1161. package/node_modules/@playcanvas/pcui/react/package.json +18 -0
  1162. package/node_modules/@playcanvas/pcui/react/types/Math/color-value.d.ts +3 -0
  1163. package/node_modules/@playcanvas/pcui/react/types/binding/BindingBase/index.d.ts +178 -0
  1164. package/node_modules/@playcanvas/pcui/react/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1165. package/node_modules/@playcanvas/pcui/react/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1166. package/node_modules/@playcanvas/pcui/react/types/binding/BindingTwoWay/index.d.ts +54 -0
  1167. package/node_modules/@playcanvas/pcui/react/types/binding/index.d.ts +5 -0
  1168. package/node_modules/@playcanvas/pcui/react/types/class.d.ts +17 -0
  1169. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/component.d.ts +9 -0
  1170. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/index.d.ts +140 -0
  1171. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/component.d.ts +9 -0
  1172. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/index.d.ts +41 -0
  1173. package/node_modules/@playcanvas/pcui/react/types/components/Button/component.d.ts +11 -0
  1174. package/node_modules/@playcanvas/pcui/react/types/components/Button/index.d.ts +75 -0
  1175. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/component.d.ts +11 -0
  1176. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/index.d.ts +61 -0
  1177. package/node_modules/@playcanvas/pcui/react/types/components/Code/component.d.ts +9 -0
  1178. package/node_modules/@playcanvas/pcui/react/types/components/Code/index.d.ts +33 -0
  1179. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/component.d.ts +11 -0
  1180. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/index.d.ts +99 -0
  1181. package/node_modules/@playcanvas/pcui/react/types/components/Container/component.d.ts +15 -0
  1182. package/node_modules/@playcanvas/pcui/react/types/components/Container/index.d.ts +292 -0
  1183. package/node_modules/@playcanvas/pcui/react/types/components/Divider/component.d.ts +10 -0
  1184. package/node_modules/@playcanvas/pcui/react/types/components/Divider/index.d.ts +13 -0
  1185. package/node_modules/@playcanvas/pcui/react/types/components/Element/component.d.ts +23 -0
  1186. package/node_modules/@playcanvas/pcui/react/types/components/Element/index.d.ts +671 -0
  1187. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/component.d.ts +11 -0
  1188. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/index.d.ts +152 -0
  1189. package/node_modules/@playcanvas/pcui/react/types/components/GridView/component.d.ts +14 -0
  1190. package/node_modules/@playcanvas/pcui/react/types/components/GridView/index.d.ts +103 -0
  1191. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/component.d.ts +9 -0
  1192. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/index.d.ts +82 -0
  1193. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/component.d.ts +11 -0
  1194. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/index.d.ts +71 -0
  1195. package/node_modules/@playcanvas/pcui/react/types/components/InputElement/index.d.ts +84 -0
  1196. package/node_modules/@playcanvas/pcui/react/types/components/Label/component.d.ts +11 -0
  1197. package/node_modules/@playcanvas/pcui/react/types/components/Label/index.d.ts +85 -0
  1198. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/component.d.ts +10 -0
  1199. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/index.d.ts +62 -0
  1200. package/node_modules/@playcanvas/pcui/react/types/components/Menu/component.d.ts +14 -0
  1201. package/node_modules/@playcanvas/pcui/react/types/components/Menu/index.d.ts +70 -0
  1202. package/node_modules/@playcanvas/pcui/react/types/components/MenuItem/index.d.ts +139 -0
  1203. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/component.d.ts +9 -0
  1204. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/index.d.ts +173 -0
  1205. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/component.d.ts +9 -0
  1206. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/index.d.ts +53 -0
  1207. package/node_modules/@playcanvas/pcui/react/types/components/Panel/component.d.ts +16 -0
  1208. package/node_modules/@playcanvas/pcui/react/types/components/Panel/index.d.ts +178 -0
  1209. package/node_modules/@playcanvas/pcui/react/types/components/Progress/component.d.ts +9 -0
  1210. package/node_modules/@playcanvas/pcui/react/types/components/Progress/index.d.ts +33 -0
  1211. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/component.d.ts +9 -0
  1212. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/index.d.ts +33 -0
  1213. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/component.d.ts +12 -0
  1214. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/index.d.ts +278 -0
  1215. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/component.d.ts +10 -0
  1216. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/index.d.ts +133 -0
  1217. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/component.d.ts +11 -0
  1218. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/index.d.ts +27 -0
  1219. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/component.d.ts +9 -0
  1220. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/index.d.ts +24 -0
  1221. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/component.d.ts +12 -0
  1222. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/index.d.ts +40 -0
  1223. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/component.d.ts +17 -0
  1224. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/index.d.ts +359 -0
  1225. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/component.d.ts +13 -0
  1226. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/index.d.ts +224 -0
  1227. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/component.d.ts +9 -0
  1228. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/index.d.ts +176 -0
  1229. package/node_modules/@playcanvas/pcui/react/types/components/components.d.ts +30 -0
  1230. package/node_modules/@playcanvas/pcui/react/types/components/index.d.ts +32 -0
  1231. package/node_modules/@playcanvas/pcui/react/types/helpers/search.d.ts +31 -0
  1232. package/node_modules/@playcanvas/pcui/react/types/helpers/utils.d.ts +2 -0
  1233. package/node_modules/@playcanvas/pcui/react/types/index.d.ts +4 -0
  1234. package/node_modules/@playcanvas/pcui/styles/dist/index.mjs +11 -0
  1235. package/node_modules/@playcanvas/pcui/styles/package.json +17 -0
  1236. package/node_modules/@playcanvas/pcui/types/Math/color-value.d.ts +3 -0
  1237. package/node_modules/@playcanvas/pcui/types/binding/BindingBase/index.d.ts +178 -0
  1238. package/node_modules/@playcanvas/pcui/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1239. package/node_modules/@playcanvas/pcui/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1240. package/node_modules/@playcanvas/pcui/types/binding/BindingTwoWay/index.d.ts +54 -0
  1241. package/node_modules/@playcanvas/pcui/types/binding/index.d.ts +5 -0
  1242. package/node_modules/@playcanvas/pcui/types/class.d.ts +17 -0
  1243. package/node_modules/@playcanvas/pcui/types/components/ArrayInput/index.d.ts +140 -0
  1244. package/node_modules/@playcanvas/pcui/types/components/BooleanInput/index.d.ts +41 -0
  1245. package/node_modules/@playcanvas/pcui/types/components/Button/index.d.ts +75 -0
  1246. package/node_modules/@playcanvas/pcui/types/components/Canvas/index.d.ts +61 -0
  1247. package/node_modules/@playcanvas/pcui/types/components/Code/index.d.ts +33 -0
  1248. package/node_modules/@playcanvas/pcui/types/components/ColorPicker/index.d.ts +99 -0
  1249. package/node_modules/@playcanvas/pcui/types/components/Container/index.d.ts +292 -0
  1250. package/node_modules/@playcanvas/pcui/types/components/Divider/index.d.ts +13 -0
  1251. package/node_modules/@playcanvas/pcui/types/components/Element/index.d.ts +671 -0
  1252. package/node_modules/@playcanvas/pcui/types/components/GradientPicker/index.d.ts +152 -0
  1253. package/node_modules/@playcanvas/pcui/types/components/GridView/index.d.ts +103 -0
  1254. package/node_modules/@playcanvas/pcui/types/components/GridViewItem/index.d.ts +82 -0
  1255. package/node_modules/@playcanvas/pcui/types/components/InfoBox/index.d.ts +71 -0
  1256. package/node_modules/@playcanvas/pcui/types/components/InputElement/index.d.ts +84 -0
  1257. package/node_modules/@playcanvas/pcui/types/components/Label/index.d.ts +85 -0
  1258. package/node_modules/@playcanvas/pcui/types/components/LabelGroup/index.d.ts +62 -0
  1259. package/node_modules/@playcanvas/pcui/types/components/Menu/index.d.ts +70 -0
  1260. package/node_modules/@playcanvas/pcui/types/components/MenuItem/index.d.ts +139 -0
  1261. package/node_modules/@playcanvas/pcui/types/components/NumericInput/index.d.ts +173 -0
  1262. package/node_modules/@playcanvas/pcui/types/components/Overlay/index.d.ts +53 -0
  1263. package/node_modules/@playcanvas/pcui/types/components/Panel/index.d.ts +178 -0
  1264. package/node_modules/@playcanvas/pcui/types/components/Progress/index.d.ts +33 -0
  1265. package/node_modules/@playcanvas/pcui/types/components/RadioButton/index.d.ts +33 -0
  1266. package/node_modules/@playcanvas/pcui/types/components/SelectInput/index.d.ts +278 -0
  1267. package/node_modules/@playcanvas/pcui/types/components/SliderInput/index.d.ts +133 -0
  1268. package/node_modules/@playcanvas/pcui/types/components/Spinner/index.d.ts +27 -0
  1269. package/node_modules/@playcanvas/pcui/types/components/TextAreaInput/index.d.ts +24 -0
  1270. package/node_modules/@playcanvas/pcui/types/components/TextInput/index.d.ts +40 -0
  1271. package/node_modules/@playcanvas/pcui/types/components/TreeView/index.d.ts +359 -0
  1272. package/node_modules/@playcanvas/pcui/types/components/TreeViewItem/index.d.ts +224 -0
  1273. package/node_modules/@playcanvas/pcui/types/components/VectorInput/index.d.ts +176 -0
  1274. package/node_modules/@playcanvas/pcui/types/components/index.d.ts +32 -0
  1275. package/node_modules/@playcanvas/pcui/types/helpers/search.d.ts +31 -0
  1276. package/node_modules/@playcanvas/pcui/types/helpers/utils.d.ts +2 -0
  1277. package/node_modules/@playcanvas/pcui/types/index.d.ts +20 -0
  1278. package/node_modules/babylonjs-gltf2interface/babylon.glTF2Interface.d.ts +1655 -0
  1279. package/node_modules/babylonjs-gltf2interface/license.md +71 -0
  1280. package/node_modules/babylonjs-gltf2interface/package.json +26 -0
  1281. package/package.json +31 -19
  1282. package/dist/editor-plugin-hierarchy-command.d.ts +0 -19
  1283. package/dist/editor-plugin-hierarchy-command.d.ts.map +0 -1
  1284. package/dist/editor-plugin-hierarchy-command.js +0 -119
  1285. package/dist/editor-plugin-hierarchy-command.js.map +0 -1
  1286. package/node_modules/@babel/helper-string-parser/lib/index.js.map +0 -1
  1287. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +0 -1
  1288. package/node_modules/@babel/helper-validator-identifier/lib/index.js.map +0 -1
  1289. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +0 -1
  1290. package/node_modules/@babel/parser/lib/index.js.map +0 -1
  1291. package/node_modules/@babel/types/lib/asserts/assertNode.js.map +0 -1
  1292. package/node_modules/@babel/types/lib/asserts/generated/index.js.map +0 -1
  1293. package/node_modules/@babel/types/lib/ast-types/generated/index.js.map +0 -1
  1294. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +0 -1
  1295. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +0 -1
  1296. package/node_modules/@babel/types/lib/builders/generated/index.js.map +0 -1
  1297. package/node_modules/@babel/types/lib/builders/generated/lowercase.js.map +0 -1
  1298. package/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +0 -1
  1299. package/node_modules/@babel/types/lib/builders/productions.js.map +0 -1
  1300. package/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +0 -1
  1301. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +0 -1
  1302. package/node_modules/@babel/types/lib/builders/validateNode.js.map +0 -1
  1303. package/node_modules/@babel/types/lib/clone/clone.js.map +0 -1
  1304. package/node_modules/@babel/types/lib/clone/cloneDeep.js.map +0 -1
  1305. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +0 -1
  1306. package/node_modules/@babel/types/lib/clone/cloneNode.js.map +0 -1
  1307. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +0 -1
  1308. package/node_modules/@babel/types/lib/comments/addComment.js.map +0 -1
  1309. package/node_modules/@babel/types/lib/comments/addComments.js.map +0 -1
  1310. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +0 -1
  1311. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +0 -1
  1312. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +0 -1
  1313. package/node_modules/@babel/types/lib/comments/inheritsComments.js.map +0 -1
  1314. package/node_modules/@babel/types/lib/comments/removeComments.js.map +0 -1
  1315. package/node_modules/@babel/types/lib/constants/generated/index.js.map +0 -1
  1316. package/node_modules/@babel/types/lib/constants/index.js.map +0 -1
  1317. package/node_modules/@babel/types/lib/converters/ensureBlock.js.map +0 -1
  1318. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +0 -1
  1319. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +0 -1
  1320. package/node_modules/@babel/types/lib/converters/toBlock.js.map +0 -1
  1321. package/node_modules/@babel/types/lib/converters/toComputedKey.js.map +0 -1
  1322. package/node_modules/@babel/types/lib/converters/toExpression.js.map +0 -1
  1323. package/node_modules/@babel/types/lib/converters/toIdentifier.js.map +0 -1
  1324. package/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +0 -1
  1325. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +0 -1
  1326. package/node_modules/@babel/types/lib/converters/toStatement.js.map +0 -1
  1327. package/node_modules/@babel/types/lib/converters/valueToNode.js.map +0 -1
  1328. package/node_modules/@babel/types/lib/definitions/core.js.map +0 -1
  1329. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map +0 -1
  1330. package/node_modules/@babel/types/lib/definitions/experimental.js.map +0 -1
  1331. package/node_modules/@babel/types/lib/definitions/flow.js.map +0 -1
  1332. package/node_modules/@babel/types/lib/definitions/index.js.map +0 -1
  1333. package/node_modules/@babel/types/lib/definitions/jsx.js.map +0 -1
  1334. package/node_modules/@babel/types/lib/definitions/misc.js.map +0 -1
  1335. package/node_modules/@babel/types/lib/definitions/placeholders.js.map +0 -1
  1336. package/node_modules/@babel/types/lib/definitions/typescript.js.map +0 -1
  1337. package/node_modules/@babel/types/lib/definitions/utils.js.map +0 -1
  1338. package/node_modules/@babel/types/lib/index.js.map +0 -1
  1339. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +0 -1
  1340. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +0 -1
  1341. package/node_modules/@babel/types/lib/modifications/inherits.js.map +0 -1
  1342. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +0 -1
  1343. package/node_modules/@babel/types/lib/modifications/removeProperties.js.map +0 -1
  1344. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +0 -1
  1345. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +0 -1
  1346. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map +0 -1
  1347. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +0 -1
  1348. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map +0 -1
  1349. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +0 -1
  1350. package/node_modules/@babel/types/lib/traverse/traverse.js.map +0 -1
  1351. package/node_modules/@babel/types/lib/traverse/traverseFast.js.map +0 -1
  1352. package/node_modules/@babel/types/lib/utils/deprecationWarning.js.map +0 -1
  1353. package/node_modules/@babel/types/lib/utils/inherit.js.map +0 -1
  1354. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +0 -1
  1355. package/node_modules/@babel/types/lib/utils/shallowEqual.js.map +0 -1
  1356. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +0 -1
  1357. package/node_modules/@babel/types/lib/validators/generated/index.js.map +0 -1
  1358. package/node_modules/@babel/types/lib/validators/is.js.map +0 -1
  1359. package/node_modules/@babel/types/lib/validators/isBinding.js.map +0 -1
  1360. package/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +0 -1
  1361. package/node_modules/@babel/types/lib/validators/isImmutable.js.map +0 -1
  1362. package/node_modules/@babel/types/lib/validators/isLet.js.map +0 -1
  1363. package/node_modules/@babel/types/lib/validators/isNode.js.map +0 -1
  1364. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +0 -1
  1365. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +0 -1
  1366. package/node_modules/@babel/types/lib/validators/isReferenced.js.map +0 -1
  1367. package/node_modules/@babel/types/lib/validators/isScope.js.map +0 -1
  1368. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +0 -1
  1369. package/node_modules/@babel/types/lib/validators/isType.js.map +0 -1
  1370. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +0 -1
  1371. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +0 -1
  1372. package/node_modules/@babel/types/lib/validators/isVar.js.map +0 -1
  1373. package/node_modules/@babel/types/lib/validators/matchesPattern.js.map +0 -1
  1374. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +0 -1
  1375. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +0 -1
  1376. package/node_modules/@babel/types/lib/validators/validate.js.map +0 -1
  1377. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +0 -37
  1378. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +0 -1
  1379. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +0 -451
  1380. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +0 -1
  1381. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts +0 -49
  1382. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +0 -1
  1383. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +0 -627
  1384. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +0 -1
  1385. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts +0 -52
  1386. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +0 -1
  1387. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +0 -450
  1388. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +0 -1
  1389. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +0 -21
  1390. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +0 -1
  1391. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +0 -75
  1392. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +0 -1
  1393. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +0 -5
  1394. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +0 -1
  1395. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +0 -92
  1396. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +0 -1
  1397. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +0 -63
  1398. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +0 -1
  1399. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +0 -285
  1400. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +0 -1
@@ -7,27 +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, } 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, resolveLocalEditorStatusDiagnosticLocatePlan, settleLocalEditorStatusDiagnosticRequest, resolveLocalEditorStatusDiagnostics, shouldCloseLocalEditorStatusCenter, } from './local-editor-ui-status-diagnostics.js';
29
+ import { formatLocalEditorStatusDiagnosticDetails } from './local-editor-ui-status-format.js';
28
30
  import { resolveLocalEditorBrowserAssetKind, } from './local-editor-ui-asset-kind.js';
29
- 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';
30
- 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';
31
33
  export { createLocalEditorBrowserInspectorGroupValueClipboardPayload, createLocalEditorBrowserInspectorVectorCopyPayload, parseLocalEditorBrowserInspectorGroupValueClipboardPayload, } from './local-editor-inspector-clipboard.js';
32
34
  export { LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES, isLocalEditorBrowserInspectorTransformVectorGroupPath, resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath, resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath, resolveLocalEditorBrowserInspectorVectorGroupPathFromProperties, } from './local-editor-inspector-groups.js';
33
35
  export { DEFAULT_LOCAL_EDITOR_THEME, LOCAL_EDITOR_THEME_CLASS, applyLocalEditorTheme, normalizeLocalEditorThemeName, } from './local-editor-ui-theme.js';
@@ -89,12 +91,6 @@ function isInspectorSerializedInputValue(value) {
89
91
  || typeof value === 'boolean'
90
92
  || (!!value && typeof value === 'object' && !Array.isArray(value));
91
93
  }
92
- const TRANSFORM_TOOL_ICONS = {
93
- select: 'select',
94
- move: 'move',
95
- rotate: 'rotate',
96
- scale: 'scale',
97
- };
98
94
  const TRANSFORM_SPACE_ICONS = {
99
95
  world: 'world',
100
96
  local: 'local',
@@ -163,12 +159,6 @@ const TRANSFORM_ACTION_LABELS = {
163
159
  'distribute-y': '分布 Y',
164
160
  'distribute-z': '分布 Z',
165
161
  };
166
- function createTransformToolTooltip(descriptor) {
167
- const toolLabel = descriptor.shortcut
168
- ? `${descriptor.label}工具 (${descriptor.shortcut})`
169
- : `${descriptor.label}工具`;
170
- return `${toolLabel} · ${LocalEditorShared.toTransformMouseHint(descriptor.tool)}`;
171
- }
172
162
  function createToolbarIconButton(doc, label, icon, tooltip = label, toolbarRole = 'command') {
173
163
  return LocalEditorShared.createButton(doc, label, {
174
164
  icon,
@@ -183,6 +173,42 @@ function setToolbarButtonTooltip(button, tooltip) {
183
173
  button.dataset.editorTooltip = tooltip;
184
174
  button.setAttribute('aria-label', tooltip);
185
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
+ }
186
212
  function createAgentBridgeStatusTooltip(status) {
187
213
  const label = formatAgentBridgeStatusLabel(status?.status);
188
214
  const details = [
@@ -280,7 +306,8 @@ function createInspectorPropertyInputs(input, source, lockedVectorGroups) {
280
306
  const propertyInput = createInspectorPropertyInput(input, source);
281
307
  if (!propertyInput)
282
308
  return null;
283
- const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(propertyInput.path);
309
+ const vectorAxis = resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath(propertyInput.path);
310
+ const groupPath = vectorAxis?.groupPath ?? null;
284
311
  const forceVectorLock = input.dataset.serializedForceVectorLock === 'true';
285
312
  if (!groupPath || (!forceVectorLock && !lockedVectorGroups.has(groupPath)))
286
313
  return [propertyInput];
@@ -288,9 +315,30 @@ function createInspectorPropertyInputs(input, source, lockedVectorGroups) {
288
315
  return [propertyInput];
289
316
  if (typeof propertyInput.value !== 'number' || !Number.isFinite(propertyInput.value))
290
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];
291
338
  return LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.map(axis => ({
292
339
  ...propertyInput,
293
340
  path: `${groupPath}.${axis}`,
341
+ value: scaleValues[axis],
294
342
  }));
295
343
  }
296
344
  function createInspectorVectorPastePropertyInputs(input, payload) {
@@ -332,23 +380,22 @@ function applyInspectorVectorPasteToDom(input, payload) {
332
380
  function applyInspectorLockedVectorInputToDom(input, propertyInputs) {
333
381
  if (!(input instanceof HTMLInputElement))
334
382
  return;
335
- const first = propertyInputs[0];
336
- if (!first || propertyInputs.length !== LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.length)
337
- return;
338
- if (typeof first.value !== 'number' || !Number.isFinite(first.value))
383
+ if (propertyInputs.length !== LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.length)
339
384
  return;
340
- const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(first.path);
385
+ const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(propertyInputs[0]?.path);
341
386
  if (!groupPath)
342
387
  return;
388
+ const values = new Map(propertyInputs.map(propertyInput => [propertyInput.path, propertyInput.value]));
343
389
  const group = input.closest('[data-editor-inspector-vector-group-path]');
344
390
  const fields = group
345
391
  ? Array.from(group.querySelectorAll('input[data-serialized-path]'))
346
392
  : [input];
347
- const formatted = LocalEditorPanels.formatLocalEditorBrowserInspectorNumberValue(first.value);
348
393
  for (const field of fields) {
349
- if (resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(field.dataset.serializedPath) === groupPath) {
350
- field.value = formatted;
351
- }
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);
352
399
  }
353
400
  }
354
401
  function readRenderingInputValue(input, source) {
@@ -763,6 +810,9 @@ function consumeLocalEditorKeyboardCommittedValue(input) {
763
810
  delete input.dataset.editorKeyboardCommittedValue;
764
811
  return true;
765
812
  }
813
+ function hasLocalEditorUiKeyboardCommitPending(input) {
814
+ return input.dataset.editorUiKeyboardCommitPending === 'true';
815
+ }
766
816
  function isLocalEditorKeyboardCommitEvent(event, input) {
767
817
  if (event.key !== 'Enter' || event.isComposing)
768
818
  return false;
@@ -778,6 +828,7 @@ function commitLocalEditorInspectorInput(input, callbacks, lockedInspectorVector
778
828
  const propertyInputs = createInspectorPropertyInputs(input, 'input', lockedInspectorVectorGroups);
779
829
  if (!propertyInputs)
780
830
  return false;
831
+ delete input.dataset.editorUiKeyboardCommitPending;
781
832
  applyInspectorLockedVectorInputToDom(input, propertyInputs);
782
833
  markLocalEditorKeyboardCommittedValue(input);
783
834
  for (const propertyInput of propertyInputs)
@@ -1174,7 +1225,7 @@ const PREFAB_IMPORT_STATS_METRICS = [
1174
1225
  ];
1175
1226
  function createSceneFrameRateOverlay(doc) {
1176
1227
  const root = doc.createElement('div');
1177
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1228
+ root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');
1178
1229
  root.dataset.editorSceneFrameRateOverlay = 'true';
1179
1230
  root.style.cssText = [
1180
1231
  'position:absolute',
@@ -1264,7 +1315,7 @@ function renderSceneFrameRateOverlay(overlay, stats) {
1264
1315
  }
1265
1316
  function createPerformanceMonitorOverlay(doc) {
1266
1317
  const root = doc.createElement('section');
1267
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1318
+ root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');
1268
1319
  root.dataset.editorPerformanceMonitorOverlay = 'true';
1269
1320
  root.setAttribute('aria-label', '编辑器性能监控');
1270
1321
  root.style.cssText = [
@@ -1392,7 +1443,7 @@ function renderPerformanceMonitorOverlay(overlay, stats, open) {
1392
1443
  }
1393
1444
  function createPrefabImportStatsOverlay(doc) {
1394
1445
  const root = doc.createElement('section');
1395
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1446
+ root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');
1396
1447
  root.dataset.editorPrefabImportStatsOverlay = 'true';
1397
1448
  root.setAttribute('aria-label', 'Prefab import diagnostics');
1398
1449
  root.style.cssText = [
@@ -1503,7 +1554,7 @@ function renderPrefabImportStatsOverlay(overlay, stage) {
1503
1554
  }
1504
1555
  function createPrefabStagePreviewLayout(doc) {
1505
1556
  const root = doc.createElement('section');
1506
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1557
+ root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-prefab-stage-layout');
1507
1558
  root.dataset.editorPrefabStagePreviewLayout = 'true';
1508
1559
  root.setAttribute('aria-label', 'Prefab stage preview layout');
1509
1560
  root.style.cssText = [
@@ -1530,215 +1581,8 @@ function createPrefabStagePreviewLayout(doc) {
1530
1581
  'overflow:hidden',
1531
1582
  'pointer-events:none',
1532
1583
  ].join(';');
1533
- const comparisonColumn = doc.createElement('aside');
1534
- comparisonColumn.dataset.editorPrefabStageComparisonColumn = 'true';
1535
- comparisonColumn.setAttribute('aria-label', 'Prefab comparison previews');
1536
- comparisonColumn.style.cssText = [
1537
- 'position:absolute',
1538
- 'top:0',
1539
- 'right:0',
1540
- 'bottom:0',
1541
- `width:${LOCAL_EDITOR_PREFAB_COMPARISON_COLUMN_WIDTH_PX}px`,
1542
- 'display:none',
1543
- 'flex-direction:column',
1544
- 'box-sizing:border-box',
1545
- 'gap:10px',
1546
- 'padding:10px',
1547
- 'border-left:1px solid color-mix(in srgb, var(--fps-editor-divider) 82%, transparent)',
1548
- 'background:transparent',
1549
- 'box-shadow:none',
1550
- 'pointer-events:auto',
1551
- 'overflow:hidden',
1552
- ].join(';');
1553
- root.append(mainRegion, comparisonColumn);
1554
- return { root, mainRegion, comparisonColumn };
1555
- }
1556
- function createPrefabComparisonPreviewOverlay(doc) {
1557
- const root = doc.createElement('section');
1558
- root.classList.add(LOCAL_EDITOR_THEME_CLASS);
1559
- root.dataset.editorPrefabComparisonPreviewOverlay = 'true';
1560
- root.setAttribute('aria-label', 'Prefab clone and InstanceMesh comparison previews');
1561
- root.style.cssText = [
1562
- 'display:none',
1563
- 'flex:1 1 auto',
1564
- 'min-height:0',
1565
- 'width:100%',
1566
- 'box-sizing:border-box',
1567
- 'grid-template-rows:minmax(0,1fr) minmax(0,1fr)',
1568
- 'gap:10px',
1569
- 'overflow:hidden',
1570
- 'font-family:var(--fps-editor-font)',
1571
- 'pointer-events:auto',
1572
- ].join(';');
1573
- return { root, cards: new Map() };
1574
- }
1575
- function renderPrefabComparisonPreviewOverlay(overlay, stage) {
1576
- const previews = stage?.comparisonPreviews ?? [];
1577
- if (!stage || previews.length === 0) {
1578
- overlay.root.style.display = 'none';
1579
- return;
1580
- }
1581
- overlay.root.style.display = 'grid';
1582
- const visibleIds = new Set();
1583
- for (const preview of previews) {
1584
- const card = getOrCreatePrefabComparisonPreviewCard(overlay, preview);
1585
- visibleIds.add(preview.id);
1586
- card.root.style.display = 'flex';
1587
- card.title.textContent = preview.label;
1588
- card.statusLabel.textContent = formatLocalEditorPrefabStageComparisonPreviewStatus(preview.status);
1589
- card.statusLabel.style.color = getPrefabComparisonPreviewStatusColor(preview.status);
1590
- card.surface.dataset.editorPrefabComparisonPreviewId = preview.id;
1591
- card.surface.dataset.editorPrefabComparisonPreviewSurface = preview.projectionNodeId;
1592
- card.surface.dataset.editorPrefabComparisonPreviewStatus = preview.status;
1593
- card.surface.style.background = preview.status === 'ready'
1594
- ? 'transparent'
1595
- : 'color-mix(in srgb, var(--fps-editor-field) 74%, transparent)';
1596
- card.surface.textContent = preview.status === 'ready'
1597
- ? ''
1598
- : preview.status === 'loading'
1599
- ? 'Preview loading'
1600
- : 'Preview unavailable';
1601
- card.root.title = [
1602
- `${preview.label}: ${preview.status}`,
1603
- `mode: ${preview.mode}`,
1604
- `projection: ${preview.projectionNodeId}`,
1605
- ].join(' | ');
1606
- }
1607
- for (const [id, card] of overlay.cards) {
1608
- if (!visibleIds.has(id))
1609
- card.root.style.display = 'none';
1610
- }
1611
- }
1612
- function readPrefabComparisonPreviewSurfaces(overlay) {
1613
- if (overlay.root.style.display === 'none')
1614
- return [];
1615
- const surfaces = [];
1616
- for (const [previewId, card] of overlay.cards) {
1617
- if (card.root.style.display === 'none')
1618
- continue;
1619
- const projectionNodeId = card.surface.dataset.editorPrefabComparisonPreviewSurface;
1620
- if (!projectionNodeId)
1621
- continue;
1622
- const rect = card.surface.getBoundingClientRect();
1623
- if (rect.width < 1 || rect.height < 1)
1624
- continue;
1625
- surfaces.push({
1626
- previewId,
1627
- projectionNodeId,
1628
- element: card.surface,
1629
- rect,
1630
- });
1631
- }
1632
- return surfaces;
1633
- }
1634
- function findPrefabComparisonPreviewSurface(target) {
1635
- return target instanceof HTMLElement
1636
- ? target.closest('[data-editor-prefab-comparison-preview-surface]')
1637
- : null;
1638
- }
1639
- function readPrefabComparisonPreviewSurfaceId(surface) {
1640
- return surface.dataset.editorPrefabComparisonPreviewId
1641
- ?? surface.closest('[data-editor-prefab-comparison-preview]')?.dataset.editorPrefabComparisonPreview
1642
- ?? null;
1643
- }
1644
- function isPrefabComparisonPreviewSurfaceReady(surface) {
1645
- return surface.dataset.editorPrefabComparisonPreviewStatus === 'ready';
1646
- }
1647
- function getOrCreatePrefabComparisonPreviewCard(overlay, preview) {
1648
- const existing = overlay.cards.get(preview.id);
1649
- if (existing)
1650
- return existing;
1651
- const doc = overlay.root.ownerDocument;
1652
- const root = doc.createElement('article');
1653
- root.dataset.editorPrefabComparisonPreview = preview.id;
1654
- root.style.cssText = [
1655
- 'display:flex',
1656
- 'flex-direction:column',
1657
- 'min-width:0',
1658
- 'min-height:0',
1659
- 'flex:1 1 0',
1660
- 'box-sizing:border-box',
1661
- 'padding:8px',
1662
- 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',
1663
- 'border-radius:6px',
1664
- 'background:transparent',
1665
- 'box-shadow:none',
1666
- 'color:var(--fps-editor-text)',
1667
- 'pointer-events:auto',
1668
- 'overflow:hidden',
1669
- ].join(';');
1670
- const header = doc.createElement('div');
1671
- header.style.cssText = [
1672
- 'display:flex',
1673
- 'align-items:center',
1674
- 'justify-content:space-between',
1675
- 'gap:8px',
1676
- 'margin-bottom:7px',
1677
- 'padding:6px 8px',
1678
- 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 74%, transparent)',
1679
- 'border-radius:5px',
1680
- 'background:color-mix(in srgb, var(--fps-editor-chrome) 86%, transparent)',
1681
- 'box-shadow:0 6px 14px color-mix(in srgb, #000 18%, transparent)',
1682
- ].join(';');
1683
- const title = doc.createElement('div');
1684
- title.textContent = preview.label;
1685
- title.style.cssText = [
1686
- 'min-width:0',
1687
- 'overflow:hidden',
1688
- 'text-overflow:ellipsis',
1689
- 'white-space:nowrap',
1690
- 'color:var(--fps-editor-text-strong)',
1691
- 'font-size:12px',
1692
- 'line-height:1.2',
1693
- 'font-weight:900',
1694
- ].join(';');
1695
- const statusLabel = doc.createElement('span');
1696
- statusLabel.textContent = 'UNAVAILABLE';
1697
- statusLabel.style.cssText = [
1698
- 'flex:0 0 auto',
1699
- 'padding:2px 5px',
1700
- 'border:1px solid var(--fps-editor-border-soft)',
1701
- 'border-radius:4px',
1702
- 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',
1703
- 'font-size:9px',
1704
- 'line-height:1',
1705
- 'font-weight:900',
1706
- ].join(';');
1707
- header.append(title, statusLabel);
1708
- const surface = doc.createElement('div');
1709
- surface.style.cssText = [
1710
- 'display:flex',
1711
- 'flex:1 1 auto',
1712
- 'align-items:center',
1713
- 'justify-content:center',
1714
- 'width:100%',
1715
- 'min-height:0',
1716
- 'box-sizing:border-box',
1717
- 'border:1px solid color-mix(in srgb, var(--fps-editor-border-soft) 84%, transparent)',
1718
- 'border-radius:4px',
1719
- 'background:transparent',
1720
- 'overflow:hidden',
1721
- 'color:var(--fps-editor-muted)',
1722
- 'font-size:10px',
1723
- 'font-weight:800',
1724
- 'text-align:center',
1725
- 'touch-action:none',
1726
- 'user-select:none',
1727
- 'cursor:grab',
1728
- ].join(';');
1729
- root.append(header, surface);
1730
- overlay.root.appendChild(root);
1731
- const card = { root, title, statusLabel, surface };
1732
- overlay.cards.set(preview.id, card);
1733
- return card;
1734
- }
1735
- function getPrefabComparisonPreviewStatusColor(status) {
1736
- const tone = resolveLocalEditorPrefabStageComparisonPreviewTone(status);
1737
- return tone === 'success'
1738
- ? 'var(--fps-editor-success)'
1739
- : tone === 'warning'
1740
- ? 'var(--fps-editor-warn)'
1741
- : 'var(--fps-editor-danger-strong)';
1584
+ root.append(mainRegion);
1585
+ return { root, mainRegion };
1742
1586
  }
1743
1587
  function formatPrefabImportStatsStatusLabel(status) {
1744
1588
  return status === 'ready' ? 'READY' : status === 'loading' ? 'LOADING' : 'MISSING';
@@ -2379,8 +2223,22 @@ export function resolveAssetBrowserDoubleClickAction(state, asset) {
2379
2223
  return 'asset.edit-prefab';
2380
2224
  return null;
2381
2225
  }
2382
- function copyTextToClipboard(win, text) {
2383
- 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
+ });
2384
2242
  }
2385
2243
  function readInspectorAssetPickerOptions(property) {
2386
2244
  const title = readControlOptionString(property, 'pickerTitle') || property.label;
@@ -2536,6 +2394,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2536
2394
  const root = options.root ?? doc.body;
2537
2395
  const callbacks = options.callbacks ?? {};
2538
2396
  const localTestActionsEnabled = options.localTestActions === true;
2397
+ const gameModeEntryVisible = options.gameModeEntryVisible !== false;
2539
2398
  ensureLocalEditorTheme(doc);
2540
2399
  let activeTheme = normalizeLocalEditorThemeName(options.theme);
2541
2400
  const inputRouter = createLocalEditorWorkbenchInputRouter(doc, {
@@ -2559,34 +2418,19 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2559
2418
  });
2560
2419
  construction.addCleanup('tooltip-controller', () => tooltipController.dispose());
2561
2420
  let currentState = null;
2421
+ let pendingStatusDiagnosticRequest = null;
2562
2422
  let inspectorFilter = '';
2563
2423
  const lockedInspectorVectorGroups = new Set();
2564
2424
  let assetBrowserTab = 'all';
2565
- 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);
2566
2430
  const panelRegistry = createLocalEditorPanelRegistry(workbenchLayout);
2567
2431
  const hostChrome = doc.createElement('div');
2568
2432
  hostChrome.dataset.editorWorkbenchRegion = 'top-bar';
2569
- hostChrome.className = LOCAL_EDITOR_THEME_CLASS;
2570
- hostChrome.style.cssText = [
2571
- 'position:fixed',
2572
- 'top:12px',
2573
- 'left:50%',
2574
- 'transform:translateX(-50%)',
2575
- 'z-index:2147483640',
2576
- 'display:none',
2577
- 'align-items:center',
2578
- 'gap:8px',
2579
- 'height:34px',
2580
- 'padding:0 8px',
2581
- 'border:1px solid var(--fps-editor-border)',
2582
- 'border-radius:3px',
2583
- 'background:var(--fps-editor-chrome)',
2584
- 'box-shadow:var(--fps-editor-shadow-panel)',
2585
- 'font-family:var(--fps-editor-font)',
2586
- 'color:var(--fps-editor-text)',
2587
- 'font-size:12px',
2588
- 'pointer-events:auto',
2589
- ].join(';');
2433
+ hostChrome.className = `${LOCAL_EDITOR_THEME_CLASS} fps-editor-ui-host-chrome`;
2590
2434
  const hostModeLabel = doc.createElement('span');
2591
2435
  hostModeLabel.textContent = '本地宿主 · 游戏模式';
2592
2436
  hostModeLabel.style.cssText = [
@@ -2622,7 +2466,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2622
2466
  const localTestButton = createToolbarIconButton(doc, '本地测试', 'execute', '打开本地测试操作');
2623
2467
  localTestButton.dataset.editorLocalTestToggle = 'true';
2624
2468
  const localTestMenu = doc.createElement('div');
2625
- localTestMenu.classList.add(LOCAL_EDITOR_THEME_CLASS);
2469
+ localTestMenu.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2626
2470
  localTestMenu.dataset.editorLocalTestMenu = 'true';
2627
2471
  localTestMenu.style.cssText = [
2628
2472
  'position:fixed',
@@ -2644,6 +2488,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2644
2488
  localTestMenu.appendChild(button);
2645
2489
  }
2646
2490
  const localTestGroup = doc.createElement('div');
2491
+ localTestGroup.className = 'fps-editor-ui-toolbar-group';
2647
2492
  localTestGroup.style.cssText = [
2648
2493
  `display:${localTestActionsEnabled ? 'flex' : 'none'}`,
2649
2494
  'align-items:center',
@@ -2653,8 +2498,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2653
2498
  const undoButton = createToolbarIconButton(doc, '撤销', 'undo', '撤销');
2654
2499
  const redoButton = createToolbarIconButton(doc, '重做', 'redo', '重做');
2655
2500
  let helpOpen = false;
2501
+ let editorStatusCenterOpen = false;
2656
2502
  let performanceMonitorOpen = false;
2657
- let prefabComparisonPreviewOpen = true;
2658
2503
  let assetPreviewOpen = false;
2659
2504
  let previewedAsset = null;
2660
2505
  let assetPreviewMode = 'preview';
@@ -2662,15 +2507,66 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2662
2507
  let assetPickerFilter = '';
2663
2508
  let assetPickerInput = null;
2664
2509
  let assetPickerProperty = null;
2665
- let prefabComparisonPreviewDrag = null;
2510
+ let hierarchyOperationInputRequest = null;
2666
2511
  let prefabStageMainWorkbenchLayoutSnapshot = null;
2667
- const editorStatusButton = createToolbarIconButton(doc, '编辑器状态', 'status', '编辑器状态');
2512
+ const editorStatusButton = createToolbarIconButton(doc, '验证中心', 'status', '编辑器状态与验证中心');
2668
2513
  editorStatusButton.dataset.editorStatusButton = 'true';
2669
- editorStatusButton.style.cursor = 'help';
2514
+ editorStatusButton.dataset.editorStatusToggle = 'true';
2515
+ editorStatusButton.setAttribute('aria-expanded', 'false');
2516
+ const editorStatusCenter = doc.createElement('div');
2517
+ editorStatusCenter.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover', 'fps-editor-ui-status-center');
2518
+ editorStatusCenter.dataset.editorStatusCenter = 'true';
2519
+ editorStatusCenter.style.cssText = [
2520
+ 'position:fixed',
2521
+ 'z-index:2147483642',
2522
+ 'display:none',
2523
+ 'flex-direction:column',
2524
+ 'gap:8px',
2525
+ 'width:min(440px,calc(100vw - 16px))',
2526
+ 'max-height:min(520px,calc(100vh - 56px))',
2527
+ 'padding:10px',
2528
+ 'border:1px solid var(--fps-editor-border)',
2529
+ 'border-radius:4px',
2530
+ 'background:var(--fps-editor-panel)',
2531
+ 'box-shadow:var(--fps-editor-shadow-popover)',
2532
+ 'overflow:hidden',
2533
+ 'pointer-events:auto',
2534
+ ].join(';');
2535
+ const editorStatusCenterHeader = doc.createElement('div');
2536
+ editorStatusCenterHeader.className = 'fps-editor-ui-surface-header';
2537
+ const editorStatusCenterTitle = doc.createElement('div');
2538
+ editorStatusCenterTitle.className = 'fps-editor-ui-surface-title';
2539
+ editorStatusCenterTitle.textContent = '验证中心';
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';
2543
+ const editorStatusCopyAllButton = LocalEditorShared.createButton(doc, '复制全部', { icon: 'copy' });
2544
+ editorStatusCopyAllButton.dataset.editorStatusCopyAll = 'true';
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);
2551
+ editorStatusCenterHeader.appendChild(editorStatusCenterTitle);
2552
+ editorStatusCenterHeader.appendChild(editorStatusCenterActions);
2553
+ const editorStatusCenterSummary = doc.createElement('div');
2554
+ editorStatusCenterSummary.className = 'fps-editor-ui-status-summary';
2555
+ editorStatusCenterSummary.dataset.editorStatusSummary = 'true';
2556
+ editorStatusCenterSummary.style.cssText = 'font-size:11px;line-height:1.45;color:var(--fps-editor-muted-strong)';
2557
+ const editorStatusCenterList = doc.createElement('div');
2558
+ editorStatusCenterList.className = 'fps-editor-ui-status-list';
2559
+ editorStatusCenterList.dataset.editorStatusList = 'true';
2560
+ editorStatusCenterList.style.cssText = 'display:flex;flex-direction:column;gap:7px;overflow:auto;min-height:0';
2561
+ editorStatusCenter.appendChild(editorStatusCenterHeader);
2562
+ editorStatusCenter.appendChild(editorStatusCenterSummary);
2563
+ editorStatusCenter.appendChild(editorStatusCenterList);
2670
2564
  const agentBridgeStatusButton = createToolbarIconButton(doc, 'Agent Bridge 状态', 'status', 'Agent Bridge 状态');
2671
2565
  agentBridgeStatusButton.dataset.editorAgentBridgeStatusButton = 'true';
2672
2566
  agentBridgeStatusButton.style.cursor = 'help';
2673
2567
  const workbench = createLocalEditorWorkbench(doc);
2568
+ const editorUiLayerHost = createEditorUiLayerHost(doc, workbench.root);
2569
+ construction.addCleanup('editor-ui-layer-host', () => editorUiLayerHost.dispose());
2674
2570
  const leftDockTabs = doc.createElement('div');
2675
2571
  const hierarchyPanel = createWorkbenchPanelContent(doc);
2676
2572
  const assetPanel = workbench.bottomDock;
@@ -2688,10 +2584,48 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2688
2584
  workbench.rightDock.appendChild(pluginsPanel);
2689
2585
  construction.appendRootChild(workbench.root);
2690
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
+ });
2691
2614
  const workbenchLayoutController = createLocalEditorWorkbenchLayoutController(doc, workbench, {
2692
- 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) {
2693
2623
  if (currentState?.mode === 'editor' && currentState.prefabStage) {
2694
2624
  applyPrefabStageWorkbenchLayoutOverride(layout);
2625
+ return;
2626
+ }
2627
+ if (!dockDisplay.rightDockVisible) {
2628
+ rightDockFormalSurfaceVisibility.apply(false);
2695
2629
  }
2696
2630
  },
2697
2631
  });
@@ -2706,6 +2640,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2706
2640
  let lastRenderedSelectedAssetId;
2707
2641
  const sceneToolOverlay = createSceneHeaderToolbar(doc);
2708
2642
  const sceneTitle = doc.createElement('div');
2643
+ sceneTitle.className = 'fps-editor-ui-surface-title';
2709
2644
  sceneTitle.textContent = 'Preview';
2710
2645
  sceneTitle.style.cssText = [
2711
2646
  'height:100%',
@@ -2720,8 +2655,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2720
2655
  'white-space:nowrap',
2721
2656
  ].join(';');
2722
2657
  const sceneQuickActions = doc.createElement('div');
2658
+ sceneQuickActions.className = 'fps-editor-ui-toolbar-group';
2659
+ sceneQuickActions.dataset.editorUiFirst = 'true';
2723
2660
  sceneQuickActions.style.cssText = 'display:flex;align-items:center;gap:4px';
2724
2661
  const sceneUtilityActions = doc.createElement('div');
2662
+ sceneUtilityActions.className = 'fps-editor-ui-toolbar-group';
2725
2663
  sceneUtilityActions.style.cssText = [
2726
2664
  'display:flex',
2727
2665
  'align-items:center',
@@ -2730,6 +2668,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2730
2668
  'border-left:1px solid var(--fps-editor-divider)',
2731
2669
  ].join(';');
2732
2670
  const toolGroup = doc.createElement('div');
2671
+ toolGroup.className = 'fps-editor-ui-toolbar-group';
2733
2672
  toolGroup.style.cssText = [
2734
2673
  'display:flex',
2735
2674
  'align-items:center',
@@ -2738,21 +2677,40 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2738
2677
  'border-left:1px solid var(--fps-editor-divider)',
2739
2678
  ].join(';');
2740
2679
  const toolButtons = new Map();
2741
- const transformToolDescriptors = Object.values(DEFAULT_EDITOR_TRANSFORM_TOOL_DESCRIPTORS);
2742
- for (const descriptor of transformToolDescriptors) {
2743
- const tooltip = createTransformToolTooltip(descriptor);
2744
- const button = LocalEditorShared.createButton(doc, descriptor.label, {
2745
- icon: TRANSFORM_TOOL_ICONS[descriptor.tool],
2746
- labelMode: 'icon-only',
2747
- variant: 'toolbar-icon',
2748
- tooltip,
2749
- ariaLabel: tooltip,
2750
- });
2751
- button.dataset.transformTool = descriptor.tool;
2752
- toolButtons.set(descriptor.tool, button);
2753
- toolGroup.appendChild(button);
2754
- }
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
+ };
2755
2712
  const spaceGroup = doc.createElement('div');
2713
+ spaceGroup.className = 'fps-editor-ui-toolbar-group';
2756
2714
  spaceGroup.style.cssText = [
2757
2715
  'display:flex',
2758
2716
  'align-items:center',
@@ -2769,6 +2727,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2769
2727
  spaceGroup.appendChild(button);
2770
2728
  }
2771
2729
  const snapGroup = doc.createElement('div');
2730
+ snapGroup.className = 'fps-editor-ui-toolbar-group';
2772
2731
  snapGroup.style.cssText = [
2773
2732
  'display:flex',
2774
2733
  'align-items:center',
@@ -2779,7 +2738,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2779
2738
  const snapButton = createToolbarIconButton(doc, '吸附设置', 'snap', '吸附设置', 'settings');
2780
2739
  snapButton.dataset.transformSnapToggle = 'true';
2781
2740
  const snapSettingsPopover = doc.createElement('div');
2782
- snapSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
2741
+ snapSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2783
2742
  snapSettingsPopover.dataset.transformSnapSettingsPopover = 'true';
2784
2743
  snapSettingsPopover.setAttribute('role', 'dialog');
2785
2744
  snapSettingsPopover.setAttribute('aria-label', '吸附设置');
@@ -2861,6 +2820,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2861
2820
  }
2862
2821
  snapGroup.appendChild(snapButton);
2863
2822
  const placementGroup = doc.createElement('div');
2823
+ placementGroup.className = 'fps-editor-ui-toolbar-group';
2864
2824
  placementGroup.style.cssText = [
2865
2825
  'display:flex',
2866
2826
  'align-items:center',
@@ -2871,7 +2831,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2871
2831
  const placementButton = createToolbarIconButton(doc, '放置模式', PLACEMENT_MODE_ICONS.off, '放置模式', 'settings');
2872
2832
  placementButton.dataset.placementModeToggle = 'true';
2873
2833
  const placementSettingsPopover = doc.createElement('div');
2874
- placementSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
2834
+ placementSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2875
2835
  placementSettingsPopover.dataset.placementSettingsPopover = 'true';
2876
2836
  placementSettingsPopover.setAttribute('role', 'dialog');
2877
2837
  placementSettingsPopover.setAttribute('aria-label', '放置模式');
@@ -2903,6 +2863,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2903
2863
  }));
2904
2864
  placementGroup.appendChild(placementButton);
2905
2865
  const actionGroup = doc.createElement('div');
2866
+ actionGroup.className = 'fps-editor-ui-toolbar-group';
2906
2867
  actionGroup.style.cssText = [
2907
2868
  'display:flex',
2908
2869
  'align-items:center',
@@ -2913,7 +2874,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2913
2874
  const transformActionButton = createToolbarIconButton(doc, '对齐与分布', 'arrange', '对齐与分布', 'settings');
2914
2875
  transformActionButton.dataset.transformActionToggle = 'true';
2915
2876
  const transformActionPopover = doc.createElement('div');
2916
- transformActionPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
2877
+ transformActionPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2917
2878
  transformActionPopover.dataset.transformActionPopover = 'true';
2918
2879
  transformActionPopover.setAttribute('role', 'dialog');
2919
2880
  transformActionPopover.setAttribute('aria-label', '对齐与分布');
@@ -2968,6 +2929,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2968
2929
  }
2969
2930
  actionGroup.appendChild(transformActionButton);
2970
2931
  const staticShadowBakeGroup = doc.createElement('div');
2932
+ staticShadowBakeGroup.className = 'fps-editor-ui-toolbar-group';
2971
2933
  staticShadowBakeGroup.style.cssText = [
2972
2934
  'display:none',
2973
2935
  'align-items:center',
@@ -2980,7 +2942,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
2980
2942
  staticShadowBakeButton.dataset.editorRenderingAction = STATIC_SHADOW_BAKE_ACTION_ID;
2981
2943
  staticShadowBakeGroup.appendChild(staticShadowBakeButton);
2982
2944
  const staticShadowBakePopover = doc.createElement('div');
2983
- staticShadowBakePopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
2945
+ staticShadowBakePopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
2984
2946
  staticShadowBakePopover.dataset.editorToolbarStaticShadowBakePopover = 'true';
2985
2947
  staticShadowBakePopover.setAttribute('role', 'dialog');
2986
2948
  staticShadowBakePopover.setAttribute('aria-label', '静态阴影烘焙进度');
@@ -3068,23 +3030,22 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3068
3030
  performanceMonitorButton.dataset.performanceMonitorToggle = 'true';
3069
3031
  const gridToggleButton = createToolbarIconButton(doc, '网格', 'grid', '显示 / 隐藏 Scene View 网格');
3070
3032
  gridToggleButton.dataset.editorGridToggle = 'true';
3071
- const prefabComparisonPreviewButton = createToolbarIconButton(doc, '对比预览', 'eye', 'Compare Previews (Shift+P)', 'toggle');
3072
- prefabComparisonPreviewButton.dataset.prefabComparisonPreviewToggle = 'true';
3073
3033
  const sceneHelpButton = createToolbarIconButton(doc, '快捷键', 'help', '快捷键与操作说明');
3074
3034
  sceneQuickActions.appendChild(localTestGroup);
3075
- const prefabStageBackButton = createToolbarIconButton(doc, '返回场景', 'chevron-right', '返回主场景');
3076
- prefabStageBackButton.dataset.editorPrefabStageBack = 'true';
3077
- prefabStageBackButton.style.display = 'none';
3078
- 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);
3079
3040
  sceneQuickActions.appendChild(undoButton);
3080
3041
  sceneQuickActions.appendChild(redoButton);
3081
3042
  sceneQuickActions.appendChild(dirtyBadge);
3082
3043
  sceneUtilityActions.appendChild(performanceMonitorButton);
3083
3044
  sceneUtilityActions.appendChild(gridToggleButton);
3084
- sceneUtilityActions.appendChild(prefabComparisonPreviewButton);
3085
3045
  sceneUtilityActions.appendChild(themeToggleButton);
3086
3046
  sceneUtilityActions.appendChild(sceneHelpButton);
3087
3047
  const cameraPreviewGroup = doc.createElement('div');
3048
+ cameraPreviewGroup.className = 'fps-editor-ui-toolbar-group';
3088
3049
  cameraPreviewGroup.style.cssText = [
3089
3050
  'display:flex',
3090
3051
  'align-items:center',
@@ -3096,6 +3057,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3096
3057
  sceneCameraButton.dataset.sceneCameraPreviewToggle = 'true';
3097
3058
  cameraPreviewGroup.appendChild(sceneCameraButton);
3098
3059
  const viewportToolsGroup = doc.createElement('div');
3060
+ viewportToolsGroup.className = 'fps-editor-ui-toolbar-group';
3099
3061
  viewportToolsGroup.style.cssText = [
3100
3062
  'display:flex',
3101
3063
  'align-items:center',
@@ -3116,6 +3078,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3116
3078
  const markerVisibilityButton = createToolbarIconButton(doc, '标记视图', 'view-overlay', '隐藏标记与关系线', 'toggle');
3117
3079
  markerVisibilityButton.dataset.viewportMarkerVisibilityToggle = 'true';
3118
3080
  viewportToolsGroup.appendChild(markerVisibilityButton);
3081
+ const showAllPrefabMarkersButton = createToolbarIconButton(doc, '全部 Prefab 标记', 'view-overlay', '显示所有 Prefab 实例的标记', 'toggle');
3082
+ showAllPrefabMarkersButton.dataset.viewportShowAllPrefabMarkersToggle = 'true';
3083
+ viewportToolsGroup.appendChild(showAllPrefabMarkersButton);
3119
3084
  const overlaySettingsButton = createToolbarIconButton(doc, '视口信息层设置', 'view-overlay', '视口信息层设置', 'settings');
3120
3085
  overlaySettingsButton.dataset.viewportOverlaySettingsToggle = 'true';
3121
3086
  viewportToolsGroup.appendChild(overlaySettingsButton);
@@ -3126,7 +3091,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3126
3091
  clearMeasurementButton.dataset.viewportMeasurementClear = 'true';
3127
3092
  viewportToolsGroup.appendChild(clearMeasurementButton);
3128
3093
  const overlaySettingsPopover = doc.createElement('div');
3129
- overlaySettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);
3094
+ overlaySettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
3130
3095
  overlaySettingsPopover.dataset.viewportOverlaySettingsPopover = 'true';
3131
3096
  overlaySettingsPopover.setAttribute('role', 'dialog');
3132
3097
  overlaySettingsPopover.setAttribute('aria-label', '视口信息层设置');
@@ -3170,7 +3135,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3170
3135
  toolbarOverflowButton.dataset.editorToolbarOverflowToggle = 'true';
3171
3136
  toolbarOverflowButton.style.display = 'none';
3172
3137
  const toolbarOverflowMenu = doc.createElement('div');
3173
- toolbarOverflowMenu.classList.add(LOCAL_EDITOR_THEME_CLASS);
3138
+ toolbarOverflowMenu.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');
3174
3139
  toolbarOverflowMenu.dataset.editorToolbarOverflowMenu = 'true';
3175
3140
  toolbarOverflowMenu.style.cssText = [
3176
3141
  'position:fixed',
@@ -3193,111 +3158,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3193
3158
  const sceneFrameRateOverlay = createSceneFrameRateOverlay(doc);
3194
3159
  const performanceMonitorOverlay = createPerformanceMonitorOverlay(doc);
3195
3160
  const prefabImportStatsOverlay = createPrefabImportStatsOverlay(doc);
3196
- const prefabComparisonPreviewOverlay = createPrefabComparisonPreviewOverlay(doc);
3197
3161
  const prefabStagePreviewLayout = createPrefabStagePreviewLayout(doc);
3198
3162
  prefabImportStatsOverlay.root.style.position = 'absolute';
3199
3163
  prefabImportStatsOverlay.root.style.top = '10px';
3200
3164
  prefabImportStatsOverlay.root.style.right = '14px';
3201
- prefabComparisonPreviewOverlay.root.style.height = '100%';
3202
3165
  prefabStagePreviewLayout.mainRegion.appendChild(prefabImportStatsOverlay.root);
3203
- prefabStagePreviewLayout.comparisonColumn.appendChild(prefabComparisonPreviewOverlay.root);
3204
- const emitPrefabComparisonPreviewInteraction = (input) => {
3205
- if (currentState?.mode !== 'editor' || !currentState.prefabStage)
3206
- return;
3207
- callbacks.onPrefabComparisonPreviewInteraction?.(input);
3208
- };
3209
- const endPrefabComparisonPreviewDrag = (pointerId) => {
3210
- const drag = prefabComparisonPreviewDrag;
3211
- if (!drag || (pointerId != null && drag.pointerId !== pointerId))
3212
- return;
3213
- try {
3214
- if (!drag.surface.hasPointerCapture || drag.surface.hasPointerCapture(drag.pointerId)) {
3215
- drag.surface.releasePointerCapture?.(drag.pointerId);
3216
- }
3217
- }
3218
- catch {
3219
- // Pointer capture may already be released by the browser when this cleanup runs.
3220
- }
3221
- drag.surface.style.cursor = 'grab';
3222
- prefabComparisonPreviewDrag = null;
3223
- };
3224
- const onPrefabComparisonPreviewPointerDown = (event) => {
3225
- if (event.button !== 0 || currentState?.mode !== 'editor' || !currentState.prefabStage)
3226
- return;
3227
- const surface = findPrefabComparisonPreviewSurface(event.target);
3228
- if (!surface || !isPrefabComparisonPreviewSurfaceReady(surface))
3229
- return;
3230
- const previewId = readPrefabComparisonPreviewSurfaceId(surface);
3231
- if (!previewId)
3232
- return;
3233
- event.preventDefault();
3234
- event.stopPropagation();
3235
- endPrefabComparisonPreviewDrag();
3236
- try {
3237
- surface.setPointerCapture?.(event.pointerId);
3238
- }
3239
- catch {
3240
- // Pointer capture is an input nicety; drag state still works through the overlay listener.
3241
- }
3242
- surface.style.cursor = 'grabbing';
3243
- prefabComparisonPreviewDrag = {
3244
- pointerId: event.pointerId,
3245
- previewId,
3246
- surface,
3247
- lastClientX: event.clientX,
3248
- lastClientY: event.clientY,
3249
- };
3250
- };
3251
- const onPrefabComparisonPreviewPointerMove = (event) => {
3252
- const drag = prefabComparisonPreviewDrag;
3253
- if (!drag || drag.pointerId !== event.pointerId)
3254
- return;
3255
- event.preventDefault();
3256
- event.stopPropagation();
3257
- const deltaX = event.clientX - drag.lastClientX;
3258
- const deltaY = event.clientY - drag.lastClientY;
3259
- drag.lastClientX = event.clientX;
3260
- drag.lastClientY = event.clientY;
3261
- if (Math.abs(deltaX) < 0.001 && Math.abs(deltaY) < 0.001)
3262
- return;
3263
- emitPrefabComparisonPreviewInteraction({
3264
- kind: 'orbit',
3265
- previewId: drag.previewId,
3266
- deltaX,
3267
- deltaY,
3268
- });
3269
- };
3270
- const onPrefabComparisonPreviewPointerEnd = (event) => {
3271
- const drag = prefabComparisonPreviewDrag;
3272
- if (!drag || drag.pointerId !== event.pointerId)
3273
- return;
3274
- event.preventDefault();
3275
- event.stopPropagation();
3276
- endPrefabComparisonPreviewDrag(event.pointerId);
3277
- };
3278
- const onPrefabComparisonPreviewWheel = (event) => {
3279
- if (currentState?.mode !== 'editor' || !currentState.prefabStage)
3280
- return;
3281
- const surface = findPrefabComparisonPreviewSurface(event.target);
3282
- if (!surface || !isPrefabComparisonPreviewSurfaceReady(surface))
3283
- return;
3284
- const previewId = readPrefabComparisonPreviewSurfaceId(surface);
3285
- if (!previewId)
3286
- return;
3287
- event.preventDefault();
3288
- event.stopPropagation();
3289
- emitPrefabComparisonPreviewInteraction({
3290
- kind: 'zoom',
3291
- previewId,
3292
- deltaY: event.deltaY,
3293
- });
3294
- };
3295
- prefabComparisonPreviewOverlay.root.addEventListener('pointerdown', onPrefabComparisonPreviewPointerDown);
3296
- prefabComparisonPreviewOverlay.root.addEventListener('pointermove', onPrefabComparisonPreviewPointerMove);
3297
- prefabComparisonPreviewOverlay.root.addEventListener('pointerup', onPrefabComparisonPreviewPointerEnd);
3298
- prefabComparisonPreviewOverlay.root.addEventListener('pointercancel', onPrefabComparisonPreviewPointerEnd);
3299
- prefabComparisonPreviewOverlay.root.addEventListener('lostpointercapture', onPrefabComparisonPreviewPointerEnd);
3300
- prefabComparisonPreviewOverlay.root.addEventListener('wheel', onPrefabComparisonPreviewWheel, { passive: false });
3301
3166
  const spatialOverlay = createSpatialOverlay(doc);
3302
3167
  const measurementOverlay = createMeasurementOverlay(doc);
3303
3168
  sceneToolOverlay.appendChild(sceneTitle);
@@ -3322,6 +3187,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3322
3187
  workbench.sceneFrame.appendChild(prefabStagePreviewLayout.root);
3323
3188
  workbench.sceneFrame.appendChild(coordinateAxesOverlay.root);
3324
3189
  construction.appendRootChild(localTestMenu);
3190
+ construction.appendRootChild(editorStatusCenter);
3325
3191
  construction.appendRootChild(toolbarOverflowMenu);
3326
3192
  construction.appendRootChild(staticShadowBakePopover);
3327
3193
  construction.appendRootChild(snapSettingsPopover);
@@ -3329,6 +3195,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3329
3195
  construction.appendRootChild(transformActionPopover);
3330
3196
  construction.appendRootChild(overlaySettingsPopover);
3331
3197
  tooltipSurfaces.add(localTestMenu);
3198
+ tooltipSurfaces.add(editorStatusCenter);
3332
3199
  tooltipSurfaces.add(toolbarOverflowMenu);
3333
3200
  tooltipSurfaces.add(staticShadowBakePopover);
3334
3201
  tooltipSurfaces.add(snapSettingsPopover);
@@ -3353,7 +3220,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3353
3220
  construction.appendRootChild(shortcutHelpPanel);
3354
3221
  tooltipSurfaces.add(shortcutHelpPanel);
3355
3222
  const assetPreviewModal = doc.createElement('div');
3356
- 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');
3357
3224
  assetPreviewModal.dataset.editorAssetPreviewModal = 'true';
3358
3225
  assetPreviewModal.dataset.editorWorkbenchRegion = 'modal';
3359
3226
  assetPreviewModal.style.cssText = [
@@ -3370,6 +3237,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3370
3237
  'pointer-events:auto',
3371
3238
  ].join(';');
3372
3239
  const assetPreviewDialog = doc.createElement('div');
3240
+ assetPreviewDialog.className = 'fps-editor-ui-modal';
3373
3241
  assetPreviewDialog.setAttribute('role', 'dialog');
3374
3242
  assetPreviewDialog.setAttribute('aria-modal', 'true');
3375
3243
  assetPreviewDialog.setAttribute('aria-label', '资产预览');
@@ -3387,8 +3255,10 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3387
3255
  'overflow:auto',
3388
3256
  ].join(';');
3389
3257
  const assetPreviewHeader = doc.createElement('div');
3258
+ assetPreviewHeader.className = 'fps-editor-ui-modal-header';
3390
3259
  assetPreviewHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';
3391
3260
  const assetPreviewTitle = doc.createElement('h2');
3261
+ assetPreviewTitle.className = 'fps-editor-ui-modal-title';
3392
3262
  assetPreviewTitle.style.cssText = [
3393
3263
  'min-width:0',
3394
3264
  'margin:0',
@@ -3430,7 +3300,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3430
3300
  construction.appendRootChild(assetPreviewModal);
3431
3301
  tooltipSurfaces.add(assetPreviewModal);
3432
3302
  const assetPickerModal = doc.createElement('div');
3433
- 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');
3434
3304
  assetPickerModal.dataset.editorAssetPickerModal = 'true';
3435
3305
  assetPickerModal.dataset.editorWorkbenchRegion = 'modal';
3436
3306
  assetPickerModal.style.cssText = [
@@ -3447,6 +3317,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3447
3317
  'pointer-events:auto',
3448
3318
  ].join(';');
3449
3319
  const assetPickerDialog = doc.createElement('div');
3320
+ assetPickerDialog.className = 'fps-editor-ui-modal';
3450
3321
  assetPickerDialog.setAttribute('role', 'dialog');
3451
3322
  assetPickerDialog.setAttribute('aria-modal', 'true');
3452
3323
  assetPickerDialog.setAttribute('aria-label', '资产选择');
@@ -3464,8 +3335,10 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3464
3335
  'overflow:hidden',
3465
3336
  ].join(';');
3466
3337
  const assetPickerHeader = doc.createElement('div');
3338
+ assetPickerHeader.className = 'fps-editor-ui-modal-header';
3467
3339
  assetPickerHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';
3468
3340
  const assetPickerTitle = doc.createElement('h2');
3341
+ assetPickerTitle.className = 'fps-editor-ui-modal-title';
3469
3342
  assetPickerTitle.style.cssText = [
3470
3343
  'min-width:0',
3471
3344
  'margin:0',
@@ -3481,6 +3354,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3481
3354
  assetPickerHeader.appendChild(assetPickerTitle);
3482
3355
  assetPickerHeader.appendChild(assetPickerCloseButton);
3483
3356
  const assetPickerSearch = doc.createElement('input');
3357
+ assetPickerSearch.className = 'fps-editor-ui-modal-search';
3484
3358
  assetPickerSearch.type = 'search';
3485
3359
  assetPickerSearch.dataset.editorAssetPickerSearch = 'true';
3486
3360
  assetPickerSearch.placeholder = '搜索资产';
@@ -3495,6 +3369,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3495
3369
  'padding:0 8px',
3496
3370
  ].join(';');
3497
3371
  const assetPickerList = doc.createElement('div');
3372
+ assetPickerList.className = 'fps-editor-ui-modal-grid';
3498
3373
  assetPickerList.style.cssText = [
3499
3374
  'min-height:180px',
3500
3375
  'max-height:min(430px,calc(100vh - 196px))',
@@ -3519,12 +3394,12 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3519
3394
  applyLocalEditorTheme(performanceMonitorOverlay.root, activeTheme);
3520
3395
  applyLocalEditorTheme(prefabStagePreviewLayout.root, activeTheme);
3521
3396
  applyLocalEditorTheme(prefabImportStatsOverlay.root, activeTheme);
3522
- applyLocalEditorTheme(prefabComparisonPreviewOverlay.root, activeTheme);
3523
3397
  applyLocalEditorTheme(shortcutHelpPanel, activeTheme);
3524
3398
  applyLocalEditorTheme(assetPreviewModal, activeTheme);
3525
3399
  applyLocalEditorTheme(assetPickerModal, activeTheme);
3526
3400
  applyLocalEditorTheme(boxSelectionOverlay, activeTheme);
3527
3401
  applyLocalEditorTheme(localTestMenu, activeTheme);
3402
+ applyLocalEditorTheme(editorStatusCenter, activeTheme);
3528
3403
  applyLocalEditorTheme(toolbarOverflowMenu, activeTheme);
3529
3404
  applyLocalEditorTheme(staticShadowBakePopover, activeTheme);
3530
3405
  applyLocalEditorTheme(snapSettingsPopover, activeTheme);
@@ -3556,6 +3431,227 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3556
3431
  localTestMenu.style.display = 'none';
3557
3432
  LocalEditorShared.applyButtonActiveState(localTestButton, false);
3558
3433
  }
3434
+ function readEditorStatusDiagnostics(state) {
3435
+ return resolveLocalEditorStatusDiagnostics(state);
3436
+ }
3437
+ function renderEditorStatusCenter(state) {
3438
+ const viewModel = createLocalEditorStatusCenterViewModel(state);
3439
+ editorStatusCenterSummary.textContent = viewModel.summary;
3440
+ editorStatusCopyAllButton.style.display = viewModel.diagnostics.length > 0 ? 'inline-flex' : 'none';
3441
+ LocalEditorShared.clearElement(editorStatusCenterList);
3442
+ if (viewModel.diagnostics.length === 0) {
3443
+ const empty = doc.createElement('div');
3444
+ empty.dataset.editorStatusEmpty = 'true';
3445
+ empty.textContent = '当前没有诊断信息。';
3446
+ empty.style.cssText = 'padding:14px 8px;text-align:center;color:var(--fps-editor-muted);font-size:12px';
3447
+ editorStatusCenterList.appendChild(empty);
3448
+ return;
3449
+ }
3450
+ const currentScopeId = state?.prefabStage
3451
+ ? `prefab-stage:${state.prefabStage.assetId}`
3452
+ : 'scene';
3453
+ let previousGroup = '';
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
+ }
3464
+ const item = doc.createElement('div');
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)';
3476
+ item.style.cssText = [
3477
+ 'display:grid',
3478
+ 'grid-template-columns:minmax(0,1fr) auto',
3479
+ 'gap:8px',
3480
+ 'padding:8px',
3481
+ `border:1px solid ${diagnosticBorder}`,
3482
+ 'border-radius:3px',
3483
+ `background:${diagnosticBackground}`,
3484
+ ].join(';');
3485
+ const content = doc.createElement('div');
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
+ }
3556
+ const code = doc.createElement('div');
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)'}`;
3559
+ const message = doc.createElement('div');
3560
+ message.textContent = diagnostic.message;
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';
3567
+ const meta = doc.createElement('div');
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
+ ]
3578
+ .filter(value => value !== undefined && value !== null && value !== '')
3579
+ .join(' / ');
3580
+ meta.textContent = [
3581
+ `来源: ${diagnostic.source}`,
3582
+ diagnostic.producer ? `producer: ${diagnostic.producer}` : '',
3583
+ diagnostic.phase ? `phase: ${diagnostic.phase}` : '',
3584
+ diagnosticLocation ? `位置: ${diagnosticLocation}` : '',
3585
+ diagnostic.documentRevision != null ? `document revision: ${diagnostic.documentRevision}` : '',
3586
+ diagnostic.projectionRevision != null ? `projection revision: ${diagnostic.projectionRevision}` : '',
3587
+ diagnostic.details ? `details: ${formatLocalEditorStatusDiagnosticDetails(diagnostic.details)}` : '',
3588
+ ].filter(Boolean).join(' · ');
3589
+ meta.style.cssText = 'font-size:10px;line-height:1.35;color:var(--fps-editor-muted);overflow-wrap:anywhere';
3590
+ meta.style.display = meta.textContent ? 'block' : 'none';
3591
+ content.appendChild(code);
3592
+ content.appendChild(message);
3593
+ content.appendChild(suggestion);
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
+ }
3611
+ const copy = createToolbarIconButton(doc, `复制诊断 ${index + 1}`, 'copy', '复制该诊断');
3612
+ copy.dataset.editorStatusCopy = String(index);
3613
+ copy.addEventListener('click', event => {
3614
+ event.stopPropagation();
3615
+ copyEditorStatusText(copy, doc.defaultView, copyText);
3616
+ });
3617
+ item.appendChild(content);
3618
+ actions.appendChild(copy);
3619
+ item.appendChild(actions);
3620
+ editorStatusCenterList.appendChild(item);
3621
+ });
3622
+ }
3623
+ function closeEditorStatusCenter() {
3624
+ editorStatusCenterOpen = false;
3625
+ editorStatusCenter.style.display = 'none';
3626
+ editorStatusButton.setAttribute('aria-expanded', 'false');
3627
+ LocalEditorShared.applyButtonActiveState(editorStatusButton, false);
3628
+ }
3629
+ function openEditorStatusCenter() {
3630
+ closeLocalTestMenu();
3631
+ closeToolbarOverflowMenu();
3632
+ closeSnapSettingsPopover();
3633
+ closePlacementSettingsPopover();
3634
+ closeTransformActionPopover();
3635
+ closeOverlaySettingsPopover();
3636
+ renderEditorStatusCenter(currentState);
3637
+ const rect = editorStatusButton.getBoundingClientRect();
3638
+ const win = doc.defaultView;
3639
+ const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;
3640
+ const width = Math.min(440, Math.max(280, viewportWidth - 16));
3641
+ editorStatusCenter.style.width = `${width}px`;
3642
+ editorStatusCenter.style.left = `${Math.max(8, Math.min(rect.right - width, viewportWidth - width - 8))}px`;
3643
+ editorStatusCenter.style.top = `${Math.max(8, rect.bottom + 5)}px`;
3644
+ editorStatusCenter.style.display = 'flex';
3645
+ editorStatusCenterOpen = true;
3646
+ editorStatusButton.setAttribute('aria-expanded', 'true');
3647
+ LocalEditorShared.applyButtonActiveState(editorStatusButton, true);
3648
+ }
3649
+ function toggleEditorStatusCenter() {
3650
+ if (editorStatusCenterOpen)
3651
+ closeEditorStatusCenter();
3652
+ else
3653
+ openEditorStatusCenter();
3654
+ }
3559
3655
  function closeSnapSettingsPopover() {
3560
3656
  snapSettingsOpen = false;
3561
3657
  snapSettingsPopover.style.display = 'none';
@@ -3991,12 +4087,26 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
3991
4087
  else
3992
4088
  openToolbarOverflowMenu();
3993
4089
  };
4090
+ const onEditorStatusButtonClick = (event) => {
4091
+ event.stopPropagation();
4092
+ toggleEditorStatusCenter();
4093
+ };
4094
+ const onEditorStatusCopyAllClick = (event) => {
4095
+ event.stopPropagation();
4096
+ copyEditorStatusText(editorStatusCopyAllButton, doc.defaultView, createLocalEditorStatusCenterViewModel(currentState).copyAllText);
4097
+ };
4098
+ const onEditorStatusCloseClick = (event) => {
4099
+ event.stopPropagation();
4100
+ closeEditorStatusCenter();
4101
+ };
3994
4102
  const onToolbarOverflowPointerDown = (event) => {
3995
4103
  const target = event.target instanceof HTMLElement ? event.target : null;
3996
4104
  if (!target)
3997
4105
  return;
3998
4106
  if (target.closest('[data-editor-local-test-menu]') || target.closest('[data-editor-local-test-toggle]'))
3999
4107
  return;
4108
+ if (target.closest('[data-editor-status-center]') || target.closest('[data-editor-status-toggle]'))
4109
+ return;
4000
4110
  if (target.closest('[data-editor-toolbar-overflow-menu]') || target.closest('[data-editor-toolbar-overflow-toggle]'))
4001
4111
  return;
4002
4112
  if (target.closest('[data-transform-snap-settings-popover]') || target.closest('[data-transform-snap-toggle]'))
@@ -4008,6 +4118,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4008
4118
  if (target.closest('[data-viewport-overlay-settings-popover]') || target.closest('[data-viewport-overlay-settings-toggle]'))
4009
4119
  return;
4010
4120
  closeLocalTestMenu();
4121
+ closeEditorStatusCenter();
4011
4122
  closeToolbarOverflowMenu();
4012
4123
  if (!target.closest('[data-editor-toolbar-static-shadow-bake-popover]'))
4013
4124
  closeStaticShadowBakePopover();
@@ -4023,6 +4134,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4023
4134
  construction.addCleanup('toolbar-resize-observer', () => toolbarResizeObserver?.disconnect());
4024
4135
  toolbarOverflowButton.addEventListener('click', onToolbarOverflowButtonClick);
4025
4136
  localTestButton.addEventListener('click', onLocalTestButtonClick);
4137
+ editorStatusButton.addEventListener('click', onEditorStatusButtonClick);
4138
+ editorStatusCopyAllButton.addEventListener('click', onEditorStatusCopyAllClick);
4139
+ editorStatusCloseButton.addEventListener('click', onEditorStatusCloseClick);
4026
4140
  doc.addEventListener('pointerdown', onToolbarOverflowPointerDown);
4027
4141
  construction.addCleanup('toolbar-overflow-pointerdown', () => {
4028
4142
  doc.removeEventListener('pointerdown', onToolbarOverflowPointerDown);
@@ -4055,9 +4169,6 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4055
4169
  performanceMonitorButton.addEventListener('click', () => {
4056
4170
  setPerformanceMonitorOpen(!performanceMonitorOpen);
4057
4171
  });
4058
- prefabComparisonPreviewButton.addEventListener('click', () => {
4059
- setPrefabComparisonPreviewOpen(!prefabComparisonPreviewOpen);
4060
- });
4061
4172
  gridToggleButton.addEventListener('click', () => {
4062
4173
  const visible = currentState?.grid?.visible ?? true;
4063
4174
  callbacks.onGridVisibleChange?.(!visible);
@@ -4117,6 +4228,12 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4117
4228
  callbacks.onMarkerViewportVisibilityChange?.(!markersVisible);
4118
4229
  return;
4119
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
+ }
4120
4237
  const overlayToggle = target?.closest('[data-viewport-overlay-settings-toggle]');
4121
4238
  if (overlayToggle) {
4122
4239
  event.stopPropagation();
@@ -4154,17 +4271,6 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4154
4271
  if (notify)
4155
4272
  callbacks.onPerformanceMonitorOpenChange?.(performanceMonitorOpen);
4156
4273
  };
4157
- const setPrefabComparisonPreviewOpen = (open) => {
4158
- if (prefabComparisonPreviewOpen === open)
4159
- return;
4160
- if (!open)
4161
- endPrefabComparisonPreviewDrag();
4162
- prefabComparisonPreviewOpen = open;
4163
- if (currentState)
4164
- renderPreviewState(currentState);
4165
- LocalEditorShared.applyButtonActiveState(prefabComparisonPreviewButton, prefabComparisonPreviewOpen);
4166
- callbacks.onPrefabComparisonPreviewLayoutChange?.();
4167
- };
4168
4274
  const openAssetPreviewModal = (asset) => {
4169
4275
  if (!asset.preview)
4170
4276
  return;
@@ -4216,6 +4322,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4216
4322
  contextMenu.close();
4217
4323
  if (helpOpen)
4218
4324
  setShortcutHelpOpen(false);
4325
+ settleHierarchyOperationInputRequest(null);
4219
4326
  assetPickerInput = input;
4220
4327
  assetPickerProperty = property;
4221
4328
  assetPickerFilter = '';
@@ -4226,12 +4333,40 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4226
4333
  assetPickerSearch.focus({ preventScroll: true });
4227
4334
  assetPickerSearch.select();
4228
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
+ }
4229
4363
  const closeInspectorAssetPicker = () => {
4230
4364
  if (!assetPickerOpen)
4231
4365
  return;
4232
4366
  assetPickerOpen = false;
4233
4367
  assetPickerInput = null;
4234
4368
  assetPickerProperty = null;
4369
+ settleHierarchyOperationInputRequest(null);
4235
4370
  assetPickerFilter = '';
4236
4371
  renderAssetPickerModal();
4237
4372
  syncInputModalOpen();
@@ -4631,15 +4766,33 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4631
4766
  });
4632
4767
  }
4633
4768
  function renderAssetPickerModal() {
4634
- if (!assetPickerOpen || !assetPickerProperty || !assetPickerInput) {
4769
+ if (!assetPickerOpen || (!hierarchyOperationInputRequest && (!assetPickerProperty || !assetPickerInput))) {
4635
4770
  assetPickerModal.style.display = 'none';
4771
+ delete assetPickerModal.dataset.editorAssetPickerMode;
4636
4772
  assetPickerTitle.textContent = '';
4637
4773
  assetPickerSearch.value = '';
4638
4774
  while (assetPickerList.firstChild)
4639
4775
  assetPickerList.removeChild(assetPickerList.firstChild);
4640
4776
  return;
4641
4777
  }
4642
- 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';
4643
4796
  assetPickerTitle.textContent = options.title;
4644
4797
  assetPickerSearch.value = assetPickerFilter;
4645
4798
  while (assetPickerList.firstChild)
@@ -4658,7 +4811,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4658
4811
  assetPickerList.appendChild(empty);
4659
4812
  }
4660
4813
  for (const candidate of candidates) {
4661
- assetPickerList.appendChild(createInspectorAssetPickerCandidateButton(candidate, assetPickerInput.value));
4814
+ assetPickerList.appendChild(createInspectorAssetPickerCandidateButton(candidate, assetPickerInput?.value ?? ''));
4662
4815
  }
4663
4816
  assetPickerModal.style.display = 'flex';
4664
4817
  }
@@ -4702,8 +4855,13 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4702
4855
  sceneHelpButton.addEventListener('click', () => {
4703
4856
  setShortcutHelpOpen(!helpOpen);
4704
4857
  });
4705
- prefabStageBackButton.addEventListener('click', () => {
4706
- 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 ?? '');
4707
4865
  });
4708
4866
  themeToggleButton.addEventListener('click', () => {
4709
4867
  setActiveTheme(activeTheme === 'dark' ? 'light' : 'dark');
@@ -4757,6 +4915,18 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4757
4915
  return;
4758
4916
  }
4759
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
+ }
4760
4930
  if (candidateButton && assetPickerInput) {
4761
4931
  assetPickerInput.value = candidateButton.dataset.editorAssetPickerCandidate ?? '';
4762
4932
  assetPickerInput.dispatchEvent(new Event('change', { bubbles: true }));
@@ -4772,9 +4942,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4772
4942
  });
4773
4943
  toolGroup.addEventListener('click', (event) => {
4774
4944
  const target = event.target instanceof HTMLElement ? event.target : null;
4775
- const tool = target?.closest('[data-transform-tool]')?.dataset.transformTool;
4776
- if (tool)
4777
- callbacks.onTransformToolChange?.(tool);
4945
+ const toolId = target?.closest('[data-editor-tool-id]')?.dataset.editorToolId;
4946
+ if (toolId)
4947
+ callbacks.onToolActivate?.(toolId);
4778
4948
  });
4779
4949
  spaceGroup.addEventListener('click', (event) => {
4780
4950
  const target = event.target instanceof HTMLElement ? event.target : null;
@@ -4861,8 +5031,47 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4861
5031
  if (button.dataset.editorAssetId !== assetId)
4862
5032
  continue;
4863
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);
4864
5052
  return;
4865
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
+ }
4866
5075
  }
4867
5076
  function createCurrentAssetBrowserActionContext() {
4868
5077
  const stage = currentState?.prefabStage;
@@ -4902,6 +5111,18 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4902
5111
  });
4903
5112
  return;
4904
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
+ }
4905
5126
  const assetButton = target?.closest('[data-editor-asset-id]');
4906
5127
  if (assetButton?.dataset.editorAssetId) {
4907
5128
  suppressAssetBrowserRevealIfVisible(assetButton);
@@ -4926,7 +5147,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4926
5147
  callbacks.onAssetAction?.(createAssetBrowserActionInput(actionId, asset, createCurrentAssetBrowserActionContext()));
4927
5148
  });
4928
5149
  assetPanel.addEventListener('contextmenu', (event) => {
4929
- const target = event.target instanceof HTMLElement ? event.target : null;
5150
+ if (!inputRouter.shouldPreventBrowserContextMenu(event))
5151
+ return;
5152
+ const target = inputRouter.getEventTarget(event);
5153
+ if (!target)
5154
+ return;
4930
5155
  const assetButton = target?.closest('[data-editor-asset-id]');
4931
5156
  const browserAssetId = assetButton?.dataset.editorAssetId;
4932
5157
  if (!browserAssetId || !currentState)
@@ -4934,8 +5159,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4934
5159
  const asset = currentState.assets.find(candidate => candidate.id === browserAssetId);
4935
5160
  if (!asset)
4936
5161
  return;
4937
- event.preventDefault();
4938
- event.stopPropagation();
5162
+ inputRouter.claimContextMenu(event);
4939
5163
  suppressAssetBrowserRevealIfVisible(assetButton);
4940
5164
  callbacks.onSelectAsset?.(browserAssetId);
4941
5165
  contextMenu.open({
@@ -4998,11 +5222,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
4998
5222
  const hierarchyController = createLocalEditorHierarchyController({
4999
5223
  doc,
5000
5224
  panel: hierarchyPanel,
5001
- callbacks,
5002
5225
  inputRouter,
5003
5226
  contextMenu,
5227
+ kernel: hierarchyKernel,
5228
+ onOperationResult: options.hierarchy?.onOperationResult,
5004
5229
  getState: () => currentState,
5005
- contextActions: options.hierarchy?.contextActions,
5006
5230
  requestRender: () => {
5007
5231
  if (currentState)
5008
5232
  render(currentState);
@@ -5013,6 +5237,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5013
5237
  if (assetPreviewOpen)
5014
5238
  closeAssetPreviewModal();
5015
5239
  },
5240
+ requestOperationInput: requestHierarchyOperationInput,
5016
5241
  });
5017
5242
  construction.addCleanup('hierarchy-controller', () => hierarchyController.dispose());
5018
5243
  assetPanel.addEventListener('input', (event) => {
@@ -5138,10 +5363,10 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5138
5363
  const materialSlotSelectTarget = target?.closest('[data-editor-inspector-material-slot-select]');
5139
5364
  const materialSlotSelectionId = materialSlotSelectTarget?.dataset.editorInspectorMaterialSlotSelect;
5140
5365
  if (materialSlotSelectionId) {
5141
- callbacks.onSelectHierarchyItem?.({
5142
- id: materialSlotSelectionId,
5143
- additive: event.shiftKey && !event.metaKey && !event.ctrlKey,
5144
- toggle: event.metaKey || event.ctrlKey,
5366
+ void hierarchyKernel.dispatch({
5367
+ type: 'selection',
5368
+ targetId: materialSlotSelectionId,
5369
+ modifier: event.metaKey || event.ctrlKey ? 'toggle' : event.shiftKey ? 'range' : 'replace',
5145
5370
  });
5146
5371
  return;
5147
5372
  }
@@ -5177,6 +5402,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5177
5402
  : null;
5178
5403
  if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId)
5179
5404
  return;
5405
+ if (hasLocalEditorUiKeyboardCommitPending(input))
5406
+ return;
5180
5407
  if (input instanceof HTMLInputElement && (input.type === 'text' || input.type === 'number')) {
5181
5408
  if (readInspectorCommitMode(input) !== 'change')
5182
5409
  return;
@@ -5203,6 +5430,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5203
5430
  const input = event.target instanceof HTMLInputElement ? event.target : null;
5204
5431
  if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId)
5205
5432
  return;
5433
+ if (hasLocalEditorUiKeyboardCommitPending(input))
5434
+ return;
5206
5435
  if (readInspectorCommitMode(input) !== 'blur')
5207
5436
  return;
5208
5437
  if (consumeLocalEditorKeyboardCommittedValue(input))
@@ -5236,6 +5465,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5236
5465
  : null;
5237
5466
  if (!input?.dataset.editorRenderingProperty)
5238
5467
  return;
5468
+ if (hasLocalEditorUiKeyboardCommitPending(input))
5469
+ return;
5239
5470
  if ((input instanceof HTMLInputElement && (input.type === 'text' || input.type === 'number')) || input instanceof HTMLTextAreaElement) {
5240
5471
  if (readRenderingCommitMode(input) !== 'change')
5241
5472
  return;
@@ -5263,6 +5494,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5263
5494
  : null;
5264
5495
  if (!input?.dataset.editorRenderingProperty)
5265
5496
  return;
5497
+ if (hasLocalEditorUiKeyboardCommitPending(input))
5498
+ return;
5266
5499
  if (input instanceof HTMLSelectElement)
5267
5500
  return;
5268
5501
  if (readRenderingCommitMode(input) !== 'blur')
@@ -5340,6 +5573,11 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5340
5573
  closeInspectorAssetPicker();
5341
5574
  return;
5342
5575
  }
5576
+ if (key === 'escape' && editorStatusCenterOpen) {
5577
+ event.preventDefault();
5578
+ closeEditorStatusCenter();
5579
+ return;
5580
+ }
5343
5581
  if (key === 'escape' && snapSettingsOpen) {
5344
5582
  event.preventDefault();
5345
5583
  closeSnapSettingsPopover();
@@ -5368,17 +5606,13 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5368
5606
  const primaryModifier = event.metaKey || event.ctrlKey;
5369
5607
  const handleDocumentShortcut = inputRouter.shouldHandleDocumentShortcut(event);
5370
5608
  const handleGlobalShortcut = inputRouter.shouldHandleGlobalShortcut(event);
5371
- if (shouldToggleLocalEditorPrefabComparisonShortcut({
5372
- inPrefabStage: currentState.prefabStage != null,
5373
- handleGlobalShortcut,
5374
- key,
5375
- shiftKey: event.shiftKey,
5376
- metaKey: event.metaKey,
5377
- ctrlKey: event.ctrlKey,
5378
- altKey: event.altKey,
5379
- })) {
5609
+ const contextAction = currentState.contextActions?.find(action => (action.availability.state !== 'hidden'
5610
+ && matchesContextActionShortcut(action.shortcut, event)));
5611
+ if (handleDocumentShortcut && contextAction) {
5380
5612
  event.preventDefault();
5381
- setPrefabComparisonPreviewOpen(!prefabComparisonPreviewOpen);
5613
+ if (contextAction.availability.state === 'enabled') {
5614
+ callbacks.onContextAction?.(contextAction.id);
5615
+ }
5382
5616
  return;
5383
5617
  }
5384
5618
  if (handleDocumentShortcut
@@ -5403,33 +5637,17 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5403
5637
  callbacks.onRedo?.();
5404
5638
  return;
5405
5639
  }
5406
- if (shouldLocalEditorPrefabStageBlockHierarchyShortcut({
5407
- inPrefabStage: currentState.prefabStage != null,
5408
- handleGlobalShortcut,
5409
- key,
5410
- metaKey: event.metaKey,
5411
- ctrlKey: event.ctrlKey,
5412
- altKey: event.altKey,
5413
- })) {
5414
- event.preventDefault();
5415
- return;
5416
- }
5417
- if (!currentState.prefabStage && handleGlobalShortcut && hierarchyController.handleEditShortcut(event)) {
5640
+ if (handleGlobalShortcut && hierarchyController.handleEditShortcut(event)) {
5418
5641
  return;
5419
5642
  }
5420
5643
  if (!handleGlobalShortcut || event.metaKey || event.ctrlKey || event.altKey)
5421
5644
  return;
5422
- const toolByKey = {
5423
- q: 'select',
5424
- w: 'move',
5425
- e: 'rotate',
5426
- r: 'scale',
5427
- };
5428
- const tool = toolByKey[key];
5645
+ const tool = currentState.tools?.find(candidate => (candidate.kind === 'primary'
5646
+ && candidate.shortcut?.toLowerCase() === key));
5429
5647
  if (tool) {
5430
5648
  event.preventDefault();
5431
- if (isPreviewToolEnabled(tool))
5432
- callbacks.onTransformToolChange?.(tool);
5649
+ if (tool.availability.state === 'enabled')
5650
+ callbacks.onToolActivate?.(tool.id);
5433
5651
  return;
5434
5652
  }
5435
5653
  if (key === 'f') {
@@ -5464,8 +5682,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5464
5682
  : operationState.canDistribute;
5465
5683
  }
5466
5684
  function getPreviewToolSupport(tool) {
5467
- const inPrefabStage = currentState?.mode === 'editor' && !!currentState.prefabStage;
5468
- return resolveLocalEditorPreviewToolSupport({ inPrefabStage, tool });
5685
+ return resolveLocalEditorPreviewToolSupport({ capabilities: currentState?.capabilities, tool });
5469
5686
  }
5470
5687
  function isPreviewToolVisible(tool) {
5471
5688
  return currentState?.mode === 'editor' && getPreviewToolSupport(tool).support !== 'hidden';
@@ -5506,29 +5723,20 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5506
5723
  };
5507
5724
  }
5508
5725
  function renderPrefabStagePropertiesPanel(stage) {
5509
- inspectorPanel.dataset.editorPanelId = 'prefab-properties';
5726
+ inspectorPanel.dataset.editorPanelId = 'inspector';
5510
5727
  inspectorPanel.style.display = '';
5511
5728
  renderingPanel.style.display = 'none';
5512
- if (stage.inspectorObject) {
5513
- LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, {
5514
- ...currentState,
5515
- selectedIds: stage.inspectorObject.targetIds,
5516
- activeId: stage.inspectorObject.activeId,
5517
- selectionSummary: {
5518
- count: stage.inspectorObject.targetIds.length,
5519
- activeId: stage.inspectorObject.activeId,
5520
- },
5521
- inspectorObject: stage.inspectorObject,
5522
- inspectorMultiObject: null,
5523
- }, inspectorFilter, {
5729
+ if (currentState?.inspectorObject) {
5730
+ LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {
5524
5731
  ...options.inspector,
5732
+ layerHost: editorUiLayerHost,
5525
5733
  title: 'Prefab Properties',
5526
5734
  emptyText: 'Select an item in Prefab Explorer.',
5527
- summaryTitle: 'Prefab',
5528
5735
  lockedVectorGroups: lockedInspectorVectorGroups,
5529
5736
  });
5530
5737
  return;
5531
5738
  }
5739
+ LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel);
5532
5740
  LocalEditorShared.clearElement(inspectorPanel);
5533
5741
  inspectorPanel.appendChild(createPrefabStagePanelHeader('Prefab Properties', 'inspector'));
5534
5742
  const selectedItem = findLocalEditorPrefabStageStructureItem(stage, stage.selectedItemId);
@@ -5673,23 +5881,32 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5673
5881
  const transformStatusText = transformTool?.dragPhase === 'dragging'
5674
5882
  ? `正在拖拽 ${transformTool.draggingNodeId ?? '选择对象'}`
5675
5883
  : LocalEditorShared.toTransformToolStatusLabel(transformTool?.activeTool ?? 'select', transformTool?.activeSpace ?? 'world');
5676
- const statusToneColor = state.statusTone === 'error'
5884
+ const statusViewModel = createLocalEditorStatusCenterViewModel(state);
5885
+ const statusDiagnostics = statusViewModel.diagnostics;
5886
+ const resolvedDiagnosticTone = statusViewModel.severity;
5887
+ const diagnosticTone = resolvedDiagnosticTone === 'default' ? state.statusTone : resolvedDiagnosticTone;
5888
+ const statusToneColor = diagnosticTone === 'error'
5677
5889
  ? 'var(--fps-editor-danger-strong)'
5678
- : state.statusTone === 'warning'
5890
+ : diagnosticTone === 'warning'
5679
5891
  ? 'var(--fps-editor-warn)'
5680
- : state.statusTone === 'success'
5892
+ : diagnosticTone === 'success'
5681
5893
  ? 'var(--fps-editor-success)'
5682
5894
  : 'var(--fps-editor-muted)';
5895
+ setToolbarButtonIcon(doc, editorStatusButton, statusViewModel.icon);
5683
5896
  setToolbarButtonTooltip(editorStatusButton, [
5684
- `编辑器状态:${editorStatusText}`,
5897
+ `验证中心:${editorStatusText}`,
5685
5898
  state.statusDetails && state.statusDetails !== state.status ? state.statusDetails : '',
5686
5899
  transformStatusText,
5687
5900
  LocalEditorShared.toTransformOperationStatusLabel(transformOperations.settings),
5901
+ statusDiagnostics.length > 0 ? `${statusDiagnostics.length} 条诊断,点击查看并复制` : '',
5688
5902
  ].filter(Boolean).join(' · '));
5689
5903
  editorStatusButton.style.color = statusToneColor;
5690
- editorStatusButton.style.borderColor = state.statusTone == null || state.statusTone === 'default'
5904
+ editorStatusButton.style.borderColor = diagnosticTone == null || diagnosticTone === 'default'
5691
5905
  ? 'var(--fps-editor-border)'
5692
5906
  : statusToneColor;
5907
+ editorStatusButton.dataset.editorStatusSeverity = diagnosticTone ?? 'default';
5908
+ if (editorStatusCenterOpen)
5909
+ renderEditorStatusCenter(state);
5693
5910
  const agentBridgeStatusColor = resolveAgentBridgeStatusToneColor(state.agentBridge);
5694
5911
  agentBridgeStatusButton.style.display = inEditor ? 'inline-flex' : 'none';
5695
5912
  agentBridgeStatusButton.style.color = agentBridgeStatusColor;
@@ -5700,20 +5917,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5700
5917
  renderCoordinateAxesOverlay(coordinateAxesOverlay, inEditor ? state.coordinateAxes ?? null : null);
5701
5918
  renderSceneFrameRateOverlay(sceneFrameRateOverlay, inEditor && !inPrefabStage ? state.sceneFrameStats ?? null : null);
5702
5919
  renderPerformanceMonitorOverlay(performanceMonitorOverlay, inEditor && !inPrefabStage ? state.performanceStats ?? null : null, inEditor && !inPrefabStage && performanceMonitorOpen);
5703
- const comparisonColumnVisible = shouldShowLocalEditorPrefabComparisonColumn({
5704
- inPrefabStage: inEditor && inPrefabStage,
5705
- userOpen: prefabComparisonPreviewOpen,
5706
- sceneWidth: workbench.sceneFrame.clientWidth,
5707
- });
5708
- if (!comparisonColumnVisible)
5709
- endPrefabComparisonPreviewDrag();
5710
5920
  prefabStagePreviewLayout.root.style.display = inEditor && inPrefabStage ? 'block' : 'none';
5711
- prefabStagePreviewLayout.mainRegion.style.right = comparisonColumnVisible
5712
- ? `${LOCAL_EDITOR_PREFAB_COMPARISON_COLUMN_WIDTH_PX}px`
5713
- : '0';
5714
- prefabStagePreviewLayout.comparisonColumn.style.display = comparisonColumnVisible ? 'flex' : 'none';
5715
5921
  renderPrefabImportStatsOverlay(prefabImportStatsOverlay, inEditor && inPrefabStage ? state.prefabStage ?? null : null);
5716
- renderPrefabComparisonPreviewOverlay(prefabComparisonPreviewOverlay, inEditor && inPrefabStage && comparisonColumnVisible ? state.prefabStage ?? null : null);
5717
5922
  renderSpatialOverlay(spatialOverlay, inEditor ? state.viewportSpatialOverlay ?? null : null);
5718
5923
  renderMeasurementOverlay(measurementOverlay, inEditor ? state.viewportMeasurement ?? null : null);
5719
5924
  const boxSelection = state.boxSelection;
@@ -5739,10 +5944,17 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5739
5944
  ...preview,
5740
5945
  };
5741
5946
  renderPreviewState(currentState);
5742
- 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
+ })) {
5743
5954
  const rightDockScrollSnapshot = captureLocalEditorRightDockScrollSnapshot(currentState, 'inspector', inspectorFilter, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);
5744
5955
  LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {
5745
5956
  ...options.inspector,
5957
+ layerHost: editorUiLayerHost,
5746
5958
  lockedVectorGroups: lockedInspectorVectorGroups,
5747
5959
  });
5748
5960
  restoreLocalEditorRightDockScrollSnapshot(rightDockScrollSnapshot, currentState, 'inspector', inspectorFilter, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);
@@ -5761,9 +5973,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5761
5973
  const previousInPrefabStage = previousState?.mode === 'editor' && !!previousState.prefabStage;
5762
5974
  if (!inEditor || disabled)
5763
5975
  contextMenu.close();
5764
- hostChrome.style.display = !inEditor && localTestActionsEnabled ? 'flex' : 'none';
5976
+ hostChrome.style.display = !inEditor && localTestActionsEnabled && gameModeEntryVisible ? 'flex' : 'none';
5765
5977
  enterEditorButton.disabled = disabled;
5766
- 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]) {
5767
5979
  button.style.display = 'inline-flex';
5768
5980
  button.disabled = disabled;
5769
5981
  }
@@ -5771,8 +5983,12 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5771
5983
  localTestButton.disabled = !isPreviewToolEnabled('local-test') || !localTestActionsEnabled;
5772
5984
  if (!inEditor || !localTestActionsEnabled || localTestGroup.style.display === 'none')
5773
5985
  closeLocalTestMenu();
5774
- if (!inEditor)
5986
+ if (!inEditor) {
5775
5987
  helpOpen = false;
5988
+ if (shouldCloseLocalEditorStatusCenter({ inEditor, open: editorStatusCenterOpen })) {
5989
+ closeEditorStatusCenter();
5990
+ }
5991
+ }
5776
5992
  if (shouldLocalEditorClosePerformanceMonitor({ inEditor, inPrefabStage, performanceMonitorOpen })) {
5777
5993
  setPerformanceMonitorOpen(false);
5778
5994
  }
@@ -5783,6 +5999,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5783
5999
  assetPickerOpen = false;
5784
6000
  assetPickerInput = null;
5785
6001
  assetPickerProperty = null;
6002
+ settleHierarchyOperationInputRequest(null);
5786
6003
  }
5787
6004
  syncInputModalOpen();
5788
6005
  const transformTool = state.transformTool ?? null;
@@ -5790,7 +6007,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5790
6007
  workbench.root.dataset.editorPrefabStage = String(inPrefabStage);
5791
6008
  sceneTitle.textContent = createLocalEditorPrefabStageTitle(prefabStage);
5792
6009
  sceneToolOverlay.style.display = inEditor ? 'flex' : 'none';
5793
- prefabStageBackButton.style.display = inPrefabStage ? 'inline-flex' : 'none';
6010
+ renderContextActionButtons(contextActionGroup, state.contextActions ?? [], disabled);
5794
6011
  if (inPrefabStage && !previousInPrefabStage) {
5795
6012
  prefabStageMainWorkbenchLayoutSnapshot = workbenchLayoutController.getLayout();
5796
6013
  workbenchLayoutController.setBottomCollapsed(false);
@@ -5799,6 +6016,9 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5799
6016
  workbenchLayoutController.setLayout(prefabStageMainWorkbenchLayoutSnapshot, true);
5800
6017
  prefabStageMainWorkbenchLayoutSnapshot = null;
5801
6018
  }
6019
+ if (!inPrefabStage) {
6020
+ LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel);
6021
+ }
5802
6022
  workbench.leftToggle.style.display = '';
5803
6023
  workbench.rightToggle.style.display = '';
5804
6024
  workbench.bottomToggle.style.display = '';
@@ -5865,6 +6085,10 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5865
6085
  markerVisibilityButton.disabled = disabled;
5866
6086
  setToolbarButtonTooltip(markerVisibilityButton, markersVisible ? '隐藏标记与关系线' : '显示标记与关系线');
5867
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);
5868
6092
  overlaySettingsButton.disabled = !isPreviewToolEnabled('spatial-overlay');
5869
6093
  setToolbarButtonTooltip(overlaySettingsButton, '视口信息层设置');
5870
6094
  LocalEditorShared.applyButtonActiveState(overlaySettingsButton, overlaySettingsOpen);
@@ -5893,24 +6117,15 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5893
6117
  ? performanceMonitorOpen ? '隐藏性能监控' : '显示性能监控'
5894
6118
  : performanceMonitorSupport.reason);
5895
6119
  LocalEditorShared.applyButtonActiveState(performanceMonitorButton, performanceMonitorOpen);
5896
- prefabComparisonPreviewButton.style.display = isPreviewToolVisible('prefab-comparison') ? 'inline-flex' : 'none';
5897
- prefabComparisonPreviewButton.disabled = !isPreviewToolEnabled('prefab-comparison');
5898
- const prefabComparisonSupport = getPreviewToolSupport('prefab-comparison');
5899
- setToolbarButtonTooltip(prefabComparisonPreviewButton, prefabComparisonSupport.support === 'enabled'
5900
- ? prefabComparisonPreviewOpen
5901
- ? '隐藏对比预览 (Shift+P)'
5902
- : '显示对比预览 (Shift+P)'
5903
- : prefabComparisonSupport.reason);
5904
- LocalEditorShared.applyButtonActiveState(prefabComparisonPreviewButton, inPrefabStage && prefabComparisonPreviewOpen);
5905
6120
  gridToggleButton.disabled = disabled || !gridState.available;
5906
6121
  setToolbarButtonTooltip(gridToggleButton, gridState.visible ? '隐藏 Scene View 网格' : '显示 Scene View 网格');
5907
6122
  LocalEditorShared.applyButtonActiveState(gridToggleButton, gridState.visible);
5908
- 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';
5909
6128
  spaceGroup.style.display = isPreviewToolVisible('transform-space') ? 'flex' : 'none';
5910
- for (const [tool, button] of toolButtons) {
5911
- button.disabled = !isPreviewToolEnabled(tool);
5912
- LocalEditorShared.applyButtonActiveState(button, transformTool?.activeTool === tool);
5913
- }
5914
6129
  for (const [space, button] of Object.entries(spaceButtons)) {
5915
6130
  button.disabled = !isPreviewToolEnabled('transform-space');
5916
6131
  LocalEditorShared.applyButtonActiveState(button, transformTool?.activeSpace === space);
@@ -5970,9 +6185,14 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
5970
6185
  dirtyBadge.style.display = inEditor && state.session?.dirty ? 'inline-flex' : 'none';
5971
6186
  renderPreviewState(state);
5972
6187
  scheduleToolbarOverflowLayout();
5973
- if (!inEditor)
6188
+ if (!inEditor) {
6189
+ LocalEditorPanels.disposeInspectorPanelUi(renderingPanel);
5974
6190
  return;
6191
+ }
5975
6192
  const activeRightTab = panelRegistry.getRightDockTab();
6193
+ if (inPrefabStage || activeRightTab !== 'rendering') {
6194
+ LocalEditorPanels.disposeInspectorPanelUi(renderingPanel);
6195
+ }
5976
6196
  if (inPrefabStage && prefabStage) {
5977
6197
  const rightDockVisibility = resolveLocalEditorRightDockVisibility({
5978
6198
  inPrefabStage: true,
@@ -6003,10 +6223,12 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6003
6223
  if (activeBottomTab === 'assets' && selectedAssetChanged && state.selectedAssetId && !suppressAssetScroll) {
6004
6224
  revealSelectedAssetBrowserItem(state.selectedAssetId);
6005
6225
  }
6226
+ revealPendingStatusDiagnosticAsset(state);
6006
6227
  lastRenderedAssetBrowserTab = assetBrowserTab;
6007
6228
  lastRenderedBottomDockTab = activeBottomTab;
6008
6229
  lastRenderedSelectedAssetId = state.selectedAssetId ?? null;
6009
6230
  restoreLocalEditorEditableFocus(doc, focusSnapshot);
6231
+ revealPendingStatusDiagnosticPath(state);
6010
6232
  return;
6011
6233
  }
6012
6234
  leftDockTabs.style.display = '';
@@ -6045,18 +6267,25 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6045
6267
  if (activeBottomTab === 'assets' && selectedAssetChanged && state.selectedAssetId && !suppressAssetScroll) {
6046
6268
  revealSelectedAssetBrowserItem(state.selectedAssetId);
6047
6269
  }
6270
+ revealPendingStatusDiagnosticAsset(state);
6048
6271
  lastRenderedAssetBrowserTab = assetBrowserTab;
6049
6272
  lastRenderedBottomDockTab = activeBottomTab;
6050
6273
  lastRenderedSelectedAssetId = state.selectedAssetId;
6051
6274
  LocalEditorPanels.renderWorkbenchRightDockTabs(doc, rightDockTabs, activeRightTab, panelRegistry.getPanels('right'));
6052
- 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') {
6053
6281
  LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, state, inspectorFilter, {
6054
6282
  ...options.inspector,
6283
+ layerHost: editorUiLayerHost,
6055
6284
  lockedVectorGroups: lockedInspectorVectorGroups,
6056
6285
  });
6057
6286
  }
6058
6287
  else if (activeRightTab === 'rendering') {
6059
- LocalEditorPanels.renderRenderingPanel(doc, renderingPanel, state);
6288
+ LocalEditorPanels.renderRenderingPanel(doc, renderingPanel, state, { layerHost: editorUiLayerHost });
6060
6289
  }
6061
6290
  else if (activeRightTab === 'markers') {
6062
6291
  LocalEditorPanels.renderMarkerPanel(doc, markersPanel, state);
@@ -6066,6 +6295,7 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6066
6295
  }
6067
6296
  restoreLocalEditorEditableFocus(doc, focusSnapshot);
6068
6297
  restoreLocalEditorRightDockScrollSnapshot(rightDockScrollSnapshot, state, activeRightTab, inspectorFilter, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);
6298
+ revealPendingStatusDiagnosticPath(state);
6069
6299
  };
6070
6300
  const completedCleanup = new Set();
6071
6301
  let uiDisposed = false;
@@ -6084,15 +6314,15 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6084
6314
  currentState = { ...currentState, performanceStats: stats };
6085
6315
  renderPerformanceMonitorOverlay(performanceMonitorOverlay, currentState?.mode === 'editor' && !currentState.prefabStage ? stats : null, currentState?.mode === 'editor' && !currentState.prefabStage && performanceMonitorOpen);
6086
6316
  },
6087
- getPrefabComparisonPreviewSurfaces() {
6088
- return readPrefabComparisonPreviewSurfaces(prefabComparisonPreviewOverlay);
6089
- },
6090
6317
  alert(input) {
6091
6318
  return modalDialog.alert(input);
6092
6319
  },
6093
6320
  confirm(input) {
6094
6321
  return modalDialog.confirm(input);
6095
6322
  },
6323
+ choose(input) {
6324
+ return modalDialog.choose(input);
6325
+ },
6096
6326
  setTheme(theme) {
6097
6327
  setActiveTheme(theme);
6098
6328
  },
@@ -6125,6 +6355,8 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6125
6355
  toolbarOverflowButton.removeEventListener('click', onToolbarOverflowButtonClick);
6126
6356
  });
6127
6357
  run('local-test-click', () => localTestButton.removeEventListener('click', onLocalTestButtonClick));
6358
+ run('editor-status-click', () => editorStatusButton.removeEventListener('click', onEditorStatusButtonClick));
6359
+ run('editor-status-copy-all-click', () => editorStatusCopyAllButton.removeEventListener('click', onEditorStatusCopyAllClick));
6128
6360
  run('toolbar-overflow-pointerdown', () => {
6129
6361
  doc.removeEventListener('pointerdown', onToolbarOverflowPointerDown);
6130
6362
  });
@@ -6132,8 +6364,12 @@ function createLocalEditorBrowserUiImplementation(options, construction) {
6132
6364
  doc.defaultView?.removeEventListener('resize', scheduleToolbarOverflowLayout);
6133
6365
  });
6134
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());
6135
6370
  run('workbench-root', () => workbench.root.remove());
6136
6371
  run('local-test-menu', () => localTestMenu.remove());
6372
+ run('editor-status-center', () => editorStatusCenter.remove());
6137
6373
  run('toolbar-overflow-menu', () => toolbarOverflowMenu.remove());
6138
6374
  run('static-shadow-bake-popover', () => staticShadowBakePopover.remove());
6139
6375
  run('snap-settings-popover', () => snapSettingsPopover.remove());