@fps-games/editor 0.2.0-beta.4 → 0.2.1-beta.2

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 (1506) hide show
  1. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/editor-state.js +12 -6
  3. package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
  4. package/dist/agent-bridge/capabilities/hierarchy.d.ts +4 -0
  5. package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +1 -0
  6. package/dist/agent-bridge/capabilities/hierarchy.js +209 -0
  7. package/dist/agent-bridge/capabilities/hierarchy.js.map +1 -0
  8. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -1
  9. package/dist/agent-bridge/capabilities/prefabs.js +208 -73
  10. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
  11. package/dist/agent-bridge/capabilities/scene-objects.d.ts +3 -4
  12. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -1
  13. package/dist/agent-bridge/capabilities/scene-objects.js +24 -23
  14. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
  15. package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -1
  16. package/dist/agent-bridge/capabilities/shadows.js +829 -66
  17. package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
  18. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
  19. package/dist/agent-bridge/capabilities/ui-regions.js +19 -1
  20. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  21. package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -1
  22. package/dist/agent-bridge/capabilities/viewport.js +22 -9
  23. package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
  24. package/dist/agent-bridge/capability-sources.d.ts.map +1 -1
  25. package/dist/agent-bridge/capability-sources.js +2 -0
  26. package/dist/agent-bridge/capability-sources.js.map +1 -1
  27. package/dist/agent-bridge/register.d.ts.map +1 -1
  28. package/dist/agent-bridge/register.js +194 -0
  29. package/dist/agent-bridge/register.js.map +1 -1
  30. package/dist/agent-bridge/shared.d.ts +231 -11
  31. package/dist/agent-bridge/shared.d.ts.map +1 -1
  32. package/dist/agent-bridge/shared.js +162 -20
  33. package/dist/agent-bridge/shared.js.map +1 -1
  34. package/dist/agent-bridge/source-types.d.ts +17 -1
  35. package/dist/agent-bridge/source-types.d.ts.map +1 -1
  36. package/dist/agent-bridge/source-types.js.map +1 -1
  37. package/dist/build-info.json +57 -42
  38. package/dist/index.d.ts +7 -6
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -3
  41. package/dist/index.js.map +1 -1
  42. package/dist/internal/babylon-preview-engine.d.ts +3 -0
  43. package/dist/internal/babylon-preview-engine.d.ts.map +1 -0
  44. package/dist/internal/babylon-preview-engine.js +11 -0
  45. package/dist/internal/babylon-preview-engine.js.map +1 -0
  46. package/dist/internal/material-preview.d.ts +22 -0
  47. package/dist/internal/material-preview.d.ts.map +1 -0
  48. package/dist/internal/material-preview.js +186 -0
  49. package/dist/internal/material-preview.js.map +1 -0
  50. package/dist/internal/product-local-editor-cleanup.d.ts +5 -0
  51. package/dist/internal/product-local-editor-cleanup.d.ts.map +1 -0
  52. package/dist/internal/product-local-editor-cleanup.js +20 -0
  53. package/dist/internal/product-local-editor-cleanup.js.map +1 -0
  54. package/dist/internal/project-model-preview.d.ts +4 -0
  55. package/dist/internal/project-model-preview.d.ts.map +1 -0
  56. package/dist/internal/project-model-preview.js +359 -0
  57. package/dist/internal/project-model-preview.js.map +1 -0
  58. package/dist/local-editor-agent-actions.d.ts +2 -4
  59. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  60. package/dist/local-editor-agent-actions.js +56 -32
  61. package/dist/local-editor-agent-actions.js.map +1 -1
  62. package/dist/local-editor-agent-context.d.ts +17 -6
  63. package/dist/local-editor-agent-context.d.ts.map +1 -1
  64. package/dist/local-editor-agent-context.js +47 -0
  65. package/dist/local-editor-agent-context.js.map +1 -1
  66. package/dist/local-editor-harness.d.ts +353 -35
  67. package/dist/local-editor-harness.d.ts.map +1 -1
  68. package/dist/local-editor-harness.js +4115 -1313
  69. package/dist/local-editor-harness.js.map +1 -1
  70. package/dist/local-editor-marker-graph.d.ts +15 -15
  71. package/dist/local-editor-marker-graph.d.ts.map +1 -1
  72. package/dist/local-editor-marker-graph.js +3 -0
  73. package/dist/local-editor-marker-graph.js.map +1 -1
  74. package/dist/local-editor-performance-stats.d.ts +3 -2
  75. package/dist/local-editor-performance-stats.d.ts.map +1 -1
  76. package/dist/local-editor-performance-stats.js.map +1 -1
  77. package/dist/local-editor-prefab-stage-transaction.d.ts +19 -0
  78. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -0
  79. package/dist/local-editor-prefab-stage-transaction.js +45 -0
  80. package/dist/local-editor-prefab-stage-transaction.js.map +1 -0
  81. package/dist/local-editor-scene-view-interaction-runtime.d.ts +3 -1
  82. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  83. package/dist/local-editor-scene-view-interaction-runtime.js +24 -0
  84. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  85. package/dist/local-editor-tools.d.ts +19 -0
  86. package/dist/local-editor-tools.d.ts.map +1 -0
  87. package/dist/local-editor-tools.js +56 -0
  88. package/dist/local-editor-tools.js.map +1 -0
  89. package/dist/playable-babylon-rendering.d.ts +9 -0
  90. package/dist/playable-babylon-rendering.d.ts.map +1 -1
  91. package/dist/playable-babylon-rendering.js +162 -6
  92. package/dist/playable-babylon-rendering.js.map +1 -1
  93. package/dist/playable-local-editor-entry.d.ts +68 -0
  94. package/dist/playable-local-editor-entry.d.ts.map +1 -0
  95. package/dist/playable-local-editor-entry.js +424 -0
  96. package/dist/playable-local-editor-entry.js.map +1 -0
  97. package/dist/playable-local-editor-host.d.ts +55 -29
  98. package/dist/playable-local-editor-host.d.ts.map +1 -1
  99. package/dist/playable-local-editor-host.js +50 -11
  100. package/dist/playable-local-editor-host.js.map +1 -1
  101. package/dist/playable-product-local-editor.d.ts +10 -12
  102. package/dist/playable-product-local-editor.d.ts.map +1 -1
  103. package/dist/playable-product-local-editor.js +178 -85
  104. package/dist/playable-product-local-editor.js.map +1 -1
  105. package/dist/playable-product-projection-preview.d.ts +4 -1
  106. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  107. package/dist/playable-product-projection-preview.js +122 -5
  108. package/dist/playable-product-projection-preview.js.map +1 -1
  109. package/dist/playable-product-rendering.d.ts +12 -0
  110. package/dist/playable-product-rendering.d.ts.map +1 -1
  111. package/dist/playable-product-rendering.js +128 -6
  112. package/dist/playable-product-rendering.js.map +1 -1
  113. package/dist/playable-product-scene-capabilities.d.ts +24 -7
  114. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  115. package/dist/playable-product-scene-capabilities.js +180 -17
  116. package/dist/playable-product-scene-capabilities.js.map +1 -1
  117. package/dist/playable-project-mode.d.ts +17 -0
  118. package/dist/playable-project-mode.d.ts.map +1 -0
  119. package/dist/playable-project-mode.js +2 -0
  120. package/dist/playable-project-mode.js.map +1 -0
  121. package/dist/playable-runtime-babylon.d.ts +3 -6
  122. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  123. package/dist/playable-runtime-babylon.js +1 -5
  124. package/dist/playable-runtime-babylon.js.map +1 -1
  125. package/dist/playable-sdk.d.ts +16 -9
  126. package/dist/playable-sdk.d.ts.map +1 -1
  127. package/dist/playable-sdk.js +6 -4
  128. package/dist/playable-sdk.js.map +1 -1
  129. package/dist/playable-standard-project.d.ts +23 -14
  130. package/dist/playable-standard-project.d.ts.map +1 -1
  131. package/dist/playable-standard-project.js +57 -20
  132. package/dist/playable-standard-project.js.map +1 -1
  133. package/dist/vite-client.d.ts +4 -0
  134. package/node_modules/@babel/helper-string-parser/lib/index.js +0 -1
  135. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js +0 -1
  136. package/node_modules/@babel/helper-validator-identifier/lib/index.js +0 -1
  137. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js +0 -1
  138. package/node_modules/@babel/parser/lib/index.js +0 -1
  139. package/node_modules/@babel/types/lib/asserts/assertNode.js +0 -1
  140. package/node_modules/@babel/types/lib/asserts/generated/index.js +0 -1
  141. package/node_modules/@babel/types/lib/ast-types/generated/index.js +0 -1
  142. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -1
  143. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -1
  144. package/node_modules/@babel/types/lib/builders/generated/index.js +0 -1
  145. package/node_modules/@babel/types/lib/builders/generated/lowercase.js +0 -1
  146. package/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
  147. package/node_modules/@babel/types/lib/builders/productions.js +0 -1
  148. package/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -1
  149. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -1
  150. package/node_modules/@babel/types/lib/builders/validateNode.js +0 -1
  151. package/node_modules/@babel/types/lib/clone/clone.js +0 -1
  152. package/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -1
  153. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -1
  154. package/node_modules/@babel/types/lib/clone/cloneNode.js +0 -1
  155. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -1
  156. package/node_modules/@babel/types/lib/comments/addComment.js +0 -1
  157. package/node_modules/@babel/types/lib/comments/addComments.js +0 -1
  158. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -1
  159. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -1
  160. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -1
  161. package/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -1
  162. package/node_modules/@babel/types/lib/comments/removeComments.js +0 -1
  163. package/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
  164. package/node_modules/@babel/types/lib/constants/index.js +0 -1
  165. package/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -1
  166. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +0 -1
  167. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -1
  168. package/node_modules/@babel/types/lib/converters/toBlock.js +0 -1
  169. package/node_modules/@babel/types/lib/converters/toComputedKey.js +0 -1
  170. package/node_modules/@babel/types/lib/converters/toExpression.js +0 -1
  171. package/node_modules/@babel/types/lib/converters/toIdentifier.js +0 -1
  172. package/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -1
  173. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -1
  174. package/node_modules/@babel/types/lib/converters/toStatement.js +0 -1
  175. package/node_modules/@babel/types/lib/converters/valueToNode.js +0 -1
  176. package/node_modules/@babel/types/lib/definitions/core.js +0 -1
  177. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js +0 -1
  178. package/node_modules/@babel/types/lib/definitions/experimental.js +0 -1
  179. package/node_modules/@babel/types/lib/definitions/flow.js +0 -1
  180. package/node_modules/@babel/types/lib/definitions/index.js +0 -1
  181. package/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
  182. package/node_modules/@babel/types/lib/definitions/misc.js +0 -1
  183. package/node_modules/@babel/types/lib/definitions/placeholders.js +0 -1
  184. package/node_modules/@babel/types/lib/definitions/typescript.js +0 -1
  185. package/node_modules/@babel/types/lib/definitions/utils.js +0 -1
  186. package/node_modules/@babel/types/lib/index.js +0 -1
  187. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -1
  188. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +0 -1
  189. package/node_modules/@babel/types/lib/modifications/inherits.js +0 -1
  190. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -1
  191. package/node_modules/@babel/types/lib/modifications/removeProperties.js +0 -1
  192. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -1
  193. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +0 -1
  194. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js +0 -1
  195. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +0 -1
  196. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js +0 -1
  197. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -1
  198. package/node_modules/@babel/types/lib/traverse/traverse.js +0 -1
  199. package/node_modules/@babel/types/lib/traverse/traverseFast.js +0 -1
  200. package/node_modules/@babel/types/lib/utils/deprecationWarning.js +0 -1
  201. package/node_modules/@babel/types/lib/utils/inherit.js +0 -1
  202. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +0 -1
  203. package/node_modules/@babel/types/lib/utils/shallowEqual.js +0 -1
  204. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -1
  205. package/node_modules/@babel/types/lib/validators/generated/index.js +0 -1
  206. package/node_modules/@babel/types/lib/validators/is.js +0 -1
  207. package/node_modules/@babel/types/lib/validators/isBinding.js +0 -1
  208. package/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -1
  209. package/node_modules/@babel/types/lib/validators/isImmutable.js +0 -1
  210. package/node_modules/@babel/types/lib/validators/isLet.js +0 -1
  211. package/node_modules/@babel/types/lib/validators/isNode.js +0 -1
  212. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +0 -1
  213. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -1
  214. package/node_modules/@babel/types/lib/validators/isReferenced.js +0 -1
  215. package/node_modules/@babel/types/lib/validators/isScope.js +0 -1
  216. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +0 -1
  217. package/node_modules/@babel/types/lib/validators/isType.js +0 -1
  218. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -1
  219. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -1
  220. package/node_modules/@babel/types/lib/validators/isVar.js +0 -1
  221. package/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -1
  222. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
  223. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -1
  224. package/node_modules/@babel/types/lib/validators/validate.js +0 -1
  225. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.d.ts +69 -0
  226. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.js +132 -0
  227. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.d.ts +8 -0
  228. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.js +7 -0
  229. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.d.ts +14 -0
  230. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.js +328 -0
  231. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.d.ts +9 -0
  232. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.js +1 -0
  233. package/node_modules/@babylonjs/loaders/BVH/index.d.ts +2 -0
  234. package/node_modules/@babylonjs/loaders/BVH/index.js +3 -0
  235. package/node_modules/@babylonjs/loaders/OBJ/index.d.ts +4 -0
  236. package/node_modules/@babylonjs/loaders/OBJ/index.js +4 -0
  237. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.d.ts +41 -0
  238. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.js +230 -0
  239. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.d.ts +136 -0
  240. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.js +317 -0
  241. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.d.ts +4 -0
  242. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.js +4 -0
  243. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.d.ts +47 -0
  244. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.js +1 -0
  245. package/node_modules/@babylonjs/loaders/OBJ/solidParser.d.ts +175 -0
  246. package/node_modules/@babylonjs/loaders/OBJ/solidParser.js +903 -0
  247. package/node_modules/@babylonjs/loaders/SPLAT/index.d.ts +2 -0
  248. package/node_modules/@babylonjs/loaders/SPLAT/index.js +3 -0
  249. package/node_modules/@babylonjs/loaders/SPLAT/sog.d.ts +84 -0
  250. package/node_modules/@babylonjs/loaders/SPLAT/sog.js +294 -0
  251. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.d.ts +26 -0
  252. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.js +10 -0
  253. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.d.ts +100 -0
  254. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.js +536 -0
  255. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.d.ts +20 -0
  256. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.js +15 -0
  257. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.d.ts +33 -0
  258. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.js +1 -0
  259. package/node_modules/@babylonjs/loaders/SPLAT/spz.d.ts +11 -0
  260. package/node_modules/@babylonjs/loaders/SPLAT/spz.js +168 -0
  261. package/node_modules/@babylonjs/loaders/STL/index.d.ts +1 -0
  262. package/node_modules/@babylonjs/loaders/STL/index.js +1 -0
  263. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.d.ts +78 -0
  264. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.js +238 -0
  265. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.d.ts +8 -0
  266. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.js +7 -0
  267. package/node_modules/@babylonjs/loaders/bvh/license.md +21 -0
  268. package/node_modules/@babylonjs/loaders/dynamic.d.ts +5 -0
  269. package/node_modules/@babylonjs/loaders/dynamic.js +56 -0
  270. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.d.ts +16 -0
  271. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.js +64 -0
  272. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.d.ts +144 -0
  273. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.js +1841 -0
  274. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.d.ts +412 -0
  275. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.js +95 -0
  276. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.d.ts +71 -0
  277. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.js +254 -0
  278. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.d.ts +13 -0
  279. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.js +130 -0
  280. package/node_modules/@babylonjs/loaders/glTF/1.0/index.d.ts +5 -0
  281. package/node_modules/@babylonjs/loaders/glTF/1.0/index.js +5 -0
  282. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.d.ts +41 -0
  283. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.js +93 -0
  284. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.d.ts +41 -0
  285. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.js +83 -0
  286. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +48 -0
  287. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.js +115 -0
  288. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +39 -0
  289. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +94 -0
  290. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +39 -0
  291. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.js +50 -0
  292. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.d.ts +34 -0
  293. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.js +38 -0
  294. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.d.ts +33 -0
  295. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.js +37 -0
  296. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +53 -0
  297. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.js +73 -0
  298. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +47 -0
  299. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -0
  300. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.js +251 -0
  301. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.js +77 -0
  302. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +47 -0
  303. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +92 -0
  304. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +355 -0
  305. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1678 -0
  306. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
  307. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +19 -0
  308. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
  309. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.js +3 -0
  310. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +70 -0
  311. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +438 -0
  312. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.d.ts +38 -0
  313. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.js +150 -0
  314. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +41 -0
  315. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.js +91 -0
  316. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +42 -0
  317. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.js +65 -0
  318. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +43 -0
  319. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.js +79 -0
  320. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.d.ts +49 -0
  321. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.js +119 -0
  322. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +43 -0
  323. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +58 -0
  324. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +43 -0
  325. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +69 -0
  326. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +43 -0
  327. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.js +56 -0
  328. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +42 -0
  329. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +47 -0
  330. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +43 -0
  331. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.js +77 -0
  332. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.d.ts +46 -0
  333. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.js +54 -0
  334. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +42 -0
  335. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.js +68 -0
  336. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +42 -0
  337. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +80 -0
  338. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +43 -0
  339. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.js +73 -0
  340. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.d.ts +42 -0
  341. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.js +76 -0
  342. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +42 -0
  343. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.js +303 -0
  344. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +42 -0
  345. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.js +66 -0
  346. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.d.ts +112 -0
  347. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.js +262 -0
  348. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.d.ts +43 -0
  349. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.js +82 -0
  350. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +45 -0
  351. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +109 -0
  352. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +29 -0
  353. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.js +22 -0
  354. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +31 -0
  355. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.js +189 -0
  356. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
  357. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.js +123 -0
  358. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.d.ts +30 -0
  359. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.js +66 -0
  360. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +33 -0
  361. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.js +37 -0
  362. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.d.ts +37 -0
  363. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.js +58 -0
  364. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +39 -0
  365. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.js +47 -0
  366. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +56 -0
  367. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.js +228 -0
  368. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.d.ts +104 -0
  369. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.js +337 -0
  370. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +27 -0
  371. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.js +39 -0
  372. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +27 -0
  373. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.js +38 -0
  374. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.d.ts +4 -0
  375. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.js +212 -0
  376. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +45 -0
  377. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.js +100 -0
  378. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.d.ts +43 -0
  379. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.js +44 -0
  380. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.d.ts +306 -0
  381. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.js +884 -0
  382. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.d.ts +450 -0
  383. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.js +2485 -0
  384. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.d.ts +42 -0
  385. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.js +79 -0
  386. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.d.ts +165 -0
  387. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.js +1 -0
  388. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.d.ts +25 -0
  389. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.js +32 -0
  390. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.d.ts +262 -0
  391. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.js +1 -0
  392. package/node_modules/@babylonjs/loaders/glTF/2.0/index.d.ts +8 -0
  393. package/node_modules/@babylonjs/loaders/glTF/2.0/index.js +9 -0
  394. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.d.ts +364 -0
  395. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.js +1 -0
  396. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.d.ts +674 -0
  397. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.js +1034 -0
  398. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +705 -0
  399. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.js +1126 -0
  400. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.d.ts +553 -0
  401. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.js +998 -0
  402. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.d.ts +15 -0
  403. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.js +17 -0
  404. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.d.ts +35 -0
  405. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.js +131 -0
  406. package/node_modules/@babylonjs/loaders/glTF/index.d.ts +5 -0
  407. package/node_modules/@babylonjs/loaders/glTF/index.js +6 -0
  408. package/node_modules/@babylonjs/loaders/index.d.ts +6 -0
  409. package/node_modules/@babylonjs/loaders/index.js +7 -0
  410. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.d.ts +1 -0
  411. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.js +15 -0
  412. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.d.ts +1 -0
  413. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.js +13 -0
  414. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.d.ts +2 -0
  415. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.js +18 -0
  416. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.d.ts +2 -0
  417. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.js +15 -0
  418. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.d.ts +2 -0
  419. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.js +3 -0
  420. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.d.ts +2 -0
  421. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.js +34 -0
  422. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.d.ts +2 -0
  423. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.js +3 -0
  424. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.d.ts +3 -0
  425. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.js +4 -0
  426. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.d.ts +1 -0
  427. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.js +15 -0
  428. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.d.ts +1 -0
  429. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.js +15 -0
  430. package/node_modules/@babylonjs/loaders/legacy/legacy.d.ts +8 -0
  431. package/node_modules/@babylonjs/loaders/legacy/legacy.js +10 -0
  432. package/node_modules/@babylonjs/loaders/license.md +71 -0
  433. package/node_modules/@babylonjs/loaders/package.json +49 -0
  434. package/node_modules/@babylonjs/loaders/readme.md +23 -0
  435. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts +22 -0
  436. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts.map +1 -0
  437. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js +187 -0
  438. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js.map +1 -0
  439. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
  440. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
  441. package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
  442. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  443. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts +19 -0
  444. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts.map +1 -0
  445. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js +212 -0
  446. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js.map +1 -0
  447. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts +17 -2
  448. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts.map +1 -1
  449. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js +192 -17
  450. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  451. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +2 -0
  452. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  453. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +139 -3
  454. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  455. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts +4 -0
  456. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts.map +1 -1
  457. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  458. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts +1 -0
  459. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts.map +1 -1
  460. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js +1 -0
  461. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  462. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts +14 -0
  463. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts.map +1 -0
  464. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js +14 -0
  465. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js.map +1 -0
  466. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts +59 -0
  467. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  468. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js +725 -0
  469. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  470. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts +136 -0
  471. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  472. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js +2735 -0
  473. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js.map +1 -0
  474. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  475. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +1 -1
  476. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  477. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +2 -1
  478. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  479. package/node_modules/@fps-games/editor-babylon/dist/index.js +2 -1
  480. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  481. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts +2 -0
  482. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts.map +1 -1
  483. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js +59 -6
  484. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  485. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +24 -0
  486. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
  487. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -1
  488. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +81 -11
  489. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  490. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +2 -8
  491. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  492. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +26 -5
  493. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  494. package/node_modules/@fps-games/editor-babylon/dist/projection.js +396 -363
  495. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  496. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +4 -0
  497. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
  498. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +76 -10
  499. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  500. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.d.ts.map +1 -1
  501. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js +85 -22
  502. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
  503. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts +46 -0
  504. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts.map +1 -0
  505. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js +304 -0
  506. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js.map +1 -0
  507. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +87 -0
  508. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -0
  509. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +1746 -0
  510. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -0
  511. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +11 -3
  512. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  513. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +105 -15
  514. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  515. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts +1 -0
  516. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  517. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +249 -15
  518. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  519. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts +1 -1
  520. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts.map +1 -1
  521. package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
  522. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts +25 -0
  523. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts.map +1 -0
  524. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js +44 -0
  525. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js.map +1 -0
  526. package/node_modules/@fps-games/editor-babylon/package.json +6 -5
  527. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +13 -11
  528. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  529. package/node_modules/@fps-games/editor-browser/dist/index.js +9 -9
  530. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  531. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts +35 -0
  532. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts.map +1 -0
  533. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js +136 -0
  534. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js.map +1 -0
  535. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts +46 -0
  536. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts.map +1 -0
  537. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js +283 -0
  538. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js.map +1 -0
  539. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts +2 -0
  540. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts.map +1 -0
  541. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js +36 -0
  542. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js.map +1 -0
  543. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts +2 -0
  544. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts.map +1 -1
  545. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js +17 -0
  546. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  547. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts +12 -0
  548. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts.map +1 -0
  549. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js +67 -0
  550. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js.map +1 -0
  551. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts +6 -0
  552. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts.map +1 -0
  553. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js +9 -0
  554. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js.map +1 -0
  555. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts +7 -0
  556. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts.map +1 -0
  557. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js +20 -0
  558. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js.map +1 -0
  559. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts +9 -0
  560. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts.map +1 -0
  561. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js +219 -0
  562. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js.map +1 -0
  563. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts +14 -0
  564. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts.map +1 -0
  565. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js +42 -0
  566. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js.map +1 -0
  567. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +1 -1
  568. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
  569. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +8 -0
  570. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  571. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts +27 -0
  572. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts.map +1 -0
  573. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js +288 -0
  574. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js.map +1 -0
  575. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts.map +1 -1
  576. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +157 -77
  577. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  578. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.d.ts.map +1 -1
  579. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js +27 -21
  580. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  581. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +19 -0
  582. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -0
  583. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +44 -0
  584. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -0
  585. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +36 -6
  586. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  587. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +829 -866
  588. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  589. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts +8 -7
  590. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts.map +1 -1
  591. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js +1 -7
  592. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  593. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts +7 -0
  594. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts.map +1 -0
  595. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js +20 -0
  596. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js.map +1 -0
  597. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +6 -7
  598. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  599. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +266 -114
  600. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  601. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  602. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  603. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +34 -0
  604. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  605. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  606. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +3 -17
  607. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  608. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts +14 -0
  609. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts.map +1 -1
  610. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js +44 -62
  611. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  612. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +30 -8
  613. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  614. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +911 -698
  615. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  616. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +10 -37
  617. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
  618. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +29 -105
  619. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  620. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  621. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +29 -110
  622. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  623. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +1 -3
  624. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
  625. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +6 -90
  626. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  627. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -1
  628. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +9 -54
  629. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  630. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +16 -1
  631. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -1
  632. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +44 -39
  633. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -1
  634. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts +4 -0
  635. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts.map +1 -0
  636. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js +44 -0
  637. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js.map +1 -0
  638. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.d.ts.map +1 -1
  639. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js +35 -44
  640. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  641. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -1
  642. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +40 -24
  643. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  644. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.d.ts.map +1 -1
  645. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js +2 -20
  646. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  647. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +114 -343
  648. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  649. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  650. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +13 -14
  651. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  652. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +120 -134
  653. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  654. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +6 -10
  655. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  656. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +2019 -861
  657. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  658. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts +13 -0
  659. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts.map +1 -0
  660. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js +15 -0
  661. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js.map +1 -0
  662. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts +2 -3
  663. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts.map +1 -1
  664. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js +0 -180
  665. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  666. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts +5 -0
  667. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts.map +1 -0
  668. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js +5 -0
  669. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js.map +1 -0
  670. package/node_modules/@fps-games/editor-browser/package.json +15 -4
  671. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts +22 -0
  672. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts.map +1 -0
  673. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js +226 -0
  674. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js.map +1 -0
  675. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -1
  676. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  677. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +94 -2
  678. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  679. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +24 -2
  680. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  681. package/node_modules/@fps-games/editor-core/dist/editor-session.js +70 -10
  682. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  683. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +113 -0
  684. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -0
  685. package/node_modules/@fps-games/editor-core/dist/editor-tools.js +615 -0
  686. package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -0
  687. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +46 -0
  688. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -1
  689. package/node_modules/@fps-games/editor-core/dist/inspector.js +62 -0
  690. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  691. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -0
  692. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  693. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  694. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +11 -2
  695. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
  696. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js +12 -1
  697. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  698. package/node_modules/@fps-games/editor-core/package.json +14 -6
  699. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  700. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +14 -3
  701. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  702. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +1 -1
  703. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -1
  704. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +1 -1
  705. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  706. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +14 -0
  707. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  708. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +49 -1
  709. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  710. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts +1 -0
  711. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts.map +1 -1
  712. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +63 -2
  713. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  714. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  715. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +48 -6
  716. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  717. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts +1 -1
  718. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts.map +1 -1
  719. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js +1 -1
  720. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
  721. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.d.ts.map +1 -1
  722. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js +15 -1
  723. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
  724. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.d.ts.map +1 -1
  725. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js +3 -0
  726. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
  727. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts +6 -1
  728. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts.map +1 -1
  729. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
  730. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +28 -3
  731. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  732. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +314 -6
  733. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  734. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts +2 -0
  735. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts.map +1 -1
  736. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js +2 -0
  737. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  738. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts +11 -0
  739. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts.map +1 -0
  740. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js +27 -0
  741. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js.map +1 -0
  742. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts +5 -0
  743. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts.map +1 -0
  744. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js +285 -0
  745. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js.map +1 -0
  746. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +7 -3
  747. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  748. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  749. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +4 -0
  750. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  751. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +7 -0
  752. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  753. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  754. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +23 -81
  755. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  756. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts +41 -0
  757. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts.map +1 -0
  758. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js +93 -0
  759. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js.map +1 -0
  760. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts +29 -0
  761. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts.map +1 -0
  762. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js +77 -0
  763. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js.map +1 -0
  764. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts +51 -0
  765. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts.map +1 -0
  766. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js +105 -0
  767. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js.map +1 -0
  768. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts +60 -0
  769. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts.map +1 -0
  770. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js +287 -0
  771. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js.map +1 -0
  772. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +6 -1
  773. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  774. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  775. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +1 -0
  776. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  777. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +53 -17
  778. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  779. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +16 -8
  780. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  781. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +10 -6
  782. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  783. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +5 -3
  784. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  785. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +2 -1
  786. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  787. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  788. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +134 -66
  789. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  790. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +11 -0
  791. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  792. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +21 -14
  793. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  794. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +17 -9
  795. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  796. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  797. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  798. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +20 -0
  799. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  800. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
  801. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +49 -10
  802. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  803. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +2 -2
  804. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  805. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -0
  806. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  807. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts +7 -0
  808. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts.map +1 -1
  809. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js +130 -20
  810. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  811. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts +1 -1
  812. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts.map +1 -1
  813. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js +12 -3
  814. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  815. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts +11 -0
  816. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts.map +1 -0
  817. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js +136 -0
  818. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js.map +1 -0
  819. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts +1 -0
  820. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts.map +1 -1
  821. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js +1 -0
  822. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  823. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts +36 -51
  824. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts.map +1 -1
  825. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js +40 -65
  826. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  827. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +5 -2
  828. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  829. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +207 -1
  830. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  831. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  832. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  833. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +3 -0
  834. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  835. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +18 -7
  836. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  837. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +110 -18
  838. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  839. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +9 -0
  840. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  841. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +16 -1
  842. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  843. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts +5 -2
  844. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  845. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +22 -2
  846. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  847. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts +4 -0
  848. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts.map +1 -0
  849. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js +4 -0
  850. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js.map +1 -0
  851. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts +4 -0
  852. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts.map +1 -0
  853. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js +86 -0
  854. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js.map +1 -0
  855. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts +9 -0
  856. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts.map +1 -0
  857. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js +76 -0
  858. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js.map +1 -0
  859. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts +34 -0
  860. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts.map +1 -0
  861. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js +2 -0
  862. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js.map +1 -0
  863. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  864. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +144 -0
  865. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  866. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +16 -0
  867. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
  868. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  869. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  870. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
  871. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  872. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
  873. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  874. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  875. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +2 -0
  876. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -1
  877. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +241 -13
  878. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  879. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +1 -0
  880. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -1
  881. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +1 -0
  882. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  883. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts +31 -0
  884. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts.map +1 -0
  885. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js +170 -0
  886. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js.map +1 -0
  887. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +153 -13
  888. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -1
  889. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  890. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts +17 -0
  891. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts.map +1 -1
  892. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js +1295 -3
  893. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  894. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts +4 -0
  895. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  896. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +54 -0
  897. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  898. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.d.ts.map +1 -1
  899. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js +57 -34
  900. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  901. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
  902. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +4 -1
  903. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  904. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +4 -0
  905. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  906. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  907. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
  908. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +20 -198
  909. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  910. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.d.ts.map +1 -1
  911. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js +5 -1
  912. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  913. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts +5 -0
  914. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
  915. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +144 -8
  916. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  917. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts +1 -1
  918. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts.map +1 -1
  919. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js +30 -1
  920. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  921. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts +6 -0
  922. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts.map +1 -1
  923. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  924. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +31 -3
  925. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  926. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +5 -2
  927. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  928. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +40 -4
  929. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  930. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +1 -0
  931. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  932. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +1 -0
  933. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  934. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  935. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +116 -3
  936. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  937. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +2 -1
  938. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  939. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -0
  940. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  941. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +17 -1
  942. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  943. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +50 -2
  944. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  945. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +1 -0
  946. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  947. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +101 -5
  948. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  949. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +5 -6
  950. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  951. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +31 -17
  952. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  953. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts +14 -0
  954. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts.map +1 -0
  955. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js +101 -0
  956. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js.map +1 -0
  957. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts +23 -0
  958. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts.map +1 -0
  959. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js +180 -0
  960. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js.map +1 -0
  961. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +6 -0
  962. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  963. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  964. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  965. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +417 -2
  966. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -1
  967. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +692 -2
  968. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  969. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +23 -3
  970. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
  971. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  972. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts +55 -0
  973. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts.map +1 -0
  974. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js +2 -0
  975. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js.map +1 -0
  976. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +3 -18
  977. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  978. package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
  979. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  980. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  981. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.d.ts.map +1 -1
  982. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js +5 -0
  983. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  984. package/node_modules/@fps-games/editor-tooling/dist/vite.d.ts.map +1 -1
  985. package/node_modules/@fps-games/editor-tooling/dist/vite.js +151 -5
  986. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  987. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  988. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts +107 -0
  989. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts.map +1 -0
  990. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js +770 -0
  991. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js.map +1 -0
  992. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts +21 -0
  993. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts.map +1 -0
  994. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js +172 -0
  995. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js.map +1 -0
  996. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts +14 -0
  997. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts.map +1 -0
  998. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js +32 -0
  999. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js.map +1 -0
  1000. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts +3 -0
  1001. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -0
  1002. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +746 -0
  1003. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -0
  1004. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts +3 -0
  1005. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts.map +1 -0
  1006. package/node_modules/@fps-games/editor-ui/dist/gallery.js +3 -0
  1007. package/node_modules/@fps-games/editor-ui/dist/gallery.js.map +1 -0
  1008. package/node_modules/@fps-games/editor-ui/dist/index.d.ts +5 -0
  1009. package/node_modules/@fps-games/editor-ui/dist/index.d.ts.map +1 -0
  1010. package/node_modules/@fps-games/editor-ui/dist/index.js +5 -0
  1011. package/node_modules/@fps-games/editor-ui/dist/index.js.map +1 -0
  1012. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts +7 -0
  1013. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts.map +1 -0
  1014. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js +29 -0
  1015. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js.map +1 -0
  1016. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts +2 -0
  1017. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts.map +1 -0
  1018. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js +95 -0
  1019. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js.map +1 -0
  1020. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts +28 -0
  1021. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts.map +1 -0
  1022. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js +387 -0
  1023. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js.map +1 -0
  1024. package/node_modules/@fps-games/editor-ui/package.json +23 -0
  1025. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  1026. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts +1 -0
  1027. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts.map +1 -1
  1028. package/node_modules/@fps-games/playable-contracts/dist/index.js +1 -0
  1029. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  1030. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts +116 -0
  1031. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts.map +1 -0
  1032. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js +403 -0
  1033. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js.map +1 -0
  1034. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  1035. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts +3 -0
  1036. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts.map +1 -1
  1037. package/node_modules/@fps-games/playable-rendering/dist/index.js +3 -0
  1038. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  1039. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js +5 -25
  1040. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  1041. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts +3 -0
  1042. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts.map +1 -1
  1043. package/node_modules/@fps-games/playable-rendering/dist/runtime.js +3 -0
  1044. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  1045. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts +61 -0
  1046. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts.map +1 -0
  1047. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js +176 -0
  1048. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js.map +1 -0
  1049. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts +84 -0
  1050. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  1051. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js +362 -0
  1052. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js.map +1 -0
  1053. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts +167 -0
  1054. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts.map +1 -0
  1055. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js +484 -0
  1056. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js.map +1 -0
  1057. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  1058. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts +5 -0
  1059. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts.map +1 -1
  1060. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js +1 -0
  1061. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  1062. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  1063. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  1064. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  1065. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  1066. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  1067. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  1068. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  1069. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  1070. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts +6 -0
  1071. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts.map +1 -0
  1072. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js +16 -0
  1073. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js.map +1 -0
  1074. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts +7 -0
  1075. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts.map +1 -0
  1076. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js +47 -0
  1077. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js.map +1 -0
  1078. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +306 -0
  1079. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -0
  1080. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +1237 -0
  1081. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -0
  1082. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts +8 -0
  1083. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts.map +1 -0
  1084. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js +32 -0
  1085. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js.map +1 -0
  1086. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +2 -0
  1087. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts.map +1 -0
  1088. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +2 -0
  1089. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -0
  1090. package/node_modules/@fps-games/plugin-hierarchy/package.json +57 -0
  1091. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  1092. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  1093. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  1094. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  1095. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  1096. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  1097. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  1098. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  1099. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  1100. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  1101. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  1102. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  1103. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  1104. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  1105. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  1106. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  1107. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  1108. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts +8 -0
  1109. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts.map +1 -0
  1110. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js +35 -0
  1111. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js.map +1 -0
  1112. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts +11 -0
  1113. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts.map +1 -0
  1114. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js +14 -0
  1115. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js.map +1 -0
  1116. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +2 -0
  1117. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts.map +1 -0
  1118. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +2 -0
  1119. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -0
  1120. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +53 -0
  1121. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  1122. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  1123. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  1124. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  1125. package/node_modules/@playcanvas/observer/LICENSE +19 -0
  1126. package/node_modules/@playcanvas/observer/README.md +72 -0
  1127. package/node_modules/@playcanvas/observer/dist/index.cjs +2033 -0
  1128. package/node_modules/@playcanvas/observer/dist/index.js +2039 -0
  1129. package/node_modules/@playcanvas/observer/dist/index.mjs +2026 -0
  1130. package/node_modules/@playcanvas/observer/package.json +78 -0
  1131. package/node_modules/@playcanvas/observer/types/event-handle.d.ts +41 -0
  1132. package/node_modules/@playcanvas/observer/types/events.d.ts +162 -0
  1133. package/node_modules/@playcanvas/observer/types/history.d.ts +123 -0
  1134. package/node_modules/@playcanvas/observer/types/index.d.ts +15 -0
  1135. package/node_modules/@playcanvas/observer/types/observer-history.d.ts +32 -0
  1136. package/node_modules/@playcanvas/observer/types/observer-list.d.ts +39 -0
  1137. package/node_modules/@playcanvas/observer/types/observer.d.ts +157 -0
  1138. package/node_modules/@playcanvas/observer/types/utils.d.ts +33 -0
  1139. package/node_modules/@playcanvas/pcui/LICENSE +19 -0
  1140. package/node_modules/@playcanvas/pcui/README.md +164 -0
  1141. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1142. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1143. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1144. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1145. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1146. package/node_modules/@playcanvas/pcui/dist/module/src/Math/color-value.mjs +77 -0
  1147. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1148. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1149. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1150. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1151. package/node_modules/@playcanvas/pcui/dist/module/src/class.mjs +19 -0
  1152. package/node_modules/@playcanvas/pcui/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1153. package/node_modules/@playcanvas/pcui/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1154. package/node_modules/@playcanvas/pcui/dist/module/src/components/Button/index.mjs +119 -0
  1155. package/node_modules/@playcanvas/pcui/dist/module/src/components/Canvas/index.mjs +104 -0
  1156. package/node_modules/@playcanvas/pcui/dist/module/src/components/Code/index.mjs +43 -0
  1157. package/node_modules/@playcanvas/pcui/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1158. package/node_modules/@playcanvas/pcui/dist/module/src/components/Container/index.mjs +642 -0
  1159. package/node_modules/@playcanvas/pcui/dist/module/src/components/Divider/index.mjs +20 -0
  1160. package/node_modules/@playcanvas/pcui/dist/module/src/components/Element/index.mjs +829 -0
  1161. package/node_modules/@playcanvas/pcui/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1162. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridView/index.mjs +448 -0
  1163. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1164. package/node_modules/@playcanvas/pcui/dist/module/src/components/InfoBox/index.mjs +90 -0
  1165. package/node_modules/@playcanvas/pcui/dist/module/src/components/InputElement/index.mjs +186 -0
  1166. package/node_modules/@playcanvas/pcui/dist/module/src/components/Label/index.mjs +124 -0
  1167. package/node_modules/@playcanvas/pcui/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1168. package/node_modules/@playcanvas/pcui/dist/module/src/components/Menu/index.mjs +174 -0
  1169. package/node_modules/@playcanvas/pcui/dist/module/src/components/MenuItem/index.mjs +223 -0
  1170. package/node_modules/@playcanvas/pcui/dist/module/src/components/NumericInput/index.mjs +400 -0
  1171. package/node_modules/@playcanvas/pcui/dist/module/src/components/Overlay/index.mjs +108 -0
  1172. package/node_modules/@playcanvas/pcui/dist/module/src/components/Panel/index.mjs +400 -0
  1173. package/node_modules/@playcanvas/pcui/dist/module/src/components/Progress/index.mjs +45 -0
  1174. package/node_modules/@playcanvas/pcui/dist/module/src/components/RadioButton/index.mjs +113 -0
  1175. package/node_modules/@playcanvas/pcui/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1176. package/node_modules/@playcanvas/pcui/dist/module/src/components/SliderInput/index.mjs +333 -0
  1177. package/node_modules/@playcanvas/pcui/dist/module/src/components/Spinner/index.mjs +34 -0
  1178. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1179. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextInput/index.mjs +98 -0
  1180. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeView/index.mjs +1131 -0
  1181. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1182. package/node_modules/@playcanvas/pcui/dist/module/src/components/VectorInput/index.mjs +366 -0
  1183. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/search.mjs +194 -0
  1184. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/utils.mjs +43 -0
  1185. package/node_modules/@playcanvas/pcui/dist/module/src/index.mjs +56 -0
  1186. package/node_modules/@playcanvas/pcui/dist/pcui-theme-green.scss +2798 -0
  1187. package/node_modules/@playcanvas/pcui/dist/pcui-theme-grey.scss +2798 -0
  1188. package/node_modules/@playcanvas/pcui/package.json +150 -0
  1189. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1190. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1191. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1192. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1193. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1194. package/node_modules/@playcanvas/pcui/react/dist/module/src/Math/color-value.mjs +77 -0
  1195. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1196. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1197. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1198. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1199. package/node_modules/@playcanvas/pcui/react/dist/module/src/class.mjs +19 -0
  1200. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/component.mjs +11 -0
  1201. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1202. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/component.mjs +11 -0
  1203. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1204. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/component.mjs +16 -0
  1205. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/index.mjs +119 -0
  1206. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/component.mjs +16 -0
  1207. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/index.mjs +104 -0
  1208. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/component.mjs +11 -0
  1209. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/index.mjs +43 -0
  1210. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/component.mjs +16 -0
  1211. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1212. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/component.mjs +36 -0
  1213. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/index.mjs +642 -0
  1214. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/component.mjs +11 -0
  1215. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/index.mjs +20 -0
  1216. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/component.mjs +107 -0
  1217. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/index.mjs +829 -0
  1218. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/component.mjs +16 -0
  1219. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1220. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/component.mjs +38 -0
  1221. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/index.mjs +448 -0
  1222. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/component.mjs +11 -0
  1223. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1224. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/component.mjs +16 -0
  1225. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/index.mjs +90 -0
  1226. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InputElement/index.mjs +186 -0
  1227. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/component.mjs +16 -0
  1228. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/index.mjs +124 -0
  1229. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/component.mjs +42 -0
  1230. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1231. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/component.mjs +23 -0
  1232. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/index.mjs +174 -0
  1233. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/MenuItem/index.mjs +223 -0
  1234. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/component.mjs +11 -0
  1235. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/index.mjs +400 -0
  1236. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/component.mjs +11 -0
  1237. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/index.mjs +108 -0
  1238. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/component.mjs +32 -0
  1239. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/index.mjs +400 -0
  1240. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/component.mjs +11 -0
  1241. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/index.mjs +45 -0
  1242. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/component.mjs +11 -0
  1243. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/index.mjs +113 -0
  1244. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/component.mjs +21 -0
  1245. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1246. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/component.mjs +12 -0
  1247. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/index.mjs +333 -0
  1248. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/component.mjs +16 -0
  1249. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/index.mjs +34 -0
  1250. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/component.mjs +11 -0
  1251. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1252. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/component.mjs +23 -0
  1253. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/index.mjs +98 -0
  1254. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/component.mjs +52 -0
  1255. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/index.mjs +1131 -0
  1256. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/component.mjs +33 -0
  1257. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1258. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/component.mjs +11 -0
  1259. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/index.mjs +366 -0
  1260. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/search.mjs +194 -0
  1261. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/utils.mjs +43 -0
  1262. package/node_modules/@playcanvas/pcui/react/dist/module/src/index.mjs +39 -0
  1263. package/node_modules/@playcanvas/pcui/react/package.json +18 -0
  1264. package/node_modules/@playcanvas/pcui/react/types/Math/color-value.d.ts +3 -0
  1265. package/node_modules/@playcanvas/pcui/react/types/binding/BindingBase/index.d.ts +178 -0
  1266. package/node_modules/@playcanvas/pcui/react/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1267. package/node_modules/@playcanvas/pcui/react/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1268. package/node_modules/@playcanvas/pcui/react/types/binding/BindingTwoWay/index.d.ts +54 -0
  1269. package/node_modules/@playcanvas/pcui/react/types/binding/index.d.ts +5 -0
  1270. package/node_modules/@playcanvas/pcui/react/types/class.d.ts +17 -0
  1271. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/component.d.ts +9 -0
  1272. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/index.d.ts +140 -0
  1273. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/component.d.ts +9 -0
  1274. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/index.d.ts +41 -0
  1275. package/node_modules/@playcanvas/pcui/react/types/components/Button/component.d.ts +11 -0
  1276. package/node_modules/@playcanvas/pcui/react/types/components/Button/index.d.ts +75 -0
  1277. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/component.d.ts +11 -0
  1278. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/index.d.ts +61 -0
  1279. package/node_modules/@playcanvas/pcui/react/types/components/Code/component.d.ts +9 -0
  1280. package/node_modules/@playcanvas/pcui/react/types/components/Code/index.d.ts +33 -0
  1281. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/component.d.ts +11 -0
  1282. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/index.d.ts +99 -0
  1283. package/node_modules/@playcanvas/pcui/react/types/components/Container/component.d.ts +15 -0
  1284. package/node_modules/@playcanvas/pcui/react/types/components/Container/index.d.ts +292 -0
  1285. package/node_modules/@playcanvas/pcui/react/types/components/Divider/component.d.ts +10 -0
  1286. package/node_modules/@playcanvas/pcui/react/types/components/Divider/index.d.ts +13 -0
  1287. package/node_modules/@playcanvas/pcui/react/types/components/Element/component.d.ts +23 -0
  1288. package/node_modules/@playcanvas/pcui/react/types/components/Element/index.d.ts +671 -0
  1289. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/component.d.ts +11 -0
  1290. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/index.d.ts +152 -0
  1291. package/node_modules/@playcanvas/pcui/react/types/components/GridView/component.d.ts +14 -0
  1292. package/node_modules/@playcanvas/pcui/react/types/components/GridView/index.d.ts +103 -0
  1293. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/component.d.ts +9 -0
  1294. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/index.d.ts +82 -0
  1295. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/component.d.ts +11 -0
  1296. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/index.d.ts +71 -0
  1297. package/node_modules/@playcanvas/pcui/react/types/components/InputElement/index.d.ts +84 -0
  1298. package/node_modules/@playcanvas/pcui/react/types/components/Label/component.d.ts +11 -0
  1299. package/node_modules/@playcanvas/pcui/react/types/components/Label/index.d.ts +85 -0
  1300. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/component.d.ts +10 -0
  1301. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/index.d.ts +62 -0
  1302. package/node_modules/@playcanvas/pcui/react/types/components/Menu/component.d.ts +14 -0
  1303. package/node_modules/@playcanvas/pcui/react/types/components/Menu/index.d.ts +70 -0
  1304. package/node_modules/@playcanvas/pcui/react/types/components/MenuItem/index.d.ts +139 -0
  1305. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/component.d.ts +9 -0
  1306. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/index.d.ts +173 -0
  1307. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/component.d.ts +9 -0
  1308. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/index.d.ts +53 -0
  1309. package/node_modules/@playcanvas/pcui/react/types/components/Panel/component.d.ts +16 -0
  1310. package/node_modules/@playcanvas/pcui/react/types/components/Panel/index.d.ts +178 -0
  1311. package/node_modules/@playcanvas/pcui/react/types/components/Progress/component.d.ts +9 -0
  1312. package/node_modules/@playcanvas/pcui/react/types/components/Progress/index.d.ts +33 -0
  1313. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/component.d.ts +9 -0
  1314. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/index.d.ts +33 -0
  1315. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/component.d.ts +12 -0
  1316. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/index.d.ts +278 -0
  1317. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/component.d.ts +10 -0
  1318. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/index.d.ts +133 -0
  1319. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/component.d.ts +11 -0
  1320. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/index.d.ts +27 -0
  1321. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/component.d.ts +9 -0
  1322. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/index.d.ts +24 -0
  1323. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/component.d.ts +12 -0
  1324. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/index.d.ts +40 -0
  1325. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/component.d.ts +17 -0
  1326. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/index.d.ts +359 -0
  1327. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/component.d.ts +13 -0
  1328. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/index.d.ts +224 -0
  1329. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/component.d.ts +9 -0
  1330. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/index.d.ts +176 -0
  1331. package/node_modules/@playcanvas/pcui/react/types/components/components.d.ts +30 -0
  1332. package/node_modules/@playcanvas/pcui/react/types/components/index.d.ts +32 -0
  1333. package/node_modules/@playcanvas/pcui/react/types/helpers/search.d.ts +31 -0
  1334. package/node_modules/@playcanvas/pcui/react/types/helpers/utils.d.ts +2 -0
  1335. package/node_modules/@playcanvas/pcui/react/types/index.d.ts +4 -0
  1336. package/node_modules/@playcanvas/pcui/styles/dist/index.mjs +11 -0
  1337. package/node_modules/@playcanvas/pcui/styles/package.json +17 -0
  1338. package/node_modules/@playcanvas/pcui/types/Math/color-value.d.ts +3 -0
  1339. package/node_modules/@playcanvas/pcui/types/binding/BindingBase/index.d.ts +178 -0
  1340. package/node_modules/@playcanvas/pcui/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1341. package/node_modules/@playcanvas/pcui/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1342. package/node_modules/@playcanvas/pcui/types/binding/BindingTwoWay/index.d.ts +54 -0
  1343. package/node_modules/@playcanvas/pcui/types/binding/index.d.ts +5 -0
  1344. package/node_modules/@playcanvas/pcui/types/class.d.ts +17 -0
  1345. package/node_modules/@playcanvas/pcui/types/components/ArrayInput/index.d.ts +140 -0
  1346. package/node_modules/@playcanvas/pcui/types/components/BooleanInput/index.d.ts +41 -0
  1347. package/node_modules/@playcanvas/pcui/types/components/Button/index.d.ts +75 -0
  1348. package/node_modules/@playcanvas/pcui/types/components/Canvas/index.d.ts +61 -0
  1349. package/node_modules/@playcanvas/pcui/types/components/Code/index.d.ts +33 -0
  1350. package/node_modules/@playcanvas/pcui/types/components/ColorPicker/index.d.ts +99 -0
  1351. package/node_modules/@playcanvas/pcui/types/components/Container/index.d.ts +292 -0
  1352. package/node_modules/@playcanvas/pcui/types/components/Divider/index.d.ts +13 -0
  1353. package/node_modules/@playcanvas/pcui/types/components/Element/index.d.ts +671 -0
  1354. package/node_modules/@playcanvas/pcui/types/components/GradientPicker/index.d.ts +152 -0
  1355. package/node_modules/@playcanvas/pcui/types/components/GridView/index.d.ts +103 -0
  1356. package/node_modules/@playcanvas/pcui/types/components/GridViewItem/index.d.ts +82 -0
  1357. package/node_modules/@playcanvas/pcui/types/components/InfoBox/index.d.ts +71 -0
  1358. package/node_modules/@playcanvas/pcui/types/components/InputElement/index.d.ts +84 -0
  1359. package/node_modules/@playcanvas/pcui/types/components/Label/index.d.ts +85 -0
  1360. package/node_modules/@playcanvas/pcui/types/components/LabelGroup/index.d.ts +62 -0
  1361. package/node_modules/@playcanvas/pcui/types/components/Menu/index.d.ts +70 -0
  1362. package/node_modules/@playcanvas/pcui/types/components/MenuItem/index.d.ts +139 -0
  1363. package/node_modules/@playcanvas/pcui/types/components/NumericInput/index.d.ts +173 -0
  1364. package/node_modules/@playcanvas/pcui/types/components/Overlay/index.d.ts +53 -0
  1365. package/node_modules/@playcanvas/pcui/types/components/Panel/index.d.ts +178 -0
  1366. package/node_modules/@playcanvas/pcui/types/components/Progress/index.d.ts +33 -0
  1367. package/node_modules/@playcanvas/pcui/types/components/RadioButton/index.d.ts +33 -0
  1368. package/node_modules/@playcanvas/pcui/types/components/SelectInput/index.d.ts +278 -0
  1369. package/node_modules/@playcanvas/pcui/types/components/SliderInput/index.d.ts +133 -0
  1370. package/node_modules/@playcanvas/pcui/types/components/Spinner/index.d.ts +27 -0
  1371. package/node_modules/@playcanvas/pcui/types/components/TextAreaInput/index.d.ts +24 -0
  1372. package/node_modules/@playcanvas/pcui/types/components/TextInput/index.d.ts +40 -0
  1373. package/node_modules/@playcanvas/pcui/types/components/TreeView/index.d.ts +359 -0
  1374. package/node_modules/@playcanvas/pcui/types/components/TreeViewItem/index.d.ts +224 -0
  1375. package/node_modules/@playcanvas/pcui/types/components/VectorInput/index.d.ts +176 -0
  1376. package/node_modules/@playcanvas/pcui/types/components/index.d.ts +32 -0
  1377. package/node_modules/@playcanvas/pcui/types/helpers/search.d.ts +31 -0
  1378. package/node_modules/@playcanvas/pcui/types/helpers/utils.d.ts +2 -0
  1379. package/node_modules/@playcanvas/pcui/types/index.d.ts +20 -0
  1380. package/node_modules/babylonjs-gltf2interface/babylon.glTF2Interface.d.ts +1655 -0
  1381. package/node_modules/babylonjs-gltf2interface/license.md +71 -0
  1382. package/node_modules/babylonjs-gltf2interface/package.json +26 -0
  1383. package/package.json +31 -19
  1384. package/dist/editor-plugin-hierarchy-command.d.ts +0 -19
  1385. package/dist/editor-plugin-hierarchy-command.d.ts.map +0 -1
  1386. package/dist/editor-plugin-hierarchy-command.js +0 -119
  1387. package/dist/editor-plugin-hierarchy-command.js.map +0 -1
  1388. package/node_modules/@babel/helper-string-parser/lib/index.js.map +0 -1
  1389. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +0 -1
  1390. package/node_modules/@babel/helper-validator-identifier/lib/index.js.map +0 -1
  1391. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +0 -1
  1392. package/node_modules/@babel/parser/lib/index.js.map +0 -1
  1393. package/node_modules/@babel/types/lib/asserts/assertNode.js.map +0 -1
  1394. package/node_modules/@babel/types/lib/asserts/generated/index.js.map +0 -1
  1395. package/node_modules/@babel/types/lib/ast-types/generated/index.js.map +0 -1
  1396. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +0 -1
  1397. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +0 -1
  1398. package/node_modules/@babel/types/lib/builders/generated/index.js.map +0 -1
  1399. package/node_modules/@babel/types/lib/builders/generated/lowercase.js.map +0 -1
  1400. package/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +0 -1
  1401. package/node_modules/@babel/types/lib/builders/productions.js.map +0 -1
  1402. package/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +0 -1
  1403. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +0 -1
  1404. package/node_modules/@babel/types/lib/builders/validateNode.js.map +0 -1
  1405. package/node_modules/@babel/types/lib/clone/clone.js.map +0 -1
  1406. package/node_modules/@babel/types/lib/clone/cloneDeep.js.map +0 -1
  1407. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +0 -1
  1408. package/node_modules/@babel/types/lib/clone/cloneNode.js.map +0 -1
  1409. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +0 -1
  1410. package/node_modules/@babel/types/lib/comments/addComment.js.map +0 -1
  1411. package/node_modules/@babel/types/lib/comments/addComments.js.map +0 -1
  1412. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +0 -1
  1413. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +0 -1
  1414. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +0 -1
  1415. package/node_modules/@babel/types/lib/comments/inheritsComments.js.map +0 -1
  1416. package/node_modules/@babel/types/lib/comments/removeComments.js.map +0 -1
  1417. package/node_modules/@babel/types/lib/constants/generated/index.js.map +0 -1
  1418. package/node_modules/@babel/types/lib/constants/index.js.map +0 -1
  1419. package/node_modules/@babel/types/lib/converters/ensureBlock.js.map +0 -1
  1420. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +0 -1
  1421. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +0 -1
  1422. package/node_modules/@babel/types/lib/converters/toBlock.js.map +0 -1
  1423. package/node_modules/@babel/types/lib/converters/toComputedKey.js.map +0 -1
  1424. package/node_modules/@babel/types/lib/converters/toExpression.js.map +0 -1
  1425. package/node_modules/@babel/types/lib/converters/toIdentifier.js.map +0 -1
  1426. package/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +0 -1
  1427. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +0 -1
  1428. package/node_modules/@babel/types/lib/converters/toStatement.js.map +0 -1
  1429. package/node_modules/@babel/types/lib/converters/valueToNode.js.map +0 -1
  1430. package/node_modules/@babel/types/lib/definitions/core.js.map +0 -1
  1431. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map +0 -1
  1432. package/node_modules/@babel/types/lib/definitions/experimental.js.map +0 -1
  1433. package/node_modules/@babel/types/lib/definitions/flow.js.map +0 -1
  1434. package/node_modules/@babel/types/lib/definitions/index.js.map +0 -1
  1435. package/node_modules/@babel/types/lib/definitions/jsx.js.map +0 -1
  1436. package/node_modules/@babel/types/lib/definitions/misc.js.map +0 -1
  1437. package/node_modules/@babel/types/lib/definitions/placeholders.js.map +0 -1
  1438. package/node_modules/@babel/types/lib/definitions/typescript.js.map +0 -1
  1439. package/node_modules/@babel/types/lib/definitions/utils.js.map +0 -1
  1440. package/node_modules/@babel/types/lib/index.js.map +0 -1
  1441. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +0 -1
  1442. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +0 -1
  1443. package/node_modules/@babel/types/lib/modifications/inherits.js.map +0 -1
  1444. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +0 -1
  1445. package/node_modules/@babel/types/lib/modifications/removeProperties.js.map +0 -1
  1446. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +0 -1
  1447. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +0 -1
  1448. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map +0 -1
  1449. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +0 -1
  1450. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map +0 -1
  1451. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +0 -1
  1452. package/node_modules/@babel/types/lib/traverse/traverse.js.map +0 -1
  1453. package/node_modules/@babel/types/lib/traverse/traverseFast.js.map +0 -1
  1454. package/node_modules/@babel/types/lib/utils/deprecationWarning.js.map +0 -1
  1455. package/node_modules/@babel/types/lib/utils/inherit.js.map +0 -1
  1456. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +0 -1
  1457. package/node_modules/@babel/types/lib/utils/shallowEqual.js.map +0 -1
  1458. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +0 -1
  1459. package/node_modules/@babel/types/lib/validators/generated/index.js.map +0 -1
  1460. package/node_modules/@babel/types/lib/validators/is.js.map +0 -1
  1461. package/node_modules/@babel/types/lib/validators/isBinding.js.map +0 -1
  1462. package/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +0 -1
  1463. package/node_modules/@babel/types/lib/validators/isImmutable.js.map +0 -1
  1464. package/node_modules/@babel/types/lib/validators/isLet.js.map +0 -1
  1465. package/node_modules/@babel/types/lib/validators/isNode.js.map +0 -1
  1466. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +0 -1
  1467. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +0 -1
  1468. package/node_modules/@babel/types/lib/validators/isReferenced.js.map +0 -1
  1469. package/node_modules/@babel/types/lib/validators/isScope.js.map +0 -1
  1470. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +0 -1
  1471. package/node_modules/@babel/types/lib/validators/isType.js.map +0 -1
  1472. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +0 -1
  1473. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +0 -1
  1474. package/node_modules/@babel/types/lib/validators/isVar.js.map +0 -1
  1475. package/node_modules/@babel/types/lib/validators/matchesPattern.js.map +0 -1
  1476. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +0 -1
  1477. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +0 -1
  1478. package/node_modules/@babel/types/lib/validators/validate.js.map +0 -1
  1479. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +0 -37
  1480. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +0 -1
  1481. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +0 -451
  1482. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +0 -1
  1483. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts +0 -49
  1484. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +0 -1
  1485. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +0 -627
  1486. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +0 -1
  1487. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts +0 -52
  1488. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +0 -1
  1489. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +0 -450
  1490. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +0 -1
  1491. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +0 -21
  1492. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +0 -1
  1493. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +0 -75
  1494. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +0 -1
  1495. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts +0 -7
  1496. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts.map +0 -1
  1497. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js +0 -186
  1498. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js.map +0 -1
  1499. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +0 -5
  1500. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +0 -1
  1501. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +0 -98
  1502. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +0 -1
  1503. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +0 -63
  1504. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +0 -1
  1505. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +0 -301
  1506. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +0 -1
@@ -0,0 +1,2735 @@
1
+ import { DirectionalLight } from '@babylonjs/core/Lights/directionalLight.js';
2
+ import { ShadowGenerator } from '@babylonjs/core/Lights/Shadows/shadowGenerator.js';
3
+ import './shadow-generator-shaders.js';
4
+ import { Matrix, Vector3 } from '@babylonjs/core/Maths/math.vector.js';
5
+ import { createShadowMapExperimentPlanSnapshot, createShadowMapExperimentPlanFingerprint, createShadowMapExperimentActivityScheduler, createShadowMapExperimentDepthRefreshScheduler, createShadowMapExperimentInfluenceCullingState, createShadowMapExperimentRegistry, diffShadowMapExperimentPlans, shadowMapExperimentDepthLayerForUpdateClass, } from '@fps-games/playable-rendering/runtime';
6
+ import { createBabylonShadowMapExperimentDepthBackend, createBabylonShadowMapExperimentSingleDepthBackend, readBabylonShadowMapExperimentAllocationCleanup, } from './shadow-map-experiment-depth-backend.js';
7
+ import '@babylonjs/core/Lights/Shadows/shadowGeneratorSceneComponent.js';
8
+ export function readBabylonShadowMapExperimentSystemCleanup(error) {
9
+ if (!error || (typeof error !== 'object' && typeof error !== 'function'))
10
+ return null;
11
+ const cleanup = error.shadowMapExperimentSystemCleanup;
12
+ return typeof cleanup === 'function' ? cleanup : null;
13
+ }
14
+ export function readBabylonRuntimeShadowObjectsRecoveryOwner(error) {
15
+ if (!error || (typeof error !== 'object' && typeof error !== 'function'))
16
+ return null;
17
+ const owner = error.runtimeShadowObjectsRecoveryOwner;
18
+ return owner && typeof owner === 'object' && typeof owner.dispose === 'function'
19
+ ? owner
20
+ : null;
21
+ }
22
+ export function createBabylonShadowMapExperimentSystem(scene, initialPlan = null, options = {}) {
23
+ let disposed = false;
24
+ let disposing = false;
25
+ let sourcePlan = null;
26
+ let plan = null;
27
+ let runtimeOverlayRevision = 0;
28
+ let lightState = null;
29
+ let generator = null;
30
+ let depthBackend = null;
31
+ let registry = null;
32
+ let previousSceneShadowsEnabled = null;
33
+ let refreshCount = 0;
34
+ let lastRefreshReasons = Object.freeze([]);
35
+ const activityScheduler = createShadowMapExperimentActivityScheduler();
36
+ const depthRefreshScheduler = createShadowMapExperimentDepthRefreshScheduler();
37
+ const influenceCulling = createShadowMapExperimentInfluenceCullingState(0.25);
38
+ const candidateLayerByMesh = new Map();
39
+ const candidateMeshCounts = { static: 0, dynamic: 0 };
40
+ const meshDataCacheByMesh = new Map();
41
+ const conservativeCasterMeshes = new Set();
42
+ const pendingMeshObserverCleanups = new Map();
43
+ const pendingMeshRegistrationRollbacks = new Set();
44
+ const pendingSceneMeshRegistrations = new Set();
45
+ const pendingMeshUnregistrations = new Set();
46
+ const pendingRenderableMembershipRetries = new Set();
47
+ const pendingTransformMembershipRetries = new Set();
48
+ const activeCasterEntityIds = new Set();
49
+ const activeDeformationSourceCountByEntity = new Map();
50
+ const eligibleActiveDeformationEntityIds = new Set();
51
+ const pendingFinalDeformationEntityIds = new Set();
52
+ const pendingDeformationInvalidations = new Map();
53
+ const pendingMembershipInvalidationLayers = new Set();
54
+ const pendingCompositeRefreshReasons = new Set();
55
+ const fallbackWarnings = new Set();
56
+ let pendingBackendAllocationCleanup = null;
57
+ let pendingFallbackReason = null;
58
+ let pendingCoverageMembershipRebuild = false;
59
+ let cullingStable = false;
60
+ let lastCullingInvalidationReason = null;
61
+ let effectiveCoverageCenter = null;
62
+ let effectiveCoverageExtent = null;
63
+ let effectiveCoverageNear = null;
64
+ let effectiveCoverageFar = null;
65
+ const objectByEntity = new Map();
66
+ const objectByRenderable = new Map();
67
+ const meshesByRenderable = new Map();
68
+ const bindings = new Map();
69
+ const receiverStates = new Map();
70
+ const receiverTargetByMesh = new Map();
71
+ const diagnostics = [];
72
+ const diagnosticKeys = new Set();
73
+ const runtimeRegistrations = new Map();
74
+ const automaticAnimationGroups = new Map();
75
+ let flushingRefresh = false;
76
+ const assertUsable = (allowDisposing = false) => {
77
+ if (disposed || (disposing && !allowDisposing))
78
+ throw new Error('shadowMapExperiment.systemDisposed');
79
+ };
80
+ const rememberDiagnostic = (code, message, identity = {}) => {
81
+ const key = `${code}\u0000${identity.entityId ?? ''}\u0000${identity.renderableId ?? ''}`;
82
+ if (diagnosticKeys.has(key))
83
+ return;
84
+ diagnosticKeys.add(key);
85
+ diagnostics.push({ code, message, ...identity });
86
+ };
87
+ const requireRuntimeProfile = (basePlan, behaviorProfileId, entityId) => {
88
+ if (!basePlan || basePlan.schemaVersion !== 3) {
89
+ const code = 'shadowMapExperiment.runtimeProfileCatalogUnavailable';
90
+ rememberDiagnostic(code, 'Plan v3 behavior profile catalog is required for runtime shadow registration.', { entityId });
91
+ throw new Error(`${code}:plan-v${basePlan?.schemaVersion ?? 'none'}`);
92
+ }
93
+ const profile = basePlan.behaviorProfiles[behaviorProfileId];
94
+ if (!profile) {
95
+ const code = 'shadowMapExperiment.runtimeBehaviorProfileUnknown';
96
+ rememberDiagnostic(code, `Unknown runtime behavior profile: ${behaviorProfileId}`, { entityId });
97
+ throw new Error(`${code}:${behaviorProfileId}`);
98
+ }
99
+ if (profile.updateClass === 'auto') {
100
+ const code = 'shadowMapExperiment.runtimeBehaviorProfileAutoUnsupported';
101
+ rememberDiagnostic(code, `Runtime behavior profile ${behaviorProfileId} must declare a deterministic updateClass.`, { entityId });
102
+ throw new Error(`${code}:${behaviorProfileId}`);
103
+ }
104
+ return profile;
105
+ };
106
+ const composeEffectivePlan = (basePlan, records, overlayRevision) => {
107
+ if (!basePlan) {
108
+ if (records.length > 0)
109
+ throw new Error('shadowMapExperiment.runtimePlanUnavailable');
110
+ return null;
111
+ }
112
+ if (records.length === 0)
113
+ return basePlan;
114
+ const runtimeObjects = records.map(record => {
115
+ const profile = requireRuntimeProfile(basePlan, record.behaviorProfileId, record.entityId);
116
+ if (record.activities.length > 0 && (!profile.cast || profile.updateClass === 'static')) {
117
+ throw new Error(`shadowMapExperiment.runtimeActivityProfileIneligible:${record.behaviorProfileId}`);
118
+ }
119
+ return Object.freeze({
120
+ entityId: record.entityId,
121
+ renderableIds: Object.freeze(record.renderables.map(renderable => renderable.renderableId).sort()),
122
+ cast: profile.cast,
123
+ receive: profile.receive,
124
+ updateClass: profile.updateClass,
125
+ behaviorProfileId: record.behaviorProfileId,
126
+ });
127
+ });
128
+ return createShadowMapExperimentPlanSnapshot({
129
+ ...basePlan,
130
+ revision: basePlan.revision + overlayRevision,
131
+ objects: [...basePlan.objects, ...runtimeObjects].sort((left, right) => left.entityId.localeCompare(right.entityId)),
132
+ });
133
+ };
134
+ const requestRefreshFrame = (reason) => {
135
+ if (disposed || disposing || flushingRefresh || !options.requestFrame)
136
+ return;
137
+ try {
138
+ options.requestFrame(reason);
139
+ }
140
+ catch (error) {
141
+ const code = 'shadowMapExperiment.frameRequestFailed';
142
+ if (diagnosticKeys.has(code))
143
+ return;
144
+ diagnosticKeys.add(code);
145
+ diagnostics.push({
146
+ code,
147
+ message: `Shadow refresh frame request failed: ${error instanceof Error ? error.message : String(error)}`,
148
+ });
149
+ }
150
+ };
151
+ const enqueueRefresh = (reason) => {
152
+ activityScheduler.markDirty(reason);
153
+ requestRefreshFrame(`shadow-map-experiment-${reason}`);
154
+ };
155
+ const markDepthDirty = (layer, reason) => {
156
+ depthRefreshScheduler.markDirty(layer, reason);
157
+ requestRefreshFrame(`shadow-map-experiment-${reason}`);
158
+ };
159
+ const markAllDepthDirty = (reason) => {
160
+ depthRefreshScheduler.markAllDirty(reason);
161
+ requestRefreshFrame(`shadow-map-experiment-${reason}`);
162
+ };
163
+ const syncSceneFitCoverage = (force = false) => {
164
+ if (!plan?.enabled || !lightState || options.coverageMode !== 'scene-fit')
165
+ return;
166
+ const sceneBounds = collectActiveCasterWorldBounds(bindings, registry);
167
+ if (!sceneBounds)
168
+ return;
169
+ const nextCoverage = createSceneFitCoverage(plan, sceneBounds);
170
+ const currentCenter = effectiveCoverageCenter ?? plan.generator.bounds.center;
171
+ const currentExtent = effectiveCoverageExtent ?? plan.generator.bounds.extent;
172
+ const currentNear = effectiveCoverageNear ?? plan.generator.bounds.near;
173
+ const currentFar = effectiveCoverageFar ?? plan.generator.bounds.far;
174
+ if (!force
175
+ && areTuple3Equal(currentCenter, nextCoverage.center)
176
+ && areTuple3Equal(currentExtent, nextCoverage.extent)
177
+ && currentNear === nextCoverage.near
178
+ && currentFar === nextCoverage.far)
179
+ return;
180
+ effectiveCoverageCenter = nextCoverage.center;
181
+ effectiveCoverageExtent = nextCoverage.extent;
182
+ effectiveCoverageNear = nextCoverage.near;
183
+ effectiveCoverageFar = nextCoverage.far;
184
+ configureLight(lightState.light, plan, nextCoverage);
185
+ pendingCoverageMembershipRebuild = true;
186
+ lastCullingInvalidationReason = 'scene-fit-coverage-changed';
187
+ markAllDepthDirty('camera-influence-region-changed');
188
+ };
189
+ const handleCompositorLifecycleEvent = (event) => {
190
+ if (disposed || disposing)
191
+ return;
192
+ if (event === 'ready')
193
+ markAllDepthDirty('compositor-ready');
194
+ else
195
+ requestRefreshFrame(`shadow-map-experiment-compositor-${event}`);
196
+ };
197
+ const routeDirtyReason = (reason) => {
198
+ if (isDynamicDirtyReason(reason)) {
199
+ depthRefreshScheduler.markDirty('dynamic', reason);
200
+ return;
201
+ }
202
+ if (isStaticDirtyReason(reason)) {
203
+ depthRefreshScheduler.markDirty('static', reason);
204
+ return;
205
+ }
206
+ depthRefreshScheduler.markAllDirty(reason);
207
+ };
208
+ const syncCandidateCounts = () => {
209
+ depthBackend?.setCandidateCounts(candidateMeshCounts.static, candidateMeshCounts.dynamic);
210
+ };
211
+ const setCandidateLayer = (mesh, nextLayer) => {
212
+ const previousLayer = candidateLayerByMesh.get(mesh) ?? null;
213
+ if (previousLayer === nextLayer)
214
+ return;
215
+ if (previousLayer)
216
+ candidateMeshCounts[previousLayer] -= 1;
217
+ if (nextLayer) {
218
+ candidateLayerByMesh.set(mesh, nextLayer);
219
+ candidateMeshCounts[nextLayer] += 1;
220
+ }
221
+ else {
222
+ candidateLayerByMesh.delete(mesh);
223
+ }
224
+ };
225
+ const warnForFallback = (reason) => {
226
+ if (fallbackWarnings.has(reason))
227
+ return;
228
+ fallbackWarnings.add(reason);
229
+ console.warn(`[shadow-map-experiment] split backend unavailable; using single ShadowMap (${reason})`);
230
+ };
231
+ const flushRefresh = () => {
232
+ if (disposed || disposing)
233
+ return;
234
+ let postFlushFrameReason = null;
235
+ flushingRefresh = true;
236
+ try {
237
+ syncAutomaticAnimationGroupStates();
238
+ flushPendingBackendAllocationCleanup();
239
+ recoverPendingFallbackBackend();
240
+ if (!depthBackend || !registry)
241
+ return;
242
+ downgradeFailedSplitBackend();
243
+ if (!depthBackend)
244
+ return;
245
+ flushPendingMeshUnregistrations();
246
+ flushPendingSceneMeshRegistrations();
247
+ flushPendingRenderableMembershipRetries();
248
+ flushPendingTransformMembershipRetries();
249
+ syncSceneFitCoverage();
250
+ updateCameraInfluenceCoverage();
251
+ flushMembershipInvalidations();
252
+ registry.consumeDirtyReasons();
253
+ const activityDecision = activityScheduler.consumeFrameDecision();
254
+ resyncActivityDeformationMembership(activityDecision.reasons);
255
+ for (const reason of activityDecision.reasons)
256
+ routeDirtyReason(reason);
257
+ const decision = depthRefreshScheduler.consumeFrameDecision();
258
+ let refreshDecision = decision;
259
+ if (options.requestFrame && depthBackend.mode === 'split-static-dynamic') {
260
+ const settlementReasons = Object.freeze([...pendingCompositeRefreshReasons]);
261
+ pendingCompositeRefreshReasons.clear();
262
+ for (const reason of decision.composite.reasons)
263
+ pendingCompositeRefreshReasons.add(reason);
264
+ refreshDecision = Object.freeze({
265
+ static: decision.static,
266
+ dynamic: decision.dynamic,
267
+ composite: Object.freeze({
268
+ shouldRefresh: settlementReasons.length > 0,
269
+ reasons: settlementReasons,
270
+ }),
271
+ });
272
+ if (pendingCompositeRefreshReasons.size > 0) {
273
+ postFlushFrameReason = 'shadow-map-experiment-composite-settlement';
274
+ }
275
+ }
276
+ else if (pendingCompositeRefreshReasons.size > 0) {
277
+ const compositeReasons = Object.freeze([
278
+ ...new Set([...pendingCompositeRefreshReasons, ...decision.composite.reasons]),
279
+ ]);
280
+ pendingCompositeRefreshReasons.clear();
281
+ refreshDecision = Object.freeze({
282
+ static: decision.static,
283
+ dynamic: decision.dynamic,
284
+ composite: Object.freeze({ shouldRefresh: true, reasons: compositeReasons }),
285
+ });
286
+ }
287
+ if (!refreshDecision.static.shouldRefresh
288
+ && !refreshDecision.dynamic.shouldRefresh
289
+ && !refreshDecision.composite.shouldRefresh)
290
+ return;
291
+ depthBackend.refresh(refreshDecision);
292
+ if (!refreshDecision.composite.shouldRefresh)
293
+ return;
294
+ registry.markShadowRendered();
295
+ refreshCount += 1;
296
+ lastRefreshReasons = refreshDecision.composite.reasons;
297
+ }
298
+ finally {
299
+ flushingRefresh = false;
300
+ if (postFlushFrameReason)
301
+ requestRefreshFrame(postFlushFrameReason);
302
+ }
303
+ };
304
+ const syncDeformationActivityEligibility = (entityId) => {
305
+ if (activeCasterEntityIds.has(entityId)
306
+ && (activeDeformationSourceCountByEntity.get(entityId) ?? 0) > 0) {
307
+ eligibleActiveDeformationEntityIds.add(entityId);
308
+ }
309
+ else {
310
+ eligibleActiveDeformationEntityIds.delete(entityId);
311
+ }
312
+ };
313
+ const syncActivityEligibility = (entityId) => {
314
+ const object = objectByEntity.get(entityId);
315
+ const active = object?.renderableIds.some(renderableId => registry?.getRecord(renderableId)?.state === 'active') === true;
316
+ activityScheduler.setEntityActive(entityId, active);
317
+ if (active)
318
+ activeCasterEntityIds.add(entityId);
319
+ else
320
+ activeCasterEntityIds.delete(entityId);
321
+ syncDeformationActivityEligibility(entityId);
322
+ };
323
+ const shouldRetainCaster = (mesh, updateClass) => {
324
+ if (plan?.culling.enabled === false) {
325
+ conservativeCasterMeshes.delete(mesh);
326
+ return true;
327
+ }
328
+ const deformable = isDeformableCaster(mesh, updateClass);
329
+ const bounds = readCasterWorldBounds(mesh, deformable, deformable
330
+ ? meshDataCacheByMesh.get(mesh) ?? createMeshDataCache(mesh, meshDataCacheByMesh)
331
+ : null);
332
+ if (!bounds) {
333
+ conservativeCasterMeshes.add(mesh);
334
+ const binding = bindings.get(mesh);
335
+ const code = deformable
336
+ ? 'shadowMapExperiment.deformationBoundsUnavailable'
337
+ : 'shadowMapExperiment.casterBoundsUnavailable';
338
+ const key = `${code}:${mesh.uniqueId}`;
339
+ if (!diagnosticKeys.has(key)) {
340
+ diagnosticKeys.add(key);
341
+ diagnostics.push({
342
+ code,
343
+ message: deformable
344
+ ? 'Deformed caster bounds were unavailable, so influence culling retained the caster conservatively.'
345
+ : 'Caster bounds were unavailable, so influence culling retained the caster conservatively.',
346
+ entityId: binding?.entityId,
347
+ renderableId: binding?.renderableId,
348
+ });
349
+ }
350
+ }
351
+ else {
352
+ conservativeCasterMeshes.delete(mesh);
353
+ }
354
+ return influenceCulling.shouldRetainCaster({
355
+ casterBounds: bounds,
356
+ lightDirection: plan?.light.direction ?? null,
357
+ projectionDistance: plan
358
+ ? Math.max(0, (effectiveCoverageFar ?? plan.generator.bounds.far)
359
+ - (effectiveCoverageNear ?? plan.generator.bounds.near))
360
+ : 0,
361
+ });
362
+ };
363
+ const resyncActivityDeformationMembership = (reasons) => {
364
+ const hasDeformationFrame = reasons.includes('skinned-animation-frame')
365
+ || reasons.includes('morph-animation-frame');
366
+ const finalEntityIds = [...pendingFinalDeformationEntityIds];
367
+ const deformationInvalidations = [...pendingDeformationInvalidations.entries()];
368
+ if (!hasDeformationFrame && finalEntityIds.length === 0 && deformationInvalidations.length === 0)
369
+ return;
370
+ const renderableIds = new Set();
371
+ if (hasDeformationFrame) {
372
+ for (const entityId of eligibleActiveDeformationEntityIds) {
373
+ const object = objectByEntity.get(entityId);
374
+ if (!object)
375
+ continue;
376
+ for (const renderableId of object.renderableIds)
377
+ renderableIds.add(renderableId);
378
+ }
379
+ }
380
+ if (finalEntityIds.length > 0) {
381
+ for (const entityId of finalEntityIds) {
382
+ if (!activeCasterEntityIds.has(entityId))
383
+ continue;
384
+ const object = objectByEntity.get(entityId);
385
+ if (!object)
386
+ continue;
387
+ for (const renderableId of object.renderableIds)
388
+ renderableIds.add(renderableId);
389
+ }
390
+ }
391
+ for (const [entityId] of deformationInvalidations) {
392
+ if (!activeCasterEntityIds.has(entityId))
393
+ continue;
394
+ const object = objectByEntity.get(entityId);
395
+ if (!object)
396
+ continue;
397
+ for (const renderableId of object.renderableIds)
398
+ renderableIds.add(renderableId);
399
+ }
400
+ for (const renderableId of renderableIds)
401
+ syncCaster(renderableId);
402
+ for (const entityId of finalEntityIds)
403
+ pendingFinalDeformationEntityIds.delete(entityId);
404
+ if (finalEntityIds.length > 0) {
405
+ markDepthDirty('dynamic', 'caster-activity-stopped');
406
+ }
407
+ for (const [entityId, invalidationReasons] of deformationInvalidations) {
408
+ pendingDeformationInvalidations.delete(entityId);
409
+ for (const reason of invalidationReasons)
410
+ markDepthDirty('dynamic', reason);
411
+ }
412
+ };
413
+ const resyncAllCasterMembership = () => {
414
+ const beforeStatic = depthBackend?.getEvidence().static.retainedMeshCount ?? 0;
415
+ const beforeDynamic = depthBackend?.getEvidence().dynamic.retainedMeshCount ?? 0;
416
+ for (const renderableId of meshesByRenderable.keys())
417
+ syncCaster(renderableId);
418
+ const after = depthBackend?.getEvidence();
419
+ const changed = [];
420
+ if (beforeStatic !== (after?.static.retainedMeshCount ?? 0))
421
+ changed.push('static');
422
+ if (beforeDynamic !== (after?.dynamic.retainedMeshCount ?? 0))
423
+ changed.push('dynamic');
424
+ return Object.freeze(changed);
425
+ };
426
+ const resyncLayerCasterMembership = (layer) => {
427
+ const renderableIds = new Set();
428
+ for (const [mesh, candidateLayer] of candidateLayerByMesh) {
429
+ if (candidateLayer !== layer)
430
+ continue;
431
+ const binding = bindings.get(mesh);
432
+ if (binding)
433
+ renderableIds.add(binding.renderableId);
434
+ }
435
+ for (const renderableId of renderableIds)
436
+ syncCaster(renderableId);
437
+ };
438
+ const flushMembershipInvalidations = () => {
439
+ for (const layer of pendingMembershipInvalidationLayers)
440
+ resyncLayerCasterMembership(layer);
441
+ pendingMembershipInvalidationLayers.clear();
442
+ };
443
+ const updateCameraInfluenceCoverage = () => {
444
+ if (!plan?.enabled)
445
+ return;
446
+ if (!plan.culling.enabled) {
447
+ cullingStable = true;
448
+ pendingCoverageMembershipRebuild = false;
449
+ return;
450
+ }
451
+ const camera = scene.activeCamera;
452
+ const decision = influenceCulling.updateCoverage({
453
+ cameraId: camera ? String(camera.uniqueId) : 'none',
454
+ projectionSignature: camera
455
+ ? `${readCameraProjectionSignature(camera, scene)}:${JSON.stringify({
456
+ ...plan.generator.bounds,
457
+ center: effectiveCoverageCenter ?? plan.generator.bounds.center,
458
+ extent: effectiveCoverageExtent ?? plan.generator.bounds.extent,
459
+ near: effectiveCoverageNear ?? plan.generator.bounds.near,
460
+ far: effectiveCoverageFar ?? plan.generator.bounds.far,
461
+ })}`
462
+ : 'none',
463
+ visibleBounds: camera
464
+ ? calculateCameraShadowCoverage(camera, plan, effectiveCoverageCenter ?? plan.generator.bounds.center, effectiveCoverageExtent ?? plan.generator.bounds.extent)
465
+ : null,
466
+ });
467
+ const retryingMembershipRebuild = pendingCoverageMembershipRebuild;
468
+ cullingStable = !decision.rebuilt && !retryingMembershipRebuild;
469
+ if (!decision.rebuilt && !retryingMembershipRebuild)
470
+ return;
471
+ if (decision.rebuilt && !retryingMembershipRebuild) {
472
+ lastCullingInvalidationReason = 'camera-influence-region-changed';
473
+ }
474
+ let changedLayers;
475
+ try {
476
+ changedLayers = resyncAllCasterMembership();
477
+ pendingCoverageMembershipRebuild = false;
478
+ }
479
+ catch (error) {
480
+ pendingCoverageMembershipRebuild = true;
481
+ cullingStable = false;
482
+ throw error;
483
+ }
484
+ const dirtyLayers = retryingMembershipRebuild
485
+ ? Object.freeze(['static', 'dynamic'])
486
+ : changedLayers;
487
+ for (const layer of dirtyLayers) {
488
+ markDepthDirty(layer, 'camera-influence-region-changed');
489
+ }
490
+ };
491
+ const downgradeFailedSplitBackend = () => {
492
+ if (!depthBackend || depthBackend.mode !== 'split-static-dynamic' || !plan?.enabled || !lightState)
493
+ return;
494
+ const runtimeFailureReason = depthBackend.getRuntimeFailureReason();
495
+ if (!runtimeFailureReason)
496
+ return;
497
+ const failedBackend = depthBackend;
498
+ failedBackend.dispose();
499
+ depthBackend = null;
500
+ generator = null;
501
+ pendingFallbackReason = runtimeFailureReason;
502
+ recoverPendingFallbackBackend();
503
+ };
504
+ const rememberBackendAllocationCleanup = (error) => {
505
+ const cleanup = readBabylonShadowMapExperimentAllocationCleanup(error);
506
+ if (cleanup)
507
+ pendingBackendAllocationCleanup = cleanup;
508
+ };
509
+ const flushPendingBackendAllocationCleanup = () => {
510
+ if (!pendingBackendAllocationCleanup)
511
+ return;
512
+ const cleanupErrors = pendingBackendAllocationCleanup();
513
+ if (cleanupErrors.length > 0) {
514
+ throw Object.assign(new Error('shadowMapExperiment.backendAllocationCleanupFailed'), { cleanupErrors });
515
+ }
516
+ pendingBackendAllocationCleanup = null;
517
+ };
518
+ const prepareBackendCasterMembership = (backend) => {
519
+ let staticCandidateCount = 0;
520
+ let dynamicCandidateCount = 0;
521
+ for (const [mesh, layer] of candidateLayerByMesh) {
522
+ if (layer === 'static')
523
+ staticCandidateCount += 1;
524
+ else
525
+ dynamicCandidateCount += 1;
526
+ const binding = bindings.get(mesh);
527
+ const updateClass = binding ? objectByRenderable.get(binding.renderableId)?.updateClass : null;
528
+ if (!updateClass || shouldRetainCaster(mesh, updateClass))
529
+ backend.addCaster(mesh, layer);
530
+ }
531
+ backend.setCandidateCounts(staticCandidateCount, dynamicCandidateCount);
532
+ };
533
+ const recoverPendingFallbackBackend = () => {
534
+ if (!pendingFallbackReason || depthBackend || !plan?.enabled || !lightState)
535
+ return;
536
+ flushPendingBackendAllocationCleanup();
537
+ const fallbackReason = pendingFallbackReason;
538
+ if (plan.generator.backend.fallback === 'disable')
539
+ return;
540
+ let replacement = null;
541
+ try {
542
+ replacement = createBabylonShadowMapExperimentSingleDepthBackend(lightState.light, plan, fallbackReason);
543
+ prepareBackendCasterMembership(replacement);
544
+ depthBackend = replacement;
545
+ generator = replacement.generator;
546
+ pendingFallbackReason = null;
547
+ }
548
+ catch (error) {
549
+ rememberBackendAllocationCleanup(error);
550
+ if (replacement) {
551
+ const ownedReplacement = replacement;
552
+ try {
553
+ ownedReplacement.dispose();
554
+ }
555
+ catch (cleanupError) {
556
+ pendingBackendAllocationCleanup = () => {
557
+ try {
558
+ ownedReplacement.dispose();
559
+ return Object.freeze([]);
560
+ }
561
+ catch (retryError) {
562
+ return Object.freeze([retryError]);
563
+ }
564
+ };
565
+ if (error && typeof error === 'object') {
566
+ attachFailureMetadata(error, {
567
+ fallbackPreparationCleanupErrors: Object.freeze([cleanupError]),
568
+ });
569
+ }
570
+ }
571
+ }
572
+ throw error;
573
+ }
574
+ warnForFallback(fallbackReason);
575
+ markAllDepthDirty('generator-created');
576
+ };
577
+ const syncCaster = (renderableId) => {
578
+ const record = registry?.getRecord(renderableId);
579
+ const meshes = meshesByRenderable.get(renderableId);
580
+ if (!depthBackend || !record || !meshes)
581
+ return;
582
+ const layer = shadowMapExperimentDepthLayerForUpdateClass(record.updateClass);
583
+ const shouldCast = record.state === 'active';
584
+ const changedLayers = new Set();
585
+ for (const mesh of meshes) {
586
+ const previousLayer = candidateLayerByMesh.get(mesh);
587
+ if (shouldCast && isMeshRuntimeVisible(mesh)) {
588
+ const retained = shouldRetainCaster(mesh, record.updateClass);
589
+ if (retained) {
590
+ const wasRetained = depthBackend.hasCaster(mesh, layer);
591
+ depthBackend.addCaster(mesh, layer);
592
+ setCandidateLayer(mesh, layer);
593
+ if (!wasRetained || previousLayer !== layer)
594
+ changedLayers.add(layer);
595
+ if (previousLayer && previousLayer !== layer)
596
+ changedLayers.add(previousLayer);
597
+ }
598
+ else {
599
+ const wasRetained = depthBackend.hasCaster(mesh);
600
+ depthBackend.removeCaster(mesh);
601
+ setCandidateLayer(mesh, layer);
602
+ if (wasRetained)
603
+ changedLayers.add(previousLayer ?? layer);
604
+ }
605
+ }
606
+ else {
607
+ const wasRetained = depthBackend.hasCaster(mesh);
608
+ depthBackend.removeCaster(mesh);
609
+ setCandidateLayer(mesh, null);
610
+ conservativeCasterMeshes.delete(mesh);
611
+ if (wasRetained)
612
+ changedLayers.add(previousLayer ?? layer);
613
+ }
614
+ }
615
+ syncCandidateCounts();
616
+ for (const changedLayer of changedLayers) {
617
+ markDepthDirty(changedLayer, 'caster-influence-membership-changed');
618
+ }
619
+ syncActivityEligibility(record.entityId);
620
+ };
621
+ const restoreReceiver = (mesh) => {
622
+ const target = receiverTargetByMesh.get(mesh) ?? resolveReceiverTarget(mesh);
623
+ receiverTargetByMesh.delete(mesh);
624
+ const state = receiverStates.get(target);
625
+ if (!state)
626
+ return;
627
+ state.requests.delete(mesh);
628
+ if (state.requests.size > 0) {
629
+ const next = [...state.requests.values()].some(Boolean);
630
+ state.ownedValue = next;
631
+ if (!isDisposed(target) && target.receiveShadows !== next)
632
+ target.receiveShadows = next;
633
+ return;
634
+ }
635
+ if (!isDisposed(target) && target.receiveShadows === state.ownedValue) {
636
+ target.receiveShadows = state.previousReceiveShadows;
637
+ }
638
+ receiverStates.delete(target);
639
+ };
640
+ const setReceiver = (mesh, enabled, renderableId) => {
641
+ const eligible = !enabled || isReceiverEligible(mesh);
642
+ const next = enabled && eligible;
643
+ const previousTarget = receiverTargetByMesh.get(mesh);
644
+ const target = resolveReceiverTarget(mesh);
645
+ if (previousTarget && previousTarget !== target)
646
+ restoreReceiver(mesh);
647
+ receiverTargetByMesh.set(mesh, target);
648
+ let state = receiverStates.get(target);
649
+ if (!state) {
650
+ state = {
651
+ mesh: target,
652
+ previousReceiveShadows: target.receiveShadows,
653
+ requests: new Map(),
654
+ ownedValue: next,
655
+ };
656
+ receiverStates.set(target, state);
657
+ }
658
+ state.requests.set(mesh, next);
659
+ const ownedValue = [...state.requests.values()].some(Boolean);
660
+ state.ownedValue = ownedValue;
661
+ if (target.receiveShadows !== ownedValue)
662
+ target.receiveShadows = ownedValue;
663
+ if (enabled && !eligible) {
664
+ const code = 'shadowMapExperiment.transparentReceiver';
665
+ const key = `${code}:${renderableId}`;
666
+ if (!diagnosticKeys.has(key)) {
667
+ diagnosticKeys.add(key);
668
+ diagnostics.push({
669
+ code,
670
+ message: 'Receiver was excluded because its current material is not shadow-receiver eligible.',
671
+ renderableId,
672
+ });
673
+ }
674
+ }
675
+ };
676
+ const syncRenderable = (renderableId) => {
677
+ const meshes = meshesByRenderable.get(renderableId);
678
+ const object = objectByRenderable.get(renderableId);
679
+ if (!meshes || !object || !registry)
680
+ return;
681
+ const visible = [...meshes].some(isMeshRuntimeVisible);
682
+ const previousRecord = registry.getRecord(renderableId);
683
+ const nextRecord = previousRecord?.renderableReady
684
+ ? registry.setVisible(renderableId, visible)
685
+ : registry.attach(renderableId, visible);
686
+ if (previousRecord?.state === 'active'
687
+ && nextRecord?.state !== 'active'
688
+ && registry.snapshot().activeCasterCount === 0) {
689
+ registry.markDirty('empty-list-clear');
690
+ markDepthDirty(shadowMapExperimentDepthLayerForUpdateClass(object.updateClass), 'empty-list-clear');
691
+ }
692
+ for (const mesh of meshes)
693
+ setReceiver(mesh, object.receive, renderableId);
694
+ try {
695
+ syncCaster(renderableId);
696
+ pendingRenderableMembershipRetries.delete(renderableId);
697
+ }
698
+ catch (error) {
699
+ pendingRenderableMembershipRetries.add(renderableId);
700
+ throw error;
701
+ }
702
+ };
703
+ const flushPendingRenderableMembershipRetries = () => {
704
+ for (const renderableId of [...pendingRenderableMembershipRetries]) {
705
+ if (!objectByRenderable.has(renderableId) || !meshesByRenderable.has(renderableId)) {
706
+ pendingRenderableMembershipRetries.delete(renderableId);
707
+ continue;
708
+ }
709
+ syncCaster(renderableId);
710
+ pendingRenderableMembershipRetries.delete(renderableId);
711
+ enqueueRefresh('caster-visibility-changed');
712
+ }
713
+ };
714
+ const syncMatrixObserver = (binding) => {
715
+ const object = objectByRenderable.get(binding.renderableId);
716
+ if (!object?.cast) {
717
+ if (binding.matrixObserver)
718
+ binding.mesh.onAfterWorldMatrixUpdateObservable.remove(binding.matrixObserver);
719
+ binding.matrixObserver = null;
720
+ binding.worldMatrixSnapshot = null;
721
+ pendingTransformMembershipRetries.delete(binding.mesh);
722
+ return;
723
+ }
724
+ if (binding.matrixObserver)
725
+ return;
726
+ binding.worldMatrixSnapshot = readWorldMatrixSnapshot(binding.mesh);
727
+ binding.matrixObserver = binding.mesh.onAfterWorldMatrixUpdateObservable.add(() => {
728
+ if (disposed || disposing)
729
+ return;
730
+ const nextSnapshot = readWorldMatrixSnapshot(binding.mesh);
731
+ if (areMatrixSnapshotsEqual(binding.worldMatrixSnapshot, nextSnapshot))
732
+ return;
733
+ const currentObject = objectByRenderable.get(binding.renderableId);
734
+ if (!currentObject?.cast) {
735
+ binding.worldMatrixSnapshot = nextSnapshot;
736
+ return;
737
+ }
738
+ try {
739
+ syncCaster(binding.renderableId);
740
+ }
741
+ catch (error) {
742
+ pendingTransformMembershipRetries.add(binding.mesh);
743
+ throw error;
744
+ }
745
+ binding.worldMatrixSnapshot = nextSnapshot;
746
+ enqueueRefresh(currentObject.updateClass === 'static' ? 'static-transform-changed' : 'dynamic-transform-changed');
747
+ });
748
+ };
749
+ const flushPendingTransformMembershipRetries = () => {
750
+ for (const mesh of [...pendingTransformMembershipRetries]) {
751
+ const binding = bindings.get(mesh);
752
+ const currentObject = binding ? objectByRenderable.get(binding.renderableId) : null;
753
+ if (!binding || !currentObject?.cast) {
754
+ pendingTransformMembershipRetries.delete(mesh);
755
+ if (binding)
756
+ binding.worldMatrixSnapshot = readWorldMatrixSnapshot(mesh);
757
+ continue;
758
+ }
759
+ syncCaster(binding.renderableId);
760
+ binding.worldMatrixSnapshot = readWorldMatrixSnapshot(mesh);
761
+ pendingTransformMembershipRetries.delete(mesh);
762
+ enqueueRefresh(currentObject.updateClass === 'static' ? 'static-transform-changed' : 'dynamic-transform-changed');
763
+ }
764
+ };
765
+ const unregisterMesh = (mesh) => {
766
+ const binding = bindings.get(mesh);
767
+ if (!binding)
768
+ return;
769
+ const previousLayer = candidateLayerByMesh.get(mesh);
770
+ const wasCaster = depthBackend?.hasCaster(mesh) === true;
771
+ const wasActiveRecord = registry?.getRecord(binding.renderableId)?.state === 'active';
772
+ depthBackend?.removeCaster(mesh);
773
+ mesh.onEnabledStateChangedObservable.remove(binding.enabledObserver);
774
+ mesh.onDisposeObservable.remove(binding.disposeObserver);
775
+ if (binding.matrixObserver)
776
+ mesh.onAfterWorldMatrixUpdateObservable.remove(binding.matrixObserver);
777
+ restoreReceiver(mesh);
778
+ setCandidateLayer(mesh, null);
779
+ conservativeCasterMeshes.delete(mesh);
780
+ meshDataCacheByMesh.delete(mesh);
781
+ syncCandidateCounts();
782
+ const meshes = meshesByRenderable.get(binding.renderableId);
783
+ meshes?.delete(mesh);
784
+ if (!meshes || meshes.size === 0) {
785
+ meshesByRenderable.delete(binding.renderableId);
786
+ registry?.detach(binding.renderableId);
787
+ pendingRenderableMembershipRetries.delete(binding.renderableId);
788
+ }
789
+ else {
790
+ const visible = [...meshes].some(isMeshRuntimeVisible);
791
+ registry?.setVisible(binding.renderableId, visible);
792
+ }
793
+ if (binding) {
794
+ syncActivityEligibility(binding.entityId);
795
+ }
796
+ if (wasCaster || wasActiveRecord) {
797
+ if (registry?.snapshot().activeCasterCount === 0)
798
+ registry.markDirty('empty-list-clear');
799
+ if (previousLayer)
800
+ markDepthDirty(previousLayer, 'caster-removed');
801
+ else
802
+ enqueueRefresh('caster-removed');
803
+ if (candidateLayerByMesh.size === 0 && previousLayer) {
804
+ markDepthDirty(previousLayer, 'empty-list-clear');
805
+ }
806
+ }
807
+ bindings.delete(mesh);
808
+ pendingMeshRegistrationRollbacks.delete(mesh);
809
+ pendingMeshUnregistrations.delete(mesh);
810
+ pendingTransformMembershipRetries.delete(mesh);
811
+ };
812
+ const requestMeshUnregistration = (mesh) => {
813
+ pendingSceneMeshRegistrations.delete(mesh);
814
+ try {
815
+ unregisterMesh(mesh);
816
+ pendingMeshUnregistrations.delete(mesh);
817
+ reconcileAutomaticAnimationGroups();
818
+ }
819
+ catch (error) {
820
+ pendingMeshUnregistrations.add(mesh);
821
+ throw error;
822
+ }
823
+ };
824
+ const flushPendingMeshUnregistrations = () => {
825
+ for (const mesh of [...pendingMeshUnregistrations])
826
+ requestMeshUnregistration(mesh);
827
+ };
828
+ const registerMesh = (mesh) => {
829
+ const pendingObserverCleanupErrors = flushPendingMeshObserverCleanup(mesh);
830
+ if (pendingObserverCleanupErrors.length > 0) {
831
+ throw Object.assign(new Error('shadowMapExperiment.meshObserverCleanupFailed'), {
832
+ cleanupErrors: pendingObserverCleanupErrors,
833
+ });
834
+ }
835
+ if (pendingMeshRegistrationRollbacks.has(mesh)) {
836
+ try {
837
+ unregisterMesh(mesh);
838
+ }
839
+ catch (error) {
840
+ throw Object.assign(new Error('shadowMapExperiment.meshRegistrationRollbackFailed'), {
841
+ cause: error,
842
+ });
843
+ }
844
+ pendingMeshRegistrationRollbacks.delete(mesh);
845
+ }
846
+ if (!plan?.enabled || !registry || bindings.has(mesh) || isDisposed(mesh))
847
+ return false;
848
+ const renderableId = resolveRenderableId(mesh, objectByRenderable);
849
+ if (!renderableId)
850
+ return false;
851
+ const object = objectByRenderable.get(renderableId);
852
+ if (!object)
853
+ return false;
854
+ let enabledObserver = null;
855
+ let disposeObserver = null;
856
+ let bindingCommitted = false;
857
+ try {
858
+ enabledObserver = mesh.onEnabledStateChangedObservable.add(() => {
859
+ if (!disposed && !disposing) {
860
+ syncRenderable(renderableId);
861
+ reconcileAutomaticAnimationGroups();
862
+ }
863
+ });
864
+ disposeObserver = mesh.onDisposeObservable.add(() => requestMeshUnregistration(mesh));
865
+ const meshes = meshesByRenderable.get(renderableId) ?? new Set();
866
+ meshes.add(mesh);
867
+ meshesByRenderable.set(renderableId, meshes);
868
+ const binding = {
869
+ mesh,
870
+ entityId: object.entityId,
871
+ renderableId,
872
+ sceneFitLocalBounds: readMeshLocalBounds(mesh),
873
+ enabledObserver,
874
+ disposeObserver,
875
+ matrixObserver: null,
876
+ worldMatrixSnapshot: null,
877
+ };
878
+ bindings.set(mesh, binding);
879
+ bindingCommitted = true;
880
+ syncMatrixObserver(binding);
881
+ syncRenderable(renderableId);
882
+ }
883
+ catch (error) {
884
+ const rollbackErrors = [];
885
+ if (bindingCommitted) {
886
+ try {
887
+ unregisterMesh(mesh);
888
+ }
889
+ catch (rollbackError) {
890
+ pendingMeshRegistrationRollbacks.add(mesh);
891
+ rollbackErrors.push(rollbackError);
892
+ }
893
+ }
894
+ else {
895
+ pendingMeshObserverCleanups.set(mesh, { mesh, enabledObserver, disposeObserver });
896
+ rollbackErrors.push(...flushPendingMeshObserverCleanup(mesh));
897
+ }
898
+ if (rollbackErrors.length > 0 && error && typeof error === 'object') {
899
+ attachFailureMetadata(error, { registrationRollbackErrors: Object.freeze(rollbackErrors) });
900
+ }
901
+ throw error;
902
+ }
903
+ return true;
904
+ };
905
+ const flushPendingMeshObserverCleanup = (mesh) => {
906
+ const pending = pendingMeshObserverCleanups.get(mesh);
907
+ if (!pending)
908
+ return Object.freeze([]);
909
+ const cleanupErrors = [];
910
+ if (pending.disposeObserver) {
911
+ try {
912
+ pending.mesh.onDisposeObservable.remove(pending.disposeObserver);
913
+ pending.disposeObserver = null;
914
+ }
915
+ catch (error) {
916
+ cleanupErrors.push(error);
917
+ }
918
+ }
919
+ if (pending.enabledObserver) {
920
+ try {
921
+ pending.mesh.onEnabledStateChangedObservable.remove(pending.enabledObserver);
922
+ pending.enabledObserver = null;
923
+ }
924
+ catch (error) {
925
+ cleanupErrors.push(error);
926
+ }
927
+ }
928
+ if (!pending.disposeObserver && !pending.enabledObserver)
929
+ pendingMeshObserverCleanups.delete(mesh);
930
+ return Object.freeze(cleanupErrors);
931
+ };
932
+ const flushPendingSceneMeshRegistrations = () => {
933
+ let registered = false;
934
+ for (const mesh of [...pendingSceneMeshRegistrations]) {
935
+ if (!scene.meshes.includes(mesh)) {
936
+ pendingSceneMeshRegistrations.delete(mesh);
937
+ continue;
938
+ }
939
+ registered = registerMesh(mesh) || registered;
940
+ pendingSceneMeshRegistrations.delete(mesh);
941
+ }
942
+ if (registered)
943
+ reconcileAutomaticAnimationGroups();
944
+ };
945
+ const deactivate = () => {
946
+ pendingCompositeRefreshReasons.clear();
947
+ const cleanupErrors = [];
948
+ const attempt = (operation) => {
949
+ try {
950
+ operation();
951
+ return true;
952
+ }
953
+ catch (error) {
954
+ cleanupErrors.push(error);
955
+ return false;
956
+ }
957
+ };
958
+ for (const [mesh, binding] of [...bindings]) {
959
+ let cleaned = true;
960
+ cleaned = attempt(() => mesh.onEnabledStateChangedObservable.remove(binding.enabledObserver)) && cleaned;
961
+ cleaned = attempt(() => mesh.onDisposeObservable.remove(binding.disposeObserver)) && cleaned;
962
+ if (binding.matrixObserver) {
963
+ cleaned = attempt(() => mesh.onAfterWorldMatrixUpdateObservable.remove(binding.matrixObserver)) && cleaned;
964
+ }
965
+ cleaned = attempt(() => restoreReceiver(mesh)) && cleaned;
966
+ if (depthBackend) {
967
+ cleaned = attempt(() => depthBackend.removeCaster(mesh)) && cleaned;
968
+ }
969
+ cleaned = attempt(() => activityScheduler.setEntityActive(binding.entityId, false)) && cleaned;
970
+ if (cleaned)
971
+ bindings.delete(mesh);
972
+ if (cleaned)
973
+ pendingMeshRegistrationRollbacks.delete(mesh);
974
+ }
975
+ for (const mesh of [...pendingMeshObserverCleanups.keys()]) {
976
+ cleanupErrors.push(...flushPendingMeshObserverCleanup(mesh));
977
+ }
978
+ for (const [mesh, state] of [...receiverStates]) {
979
+ if (attempt(() => {
980
+ if (!isDisposed(state.mesh) && state.mesh.receiveShadows === state.ownedValue) {
981
+ state.mesh.receiveShadows = state.previousReceiveShadows;
982
+ }
983
+ }))
984
+ receiverStates.delete(mesh);
985
+ }
986
+ if (bindings.size === 0) {
987
+ meshesByRenderable.clear();
988
+ candidateLayerByMesh.clear();
989
+ candidateMeshCounts.static = 0;
990
+ candidateMeshCounts.dynamic = 0;
991
+ conservativeCasterMeshes.clear();
992
+ meshDataCacheByMesh.clear();
993
+ pendingMeshRegistrationRollbacks.clear();
994
+ pendingSceneMeshRegistrations.clear();
995
+ pendingMeshUnregistrations.clear();
996
+ pendingRenderableMembershipRetries.clear();
997
+ pendingTransformMembershipRetries.clear();
998
+ activeCasterEntityIds.clear();
999
+ eligibleActiveDeformationEntityIds.clear();
1000
+ pendingFinalDeformationEntityIds.clear();
1001
+ pendingDeformationInvalidations.clear();
1002
+ pendingMembershipInvalidationLayers.clear();
1003
+ pendingCoverageMembershipRebuild = false;
1004
+ objectByRenderable.clear();
1005
+ objectByEntity.clear();
1006
+ }
1007
+ receiverTargetByMesh.clear();
1008
+ if (registry) {
1009
+ const ownedRegistry = registry;
1010
+ if (attempt(() => ownedRegistry.dispose()))
1011
+ registry = null;
1012
+ }
1013
+ if (depthBackend) {
1014
+ const ownedBackend = depthBackend;
1015
+ if (attempt(() => ownedBackend.dispose())) {
1016
+ depthBackend = null;
1017
+ generator = null;
1018
+ }
1019
+ }
1020
+ if (pendingBackendAllocationCleanup) {
1021
+ const cleanup = pendingBackendAllocationCleanup;
1022
+ if (attempt(() => {
1023
+ const errors = cleanup();
1024
+ if (errors.length > 0) {
1025
+ throw Object.assign(new Error('shadowMapExperiment.backendAllocationCleanupFailed'), { cleanupErrors: errors });
1026
+ }
1027
+ }))
1028
+ pendingBackendAllocationCleanup = null;
1029
+ }
1030
+ if (!depthBackend && !pendingBackendAllocationCleanup)
1031
+ pendingFallbackReason = null;
1032
+ if (lightState) {
1033
+ const ownedLightState = lightState;
1034
+ if (attempt(() => restoreLight(ownedLightState)))
1035
+ lightState = null;
1036
+ }
1037
+ if (previousSceneShadowsEnabled !== null) {
1038
+ const ownedSceneShadowsEnabled = previousSceneShadowsEnabled;
1039
+ if (attempt(() => { scene.shadowsEnabled = ownedSceneShadowsEnabled; }))
1040
+ previousSceneShadowsEnabled = null;
1041
+ }
1042
+ effectiveCoverageCenter = null;
1043
+ effectiveCoverageExtent = null;
1044
+ effectiveCoverageNear = null;
1045
+ effectiveCoverageFar = null;
1046
+ if (cleanupErrors.length > 0) {
1047
+ throw Object.assign(new Error('shadowMapExperiment.deactivationFailed'), { cleanupErrors });
1048
+ }
1049
+ };
1050
+ const activate = (nextPlan) => {
1051
+ const light = resolveDirectionalLight(scene, nextPlan.light.entityId);
1052
+ if (!light)
1053
+ throw new Error(`shadowMapExperiment.lightMissing:${nextPlan.light.entityId}`);
1054
+ const existingGenerators = readShadowGenerators(light);
1055
+ if (existingGenerators.length > 0)
1056
+ throw new Error(`shadowMapExperiment.backendConflict:${nextPlan.light.entityId}`);
1057
+ previousSceneShadowsEnabled = scene.shadowsEnabled;
1058
+ influenceCulling.configure(nextPlan.culling.guardBandRatio);
1059
+ lightState = captureLight(light);
1060
+ effectiveCoverageCenter = nextPlan.generator.bounds.center;
1061
+ effectiveCoverageExtent = nextPlan.generator.bounds.extent;
1062
+ effectiveCoverageNear = nextPlan.generator.bounds.near;
1063
+ effectiveCoverageFar = nextPlan.generator.bounds.far;
1064
+ configureLight(light, nextPlan, {
1065
+ center: nextPlan.generator.bounds.center,
1066
+ extent: nextPlan.generator.bounds.extent,
1067
+ near: nextPlan.generator.bounds.near,
1068
+ far: nextPlan.generator.bounds.far,
1069
+ });
1070
+ scene.shadowsEnabled = true;
1071
+ light.shadowEnabled = true;
1072
+ try {
1073
+ depthBackend = createBabylonShadowMapExperimentDepthBackend(scene, light, nextPlan, {
1074
+ onCompositorLifecycleEvent: handleCompositorLifecycleEvent,
1075
+ });
1076
+ }
1077
+ catch (error) {
1078
+ rememberBackendAllocationCleanup(error);
1079
+ throw error;
1080
+ }
1081
+ generator = depthBackend.generator;
1082
+ if (depthBackend.fallbackReason)
1083
+ warnForFallback(depthBackend.fallbackReason);
1084
+ registry = createShadowMapExperimentRegistry(nextPlan);
1085
+ for (const object of nextPlan.objects) {
1086
+ objectByEntity.set(object.entityId, object);
1087
+ for (const renderableId of object.renderableIds)
1088
+ objectByRenderable.set(renderableId, object);
1089
+ }
1090
+ updateCameraInfluenceCoverage();
1091
+ for (const mesh of scene.meshes)
1092
+ registerMesh(mesh);
1093
+ reconcileAutomaticAnimationGroups();
1094
+ markAllDepthDirty('generator-created');
1095
+ };
1096
+ const registerActivitySource = (input) => {
1097
+ assertUsable();
1098
+ const controller = activityScheduler.registerSource(input);
1099
+ const deformationSource = input.kind === 'animation' || input.kind === 'morph';
1100
+ let sourceActive = false;
1101
+ let controllerDisposed = false;
1102
+ const updateDeformationSourceCount = (previousActive, nextActive) => {
1103
+ if (!deformationSource || previousActive === nextActive)
1104
+ return;
1105
+ const previousCount = activeDeformationSourceCountByEntity.get(input.entityId) ?? 0;
1106
+ if (nextActive) {
1107
+ activeDeformationSourceCountByEntity.set(input.entityId, previousCount + 1);
1108
+ pendingFinalDeformationEntityIds.delete(input.entityId);
1109
+ syncDeformationActivityEligibility(input.entityId);
1110
+ return;
1111
+ }
1112
+ if (previousCount <= 1) {
1113
+ activeDeformationSourceCountByEntity.delete(input.entityId);
1114
+ if (activeCasterEntityIds.has(input.entityId))
1115
+ pendingFinalDeformationEntityIds.add(input.entityId);
1116
+ }
1117
+ else {
1118
+ activeDeformationSourceCountByEntity.set(input.entityId, previousCount - 1);
1119
+ }
1120
+ syncDeformationActivityEligibility(input.entityId);
1121
+ };
1122
+ return Object.freeze({
1123
+ entityId: controller.entityId,
1124
+ kind: controller.kind,
1125
+ sourceId: controller.sourceId,
1126
+ setActive(nextActive) {
1127
+ if (disposed || disposing || controllerDisposed || sourceActive === nextActive)
1128
+ return false;
1129
+ if (!controller.setActive(nextActive))
1130
+ return false;
1131
+ updateDeformationSourceCount(sourceActive, nextActive);
1132
+ sourceActive = nextActive;
1133
+ requestRefreshFrame(`shadow-map-experiment-${nextActive ? 'caster-activity-started' : 'caster-activity-stopped'}`);
1134
+ return true;
1135
+ },
1136
+ invalidate() {
1137
+ if (disposed || disposing || controllerDisposed)
1138
+ return false;
1139
+ const invalidated = controller.invalidate();
1140
+ if (!invalidated)
1141
+ return false;
1142
+ const reason = dirtyReasonForActivityKind(input.kind);
1143
+ if (deformationSource) {
1144
+ const invalidationReasons = pendingDeformationInvalidations.get(input.entityId) ?? new Set();
1145
+ invalidationReasons.add(reason);
1146
+ pendingDeformationInvalidations.set(input.entityId, invalidationReasons);
1147
+ }
1148
+ requestRefreshFrame(`shadow-map-experiment-${reason}`);
1149
+ return true;
1150
+ },
1151
+ dispose() {
1152
+ if (controllerDisposed)
1153
+ return;
1154
+ const wasActive = sourceActive;
1155
+ updateDeformationSourceCount(sourceActive, false);
1156
+ sourceActive = false;
1157
+ controllerDisposed = true;
1158
+ controller.dispose();
1159
+ if (wasActive)
1160
+ requestRefreshFrame('shadow-map-experiment-caster-activity-stopped');
1161
+ },
1162
+ });
1163
+ };
1164
+ const resolveAutomaticActivityTargets = (group) => {
1165
+ const desired = new Map();
1166
+ for (const targetedAnimation of group.targetedAnimations) {
1167
+ const target = targetedAnimation.target;
1168
+ const kind = classifyAutomaticActivityTarget(target, bindings);
1169
+ const targetMeshes = resolveAutomaticActivityTargetMeshes(scene, bindings, target, kind);
1170
+ for (const mesh of targetMeshes) {
1171
+ if (!isMeshRuntimeVisible(mesh))
1172
+ continue;
1173
+ const meshBinding = bindings.get(mesh);
1174
+ const object = meshBinding ? objectByEntity.get(meshBinding.entityId) : null;
1175
+ if (!meshBinding || !object?.cast || object.updateClass === 'static')
1176
+ continue;
1177
+ const key = `${meshBinding.entityId}\u0000${kind}`;
1178
+ desired.set(key, { entityId: meshBinding.entityId, kind });
1179
+ }
1180
+ }
1181
+ return desired;
1182
+ };
1183
+ const reconcileAutomaticAnimationGroup = (binding) => {
1184
+ const active = binding.group.isPlaying === true;
1185
+ const desired = resolveAutomaticActivityTargets(binding.group);
1186
+ const created = [];
1187
+ try {
1188
+ for (const [key, descriptor] of desired) {
1189
+ if (binding.sources.has(key))
1190
+ continue;
1191
+ const sourceId = `fps:auto:animation-group:${binding.group.uniqueId}:${descriptor.kind}`;
1192
+ const controller = registerActivitySource({ ...descriptor, sourceId });
1193
+ const source = { ...descriptor, controller };
1194
+ binding.sources.set(key, source);
1195
+ created.push({ key, source });
1196
+ if (active)
1197
+ controller.setActive(true);
1198
+ }
1199
+ }
1200
+ catch (error) {
1201
+ for (const entry of created.reverse()) {
1202
+ try {
1203
+ entry.source.controller.setActive(false);
1204
+ }
1205
+ catch { /* Best-effort rollback. */ }
1206
+ try {
1207
+ entry.source.controller.dispose();
1208
+ }
1209
+ catch { /* Best-effort rollback. */ }
1210
+ binding.sources.delete(entry.key);
1211
+ }
1212
+ throw error;
1213
+ }
1214
+ for (const [key, source] of [...binding.sources]) {
1215
+ if (desired.has(key))
1216
+ continue;
1217
+ source.controller.setActive(false);
1218
+ source.controller.dispose();
1219
+ binding.sources.delete(key);
1220
+ }
1221
+ for (const source of binding.sources.values())
1222
+ source.controller.setActive(active);
1223
+ binding.active = active;
1224
+ };
1225
+ const safelyReconcileAutomaticAnimationGroup = (binding) => {
1226
+ if (disposed || disposing || !binding.ready)
1227
+ return;
1228
+ try {
1229
+ reconcileAutomaticAnimationGroup(binding);
1230
+ }
1231
+ catch (error) {
1232
+ rememberDiagnostic('shadowMapExperiment.automaticActivityBindingFailed', `AnimationGroup ${binding.group.name || binding.group.uniqueId} could not bind shadow activity: ${error instanceof Error ? error.message : String(error)}`);
1233
+ }
1234
+ };
1235
+ const attachAutomaticAnimationGroup = (group) => {
1236
+ if (automaticAnimationGroups.has(group) || disposed || disposing)
1237
+ return;
1238
+ const binding = {
1239
+ group,
1240
+ playObserver: null,
1241
+ pauseObserver: null,
1242
+ endObserver: null,
1243
+ sources: new Map(),
1244
+ active: false,
1245
+ ready: false,
1246
+ };
1247
+ automaticAnimationGroups.set(group, binding);
1248
+ try {
1249
+ binding.playObserver = group.onAnimationGroupPlayObservable.add(() => {
1250
+ if (!binding.ready)
1251
+ return;
1252
+ safelyReconcileAutomaticAnimationGroup(binding);
1253
+ requestRefreshFrame('shadow-map-experiment-animation-group-played');
1254
+ });
1255
+ binding.pauseObserver = group.onAnimationGroupPauseObservable.add(() => {
1256
+ if (binding.ready)
1257
+ safelyReconcileAutomaticAnimationGroup(binding);
1258
+ });
1259
+ binding.endObserver = group.onAnimationGroupEndObservable.add(() => {
1260
+ if (binding.ready)
1261
+ safelyReconcileAutomaticAnimationGroup(binding);
1262
+ });
1263
+ binding.ready = true;
1264
+ safelyReconcileAutomaticAnimationGroup(binding);
1265
+ }
1266
+ catch (error) {
1267
+ binding.ready = false;
1268
+ const cleanupErrors = detachAutomaticAnimationGroup(group);
1269
+ if (cleanupErrors.length > 0 && error && typeof error === 'object') {
1270
+ attachFailureMetadata(error, { cleanupErrors });
1271
+ }
1272
+ throw error;
1273
+ }
1274
+ };
1275
+ const detachAutomaticAnimationGroup = (group) => {
1276
+ const binding = automaticAnimationGroups.get(group);
1277
+ if (!binding)
1278
+ return Object.freeze([]);
1279
+ binding.ready = false;
1280
+ const cleanupErrors = [];
1281
+ for (const [key, source] of [...binding.sources.entries()].reverse()) {
1282
+ try {
1283
+ source.controller.setActive(false);
1284
+ }
1285
+ catch (error) {
1286
+ cleanupErrors.push(error);
1287
+ }
1288
+ try {
1289
+ source.controller.dispose();
1290
+ binding.sources.delete(key);
1291
+ }
1292
+ catch (error) {
1293
+ cleanupErrors.push(error);
1294
+ }
1295
+ }
1296
+ if (binding.playObserver) {
1297
+ try {
1298
+ group.onAnimationGroupPlayObservable.remove(binding.playObserver);
1299
+ binding.playObserver = null;
1300
+ }
1301
+ catch (error) {
1302
+ cleanupErrors.push(error);
1303
+ }
1304
+ }
1305
+ if (binding.pauseObserver) {
1306
+ try {
1307
+ group.onAnimationGroupPauseObservable.remove(binding.pauseObserver);
1308
+ binding.pauseObserver = null;
1309
+ }
1310
+ catch (error) {
1311
+ cleanupErrors.push(error);
1312
+ }
1313
+ }
1314
+ if (binding.endObserver) {
1315
+ try {
1316
+ group.onAnimationGroupEndObservable.remove(binding.endObserver);
1317
+ binding.endObserver = null;
1318
+ }
1319
+ catch (error) {
1320
+ cleanupErrors.push(error);
1321
+ }
1322
+ }
1323
+ if (cleanupErrors.length === 0
1324
+ && binding.sources.size === 0
1325
+ && !binding.playObserver
1326
+ && !binding.pauseObserver
1327
+ && !binding.endObserver)
1328
+ automaticAnimationGroups.delete(group);
1329
+ return Object.freeze(cleanupErrors);
1330
+ };
1331
+ const reconcileAutomaticAnimationGroups = () => {
1332
+ for (const binding of automaticAnimationGroups.values())
1333
+ safelyReconcileAutomaticAnimationGroup(binding);
1334
+ };
1335
+ const syncAutomaticAnimationGroupStates = () => {
1336
+ for (const binding of automaticAnimationGroups.values()) {
1337
+ if (!binding.ready)
1338
+ continue;
1339
+ const active = binding.group.isPlaying === true;
1340
+ if (active !== binding.active || (active && binding.sources.size === 0)) {
1341
+ safelyReconcileAutomaticAnimationGroup(binding);
1342
+ }
1343
+ }
1344
+ };
1345
+ const applyPlanInPlace = (previousPlan, nextPlan) => {
1346
+ if (!registry || !generator)
1347
+ throw new Error('shadowMapExperiment.backendUnavailable');
1348
+ const delta = diffShadowMapExperimentPlans(previousPlan, nextPlan);
1349
+ plan = nextPlan;
1350
+ objectByRenderable.clear();
1351
+ objectByEntity.clear();
1352
+ for (const object of nextPlan.objects) {
1353
+ objectByEntity.set(object.entityId, object);
1354
+ for (const renderableId of object.renderableIds)
1355
+ objectByRenderable.set(renderableId, object);
1356
+ }
1357
+ activityScheduler.applyPlan(nextPlan);
1358
+ registry.applyPlan(nextPlan);
1359
+ for (const [mesh, binding] of [...bindings]) {
1360
+ const resolvedId = resolveRenderableId(mesh, objectByRenderable);
1361
+ const resolvedEntityId = resolvedId ? objectByRenderable.get(resolvedId)?.entityId : null;
1362
+ if (resolvedId !== binding.renderableId || resolvedEntityId !== binding.entityId)
1363
+ unregisterMesh(mesh);
1364
+ else {
1365
+ syncMatrixObserver(binding);
1366
+ syncRenderable(binding.renderableId);
1367
+ }
1368
+ }
1369
+ for (const mesh of scene.meshes)
1370
+ registerMesh(mesh);
1371
+ reconcileAutomaticAnimationGroups();
1372
+ for (const reason of delta.dirtyReasons) {
1373
+ registry.markDirty(reason);
1374
+ enqueueRefresh(reason);
1375
+ }
1376
+ };
1377
+ const rollbackPlanUpdate = (previousPlan, error) => {
1378
+ const rollbackDeactivationErrors = [];
1379
+ try {
1380
+ deactivate();
1381
+ }
1382
+ catch (deactivationError) {
1383
+ rollbackDeactivationErrors.push(deactivationError);
1384
+ }
1385
+ plan = previousPlan;
1386
+ activityScheduler.applyPlan(previousPlan?.enabled ? previousPlan : null);
1387
+ const rollbackErrors = [];
1388
+ if (previousPlan?.enabled && !hasOwnedBackendState()) {
1389
+ try {
1390
+ activate(previousPlan);
1391
+ }
1392
+ catch (rollbackError) {
1393
+ rollbackErrors.push(rollbackError);
1394
+ try {
1395
+ deactivate();
1396
+ }
1397
+ catch (deactivationError) {
1398
+ rollbackDeactivationErrors.push(deactivationError);
1399
+ }
1400
+ }
1401
+ }
1402
+ if ((rollbackErrors.length > 0 || rollbackDeactivationErrors.length > 0) && error && typeof error === 'object') {
1403
+ attachFailureMetadata(error, {
1404
+ rollbackErrors,
1405
+ ...(rollbackDeactivationErrors.length > 0 ? { rollbackDeactivationErrors } : {}),
1406
+ });
1407
+ }
1408
+ throw error;
1409
+ };
1410
+ const hasOwnedBackendState = () => bindings.size > 0
1411
+ || pendingMeshObserverCleanups.size > 0
1412
+ || pendingMeshRegistrationRollbacks.size > 0
1413
+ || pendingSceneMeshRegistrations.size > 0
1414
+ || pendingMeshUnregistrations.size > 0
1415
+ || pendingRenderableMembershipRetries.size > 0
1416
+ || pendingTransformMembershipRetries.size > 0
1417
+ || receiverStates.size > 0
1418
+ || registry !== null
1419
+ || depthBackend !== null
1420
+ || pendingBackendAllocationCleanup !== null
1421
+ || generator !== null
1422
+ || lightState !== null
1423
+ || previousSceneShadowsEnabled !== null;
1424
+ const applyEffectivePlan = (value, allowDisposing = false) => {
1425
+ assertUsable(allowDisposing);
1426
+ const nextPlan = value ? createShadowMapExperimentPlanSnapshot(value) : null;
1427
+ const previousPlan = plan;
1428
+ if (previousPlan?.enabled && nextPlan?.enabled) {
1429
+ const delta = diffShadowMapExperimentPlans(previousPlan, nextPlan);
1430
+ if (!delta.generatorChanged) {
1431
+ try {
1432
+ applyPlanInPlace(previousPlan, nextPlan);
1433
+ return;
1434
+ }
1435
+ catch (error) {
1436
+ rollbackPlanUpdate(previousPlan, error);
1437
+ }
1438
+ }
1439
+ }
1440
+ deactivate();
1441
+ plan = nextPlan;
1442
+ activityScheduler.applyPlan(nextPlan?.enabled ? nextPlan : null);
1443
+ if (!nextPlan?.enabled) {
1444
+ reconcileAutomaticAnimationGroups();
1445
+ return;
1446
+ }
1447
+ try {
1448
+ activate(nextPlan);
1449
+ }
1450
+ catch (error) {
1451
+ rollbackPlanUpdate(previousPlan, error);
1452
+ }
1453
+ };
1454
+ const setPlan = (value) => {
1455
+ assertUsable();
1456
+ const nextSourcePlan = value ? createShadowMapExperimentPlanSnapshot(value) : null;
1457
+ const records = [...runtimeRegistrations.values()].filter(record => !record.disposed);
1458
+ const nextEffectivePlan = composeEffectivePlan(nextSourcePlan, records, runtimeOverlayRevision);
1459
+ const previousSourcePlan = sourcePlan;
1460
+ try {
1461
+ applyEffectivePlan(nextEffectivePlan);
1462
+ sourcePlan = nextSourcePlan;
1463
+ }
1464
+ catch (error) {
1465
+ sourcePlan = previousSourcePlan;
1466
+ throw error;
1467
+ }
1468
+ };
1469
+ const { newMeshObserver, removedMeshObserver, frameObserver, newAnimationGroupObserver, removedAnimationGroupObserver, } = (() => {
1470
+ let acquiredNewMeshObserver = null;
1471
+ let acquiredRemovedMeshObserver = null;
1472
+ let acquiredFrameObserver = null;
1473
+ let acquiredNewAnimationGroupObserver = null;
1474
+ let acquiredRemovedAnimationGroupObserver = null;
1475
+ try {
1476
+ acquiredNewMeshObserver = scene.onNewMeshAddedObservable.add(mesh => {
1477
+ // Babylon announces a mesh from its constructor before every identity and
1478
+ // visibility field is guaranteed to be initialized. Bind after that
1479
+ // constructor completes; this is still an event-local operation, not a scan.
1480
+ if (disposed || disposing || !scene.meshes.includes(mesh))
1481
+ return;
1482
+ pendingSceneMeshRegistrations.add(mesh);
1483
+ queueMicrotask(() => {
1484
+ if (disposed || disposing || !pendingSceneMeshRegistrations.has(mesh))
1485
+ return;
1486
+ if (!scene.meshes.includes(mesh)) {
1487
+ pendingSceneMeshRegistrations.delete(mesh);
1488
+ return;
1489
+ }
1490
+ try {
1491
+ const registered = registerMesh(mesh);
1492
+ pendingSceneMeshRegistrations.delete(mesh);
1493
+ if (registered)
1494
+ reconcileAutomaticAnimationGroups();
1495
+ }
1496
+ catch {
1497
+ pendingSceneMeshRegistrations.add(mesh);
1498
+ }
1499
+ });
1500
+ });
1501
+ acquiredRemovedMeshObserver = scene.onMeshRemovedObservable.add(mesh => requestMeshUnregistration(mesh));
1502
+ acquiredNewAnimationGroupObserver = scene.onNewAnimationGroupAddedObservable.add(group => {
1503
+ try {
1504
+ attachAutomaticAnimationGroup(group);
1505
+ }
1506
+ catch (error) {
1507
+ rememberDiagnostic('shadowMapExperiment.automaticActivityObserverFailed', `AnimationGroup ${group.name || group.uniqueId} could not be observed: ${error instanceof Error ? error.message : String(error)}`);
1508
+ }
1509
+ });
1510
+ acquiredRemovedAnimationGroupObserver = scene.onAnimationGroupRemovedObservable.add(group => {
1511
+ const cleanupErrors = detachAutomaticAnimationGroup(group);
1512
+ if (cleanupErrors.length > 0) {
1513
+ rememberDiagnostic('shadowMapExperiment.automaticActivityCleanupFailed', `AnimationGroup ${group.name || group.uniqueId} activity cleanup failed.`);
1514
+ }
1515
+ });
1516
+ acquiredFrameObserver = scene.onBeforeRenderObservable.add(() => flushRefresh());
1517
+ for (const group of scene.animationGroups)
1518
+ attachAutomaticAnimationGroup(group);
1519
+ return {
1520
+ newMeshObserver: acquiredNewMeshObserver,
1521
+ removedMeshObserver: acquiredRemovedMeshObserver,
1522
+ frameObserver: acquiredFrameObserver,
1523
+ newAnimationGroupObserver: acquiredNewAnimationGroupObserver,
1524
+ removedAnimationGroupObserver: acquiredRemovedAnimationGroupObserver,
1525
+ };
1526
+ }
1527
+ catch (error) {
1528
+ const cleanup = () => {
1529
+ const cleanupErrors = [];
1530
+ for (const group of [...automaticAnimationGroups.keys()].reverse()) {
1531
+ cleanupErrors.push(...detachAutomaticAnimationGroup(group));
1532
+ }
1533
+ if (acquiredRemovedAnimationGroupObserver) {
1534
+ try {
1535
+ scene.onAnimationGroupRemovedObservable.remove(acquiredRemovedAnimationGroupObserver);
1536
+ acquiredRemovedAnimationGroupObserver = null;
1537
+ }
1538
+ catch (cleanupError) {
1539
+ cleanupErrors.push(cleanupError);
1540
+ }
1541
+ }
1542
+ if (acquiredNewAnimationGroupObserver) {
1543
+ try {
1544
+ scene.onNewAnimationGroupAddedObservable.remove(acquiredNewAnimationGroupObserver);
1545
+ acquiredNewAnimationGroupObserver = null;
1546
+ }
1547
+ catch (cleanupError) {
1548
+ cleanupErrors.push(cleanupError);
1549
+ }
1550
+ }
1551
+ if (acquiredFrameObserver) {
1552
+ try {
1553
+ scene.onBeforeRenderObservable.remove(acquiredFrameObserver);
1554
+ acquiredFrameObserver = null;
1555
+ }
1556
+ catch (cleanupError) {
1557
+ cleanupErrors.push(cleanupError);
1558
+ }
1559
+ }
1560
+ if (acquiredRemovedMeshObserver) {
1561
+ try {
1562
+ scene.onMeshRemovedObservable.remove(acquiredRemovedMeshObserver);
1563
+ acquiredRemovedMeshObserver = null;
1564
+ }
1565
+ catch (cleanupError) {
1566
+ cleanupErrors.push(cleanupError);
1567
+ }
1568
+ }
1569
+ if (acquiredNewMeshObserver) {
1570
+ try {
1571
+ scene.onNewMeshAddedObservable.remove(acquiredNewMeshObserver);
1572
+ acquiredNewMeshObserver = null;
1573
+ }
1574
+ catch (cleanupError) {
1575
+ cleanupErrors.push(cleanupError);
1576
+ }
1577
+ }
1578
+ return Object.freeze(cleanupErrors);
1579
+ };
1580
+ const cleanupErrors = cleanup();
1581
+ if (cleanupErrors.length > 0)
1582
+ throw createInitializationFailure(error, cleanup, cleanupErrors);
1583
+ throw error;
1584
+ }
1585
+ })();
1586
+ let disposeNewMeshObserverRemoved = false;
1587
+ let disposeRemovedMeshObserverRemoved = false;
1588
+ let disposeFrameObserverRemoved = false;
1589
+ let disposeNewAnimationGroupObserverRemoved = false;
1590
+ let disposeRemovedAnimationGroupObserverRemoved = false;
1591
+ let disposeActivitySchedulerDisposed = false;
1592
+ let disposeDepthRefreshSchedulerDisposed = false;
1593
+ let disposeInfluenceCullingDisposed = false;
1594
+ const createRuntimeOwner = (records) => {
1595
+ const recordSet = new Set(records);
1596
+ const owner = Object.freeze({
1597
+ entityIds: Object.freeze(records.map(record => record.entityId).sort()),
1598
+ renderableIds: Object.freeze(records.flatMap(record => (record.renderables.map(renderable => renderable.renderableId))).sort()),
1599
+ getBehaviorProfileId(entityId) {
1600
+ return records.find(record => record.entityId === entityId && !record.disposed)?.behaviorProfileId ?? null;
1601
+ },
1602
+ getActivityController(entityId, sourceId) {
1603
+ const record = records.find(candidate => candidate.entityId === entityId && !candidate.disposed);
1604
+ return record?.controllers.get(sourceId) ?? null;
1605
+ },
1606
+ dispose() {
1607
+ if (records.every(record => record.disposed))
1608
+ return;
1609
+ assertUsable(true);
1610
+ const cleanupErrors = [];
1611
+ for (const record of [...records].reverse()) {
1612
+ for (const sourceId of [...record.controllers.keys()].reverse()) {
1613
+ const controller = record.controllers.get(sourceId);
1614
+ if (!controller)
1615
+ continue;
1616
+ try {
1617
+ controller.setActive(false);
1618
+ }
1619
+ catch (error) {
1620
+ cleanupErrors.push(error);
1621
+ }
1622
+ try {
1623
+ controller.dispose();
1624
+ record.controllers.delete(sourceId);
1625
+ }
1626
+ catch (error) {
1627
+ cleanupErrors.push(error);
1628
+ }
1629
+ }
1630
+ }
1631
+ const controllersDisposed = records.every(record => record.controllers.size === 0);
1632
+ const anyRegistered = records.some(record => runtimeRegistrations.get(record.entityId) === record);
1633
+ if (controllersDisposed && anyRegistered) {
1634
+ const nextOverlayRevision = runtimeOverlayRevision + 1;
1635
+ const nextRecords = [...runtimeRegistrations.values()].filter(candidate => !recordSet.has(candidate) && !candidate.disposed);
1636
+ try {
1637
+ applyEffectivePlan(composeEffectivePlan(sourcePlan, nextRecords, nextOverlayRevision), true);
1638
+ for (const record of records)
1639
+ runtimeRegistrations.delete(record.entityId);
1640
+ runtimeOverlayRevision = nextOverlayRevision;
1641
+ }
1642
+ catch (error) {
1643
+ cleanupErrors.push(error);
1644
+ }
1645
+ }
1646
+ if (controllersDisposed && records.every(record => runtimeRegistrations.get(record.entityId) !== record)) {
1647
+ for (const record of records)
1648
+ record.disposed = true;
1649
+ }
1650
+ if (cleanupErrors.length > 0) {
1651
+ const error = Object.assign(new Error('shadowMapExperiment.runtimeOwnerDisposeFailed'), {
1652
+ cleanupErrors: Object.freeze(cleanupErrors),
1653
+ runtimeShadowObjectsRecoveryOwner: owner,
1654
+ });
1655
+ throw error;
1656
+ }
1657
+ },
1658
+ });
1659
+ for (const record of records)
1660
+ record.owner = owner;
1661
+ return owner;
1662
+ };
1663
+ const validateRuntimeRegistration = (input, batchEntityIds, batchRenderableIds, batchMeshes, batchActivityIdentities) => {
1664
+ const entityId = input.entityId?.trim();
1665
+ const behaviorProfileId = input.behaviorProfileId?.trim();
1666
+ if (!entityId || entityId !== input.entityId)
1667
+ throw new Error('shadowMapExperiment.runtimeEntityIdRequired');
1668
+ if (!behaviorProfileId || behaviorProfileId !== input.behaviorProfileId) {
1669
+ throw new Error('shadowMapExperiment.runtimeBehaviorProfileIdRequired');
1670
+ }
1671
+ const profile = requireRuntimeProfile(sourcePlan, behaviorProfileId, entityId);
1672
+ if (!sourcePlan?.enabled)
1673
+ throw new Error('shadowMapExperiment.runtimePlanDisabled');
1674
+ if (batchEntityIds.has(entityId) || runtimeRegistrations.has(entityId) || sourcePlan.objects.some(object => object.entityId === entityId)) {
1675
+ throw new Error(`shadowMapExperiment.runtimeEntityConflict:${entityId}`);
1676
+ }
1677
+ batchEntityIds.add(entityId);
1678
+ if (!Array.isArray(input.renderables) || input.renderables.length === 0) {
1679
+ throw new Error(`shadowMapExperiment.runtimeRenderableRequired:${entityId}`);
1680
+ }
1681
+ const renderableIds = new Set();
1682
+ const renderables = input.renderables.map((renderable, index) => {
1683
+ const renderableId = renderable.renderableId?.trim();
1684
+ if (!renderableId || renderableId !== renderable.renderableId) {
1685
+ throw new Error(`shadowMapExperiment.runtimeRenderableIdRequired:${entityId}:${index}`);
1686
+ }
1687
+ if (renderableIds.has(renderableId) || batchRenderableIds.has(renderableId) || objectByRenderable.has(renderableId)) {
1688
+ throw new Error(`shadowMapExperiment.runtimeRenderableConflict:${renderableId}`);
1689
+ }
1690
+ if (!renderable.mesh || renderable.mesh.getScene() !== scene || isDisposed(renderable.mesh) || !scene.meshes.includes(renderable.mesh)) {
1691
+ throw new Error(`shadowMapExperiment.runtimeMeshSceneMismatch:${renderableId}`);
1692
+ }
1693
+ if (batchMeshes.has(renderable.mesh))
1694
+ throw new Error(`shadowMapExperiment.runtimeMeshConflict:${renderableId}`);
1695
+ if (!meshIdentityChainContains(renderable.mesh, renderableId)) {
1696
+ throw new Error(`shadowMapExperiment.runtimeRenderableIdentityMismatch:${renderableId}`);
1697
+ }
1698
+ renderableIds.add(renderableId);
1699
+ batchRenderableIds.add(renderableId);
1700
+ batchMeshes.add(renderable.mesh);
1701
+ return Object.freeze({ renderableId, mesh: renderable.mesh });
1702
+ });
1703
+ const existingActivityIdentities = new Set(activityScheduler.snapshot().sources.map(source => `${source.entityId}\u0000${source.sourceId}`));
1704
+ const activitySourceIds = new Set();
1705
+ const activities = (input.activities ?? []).map((activity, index) => {
1706
+ const sourceId = activity.sourceId?.trim();
1707
+ if (!sourceId || sourceId !== activity.sourceId) {
1708
+ throw new Error(`shadowMapExperiment.runtimeActivitySourceIdRequired:${entityId}:${index}`);
1709
+ }
1710
+ if (!['transform', 'animation', 'morph', 'physics'].includes(activity.kind)) {
1711
+ throw new Error(`shadowMapExperiment.runtimeActivityKindInvalid:${activity.kind}`);
1712
+ }
1713
+ const identity = `${entityId}\u0000${sourceId}`;
1714
+ if (activitySourceIds.has(sourceId) || batchActivityIdentities.has(identity) || existingActivityIdentities.has(identity)) {
1715
+ throw new Error(`shadowMapExperiment.runtimeActivityConflict:${entityId}:${sourceId}`);
1716
+ }
1717
+ if (!profile.cast || profile.updateClass === 'static') {
1718
+ throw new Error(`shadowMapExperiment.runtimeActivityProfileIneligible:${behaviorProfileId}`);
1719
+ }
1720
+ activitySourceIds.add(sourceId);
1721
+ batchActivityIdentities.add(identity);
1722
+ return Object.freeze({ kind: activity.kind, sourceId, initiallyActive: activity.initiallyActive === true });
1723
+ });
1724
+ return {
1725
+ entityId,
1726
+ behaviorProfileId,
1727
+ renderables: Object.freeze(renderables),
1728
+ activities: Object.freeze(activities),
1729
+ controllers: new Map(),
1730
+ owner: null,
1731
+ disposed: false,
1732
+ };
1733
+ };
1734
+ const system = {
1735
+ setPlan,
1736
+ getPlan: () => plan,
1737
+ getShadowGenerator: () => generator,
1738
+ registerMesh(mesh) {
1739
+ assertUsable();
1740
+ return registerMesh(mesh);
1741
+ },
1742
+ unregisterMesh(mesh) {
1743
+ assertUsable();
1744
+ requestMeshUnregistration(mesh);
1745
+ },
1746
+ setRenderableVisible(renderableId, visible) {
1747
+ assertUsable();
1748
+ registry?.setVisible(renderableId, visible);
1749
+ try {
1750
+ syncCaster(renderableId);
1751
+ pendingRenderableMembershipRetries.delete(renderableId);
1752
+ }
1753
+ catch (error) {
1754
+ pendingRenderableMembershipRetries.add(renderableId);
1755
+ throw error;
1756
+ }
1757
+ const entityId = objectByRenderable.get(renderableId)?.entityId;
1758
+ if (entityId)
1759
+ syncActivityEligibility(entityId);
1760
+ },
1761
+ registerCasterActivitySource(input) {
1762
+ return registerActivitySource(input);
1763
+ },
1764
+ registerRuntimeShadowObjects(input) {
1765
+ assertUsable();
1766
+ if (!Array.isArray(input.objects) || input.objects.length === 0) {
1767
+ throw new Error('shadowMapExperiment.runtimeObjectsRequired');
1768
+ }
1769
+ const batchEntityIds = new Set();
1770
+ const batchRenderableIds = new Set();
1771
+ const batchMeshes = new Set([
1772
+ ...bindings.keys(),
1773
+ ...[...runtimeRegistrations.values()].flatMap(record => record.renderables.map(renderable => renderable.mesh)),
1774
+ ]);
1775
+ const batchActivityIdentities = new Set();
1776
+ const records = input.objects.map(object => validateRuntimeRegistration(object, batchEntityIds, batchRenderableIds, batchMeshes, batchActivityIdentities));
1777
+ const owner = createRuntimeOwner(records);
1778
+ const previousEffectivePlan = plan;
1779
+ const nextOverlayRevision = runtimeOverlayRevision + 1;
1780
+ let effectivePlanApplied = false;
1781
+ try {
1782
+ const nextRecords = [...runtimeRegistrations.values(), ...records].filter(candidate => !candidate.disposed);
1783
+ applyEffectivePlan(composeEffectivePlan(sourcePlan, nextRecords, nextOverlayRevision));
1784
+ effectivePlanApplied = true;
1785
+ for (const record of records)
1786
+ runtimeRegistrations.set(record.entityId, record);
1787
+ for (const record of records) {
1788
+ for (const activity of record.activities) {
1789
+ const controller = system.registerCasterActivitySource({
1790
+ entityId: record.entityId,
1791
+ kind: activity.kind,
1792
+ sourceId: activity.sourceId,
1793
+ });
1794
+ record.controllers.set(activity.sourceId, controller);
1795
+ if (activity.initiallyActive)
1796
+ controller.setActive(true);
1797
+ }
1798
+ }
1799
+ runtimeOverlayRevision = nextOverlayRevision;
1800
+ return owner;
1801
+ }
1802
+ catch (error) {
1803
+ const rollbackErrors = [];
1804
+ for (const record of [...records].reverse()) {
1805
+ for (const [sourceId, controller] of [...record.controllers.entries()].reverse()) {
1806
+ try {
1807
+ controller.setActive(false);
1808
+ }
1809
+ catch (rollbackError) {
1810
+ rollbackErrors.push(rollbackError);
1811
+ }
1812
+ try {
1813
+ controller.dispose();
1814
+ record.controllers.delete(sourceId);
1815
+ }
1816
+ catch (rollbackError) {
1817
+ rollbackErrors.push(rollbackError);
1818
+ }
1819
+ }
1820
+ }
1821
+ let effectivePlanRollbackFailed = false;
1822
+ if (effectivePlanApplied) {
1823
+ try {
1824
+ applyEffectivePlan(previousEffectivePlan);
1825
+ }
1826
+ catch (rollbackError) {
1827
+ effectivePlanRollbackFailed = true;
1828
+ rollbackErrors.push(rollbackError);
1829
+ }
1830
+ }
1831
+ for (const record of records)
1832
+ runtimeRegistrations.delete(record.entityId);
1833
+ if (rollbackErrors.length > 0) {
1834
+ for (const record of records)
1835
+ runtimeRegistrations.set(record.entityId, record);
1836
+ if (effectivePlanRollbackFailed)
1837
+ runtimeOverlayRevision = nextOverlayRevision;
1838
+ throw createRuntimeRegistrationRollbackFailure(error, owner, rollbackErrors);
1839
+ }
1840
+ else {
1841
+ for (const record of records)
1842
+ record.disposed = true;
1843
+ }
1844
+ throw error;
1845
+ }
1846
+ },
1847
+ markDirty(reason, targetEntityOrRenderableId) {
1848
+ assertUsable();
1849
+ const targetedObject = targetEntityOrRenderableId
1850
+ ? objectByEntity.get(targetEntityOrRenderableId) ?? objectByRenderable.get(targetEntityOrRenderableId)
1851
+ : null;
1852
+ const targetedLayer = targetedObject?.cast
1853
+ ? shadowMapExperimentDepthLayerForUpdateClass(targetedObject.updateClass)
1854
+ : null;
1855
+ if (reason === 'static-geometry-changed')
1856
+ pendingMembershipInvalidationLayers.add('static');
1857
+ if (reason === 'material-alpha-test-changed' && targetedLayer) {
1858
+ markDepthDirty(targetedLayer, reason);
1859
+ return;
1860
+ }
1861
+ enqueueRefresh(reason);
1862
+ },
1863
+ getEvidence() {
1864
+ const bounds = plan?.generator.bounds;
1865
+ const lightSpaceSize = plan?.enabled && bounds
1866
+ ? calculateLightSpaceSize(plan.light.direction, effectiveCoverageExtent ?? bounds.extent)
1867
+ : null;
1868
+ const activity = activityScheduler.snapshot();
1869
+ const automaticBindings = [...automaticAnimationGroups.values()];
1870
+ const automaticActivity = Object.freeze({
1871
+ observedAnimationGroupCount: automaticBindings.length,
1872
+ boundAnimationGroupCount: automaticBindings.filter(binding => binding.sources.size > 0).length,
1873
+ activeAnimationGroupCount: automaticBindings.filter(binding => binding.active).length,
1874
+ registeredActivitySourceCount: automaticBindings.reduce((count, binding) => count + binding.sources.size, 0),
1875
+ unresolvedActiveAnimationGroupCount: automaticBindings.filter(binding => binding.active && binding.sources.size === 0).length,
1876
+ });
1877
+ const depthEvidence = depthBackend?.getEvidence() ?? null;
1878
+ const thresholdDiagnostics = plan ? createThresholdDiagnostics(plan, depthEvidence?.static.candidateMeshCount ?? 0, depthEvidence?.dynamic.candidateMeshCount ?? 0) : [];
1879
+ return Object.freeze({
1880
+ enabled: plan?.enabled === true,
1881
+ planRevision: plan?.revision ?? null,
1882
+ planFingerprint: plan ? createShadowMapExperimentPlanFingerprint(plan) : null,
1883
+ effectivePlan: plan ? createShadowMapExperimentPlanSnapshot(plan) : null,
1884
+ lightEntityId: plan?.light.entityId ?? null,
1885
+ generatorAllocated: generator !== null,
1886
+ resolution: plan?.enabled ? plan.generator.maps.compositeResolution : null,
1887
+ configuredMapResolutions: plan?.enabled ? Object.freeze({
1888
+ static: plan.generator.maps.staticResolution,
1889
+ dynamic: plan.generator.maps.dynamicResolution,
1890
+ composite: plan.generator.maps.compositeResolution,
1891
+ }) : null,
1892
+ mapResolutions: depthEvidence ? Object.freeze({
1893
+ static: depthEvidence.static.resolution,
1894
+ dynamic: depthEvidence.dynamic.resolution,
1895
+ composite: depthEvidence.compositeResolution,
1896
+ }) : null,
1897
+ diagnosticThresholds: plan?.enabled ? plan.diagnosticThresholds : null,
1898
+ filter: plan?.enabled ? plan.generator.filter : null,
1899
+ renderListCount: depthBackend
1900
+ ? depthBackend.getEvidence().static.renderListCount + depthBackend.getEvidence().dynamic.renderListCount
1901
+ : 0,
1902
+ receiverMeshCount: [...receiverStates.values()].filter(state => state.ownedValue).length,
1903
+ boundMeshCount: bindings.size,
1904
+ activity,
1905
+ automaticActivity,
1906
+ runtime: Object.freeze({
1907
+ planSchemaVersion: sourcePlan?.schemaVersion ?? null,
1908
+ sourcePlanRevision: sourcePlan?.revision ?? null,
1909
+ effectivePlanRevision: plan?.revision ?? null,
1910
+ overlayRevision: runtimeOverlayRevision,
1911
+ registrationCount: runtimeRegistrations.size,
1912
+ activityOwnerCount: [...runtimeRegistrations.values()].reduce((total, record) => total + record.controllers.size, 0),
1913
+ registrations: Object.freeze([...runtimeRegistrations.values()]
1914
+ .filter(record => !record.disposed)
1915
+ .map(record => Object.freeze({
1916
+ entityId: record.entityId,
1917
+ behaviorProfileId: record.behaviorProfileId,
1918
+ renderableIds: Object.freeze(record.renderables.map(renderable => renderable.renderableId).sort()),
1919
+ activitySourceIds: Object.freeze([...record.controllers.keys()].sort()),
1920
+ }))
1921
+ .sort((left, right) => left.entityId.localeCompare(right.entityId))),
1922
+ }),
1923
+ refreshCount,
1924
+ lastRefreshReasons,
1925
+ worldUnitsPerTexel: plan?.enabled && lightSpaceSize && depthEvidence
1926
+ ? Object.freeze([
1927
+ lightSpaceSize[0] / depthEvidence.compositeResolution,
1928
+ lightSpaceSize[1] / depthEvidence.compositeResolution,
1929
+ ])
1930
+ : null,
1931
+ worldUnitsPerTexelByMap: plan?.enabled && lightSpaceSize && depthEvidence ? Object.freeze({
1932
+ static: texelSize(lightSpaceSize, depthEvidence.static.resolution),
1933
+ dynamic: texelSize(lightSpaceSize, depthEvidence.dynamic.resolution),
1934
+ composite: texelSize(lightSpaceSize, depthEvidence.compositeResolution),
1935
+ }) : null,
1936
+ registry: registry?.snapshot() ?? null,
1937
+ backend: depthBackend?.mode ?? null,
1938
+ fallbackReason: depthBackend?.fallbackReason ?? pendingFallbackReason,
1939
+ fallbackWarningEmitted: depthBackend?.fallbackReason
1940
+ ? fallbackWarnings.has(depthBackend.fallbackReason)
1941
+ : false,
1942
+ depth: depthEvidence,
1943
+ culling: Object.freeze({
1944
+ ...influenceCulling.snapshot(),
1945
+ enabled: plan?.culling.enabled === true,
1946
+ conservative: influenceCulling.snapshot().conservative || conservativeCasterMeshes.size > 0,
1947
+ stable: cullingStable,
1948
+ lastInvalidationReason: lastCullingInvalidationReason,
1949
+ coverageMode: options.coverageMode === 'scene-fit' ? 'scene-fit' : 'fixed',
1950
+ authoredCenter: plan
1951
+ ? Object.freeze([...plan.generator.bounds.center])
1952
+ : null,
1953
+ effectiveCenter: plan
1954
+ ? Object.freeze([
1955
+ ...(effectiveCoverageCenter ?? plan.generator.bounds.center),
1956
+ ])
1957
+ : null,
1958
+ authoredExtent: plan
1959
+ ? Object.freeze([...plan.generator.bounds.extent])
1960
+ : null,
1961
+ effectiveExtent: plan
1962
+ ? Object.freeze([
1963
+ ...(effectiveCoverageExtent ?? plan.generator.bounds.extent),
1964
+ ])
1965
+ : null,
1966
+ anchor: null,
1967
+ }),
1968
+ diagnostics: Object.freeze([
1969
+ ...diagnostics.map(entry => Object.freeze({ ...entry })),
1970
+ ...thresholdDiagnostics,
1971
+ ...((depthBackend?.fallbackReason ?? pendingFallbackReason) ? [Object.freeze({
1972
+ code: plan?.generator.backend.fallback === 'disable'
1973
+ ? 'shadowMapExperiment.splitBackendDisabled'
1974
+ : 'shadowMapExperiment.splitBackendFallback',
1975
+ message: plan?.generator.backend.fallback === 'disable'
1976
+ ? `Split depth backend was disabled: ${depthBackend?.fallbackReason ?? pendingFallbackReason}`
1977
+ : `Split depth backend fell back to a single ShadowMap: ${depthBackend?.fallbackReason ?? pendingFallbackReason}`,
1978
+ })] : []),
1979
+ ]),
1980
+ });
1981
+ },
1982
+ dispose() {
1983
+ if (disposed)
1984
+ return;
1985
+ disposing = true;
1986
+ const runtimeCleanupErrors = [];
1987
+ for (const record of [...runtimeRegistrations.values()].reverse()) {
1988
+ try {
1989
+ record.owner?.dispose();
1990
+ }
1991
+ catch (error) {
1992
+ runtimeCleanupErrors.push(error);
1993
+ }
1994
+ }
1995
+ if (runtimeCleanupErrors.length > 0) {
1996
+ throw Object.assign(new Error('shadowMapExperiment.disposeFailed'), {
1997
+ cleanupErrors: Object.freeze(runtimeCleanupErrors),
1998
+ });
1999
+ }
2000
+ const cleanupErrors = [];
2001
+ const attempt = (operation, completed) => {
2002
+ try {
2003
+ operation();
2004
+ completed();
2005
+ }
2006
+ catch (error) {
2007
+ cleanupErrors.push(error);
2008
+ }
2009
+ };
2010
+ if (!disposeNewAnimationGroupObserverRemoved) {
2011
+ attempt(() => { scene.onNewAnimationGroupAddedObservable.remove(newAnimationGroupObserver); }, () => { disposeNewAnimationGroupObserverRemoved = true; });
2012
+ }
2013
+ if (!disposeRemovedAnimationGroupObserverRemoved) {
2014
+ attempt(() => { scene.onAnimationGroupRemovedObservable.remove(removedAnimationGroupObserver); }, () => { disposeRemovedAnimationGroupObserverRemoved = true; });
2015
+ }
2016
+ for (const group of [...automaticAnimationGroups.keys()].reverse()) {
2017
+ cleanupErrors.push(...detachAutomaticAnimationGroup(group));
2018
+ }
2019
+ if (!disposeNewMeshObserverRemoved) {
2020
+ attempt(() => { scene.onNewMeshAddedObservable.remove(newMeshObserver); }, () => { disposeNewMeshObserverRemoved = true; });
2021
+ }
2022
+ if (!disposeRemovedMeshObserverRemoved) {
2023
+ attempt(() => { scene.onMeshRemovedObservable.remove(removedMeshObserver); }, () => { disposeRemovedMeshObserverRemoved = true; });
2024
+ }
2025
+ if (!disposeFrameObserverRemoved) {
2026
+ attempt(() => { scene.onBeforeRenderObservable.remove(frameObserver); }, () => { disposeFrameObserverRemoved = true; });
2027
+ }
2028
+ if (hasOwnedBackendState())
2029
+ attempt(deactivate, () => undefined);
2030
+ plan = null;
2031
+ sourcePlan = null;
2032
+ const observersRemoved = disposeNewMeshObserverRemoved
2033
+ && disposeRemovedMeshObserverRemoved
2034
+ && disposeFrameObserverRemoved
2035
+ && disposeNewAnimationGroupObserverRemoved
2036
+ && disposeRemovedAnimationGroupObserverRemoved
2037
+ && automaticAnimationGroups.size === 0;
2038
+ if (observersRemoved && !hasOwnedBackendState()) {
2039
+ if (!disposeActivitySchedulerDisposed) {
2040
+ attempt(activityScheduler.dispose, () => { disposeActivitySchedulerDisposed = true; });
2041
+ }
2042
+ if (!disposeDepthRefreshSchedulerDisposed) {
2043
+ attempt(depthRefreshScheduler.dispose, () => { disposeDepthRefreshSchedulerDisposed = true; });
2044
+ }
2045
+ if (!disposeInfluenceCullingDisposed) {
2046
+ attempt(influenceCulling.dispose, () => { disposeInfluenceCullingDisposed = true; });
2047
+ }
2048
+ }
2049
+ if (!hasOwnedBackendState()) {
2050
+ activeDeformationSourceCountByEntity.clear();
2051
+ eligibleActiveDeformationEntityIds.clear();
2052
+ pendingFinalDeformationEntityIds.clear();
2053
+ pendingDeformationInvalidations.clear();
2054
+ activeCasterEntityIds.clear();
2055
+ pendingTransformMembershipRetries.clear();
2056
+ pendingSceneMeshRegistrations.clear();
2057
+ pendingMeshUnregistrations.clear();
2058
+ pendingRenderableMembershipRetries.clear();
2059
+ }
2060
+ disposed = observersRemoved
2061
+ && !hasOwnedBackendState()
2062
+ && disposeActivitySchedulerDisposed
2063
+ && disposeDepthRefreshSchedulerDisposed
2064
+ && disposeInfluenceCullingDisposed;
2065
+ if (cleanupErrors.length > 0) {
2066
+ throw Object.assign(new Error('shadowMapExperiment.disposeFailed'), { cleanupErrors });
2067
+ }
2068
+ },
2069
+ };
2070
+ if (initialPlan) {
2071
+ try {
2072
+ setPlan(initialPlan);
2073
+ }
2074
+ catch (error) {
2075
+ let newMeshObserverRemoved = false;
2076
+ let removedMeshObserverRemoved = false;
2077
+ let frameObserverRemoved = false;
2078
+ let newAnimationGroupObserverRemoved = false;
2079
+ let removedAnimationGroupObserverRemoved = false;
2080
+ let activitySchedulerDisposed = false;
2081
+ let depthRefreshSchedulerDisposed = false;
2082
+ let influenceCullingDisposed = false;
2083
+ let cleanupComplete = false;
2084
+ const cleanup = () => {
2085
+ if (cleanupComplete)
2086
+ return Object.freeze([]);
2087
+ const cleanupErrors = [];
2088
+ const attempt = (operation, completed) => {
2089
+ try {
2090
+ operation();
2091
+ completed();
2092
+ }
2093
+ catch (cleanupError) {
2094
+ cleanupErrors.push(cleanupError);
2095
+ }
2096
+ };
2097
+ if (!newAnimationGroupObserverRemoved) {
2098
+ attempt(() => { scene.onNewAnimationGroupAddedObservable.remove(newAnimationGroupObserver); }, () => { newAnimationGroupObserverRemoved = true; });
2099
+ }
2100
+ if (!removedAnimationGroupObserverRemoved) {
2101
+ attempt(() => { scene.onAnimationGroupRemovedObservable.remove(removedAnimationGroupObserver); }, () => { removedAnimationGroupObserverRemoved = true; });
2102
+ }
2103
+ for (const group of [...automaticAnimationGroups.keys()].reverse()) {
2104
+ cleanupErrors.push(...detachAutomaticAnimationGroup(group));
2105
+ }
2106
+ if (!newMeshObserverRemoved) {
2107
+ attempt(() => { scene.onNewMeshAddedObservable.remove(newMeshObserver); }, () => { newMeshObserverRemoved = true; });
2108
+ }
2109
+ if (!removedMeshObserverRemoved) {
2110
+ attempt(() => { scene.onMeshRemovedObservable.remove(removedMeshObserver); }, () => { removedMeshObserverRemoved = true; });
2111
+ }
2112
+ if (!frameObserverRemoved) {
2113
+ attempt(() => { scene.onBeforeRenderObservable.remove(frameObserver); }, () => { frameObserverRemoved = true; });
2114
+ }
2115
+ if (hasOwnedBackendState()) {
2116
+ attempt(deactivate, () => undefined);
2117
+ }
2118
+ plan = null;
2119
+ const observersRemoved = newMeshObserverRemoved
2120
+ && removedMeshObserverRemoved
2121
+ && frameObserverRemoved
2122
+ && newAnimationGroupObserverRemoved
2123
+ && removedAnimationGroupObserverRemoved
2124
+ && automaticAnimationGroups.size === 0;
2125
+ if (observersRemoved && !hasOwnedBackendState()) {
2126
+ if (!activitySchedulerDisposed) {
2127
+ attempt(activityScheduler.dispose, () => { activitySchedulerDisposed = true; });
2128
+ }
2129
+ if (!depthRefreshSchedulerDisposed) {
2130
+ attempt(depthRefreshScheduler.dispose, () => { depthRefreshSchedulerDisposed = true; });
2131
+ }
2132
+ if (!influenceCullingDisposed) {
2133
+ attempt(influenceCulling.dispose, () => { influenceCullingDisposed = true; });
2134
+ }
2135
+ }
2136
+ cleanupComplete = observersRemoved
2137
+ && !hasOwnedBackendState()
2138
+ && activitySchedulerDisposed
2139
+ && depthRefreshSchedulerDisposed
2140
+ && influenceCullingDisposed;
2141
+ if (cleanupComplete)
2142
+ disposed = true;
2143
+ return Object.freeze(cleanupErrors);
2144
+ };
2145
+ const initializationCleanupErrors = cleanup();
2146
+ if (initializationCleanupErrors.length > 0) {
2147
+ throw createInitializationFailure(error, cleanup, initializationCleanupErrors);
2148
+ }
2149
+ throw error;
2150
+ }
2151
+ }
2152
+ return system;
2153
+ }
2154
+ function createThresholdDiagnostics(plan, staticCasterCount, dynamicCasterCount) {
2155
+ const thresholds = plan.diagnosticThresholds;
2156
+ const result = [];
2157
+ if (staticCasterCount > thresholds.staticCasterCountWarning) {
2158
+ result.push({
2159
+ code: 'shadowMapExperiment.staticCasterCountWarning',
2160
+ message: `Static caster count ${staticCasterCount} exceeds the configured warning threshold ${thresholds.staticCasterCountWarning}.`,
2161
+ });
2162
+ }
2163
+ if (dynamicCasterCount > thresholds.dynamicCasterCountWarning) {
2164
+ result.push({
2165
+ code: 'shadowMapExperiment.dynamicCasterCountWarning',
2166
+ message: `Dynamic caster count ${dynamicCasterCount} exceeds the configured warning threshold ${thresholds.dynamicCasterCountWarning}.`,
2167
+ });
2168
+ }
2169
+ const renderableCount = plan.objects.reduce((total, object) => total + object.renderableIds.length, 0);
2170
+ if (renderableCount > thresholds.renderableCountWarning) {
2171
+ result.push({
2172
+ code: 'shadowMapExperiment.renderableCountWarning',
2173
+ message: `Renderable count ${renderableCount} exceeds the configured warning threshold ${thresholds.renderableCountWarning}.`,
2174
+ });
2175
+ }
2176
+ return Object.freeze(result.map(entry => Object.freeze(entry)));
2177
+ }
2178
+ function texelSize(lightSpaceSize, resolution) {
2179
+ return Object.freeze([
2180
+ lightSpaceSize[0] / resolution,
2181
+ lightSpaceSize[1] / resolution,
2182
+ ]);
2183
+ }
2184
+ function configureLight(light, plan, coverage) {
2185
+ const direction = Vector3.FromArray(plan.light.direction).normalize();
2186
+ if (direction.lengthSquared() < 1e-8)
2187
+ throw new Error('shadowMapExperiment.lightDirectionInvalid');
2188
+ const center = Vector3.FromArray(coverage.center);
2189
+ const depth = (coverage.near + coverage.far) * 0.5;
2190
+ const [width, height] = calculateLightSpaceSize(plan.light.direction, coverage.extent);
2191
+ light.direction.copyFrom(direction);
2192
+ light.position.copyFrom(center.subtract(direction.scale(depth)));
2193
+ light.autoUpdateExtends = false;
2194
+ light.orthoLeft = -width * 0.5;
2195
+ light.orthoRight = width * 0.5;
2196
+ light.orthoBottom = -height * 0.5;
2197
+ light.orthoTop = height * 0.5;
2198
+ light.shadowMinZ = coverage.near;
2199
+ light.shadowMaxZ = coverage.far;
2200
+ }
2201
+ function createSceneFitCoverage(plan, bounds) {
2202
+ const min = Vector3.FromArray(bounds.min);
2203
+ const max = Vector3.FromArray(bounds.max);
2204
+ const rawExtent = max.subtract(min);
2205
+ const maxExtent = Math.max(rawExtent.x, rawExtent.y, rawExtent.z, 1);
2206
+ const padding = Math.max(0.5, maxExtent * 0.05);
2207
+ const extent = Object.freeze([
2208
+ Math.max(4, rawExtent.x + padding * 2),
2209
+ Math.max(4, rawExtent.y + padding * 2),
2210
+ Math.max(4, rawExtent.z + padding * 2),
2211
+ ]);
2212
+ const near = Math.min(plan.generator.bounds.near, 0.1);
2213
+ const far = Math.max(plan.generator.bounds.far, Math.hypot(extent[0], extent[1], extent[2]) + padding * 2);
2214
+ const center = snapSceneFitCenterToTexels(plan, vectorTuple(min.add(max).scale(0.5)), extent, near, far);
2215
+ return Object.freeze({ center, extent, near, far });
2216
+ }
2217
+ function collectActiveCasterWorldBounds(bindings, registry) {
2218
+ let min = null;
2219
+ let max = null;
2220
+ for (const binding of bindings.values()) {
2221
+ if (registry?.getRecord(binding.renderableId)?.state !== 'active')
2222
+ continue;
2223
+ if (!isMeshRuntimeVisible(binding.mesh))
2224
+ continue;
2225
+ const bounds = readStableMeshWorldBounds(binding);
2226
+ if (!bounds)
2227
+ continue;
2228
+ const boundsMin = Vector3.FromArray(bounds.min);
2229
+ const boundsMax = Vector3.FromArray(bounds.max);
2230
+ min = min ? Vector3.Minimize(min, boundsMin) : boundsMin;
2231
+ max = max ? Vector3.Maximize(max, boundsMax) : boundsMax;
2232
+ }
2233
+ return min && max
2234
+ ? Object.freeze({ min: vectorTuple(min), max: vectorTuple(max) })
2235
+ : null;
2236
+ }
2237
+ function createLightSpaceBasis(direction) {
2238
+ const upSeed = Math.abs(Vector3.Dot(direction, Vector3.Up())) > 0.98 ? Vector3.Forward() : Vector3.Up();
2239
+ const right = Vector3.Cross(upSeed, direction).normalize();
2240
+ const up = Vector3.Cross(direction, right).normalize();
2241
+ return { right, up };
2242
+ }
2243
+ function snapSceneFitCenterToTexels(plan, centerValue, extentValue, near, far) {
2244
+ const direction = Vector3.FromArray(plan.light.direction).normalize();
2245
+ const { right, up } = createLightSpaceBasis(direction);
2246
+ const center = Vector3.FromArray(centerValue);
2247
+ const [width, height] = calculateLightSpaceSize(plan.light.direction, extentValue);
2248
+ const resolution = Math.max(1, plan.generator.maps.compositeResolution);
2249
+ const depth = Math.max(far - near, 1e-4);
2250
+ const snap = (value, step) => Math.round(value / step) * step;
2251
+ const rightValue = snap(Vector3.Dot(center, right), width / resolution);
2252
+ const upValue = snap(Vector3.Dot(center, up), height / resolution);
2253
+ const depthValue = snap(Vector3.Dot(center, direction), depth / resolution);
2254
+ const result = right.scale(rightValue).add(up.scale(upValue)).add(direction.scale(depthValue));
2255
+ return vectorTuple(result);
2256
+ }
2257
+ function areTuple3Equal(left, right) {
2258
+ return left.every((value, index) => Math.abs(value - right[index]) <= 1e-8);
2259
+ }
2260
+ function calculateLightSpaceSize(directionValue, extent) {
2261
+ const direction = Vector3.FromArray(directionValue).normalize();
2262
+ const { right, up } = createLightSpaceBasis(direction);
2263
+ const half = new Vector3(extent[0] * 0.5, extent[1] * 0.5, extent[2] * 0.5);
2264
+ let width = 0;
2265
+ let height = 0;
2266
+ for (const x of [-half.x, half.x]) {
2267
+ for (const y of [-half.y, half.y]) {
2268
+ for (const z of [-half.z, half.z]) {
2269
+ const corner = new Vector3(x, y, z);
2270
+ width = Math.max(width, Math.abs(Vector3.Dot(corner, right)) * 2);
2271
+ height = Math.max(height, Math.abs(Vector3.Dot(corner, up)) * 2);
2272
+ }
2273
+ }
2274
+ }
2275
+ return Object.freeze([Math.max(width, 1e-4), Math.max(height, 1e-4)]);
2276
+ }
2277
+ function resolveDirectionalLight(scene, entityId) {
2278
+ for (const light of scene.lights) {
2279
+ if (!isBabylonDirectionalLight(light))
2280
+ continue;
2281
+ if (collectIdentityCandidates(light).has(entityId))
2282
+ return light;
2283
+ }
2284
+ return null;
2285
+ }
2286
+ function isBabylonDirectionalLight(light) {
2287
+ if (light instanceof DirectionalLight)
2288
+ return true;
2289
+ if (!isRecord(light) || typeof light.getClassName !== 'function')
2290
+ return false;
2291
+ try {
2292
+ return light.getClassName() === 'DirectionalLight';
2293
+ }
2294
+ catch {
2295
+ return false;
2296
+ }
2297
+ }
2298
+ function resolveRenderableId(mesh, objectByRenderable) {
2299
+ let current = mesh;
2300
+ while (current) {
2301
+ for (const candidate of collectIdentityCandidates(current)) {
2302
+ if (objectByRenderable.has(candidate))
2303
+ return candidate;
2304
+ }
2305
+ current = current.parent;
2306
+ }
2307
+ return null;
2308
+ }
2309
+ function collectIdentityCandidates(node) {
2310
+ const candidates = new Set();
2311
+ if (node.id)
2312
+ candidates.add(node.id);
2313
+ if (node.name)
2314
+ candidates.add(node.name);
2315
+ const metadata = isRecord(node.metadata) ? node.metadata : null;
2316
+ if (!metadata)
2317
+ return candidates;
2318
+ addIdentityCandidatesFromRecord(candidates, metadata);
2319
+ const projection = isRecord(metadata.editorProjection) ? metadata.editorProjection : null;
2320
+ if (projection)
2321
+ addIdentityCandidatesFromRecord(candidates, projection);
2322
+ const editorSource = isRecord(metadata.__fpsEditor) ? metadata.__fpsEditor : null;
2323
+ if (editorSource)
2324
+ addIdentityCandidatesFromRecord(candidates, editorSource);
2325
+ const sourceBinding = isRecord(metadata.sourceBinding) ? metadata.sourceBinding : null;
2326
+ if (sourceBinding)
2327
+ addIdentityCandidatesFromRecord(candidates, sourceBinding);
2328
+ return candidates;
2329
+ }
2330
+ function addIdentityCandidatesFromRecord(candidates, record) {
2331
+ for (const key of [
2332
+ 'entityId',
2333
+ 'renderableId',
2334
+ 'runtimeNodeId',
2335
+ 'nodeId',
2336
+ 'rootNodeId',
2337
+ 'objectId',
2338
+ 'sourceId',
2339
+ ]) {
2340
+ const value = record[key];
2341
+ if (typeof value === 'string' && value.trim())
2342
+ candidates.add(value);
2343
+ }
2344
+ }
2345
+ function meshIdentityChainContains(mesh, identity) {
2346
+ let current = mesh;
2347
+ while (current) {
2348
+ if (collectIdentityCandidates(current).has(identity))
2349
+ return true;
2350
+ current = current.parent;
2351
+ }
2352
+ return false;
2353
+ }
2354
+ function isReceiverEligible(mesh) {
2355
+ const metadata = isRecord(mesh.metadata) ? mesh.metadata : null;
2356
+ const projection = metadata && isRecord(metadata.editorProjection) ? metadata.editorProjection : null;
2357
+ if (metadata?.helper === true || projection?.helper === true)
2358
+ return false;
2359
+ const material = mesh.material;
2360
+ if (!material)
2361
+ return true;
2362
+ if ('disableLighting' in material && material.disableLighting === true)
2363
+ return false;
2364
+ try {
2365
+ if (material.needAlphaBlendingForMesh(mesh))
2366
+ return false;
2367
+ }
2368
+ catch {
2369
+ return false;
2370
+ }
2371
+ return true;
2372
+ }
2373
+ function resolveReceiverTarget(mesh) {
2374
+ const sourceMesh = mesh.sourceMesh;
2375
+ return sourceMesh && !isDisposed(sourceMesh) ? sourceMesh : mesh;
2376
+ }
2377
+ function readWorldMatrixSnapshot(mesh) {
2378
+ const matrix = mesh.getWorldMatrix?.();
2379
+ if (!matrix || typeof matrix.asArray !== 'function')
2380
+ return null;
2381
+ return [...matrix.asArray()];
2382
+ }
2383
+ function areMatrixSnapshotsEqual(previous, next) {
2384
+ if (previous === next)
2385
+ return true;
2386
+ if (!previous || !next || previous.length !== next.length)
2387
+ return false;
2388
+ for (let index = 0; index < previous.length; index += 1) {
2389
+ if (previous[index] !== next[index])
2390
+ return false;
2391
+ }
2392
+ return true;
2393
+ }
2394
+ function isMeshRuntimeVisible(mesh) {
2395
+ return !isDisposed(mesh) && mesh.isEnabled() && mesh.isVisible && mesh.visibility > 0;
2396
+ }
2397
+ function isDisposed(mesh) {
2398
+ return typeof mesh.isDisposed === 'function' && mesh.isDisposed();
2399
+ }
2400
+ function readMeshLocalBounds(mesh) {
2401
+ try {
2402
+ const bounds = mesh.getBoundingInfo?.().boundingBox;
2403
+ if (!bounds)
2404
+ return null;
2405
+ const min = bounds.minimum;
2406
+ const max = bounds.maximum;
2407
+ if (![min.x, min.y, min.z, max.x, max.y, max.z].every(Number.isFinite))
2408
+ return null;
2409
+ return Object.freeze({ min: vectorTuple(min), max: vectorTuple(max) });
2410
+ }
2411
+ catch {
2412
+ return null;
2413
+ }
2414
+ }
2415
+ function readStableMeshWorldBounds(binding) {
2416
+ const local = binding.sceneFitLocalBounds;
2417
+ if (!local)
2418
+ return readMeshWorldBounds(binding.mesh);
2419
+ try {
2420
+ binding.mesh.computeWorldMatrix(false);
2421
+ const matrix = binding.mesh.getWorldMatrix();
2422
+ const min = Vector3.FromArray(local.min);
2423
+ const max = Vector3.FromArray(local.max);
2424
+ let worldMin = null;
2425
+ let worldMax = null;
2426
+ for (const x of [min.x, max.x]) {
2427
+ for (const y of [min.y, max.y]) {
2428
+ for (const z of [min.z, max.z]) {
2429
+ const point = Vector3.TransformCoordinates(new Vector3(x, y, z), matrix);
2430
+ worldMin = worldMin ? Vector3.Minimize(worldMin, point) : point;
2431
+ worldMax = worldMax ? Vector3.Maximize(worldMax, point) : point;
2432
+ }
2433
+ }
2434
+ }
2435
+ return worldMin && worldMax
2436
+ ? Object.freeze({ min: vectorTuple(worldMin), max: vectorTuple(worldMax) })
2437
+ : null;
2438
+ }
2439
+ catch {
2440
+ return null;
2441
+ }
2442
+ }
2443
+ function readMeshWorldBounds(mesh) {
2444
+ try {
2445
+ mesh.computeWorldMatrix(false);
2446
+ const bounds = mesh.getBoundingInfo?.().boundingBox;
2447
+ if (!bounds)
2448
+ return null;
2449
+ const min = bounds.minimumWorld;
2450
+ const max = bounds.maximumWorld;
2451
+ if (![min.x, min.y, min.z, max.x, max.y, max.z].every(Number.isFinite))
2452
+ return null;
2453
+ return Object.freeze({ min: vectorTuple(min), max: vectorTuple(max) });
2454
+ }
2455
+ catch {
2456
+ return null;
2457
+ }
2458
+ }
2459
+ function isDeformableCaster(mesh, updateClass) {
2460
+ const deformable = mesh;
2461
+ return updateClass === 'skinned' || Boolean(deformable.skeleton) || Boolean(deformable.morphTargetManager);
2462
+ }
2463
+ function createMeshDataCache(mesh, caches) {
2464
+ const cache = {};
2465
+ caches.set(mesh, cache);
2466
+ return cache;
2467
+ }
2468
+ function readCasterWorldBounds(mesh, deformable, cache) {
2469
+ if (deformable) {
2470
+ const deformableMesh = mesh;
2471
+ const applySkeleton = Boolean(deformableMesh.skeleton);
2472
+ const applyMorph = Boolean(deformableMesh.morphTargetManager);
2473
+ if (applySkeleton || applyMorph) {
2474
+ try {
2475
+ mesh.refreshBoundingInfo({
2476
+ applySkeleton,
2477
+ applyMorph,
2478
+ updatePositionsArray: false,
2479
+ ...(cache ? { cache } : {}),
2480
+ });
2481
+ }
2482
+ catch {
2483
+ return null;
2484
+ }
2485
+ }
2486
+ }
2487
+ return readMeshWorldBounds(mesh);
2488
+ }
2489
+ function readCameraProjectionSignature(camera, scene) {
2490
+ const projection = camera.getProjectionMatrix().asArray()
2491
+ .map(value => Number.isFinite(value) ? value.toFixed(5) : String(value))
2492
+ .join(',');
2493
+ const engine = scene.getEngine();
2494
+ return `${camera.mode}:${engine.getRenderWidth()}:${engine.getRenderHeight()}:${projection}`;
2495
+ }
2496
+ function calculateCameraShadowCoverage(camera, plan, centerValue = plan.generator.bounds.center, extentValue = plan.generator.bounds.extent) {
2497
+ try {
2498
+ const fixedMin = Vector3.FromArray(centerValue).subtract(Vector3.FromArray(extentValue).scale(0.5));
2499
+ const fixedMax = Vector3.FromArray(centerValue).add(Vector3.FromArray(extentValue).scale(0.5));
2500
+ const inverse = Matrix.Invert(camera.getTransformationMatrix());
2501
+ const engine = camera.getScene().getEngine();
2502
+ const ndcNearZ = engine.isNDCHalfZRange ? 0 : -1;
2503
+ const frustumCorners = [];
2504
+ for (const x of [-1, 1]) {
2505
+ for (const y of [-1, 1]) {
2506
+ for (const z of [ndcNearZ, 1]) {
2507
+ frustumCorners.push(Vector3.TransformCoordinates(new Vector3(x, y, z), inverse));
2508
+ }
2509
+ }
2510
+ }
2511
+ const frustumMin = frustumCorners.reduce((result, point) => Vector3.Minimize(result, point), frustumCorners[0].clone());
2512
+ const frustumMax = frustumCorners.reduce((result, point) => Vector3.Maximize(result, point), frustumCorners[0].clone());
2513
+ const min = Vector3.Maximize(frustumMin, fixedMin);
2514
+ const max = Vector3.Minimize(frustumMax, fixedMax);
2515
+ if (min.x > max.x || min.y > max.y || min.z > max.z)
2516
+ return null;
2517
+ return Object.freeze({ min: vectorTuple(min), max: vectorTuple(max) });
2518
+ }
2519
+ catch {
2520
+ return null;
2521
+ }
2522
+ }
2523
+ function vectorTuple(value) {
2524
+ return Object.freeze([value.x, value.y, value.z]);
2525
+ }
2526
+ function classifyAutomaticActivityTarget(target, bindings) {
2527
+ const className = readBabylonClassName(target);
2528
+ if (className === 'MorphTarget')
2529
+ return 'morph';
2530
+ if (className === 'Bone' || hasFunction(target, 'getSkeleton'))
2531
+ return 'animation';
2532
+ if (resolveAutomaticActivityTargetSkeletons(bindings, target).size > 0)
2533
+ return 'animation';
2534
+ return 'transform';
2535
+ }
2536
+ function resolveAutomaticActivityTargetMeshes(_scene, bindings, target, kind) {
2537
+ const resolved = new Set();
2538
+ if (!target || (typeof target !== 'object' && typeof target !== 'function'))
2539
+ return resolved;
2540
+ if (kind === 'animation') {
2541
+ const skeletons = resolveAutomaticActivityTargetSkeletons(bindings, target);
2542
+ if (skeletons.size === 0)
2543
+ return resolved;
2544
+ for (const mesh of bindings.keys()) {
2545
+ if (skeletons.has(mesh.skeleton))
2546
+ resolved.add(mesh);
2547
+ }
2548
+ return resolved;
2549
+ }
2550
+ if (kind === 'morph') {
2551
+ for (const mesh of bindings.keys()) {
2552
+ const manager = mesh.morphTargetManager;
2553
+ const count = manager?.numTargets ?? 0;
2554
+ if (!manager?.getTarget || !Number.isInteger(count) || count < 1)
2555
+ continue;
2556
+ for (let index = 0; index < count; index += 1) {
2557
+ if (manager.getTarget(index) === target) {
2558
+ resolved.add(mesh);
2559
+ break;
2560
+ }
2561
+ }
2562
+ }
2563
+ return resolved;
2564
+ }
2565
+ for (const mesh of bindings.keys()) {
2566
+ if (mesh === target
2567
+ || isBabylonNodeDescendantOf(mesh, target)
2568
+ || isBabylonNodeDescendantOf(target, mesh)) {
2569
+ resolved.add(mesh);
2570
+ }
2571
+ }
2572
+ return resolved;
2573
+ }
2574
+ function resolveAutomaticActivityTargetSkeletons(bindings, target) {
2575
+ const skeletons = new Set();
2576
+ const directSkeleton = callOptional(target, 'getSkeleton')
2577
+ ?? target?._skeleton
2578
+ ?? null;
2579
+ if (directSkeleton)
2580
+ skeletons.add(directSkeleton);
2581
+ for (const mesh of bindings.keys()) {
2582
+ const skeleton = mesh.skeleton;
2583
+ if (!skeleton || skeletons.has(skeleton))
2584
+ continue;
2585
+ for (const bone of skeleton.bones ?? []) {
2586
+ if (bone === target
2587
+ || callOptional(bone, 'getTransformNode') === target
2588
+ || bone?._linkedTransformNode === target) {
2589
+ skeletons.add(skeleton);
2590
+ break;
2591
+ }
2592
+ }
2593
+ }
2594
+ return skeletons;
2595
+ }
2596
+ function readBabylonClassName(value) {
2597
+ const className = callOptional(value, 'getClassName');
2598
+ return typeof className === 'string' ? className : null;
2599
+ }
2600
+ function isBabylonNodeDescendantOf(value, ancestor) {
2601
+ if (!hasFunction(value, 'isDescendantOf'))
2602
+ return false;
2603
+ try {
2604
+ return value.isDescendantOf(ancestor);
2605
+ }
2606
+ catch {
2607
+ return false;
2608
+ }
2609
+ }
2610
+ function hasFunction(value, key) {
2611
+ return Boolean(value)
2612
+ && (typeof value === 'object' || typeof value === 'function')
2613
+ && typeof value[key] === 'function';
2614
+ }
2615
+ function callOptional(value, key) {
2616
+ if (!hasFunction(value, key))
2617
+ return undefined;
2618
+ try {
2619
+ return value[key]();
2620
+ }
2621
+ catch {
2622
+ return undefined;
2623
+ }
2624
+ }
2625
+ function isStaticDirtyReason(reason) {
2626
+ return reason === 'static-transform-changed'
2627
+ || reason === 'static-geometry-changed'
2628
+ || reason === 'static-depth-invalidated';
2629
+ }
2630
+ function isDynamicDirtyReason(reason) {
2631
+ return reason === 'dynamic-transform-changed'
2632
+ || reason === 'caster-activity-started'
2633
+ || reason === 'caster-activity-stopped'
2634
+ || reason === 'dynamic-frame'
2635
+ || reason === 'skinned-animation-frame'
2636
+ || reason === 'morph-animation-frame'
2637
+ || reason === 'physics-motion-frame'
2638
+ || reason === 'dynamic-depth-invalidated';
2639
+ }
2640
+ function dirtyReasonForActivityKind(kind) {
2641
+ switch (kind) {
2642
+ case 'animation': return 'skinned-animation-frame';
2643
+ case 'morph': return 'morph-animation-frame';
2644
+ case 'physics': return 'physics-motion-frame';
2645
+ case 'transform': return 'dynamic-frame';
2646
+ }
2647
+ }
2648
+ function captureLight(light) {
2649
+ return {
2650
+ light,
2651
+ direction: light.direction.clone(),
2652
+ position: light.position.clone(),
2653
+ autoUpdateExtends: light.autoUpdateExtends,
2654
+ shadowEnabled: light.shadowEnabled,
2655
+ orthoLeft: light.orthoLeft,
2656
+ orthoRight: light.orthoRight,
2657
+ orthoTop: light.orthoTop,
2658
+ orthoBottom: light.orthoBottom,
2659
+ shadowMinZ: light.shadowMinZ,
2660
+ shadowMaxZ: light.shadowMaxZ,
2661
+ };
2662
+ }
2663
+ function restoreLight(state) {
2664
+ const light = state.light;
2665
+ if (light.isDisposed())
2666
+ return;
2667
+ light.direction.copyFrom(state.direction);
2668
+ light.position.copyFrom(state.position);
2669
+ light.autoUpdateExtends = state.autoUpdateExtends;
2670
+ light.shadowEnabled = state.shadowEnabled;
2671
+ light.orthoLeft = state.orthoLeft;
2672
+ light.orthoRight = state.orthoRight;
2673
+ light.orthoTop = state.orthoTop;
2674
+ light.orthoBottom = state.orthoBottom;
2675
+ light.shadowMinZ = state.shadowMinZ;
2676
+ light.shadowMaxZ = state.shadowMaxZ;
2677
+ }
2678
+ function readShadowGenerators(light) {
2679
+ const generators = light.getShadowGenerators?.();
2680
+ if (!generators)
2681
+ return [];
2682
+ if (Array.isArray(generators))
2683
+ return generators;
2684
+ if (generators instanceof Map)
2685
+ return [...generators.values()];
2686
+ return [];
2687
+ }
2688
+ function isRecord(value) {
2689
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
2690
+ }
2691
+ function attachFailureMetadata(error, metadata) {
2692
+ try {
2693
+ Object.assign(error, metadata);
2694
+ }
2695
+ catch {
2696
+ // Error annotation is diagnostic only; it must never replace the primary failure.
2697
+ }
2698
+ }
2699
+ function createInitializationFailure(error, cleanup, initializationCleanupErrors) {
2700
+ const metadata = {
2701
+ initializationCleanupErrors: Object.freeze([...initializationCleanupErrors]),
2702
+ shadowMapExperimentSystemCleanup: cleanup,
2703
+ };
2704
+ if (error && (typeof error === 'object' || typeof error === 'function')) {
2705
+ try {
2706
+ Object.assign(error, metadata);
2707
+ if (readBabylonShadowMapExperimentSystemCleanup(error) === cleanup)
2708
+ return error;
2709
+ }
2710
+ catch {
2711
+ // A non-extensible primary error is wrapped below so cleanup ownership remains reachable.
2712
+ }
2713
+ }
2714
+ const failure = new Error(error instanceof Error ? error.message : 'shadowMapExperiment.initializationFailed');
2715
+ return Object.assign(failure, { cause: error, ...metadata });
2716
+ }
2717
+ function createRuntimeRegistrationRollbackFailure(error, owner, rollbackErrors) {
2718
+ const metadata = {
2719
+ rollbackErrors: Object.freeze([...rollbackErrors]),
2720
+ runtimeShadowObjectsRecoveryOwner: owner,
2721
+ };
2722
+ if (error && (typeof error === 'object' || typeof error === 'function')) {
2723
+ try {
2724
+ Object.assign(error, metadata);
2725
+ if (readBabylonRuntimeShadowObjectsRecoveryOwner(error) === owner)
2726
+ return error;
2727
+ }
2728
+ catch {
2729
+ // A non-extensible primary error is wrapped below so recovery ownership remains reachable.
2730
+ }
2731
+ }
2732
+ const failure = new Error(error instanceof Error ? error.message : 'shadowMapExperiment.runtimeRegistrationFailed');
2733
+ return Object.assign(failure, { cause: error, ...metadata });
2734
+ }
2735
+ //# sourceMappingURL=shadow-map-experiment-system.js.map