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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1397) hide show
  1. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/editor-state.js +12 -6
  3. package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
  4. package/dist/agent-bridge/capabilities/hierarchy.d.ts +4 -0
  5. package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +1 -0
  6. package/dist/agent-bridge/capabilities/hierarchy.js +209 -0
  7. package/dist/agent-bridge/capabilities/hierarchy.js.map +1 -0
  8. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -1
  9. package/dist/agent-bridge/capabilities/prefabs.js +208 -73
  10. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
  11. package/dist/agent-bridge/capabilities/scene-objects.d.ts +3 -4
  12. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -1
  13. package/dist/agent-bridge/capabilities/scene-objects.js +24 -23
  14. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
  15. package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -1
  16. package/dist/agent-bridge/capabilities/shadows.js +829 -66
  17. package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
  18. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
  19. package/dist/agent-bridge/capabilities/ui-regions.js +3 -1
  20. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  21. package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -1
  22. package/dist/agent-bridge/capabilities/viewport.js +22 -9
  23. package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
  24. package/dist/agent-bridge/capability-sources.d.ts.map +1 -1
  25. package/dist/agent-bridge/capability-sources.js +2 -0
  26. package/dist/agent-bridge/capability-sources.js.map +1 -1
  27. package/dist/agent-bridge/register.d.ts.map +1 -1
  28. package/dist/agent-bridge/register.js +194 -0
  29. package/dist/agent-bridge/register.js.map +1 -1
  30. package/dist/agent-bridge/shared.d.ts +231 -11
  31. package/dist/agent-bridge/shared.d.ts.map +1 -1
  32. package/dist/agent-bridge/shared.js +162 -20
  33. package/dist/agent-bridge/shared.js.map +1 -1
  34. package/dist/agent-bridge/source-types.d.ts +17 -1
  35. package/dist/agent-bridge/source-types.d.ts.map +1 -1
  36. package/dist/agent-bridge/source-types.js.map +1 -1
  37. package/dist/build-info.json +57 -42
  38. package/dist/index.d.ts +7 -6
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -3
  41. package/dist/index.js.map +1 -1
  42. package/dist/internal/babylon-preview-engine.d.ts +3 -0
  43. package/dist/internal/babylon-preview-engine.d.ts.map +1 -0
  44. package/dist/internal/babylon-preview-engine.js +11 -0
  45. package/dist/internal/babylon-preview-engine.js.map +1 -0
  46. package/dist/internal/product-local-editor-cleanup.d.ts +5 -0
  47. package/dist/internal/product-local-editor-cleanup.d.ts.map +1 -0
  48. package/dist/internal/product-local-editor-cleanup.js +20 -0
  49. package/dist/internal/product-local-editor-cleanup.js.map +1 -0
  50. package/dist/local-editor-agent-actions.d.ts +2 -4
  51. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  52. package/dist/local-editor-agent-actions.js +56 -32
  53. package/dist/local-editor-agent-actions.js.map +1 -1
  54. package/dist/local-editor-agent-context.d.ts +5 -5
  55. package/dist/local-editor-agent-context.d.ts.map +1 -1
  56. package/dist/local-editor-agent-context.js.map +1 -1
  57. package/dist/local-editor-harness.d.ts +340 -35
  58. package/dist/local-editor-harness.d.ts.map +1 -1
  59. package/dist/local-editor-harness.js +3834 -1321
  60. package/dist/local-editor-harness.js.map +1 -1
  61. package/dist/local-editor-marker-graph.d.ts +15 -15
  62. package/dist/local-editor-marker-graph.d.ts.map +1 -1
  63. package/dist/local-editor-marker-graph.js +3 -0
  64. package/dist/local-editor-marker-graph.js.map +1 -1
  65. package/dist/local-editor-performance-stats.d.ts +3 -2
  66. package/dist/local-editor-performance-stats.d.ts.map +1 -1
  67. package/dist/local-editor-performance-stats.js.map +1 -1
  68. package/dist/local-editor-prefab-stage-transaction.d.ts +19 -0
  69. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -0
  70. package/dist/local-editor-prefab-stage-transaction.js +45 -0
  71. package/dist/local-editor-prefab-stage-transaction.js.map +1 -0
  72. package/dist/local-editor-scene-view-interaction-runtime.d.ts +3 -1
  73. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  74. package/dist/local-editor-scene-view-interaction-runtime.js +24 -0
  75. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  76. package/dist/local-editor-tools.d.ts +18 -0
  77. package/dist/local-editor-tools.d.ts.map +1 -0
  78. package/dist/local-editor-tools.js +53 -0
  79. package/dist/local-editor-tools.js.map +1 -0
  80. package/dist/playable-babylon-rendering.d.ts +9 -0
  81. package/dist/playable-babylon-rendering.d.ts.map +1 -1
  82. package/dist/playable-babylon-rendering.js +162 -6
  83. package/dist/playable-babylon-rendering.js.map +1 -1
  84. package/dist/playable-local-editor-entry.d.ts +68 -0
  85. package/dist/playable-local-editor-entry.d.ts.map +1 -0
  86. package/dist/playable-local-editor-entry.js +424 -0
  87. package/dist/playable-local-editor-entry.js.map +1 -0
  88. package/dist/playable-local-editor-host.d.ts +51 -29
  89. package/dist/playable-local-editor-host.d.ts.map +1 -1
  90. package/dist/playable-local-editor-host.js +23 -11
  91. package/dist/playable-local-editor-host.js.map +1 -1
  92. package/dist/playable-product-local-editor.d.ts +10 -12
  93. package/dist/playable-product-local-editor.d.ts.map +1 -1
  94. package/dist/playable-product-local-editor.js +178 -85
  95. package/dist/playable-product-local-editor.js.map +1 -1
  96. package/dist/playable-product-projection-preview.d.ts +4 -1
  97. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  98. package/dist/playable-product-projection-preview.js +122 -5
  99. package/dist/playable-product-projection-preview.js.map +1 -1
  100. package/dist/playable-product-rendering.d.ts +12 -0
  101. package/dist/playable-product-rendering.d.ts.map +1 -1
  102. package/dist/playable-product-rendering.js +128 -6
  103. package/dist/playable-product-rendering.js.map +1 -1
  104. package/dist/playable-product-scene-capabilities.d.ts +24 -7
  105. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  106. package/dist/playable-product-scene-capabilities.js +172 -15
  107. package/dist/playable-product-scene-capabilities.js.map +1 -1
  108. package/dist/playable-project-mode.d.ts +17 -0
  109. package/dist/playable-project-mode.d.ts.map +1 -0
  110. package/dist/playable-project-mode.js +2 -0
  111. package/dist/playable-project-mode.js.map +1 -0
  112. package/dist/playable-runtime-babylon.d.ts +3 -6
  113. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  114. package/dist/playable-runtime-babylon.js +1 -5
  115. package/dist/playable-runtime-babylon.js.map +1 -1
  116. package/dist/playable-sdk.d.ts +16 -9
  117. package/dist/playable-sdk.d.ts.map +1 -1
  118. package/dist/playable-sdk.js +6 -4
  119. package/dist/playable-sdk.js.map +1 -1
  120. package/dist/playable-standard-project.d.ts +23 -14
  121. package/dist/playable-standard-project.d.ts.map +1 -1
  122. package/dist/playable-standard-project.js +53 -19
  123. package/dist/playable-standard-project.js.map +1 -1
  124. package/dist/vite-client.d.ts +4 -0
  125. package/node_modules/@babel/helper-string-parser/lib/index.js +0 -1
  126. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js +0 -1
  127. package/node_modules/@babel/helper-validator-identifier/lib/index.js +0 -1
  128. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js +0 -1
  129. package/node_modules/@babel/parser/lib/index.js +0 -1
  130. package/node_modules/@babel/types/lib/asserts/assertNode.js +0 -1
  131. package/node_modules/@babel/types/lib/asserts/generated/index.js +0 -1
  132. package/node_modules/@babel/types/lib/ast-types/generated/index.js +0 -1
  133. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -1
  134. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -1
  135. package/node_modules/@babel/types/lib/builders/generated/index.js +0 -1
  136. package/node_modules/@babel/types/lib/builders/generated/lowercase.js +0 -1
  137. package/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
  138. package/node_modules/@babel/types/lib/builders/productions.js +0 -1
  139. package/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -1
  140. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -1
  141. package/node_modules/@babel/types/lib/builders/validateNode.js +0 -1
  142. package/node_modules/@babel/types/lib/clone/clone.js +0 -1
  143. package/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -1
  144. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -1
  145. package/node_modules/@babel/types/lib/clone/cloneNode.js +0 -1
  146. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -1
  147. package/node_modules/@babel/types/lib/comments/addComment.js +0 -1
  148. package/node_modules/@babel/types/lib/comments/addComments.js +0 -1
  149. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -1
  150. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -1
  151. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -1
  152. package/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -1
  153. package/node_modules/@babel/types/lib/comments/removeComments.js +0 -1
  154. package/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
  155. package/node_modules/@babel/types/lib/constants/index.js +0 -1
  156. package/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -1
  157. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +0 -1
  158. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -1
  159. package/node_modules/@babel/types/lib/converters/toBlock.js +0 -1
  160. package/node_modules/@babel/types/lib/converters/toComputedKey.js +0 -1
  161. package/node_modules/@babel/types/lib/converters/toExpression.js +0 -1
  162. package/node_modules/@babel/types/lib/converters/toIdentifier.js +0 -1
  163. package/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -1
  164. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -1
  165. package/node_modules/@babel/types/lib/converters/toStatement.js +0 -1
  166. package/node_modules/@babel/types/lib/converters/valueToNode.js +0 -1
  167. package/node_modules/@babel/types/lib/definitions/core.js +0 -1
  168. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js +0 -1
  169. package/node_modules/@babel/types/lib/definitions/experimental.js +0 -1
  170. package/node_modules/@babel/types/lib/definitions/flow.js +0 -1
  171. package/node_modules/@babel/types/lib/definitions/index.js +0 -1
  172. package/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
  173. package/node_modules/@babel/types/lib/definitions/misc.js +0 -1
  174. package/node_modules/@babel/types/lib/definitions/placeholders.js +0 -1
  175. package/node_modules/@babel/types/lib/definitions/typescript.js +0 -1
  176. package/node_modules/@babel/types/lib/definitions/utils.js +0 -1
  177. package/node_modules/@babel/types/lib/index.js +0 -1
  178. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -1
  179. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +0 -1
  180. package/node_modules/@babel/types/lib/modifications/inherits.js +0 -1
  181. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -1
  182. package/node_modules/@babel/types/lib/modifications/removeProperties.js +0 -1
  183. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -1
  184. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +0 -1
  185. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js +0 -1
  186. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +0 -1
  187. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js +0 -1
  188. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -1
  189. package/node_modules/@babel/types/lib/traverse/traverse.js +0 -1
  190. package/node_modules/@babel/types/lib/traverse/traverseFast.js +0 -1
  191. package/node_modules/@babel/types/lib/utils/deprecationWarning.js +0 -1
  192. package/node_modules/@babel/types/lib/utils/inherit.js +0 -1
  193. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +0 -1
  194. package/node_modules/@babel/types/lib/utils/shallowEqual.js +0 -1
  195. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -1
  196. package/node_modules/@babel/types/lib/validators/generated/index.js +0 -1
  197. package/node_modules/@babel/types/lib/validators/is.js +0 -1
  198. package/node_modules/@babel/types/lib/validators/isBinding.js +0 -1
  199. package/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -1
  200. package/node_modules/@babel/types/lib/validators/isImmutable.js +0 -1
  201. package/node_modules/@babel/types/lib/validators/isLet.js +0 -1
  202. package/node_modules/@babel/types/lib/validators/isNode.js +0 -1
  203. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +0 -1
  204. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -1
  205. package/node_modules/@babel/types/lib/validators/isReferenced.js +0 -1
  206. package/node_modules/@babel/types/lib/validators/isScope.js +0 -1
  207. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +0 -1
  208. package/node_modules/@babel/types/lib/validators/isType.js +0 -1
  209. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -1
  210. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -1
  211. package/node_modules/@babel/types/lib/validators/isVar.js +0 -1
  212. package/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -1
  213. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
  214. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -1
  215. package/node_modules/@babel/types/lib/validators/validate.js +0 -1
  216. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.d.ts +69 -0
  217. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.js +132 -0
  218. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.d.ts +8 -0
  219. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.js +7 -0
  220. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.d.ts +14 -0
  221. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.js +328 -0
  222. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.d.ts +9 -0
  223. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.js +1 -0
  224. package/node_modules/@babylonjs/loaders/BVH/index.d.ts +2 -0
  225. package/node_modules/@babylonjs/loaders/BVH/index.js +3 -0
  226. package/node_modules/@babylonjs/loaders/OBJ/index.d.ts +4 -0
  227. package/node_modules/@babylonjs/loaders/OBJ/index.js +4 -0
  228. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.d.ts +41 -0
  229. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.js +230 -0
  230. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.d.ts +136 -0
  231. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.js +317 -0
  232. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.d.ts +4 -0
  233. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.js +4 -0
  234. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.d.ts +47 -0
  235. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.js +1 -0
  236. package/node_modules/@babylonjs/loaders/OBJ/solidParser.d.ts +175 -0
  237. package/node_modules/@babylonjs/loaders/OBJ/solidParser.js +903 -0
  238. package/node_modules/@babylonjs/loaders/SPLAT/index.d.ts +2 -0
  239. package/node_modules/@babylonjs/loaders/SPLAT/index.js +3 -0
  240. package/node_modules/@babylonjs/loaders/SPLAT/sog.d.ts +84 -0
  241. package/node_modules/@babylonjs/loaders/SPLAT/sog.js +294 -0
  242. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.d.ts +26 -0
  243. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.js +10 -0
  244. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.d.ts +100 -0
  245. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.js +536 -0
  246. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.d.ts +20 -0
  247. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.js +15 -0
  248. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.d.ts +33 -0
  249. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.js +1 -0
  250. package/node_modules/@babylonjs/loaders/SPLAT/spz.d.ts +11 -0
  251. package/node_modules/@babylonjs/loaders/SPLAT/spz.js +168 -0
  252. package/node_modules/@babylonjs/loaders/STL/index.d.ts +1 -0
  253. package/node_modules/@babylonjs/loaders/STL/index.js +1 -0
  254. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.d.ts +78 -0
  255. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.js +238 -0
  256. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.d.ts +8 -0
  257. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.js +7 -0
  258. package/node_modules/@babylonjs/loaders/bvh/license.md +21 -0
  259. package/node_modules/@babylonjs/loaders/dynamic.d.ts +5 -0
  260. package/node_modules/@babylonjs/loaders/dynamic.js +56 -0
  261. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.d.ts +16 -0
  262. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.js +64 -0
  263. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.d.ts +144 -0
  264. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.js +1841 -0
  265. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.d.ts +412 -0
  266. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.js +95 -0
  267. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.d.ts +71 -0
  268. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.js +254 -0
  269. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.d.ts +13 -0
  270. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.js +130 -0
  271. package/node_modules/@babylonjs/loaders/glTF/1.0/index.d.ts +5 -0
  272. package/node_modules/@babylonjs/loaders/glTF/1.0/index.js +5 -0
  273. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.d.ts +41 -0
  274. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.js +93 -0
  275. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.d.ts +41 -0
  276. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.js +83 -0
  277. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +48 -0
  278. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.js +115 -0
  279. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +39 -0
  280. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +94 -0
  281. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +39 -0
  282. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.js +50 -0
  283. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.d.ts +34 -0
  284. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.js +38 -0
  285. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.d.ts +33 -0
  286. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.js +37 -0
  287. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +53 -0
  288. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.js +73 -0
  289. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +47 -0
  290. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -0
  291. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.js +251 -0
  292. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.js +77 -0
  293. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +47 -0
  294. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +92 -0
  295. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +355 -0
  296. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1678 -0
  297. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
  298. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +19 -0
  299. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
  300. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.js +3 -0
  301. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +70 -0
  302. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +438 -0
  303. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.d.ts +38 -0
  304. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.js +150 -0
  305. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +41 -0
  306. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.js +91 -0
  307. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +42 -0
  308. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.js +65 -0
  309. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +43 -0
  310. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.js +79 -0
  311. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.d.ts +49 -0
  312. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.js +119 -0
  313. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +43 -0
  314. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +58 -0
  315. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +43 -0
  316. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +69 -0
  317. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +43 -0
  318. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.js +56 -0
  319. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +42 -0
  320. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +47 -0
  321. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +43 -0
  322. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.js +77 -0
  323. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.d.ts +46 -0
  324. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.js +54 -0
  325. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +42 -0
  326. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.js +68 -0
  327. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +42 -0
  328. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +80 -0
  329. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +43 -0
  330. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.js +73 -0
  331. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.d.ts +42 -0
  332. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.js +76 -0
  333. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +42 -0
  334. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.js +303 -0
  335. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +42 -0
  336. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.js +66 -0
  337. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.d.ts +112 -0
  338. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.js +262 -0
  339. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.d.ts +43 -0
  340. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.js +82 -0
  341. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +45 -0
  342. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +109 -0
  343. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +29 -0
  344. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.js +22 -0
  345. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +31 -0
  346. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.js +189 -0
  347. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
  348. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.js +123 -0
  349. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.d.ts +30 -0
  350. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.js +66 -0
  351. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +33 -0
  352. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.js +37 -0
  353. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.d.ts +37 -0
  354. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.js +58 -0
  355. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +39 -0
  356. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.js +47 -0
  357. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +56 -0
  358. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.js +228 -0
  359. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.d.ts +104 -0
  360. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.js +337 -0
  361. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +27 -0
  362. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.js +39 -0
  363. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +27 -0
  364. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.js +38 -0
  365. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.d.ts +4 -0
  366. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.js +212 -0
  367. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +45 -0
  368. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.js +100 -0
  369. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.d.ts +43 -0
  370. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.js +44 -0
  371. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.d.ts +306 -0
  372. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.js +884 -0
  373. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.d.ts +450 -0
  374. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.js +2485 -0
  375. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.d.ts +42 -0
  376. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.js +79 -0
  377. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.d.ts +165 -0
  378. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.js +1 -0
  379. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.d.ts +25 -0
  380. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.js +32 -0
  381. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.d.ts +262 -0
  382. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.js +1 -0
  383. package/node_modules/@babylonjs/loaders/glTF/2.0/index.d.ts +8 -0
  384. package/node_modules/@babylonjs/loaders/glTF/2.0/index.js +9 -0
  385. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.d.ts +364 -0
  386. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.js +1 -0
  387. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.d.ts +674 -0
  388. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.js +1034 -0
  389. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +705 -0
  390. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.js +1126 -0
  391. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.d.ts +553 -0
  392. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.js +998 -0
  393. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.d.ts +15 -0
  394. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.js +17 -0
  395. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.d.ts +35 -0
  396. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.js +131 -0
  397. package/node_modules/@babylonjs/loaders/glTF/index.d.ts +5 -0
  398. package/node_modules/@babylonjs/loaders/glTF/index.js +6 -0
  399. package/node_modules/@babylonjs/loaders/index.d.ts +6 -0
  400. package/node_modules/@babylonjs/loaders/index.js +7 -0
  401. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.d.ts +1 -0
  402. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.js +15 -0
  403. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.d.ts +1 -0
  404. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.js +13 -0
  405. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.d.ts +2 -0
  406. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.js +18 -0
  407. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.d.ts +2 -0
  408. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.js +15 -0
  409. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.d.ts +2 -0
  410. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.js +3 -0
  411. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.d.ts +2 -0
  412. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.js +34 -0
  413. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.d.ts +2 -0
  414. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.js +3 -0
  415. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.d.ts +3 -0
  416. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.js +4 -0
  417. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.d.ts +1 -0
  418. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.js +15 -0
  419. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.d.ts +1 -0
  420. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.js +15 -0
  421. package/node_modules/@babylonjs/loaders/legacy/legacy.d.ts +8 -0
  422. package/node_modules/@babylonjs/loaders/legacy/legacy.js +10 -0
  423. package/node_modules/@babylonjs/loaders/license.md +71 -0
  424. package/node_modules/@babylonjs/loaders/package.json +49 -0
  425. package/node_modules/@babylonjs/loaders/readme.md +23 -0
  426. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts +22 -0
  427. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts.map +1 -0
  428. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js +187 -0
  429. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js.map +1 -0
  430. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
  431. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
  432. package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
  433. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  434. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts +19 -0
  435. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts.map +1 -0
  436. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js +212 -0
  437. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js.map +1 -0
  438. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts +17 -2
  439. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts.map +1 -1
  440. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js +192 -17
  441. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  442. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +2 -0
  443. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  444. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +139 -3
  445. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  446. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts +4 -0
  447. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts.map +1 -1
  448. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  449. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts +1 -0
  450. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts.map +1 -1
  451. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js +1 -0
  452. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  453. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts +14 -0
  454. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts.map +1 -0
  455. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js +14 -0
  456. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js.map +1 -0
  457. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts +59 -0
  458. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  459. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js +725 -0
  460. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  461. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts +136 -0
  462. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  463. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js +2735 -0
  464. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js.map +1 -0
  465. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  466. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +1 -1
  467. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  468. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +2 -1
  469. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  470. package/node_modules/@fps-games/editor-babylon/dist/index.js +2 -1
  471. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  472. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts +2 -0
  473. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts.map +1 -1
  474. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js +59 -6
  475. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  476. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -1
  477. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +81 -11
  478. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  479. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +2 -8
  480. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  481. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +17 -5
  482. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  483. package/node_modules/@fps-games/editor-babylon/dist/projection.js +300 -362
  484. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  485. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +4 -0
  486. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
  487. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +76 -10
  488. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  489. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts +46 -0
  490. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts.map +1 -0
  491. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js +304 -0
  492. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js.map +1 -0
  493. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +85 -0
  494. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -0
  495. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +1600 -0
  496. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -0
  497. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +11 -3
  498. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  499. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +105 -15
  500. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  501. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts +25 -0
  502. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts.map +1 -0
  503. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js +44 -0
  504. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js.map +1 -0
  505. package/node_modules/@fps-games/editor-babylon/package.json +6 -5
  506. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +8 -11
  507. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  508. package/node_modules/@fps-games/editor-browser/dist/index.js +6 -9
  509. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  510. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts +2 -0
  511. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts.map +1 -0
  512. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js +36 -0
  513. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js.map +1 -0
  514. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts +2 -0
  515. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts.map +1 -1
  516. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js +17 -0
  517. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  518. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +1 -1
  519. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
  520. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +6 -0
  521. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  522. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts.map +1 -1
  523. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +157 -77
  524. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  525. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.d.ts.map +1 -1
  526. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js +27 -21
  527. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  528. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +19 -0
  529. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -0
  530. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +44 -0
  531. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -0
  532. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +36 -6
  533. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  534. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +829 -866
  535. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  536. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts +8 -7
  537. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts.map +1 -1
  538. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js +1 -7
  539. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  540. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts +7 -0
  541. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts.map +1 -0
  542. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js +20 -0
  543. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js.map +1 -0
  544. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +6 -7
  545. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  546. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +266 -114
  547. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  548. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  549. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  550. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +5 -0
  551. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  552. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  553. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +3 -17
  554. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  555. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts +14 -0
  556. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts.map +1 -1
  557. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js +44 -62
  558. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  559. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +10 -7
  560. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  561. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +591 -639
  562. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  563. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +8 -36
  564. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
  565. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +25 -103
  566. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  567. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  568. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +29 -110
  569. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  570. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +1 -3
  571. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
  572. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +6 -90
  573. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  574. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -1
  575. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +9 -54
  576. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  577. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +16 -1
  578. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -1
  579. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +44 -39
  580. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -1
  581. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts +4 -0
  582. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts.map +1 -0
  583. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js +44 -0
  584. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js.map +1 -0
  585. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.d.ts.map +1 -1
  586. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js +35 -44
  587. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  588. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -1
  589. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +40 -24
  590. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  591. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.d.ts.map +1 -1
  592. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js +2 -20
  593. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  594. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +52 -341
  595. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  596. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  597. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +4 -14
  598. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  599. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +33 -119
  600. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  601. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +5 -10
  602. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  603. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +595 -544
  604. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  605. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts +2 -3
  606. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts.map +1 -1
  607. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js +0 -180
  608. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  609. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts +5 -0
  610. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts.map +1 -0
  611. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js +5 -0
  612. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js.map +1 -0
  613. package/node_modules/@fps-games/editor-browser/package.json +15 -4
  614. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts +22 -0
  615. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts.map +1 -0
  616. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js +226 -0
  617. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js.map +1 -0
  618. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -1
  619. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  620. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +94 -2
  621. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  622. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +24 -2
  623. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  624. package/node_modules/@fps-games/editor-core/dist/editor-session.js +70 -10
  625. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  626. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +112 -0
  627. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -0
  628. package/node_modules/@fps-games/editor-core/dist/editor-tools.js +613 -0
  629. package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -0
  630. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +46 -0
  631. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -1
  632. package/node_modules/@fps-games/editor-core/dist/inspector.js +62 -0
  633. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  634. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -0
  635. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  636. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  637. package/node_modules/@fps-games/editor-core/package.json +14 -6
  638. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  639. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +14 -3
  640. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  641. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +1 -1
  642. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -1
  643. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +1 -1
  644. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  645. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +14 -0
  646. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  647. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +49 -1
  648. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  649. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +58 -2
  650. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  651. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  652. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +48 -6
  653. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  654. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +28 -3
  655. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  656. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +314 -6
  657. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  658. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts +2 -0
  659. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts.map +1 -1
  660. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js +2 -0
  661. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  662. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts +11 -0
  663. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts.map +1 -0
  664. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js +27 -0
  665. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js.map +1 -0
  666. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts +5 -0
  667. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts.map +1 -0
  668. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js +285 -0
  669. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js.map +1 -0
  670. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +7 -3
  671. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  672. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  673. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +3 -0
  674. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  675. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +6 -0
  676. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  677. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  678. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +23 -81
  679. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  680. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts +41 -0
  681. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts.map +1 -0
  682. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js +93 -0
  683. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js.map +1 -0
  684. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts +29 -0
  685. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts.map +1 -0
  686. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js +77 -0
  687. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js.map +1 -0
  688. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts +51 -0
  689. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts.map +1 -0
  690. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js +105 -0
  691. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js.map +1 -0
  692. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts +60 -0
  693. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts.map +1 -0
  694. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js +287 -0
  695. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js.map +1 -0
  696. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +6 -1
  697. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  698. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  699. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +1 -0
  700. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  701. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +53 -17
  702. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  703. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +16 -8
  704. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  705. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +10 -6
  706. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  707. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +5 -3
  708. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  709. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +2 -1
  710. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  711. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  712. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +134 -66
  713. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  714. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +11 -0
  715. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  716. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +21 -14
  717. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  718. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +17 -9
  719. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  720. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  721. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  722. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +20 -0
  723. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  724. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
  725. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +49 -10
  726. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  727. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +2 -2
  728. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  729. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -0
  730. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  731. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts +7 -0
  732. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts.map +1 -1
  733. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js +130 -20
  734. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  735. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts +1 -1
  736. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts.map +1 -1
  737. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js +12 -3
  738. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  739. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts +11 -0
  740. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts.map +1 -0
  741. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js +136 -0
  742. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js.map +1 -0
  743. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts +1 -0
  744. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts.map +1 -1
  745. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js +1 -0
  746. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  747. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts +36 -51
  748. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts.map +1 -1
  749. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js +40 -65
  750. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  751. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +5 -2
  752. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  753. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +207 -1
  754. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  755. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  756. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  757. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +3 -0
  758. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  759. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +18 -7
  760. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  761. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +110 -18
  762. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  763. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +5 -0
  764. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  765. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +6 -0
  766. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  767. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts +5 -2
  768. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  769. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +22 -2
  770. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  771. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  772. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +144 -0
  773. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  774. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +16 -0
  775. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
  776. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  777. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  778. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
  779. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  780. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
  781. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  782. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  783. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +2 -0
  784. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -1
  785. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +241 -13
  786. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  787. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +1 -0
  788. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -1
  789. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +1 -0
  790. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  791. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts +31 -0
  792. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts.map +1 -0
  793. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js +170 -0
  794. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js.map +1 -0
  795. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +153 -13
  796. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -1
  797. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  798. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts +17 -0
  799. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts.map +1 -1
  800. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js +1295 -3
  801. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  802. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  803. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +14 -0
  804. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  805. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.d.ts.map +1 -1
  806. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js +57 -34
  807. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  808. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
  809. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +4 -1
  810. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  811. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +4 -0
  812. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  813. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  814. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
  815. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +20 -198
  816. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  817. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.d.ts.map +1 -1
  818. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js +5 -1
  819. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  820. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts +5 -0
  821. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
  822. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +144 -8
  823. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  824. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts +1 -1
  825. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts.map +1 -1
  826. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js +30 -1
  827. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  828. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts +6 -0
  829. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts.map +1 -1
  830. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  831. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +31 -3
  832. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  833. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +5 -2
  834. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  835. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +40 -4
  836. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  837. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  838. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +116 -3
  839. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  840. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +2 -1
  841. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  842. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -0
  843. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  844. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +17 -1
  845. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  846. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +50 -2
  847. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  848. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  849. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +7 -5
  850. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  851. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +5 -6
  852. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  853. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +31 -17
  854. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  855. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +6 -0
  856. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  857. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  858. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  859. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +417 -2
  860. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -1
  861. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +692 -2
  862. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  863. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts +55 -0
  864. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts.map +1 -0
  865. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js +2 -0
  866. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js.map +1 -0
  867. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +3 -18
  868. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  869. package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
  870. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  871. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  872. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.d.ts.map +1 -1
  873. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js +5 -0
  874. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  875. package/node_modules/@fps-games/editor-tooling/dist/vite.d.ts.map +1 -1
  876. package/node_modules/@fps-games/editor-tooling/dist/vite.js +151 -5
  877. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  878. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  879. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts +107 -0
  880. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts.map +1 -0
  881. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js +770 -0
  882. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js.map +1 -0
  883. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts +21 -0
  884. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts.map +1 -0
  885. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js +172 -0
  886. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js.map +1 -0
  887. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts +14 -0
  888. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts.map +1 -0
  889. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js +32 -0
  890. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js.map +1 -0
  891. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts +3 -0
  892. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -0
  893. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +653 -0
  894. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -0
  895. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts +3 -0
  896. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts.map +1 -0
  897. package/node_modules/@fps-games/editor-ui/dist/gallery.js +3 -0
  898. package/node_modules/@fps-games/editor-ui/dist/gallery.js.map +1 -0
  899. package/node_modules/@fps-games/editor-ui/dist/index.d.ts +5 -0
  900. package/node_modules/@fps-games/editor-ui/dist/index.d.ts.map +1 -0
  901. package/node_modules/@fps-games/editor-ui/dist/index.js +5 -0
  902. package/node_modules/@fps-games/editor-ui/dist/index.js.map +1 -0
  903. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts +7 -0
  904. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts.map +1 -0
  905. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js +29 -0
  906. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js.map +1 -0
  907. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts +2 -0
  908. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts.map +1 -0
  909. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js +95 -0
  910. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js.map +1 -0
  911. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts +28 -0
  912. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts.map +1 -0
  913. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js +387 -0
  914. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js.map +1 -0
  915. package/node_modules/@fps-games/editor-ui/package.json +23 -0
  916. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  917. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts +1 -0
  918. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts.map +1 -1
  919. package/node_modules/@fps-games/playable-contracts/dist/index.js +1 -0
  920. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  921. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts +116 -0
  922. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts.map +1 -0
  923. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js +403 -0
  924. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js.map +1 -0
  925. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  926. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts +3 -0
  927. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts.map +1 -1
  928. package/node_modules/@fps-games/playable-rendering/dist/index.js +3 -0
  929. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  930. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js +5 -25
  931. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  932. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts +3 -0
  933. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts.map +1 -1
  934. package/node_modules/@fps-games/playable-rendering/dist/runtime.js +3 -0
  935. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  936. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts +61 -0
  937. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts.map +1 -0
  938. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js +176 -0
  939. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js.map +1 -0
  940. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts +84 -0
  941. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  942. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js +362 -0
  943. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js.map +1 -0
  944. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts +167 -0
  945. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts.map +1 -0
  946. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js +484 -0
  947. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js.map +1 -0
  948. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  949. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts +5 -0
  950. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts.map +1 -1
  951. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js +1 -0
  952. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  953. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  954. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  955. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  956. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  957. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  958. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  959. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  960. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  961. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts +6 -0
  962. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts.map +1 -0
  963. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js +16 -0
  964. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js.map +1 -0
  965. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts +7 -0
  966. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts.map +1 -0
  967. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js +47 -0
  968. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js.map +1 -0
  969. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +306 -0
  970. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -0
  971. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +1237 -0
  972. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -0
  973. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts +8 -0
  974. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts.map +1 -0
  975. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js +32 -0
  976. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js.map +1 -0
  977. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +2 -0
  978. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts.map +1 -0
  979. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +2 -0
  980. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -0
  981. package/node_modules/@fps-games/plugin-hierarchy/package.json +57 -0
  982. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  983. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  984. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  985. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  986. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  987. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  988. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  989. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  990. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  991. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  992. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  993. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  994. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  995. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  996. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  997. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  998. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  999. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts +8 -0
  1000. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts.map +1 -0
  1001. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js +35 -0
  1002. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js.map +1 -0
  1003. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts +11 -0
  1004. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts.map +1 -0
  1005. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js +14 -0
  1006. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js.map +1 -0
  1007. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +2 -0
  1008. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts.map +1 -0
  1009. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +2 -0
  1010. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -0
  1011. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +53 -0
  1012. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  1013. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  1014. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  1015. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  1016. package/node_modules/@playcanvas/observer/LICENSE +19 -0
  1017. package/node_modules/@playcanvas/observer/README.md +72 -0
  1018. package/node_modules/@playcanvas/observer/dist/index.cjs +2033 -0
  1019. package/node_modules/@playcanvas/observer/dist/index.js +2039 -0
  1020. package/node_modules/@playcanvas/observer/dist/index.mjs +2026 -0
  1021. package/node_modules/@playcanvas/observer/package.json +78 -0
  1022. package/node_modules/@playcanvas/observer/types/event-handle.d.ts +41 -0
  1023. package/node_modules/@playcanvas/observer/types/events.d.ts +162 -0
  1024. package/node_modules/@playcanvas/observer/types/history.d.ts +123 -0
  1025. package/node_modules/@playcanvas/observer/types/index.d.ts +15 -0
  1026. package/node_modules/@playcanvas/observer/types/observer-history.d.ts +32 -0
  1027. package/node_modules/@playcanvas/observer/types/observer-list.d.ts +39 -0
  1028. package/node_modules/@playcanvas/observer/types/observer.d.ts +157 -0
  1029. package/node_modules/@playcanvas/observer/types/utils.d.ts +33 -0
  1030. package/node_modules/@playcanvas/pcui/LICENSE +19 -0
  1031. package/node_modules/@playcanvas/pcui/README.md +164 -0
  1032. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1033. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1034. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1035. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1036. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1037. package/node_modules/@playcanvas/pcui/dist/module/src/Math/color-value.mjs +77 -0
  1038. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1039. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1040. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1041. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1042. package/node_modules/@playcanvas/pcui/dist/module/src/class.mjs +19 -0
  1043. package/node_modules/@playcanvas/pcui/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1044. package/node_modules/@playcanvas/pcui/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1045. package/node_modules/@playcanvas/pcui/dist/module/src/components/Button/index.mjs +119 -0
  1046. package/node_modules/@playcanvas/pcui/dist/module/src/components/Canvas/index.mjs +104 -0
  1047. package/node_modules/@playcanvas/pcui/dist/module/src/components/Code/index.mjs +43 -0
  1048. package/node_modules/@playcanvas/pcui/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1049. package/node_modules/@playcanvas/pcui/dist/module/src/components/Container/index.mjs +642 -0
  1050. package/node_modules/@playcanvas/pcui/dist/module/src/components/Divider/index.mjs +20 -0
  1051. package/node_modules/@playcanvas/pcui/dist/module/src/components/Element/index.mjs +829 -0
  1052. package/node_modules/@playcanvas/pcui/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1053. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridView/index.mjs +448 -0
  1054. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1055. package/node_modules/@playcanvas/pcui/dist/module/src/components/InfoBox/index.mjs +90 -0
  1056. package/node_modules/@playcanvas/pcui/dist/module/src/components/InputElement/index.mjs +186 -0
  1057. package/node_modules/@playcanvas/pcui/dist/module/src/components/Label/index.mjs +124 -0
  1058. package/node_modules/@playcanvas/pcui/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1059. package/node_modules/@playcanvas/pcui/dist/module/src/components/Menu/index.mjs +174 -0
  1060. package/node_modules/@playcanvas/pcui/dist/module/src/components/MenuItem/index.mjs +223 -0
  1061. package/node_modules/@playcanvas/pcui/dist/module/src/components/NumericInput/index.mjs +400 -0
  1062. package/node_modules/@playcanvas/pcui/dist/module/src/components/Overlay/index.mjs +108 -0
  1063. package/node_modules/@playcanvas/pcui/dist/module/src/components/Panel/index.mjs +400 -0
  1064. package/node_modules/@playcanvas/pcui/dist/module/src/components/Progress/index.mjs +45 -0
  1065. package/node_modules/@playcanvas/pcui/dist/module/src/components/RadioButton/index.mjs +113 -0
  1066. package/node_modules/@playcanvas/pcui/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1067. package/node_modules/@playcanvas/pcui/dist/module/src/components/SliderInput/index.mjs +333 -0
  1068. package/node_modules/@playcanvas/pcui/dist/module/src/components/Spinner/index.mjs +34 -0
  1069. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1070. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextInput/index.mjs +98 -0
  1071. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeView/index.mjs +1131 -0
  1072. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1073. package/node_modules/@playcanvas/pcui/dist/module/src/components/VectorInput/index.mjs +366 -0
  1074. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/search.mjs +194 -0
  1075. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/utils.mjs +43 -0
  1076. package/node_modules/@playcanvas/pcui/dist/module/src/index.mjs +56 -0
  1077. package/node_modules/@playcanvas/pcui/dist/pcui-theme-green.scss +2798 -0
  1078. package/node_modules/@playcanvas/pcui/dist/pcui-theme-grey.scss +2798 -0
  1079. package/node_modules/@playcanvas/pcui/package.json +150 -0
  1080. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1081. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1082. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1083. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1084. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1085. package/node_modules/@playcanvas/pcui/react/dist/module/src/Math/color-value.mjs +77 -0
  1086. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1087. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1088. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1089. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1090. package/node_modules/@playcanvas/pcui/react/dist/module/src/class.mjs +19 -0
  1091. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/component.mjs +11 -0
  1092. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1093. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/component.mjs +11 -0
  1094. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1095. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/component.mjs +16 -0
  1096. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/index.mjs +119 -0
  1097. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/component.mjs +16 -0
  1098. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/index.mjs +104 -0
  1099. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/component.mjs +11 -0
  1100. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/index.mjs +43 -0
  1101. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/component.mjs +16 -0
  1102. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1103. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/component.mjs +36 -0
  1104. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/index.mjs +642 -0
  1105. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/component.mjs +11 -0
  1106. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/index.mjs +20 -0
  1107. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/component.mjs +107 -0
  1108. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/index.mjs +829 -0
  1109. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/component.mjs +16 -0
  1110. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1111. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/component.mjs +38 -0
  1112. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/index.mjs +448 -0
  1113. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/component.mjs +11 -0
  1114. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1115. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/component.mjs +16 -0
  1116. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/index.mjs +90 -0
  1117. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InputElement/index.mjs +186 -0
  1118. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/component.mjs +16 -0
  1119. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/index.mjs +124 -0
  1120. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/component.mjs +42 -0
  1121. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1122. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/component.mjs +23 -0
  1123. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/index.mjs +174 -0
  1124. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/MenuItem/index.mjs +223 -0
  1125. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/component.mjs +11 -0
  1126. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/index.mjs +400 -0
  1127. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/component.mjs +11 -0
  1128. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/index.mjs +108 -0
  1129. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/component.mjs +32 -0
  1130. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/index.mjs +400 -0
  1131. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/component.mjs +11 -0
  1132. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/index.mjs +45 -0
  1133. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/component.mjs +11 -0
  1134. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/index.mjs +113 -0
  1135. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/component.mjs +21 -0
  1136. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1137. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/component.mjs +12 -0
  1138. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/index.mjs +333 -0
  1139. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/component.mjs +16 -0
  1140. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/index.mjs +34 -0
  1141. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/component.mjs +11 -0
  1142. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1143. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/component.mjs +23 -0
  1144. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/index.mjs +98 -0
  1145. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/component.mjs +52 -0
  1146. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/index.mjs +1131 -0
  1147. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/component.mjs +33 -0
  1148. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1149. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/component.mjs +11 -0
  1150. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/index.mjs +366 -0
  1151. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/search.mjs +194 -0
  1152. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/utils.mjs +43 -0
  1153. package/node_modules/@playcanvas/pcui/react/dist/module/src/index.mjs +39 -0
  1154. package/node_modules/@playcanvas/pcui/react/package.json +18 -0
  1155. package/node_modules/@playcanvas/pcui/react/types/Math/color-value.d.ts +3 -0
  1156. package/node_modules/@playcanvas/pcui/react/types/binding/BindingBase/index.d.ts +178 -0
  1157. package/node_modules/@playcanvas/pcui/react/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1158. package/node_modules/@playcanvas/pcui/react/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1159. package/node_modules/@playcanvas/pcui/react/types/binding/BindingTwoWay/index.d.ts +54 -0
  1160. package/node_modules/@playcanvas/pcui/react/types/binding/index.d.ts +5 -0
  1161. package/node_modules/@playcanvas/pcui/react/types/class.d.ts +17 -0
  1162. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/component.d.ts +9 -0
  1163. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/index.d.ts +140 -0
  1164. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/component.d.ts +9 -0
  1165. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/index.d.ts +41 -0
  1166. package/node_modules/@playcanvas/pcui/react/types/components/Button/component.d.ts +11 -0
  1167. package/node_modules/@playcanvas/pcui/react/types/components/Button/index.d.ts +75 -0
  1168. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/component.d.ts +11 -0
  1169. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/index.d.ts +61 -0
  1170. package/node_modules/@playcanvas/pcui/react/types/components/Code/component.d.ts +9 -0
  1171. package/node_modules/@playcanvas/pcui/react/types/components/Code/index.d.ts +33 -0
  1172. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/component.d.ts +11 -0
  1173. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/index.d.ts +99 -0
  1174. package/node_modules/@playcanvas/pcui/react/types/components/Container/component.d.ts +15 -0
  1175. package/node_modules/@playcanvas/pcui/react/types/components/Container/index.d.ts +292 -0
  1176. package/node_modules/@playcanvas/pcui/react/types/components/Divider/component.d.ts +10 -0
  1177. package/node_modules/@playcanvas/pcui/react/types/components/Divider/index.d.ts +13 -0
  1178. package/node_modules/@playcanvas/pcui/react/types/components/Element/component.d.ts +23 -0
  1179. package/node_modules/@playcanvas/pcui/react/types/components/Element/index.d.ts +671 -0
  1180. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/component.d.ts +11 -0
  1181. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/index.d.ts +152 -0
  1182. package/node_modules/@playcanvas/pcui/react/types/components/GridView/component.d.ts +14 -0
  1183. package/node_modules/@playcanvas/pcui/react/types/components/GridView/index.d.ts +103 -0
  1184. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/component.d.ts +9 -0
  1185. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/index.d.ts +82 -0
  1186. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/component.d.ts +11 -0
  1187. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/index.d.ts +71 -0
  1188. package/node_modules/@playcanvas/pcui/react/types/components/InputElement/index.d.ts +84 -0
  1189. package/node_modules/@playcanvas/pcui/react/types/components/Label/component.d.ts +11 -0
  1190. package/node_modules/@playcanvas/pcui/react/types/components/Label/index.d.ts +85 -0
  1191. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/component.d.ts +10 -0
  1192. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/index.d.ts +62 -0
  1193. package/node_modules/@playcanvas/pcui/react/types/components/Menu/component.d.ts +14 -0
  1194. package/node_modules/@playcanvas/pcui/react/types/components/Menu/index.d.ts +70 -0
  1195. package/node_modules/@playcanvas/pcui/react/types/components/MenuItem/index.d.ts +139 -0
  1196. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/component.d.ts +9 -0
  1197. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/index.d.ts +173 -0
  1198. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/component.d.ts +9 -0
  1199. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/index.d.ts +53 -0
  1200. package/node_modules/@playcanvas/pcui/react/types/components/Panel/component.d.ts +16 -0
  1201. package/node_modules/@playcanvas/pcui/react/types/components/Panel/index.d.ts +178 -0
  1202. package/node_modules/@playcanvas/pcui/react/types/components/Progress/component.d.ts +9 -0
  1203. package/node_modules/@playcanvas/pcui/react/types/components/Progress/index.d.ts +33 -0
  1204. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/component.d.ts +9 -0
  1205. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/index.d.ts +33 -0
  1206. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/component.d.ts +12 -0
  1207. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/index.d.ts +278 -0
  1208. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/component.d.ts +10 -0
  1209. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/index.d.ts +133 -0
  1210. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/component.d.ts +11 -0
  1211. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/index.d.ts +27 -0
  1212. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/component.d.ts +9 -0
  1213. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/index.d.ts +24 -0
  1214. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/component.d.ts +12 -0
  1215. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/index.d.ts +40 -0
  1216. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/component.d.ts +17 -0
  1217. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/index.d.ts +359 -0
  1218. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/component.d.ts +13 -0
  1219. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/index.d.ts +224 -0
  1220. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/component.d.ts +9 -0
  1221. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/index.d.ts +176 -0
  1222. package/node_modules/@playcanvas/pcui/react/types/components/components.d.ts +30 -0
  1223. package/node_modules/@playcanvas/pcui/react/types/components/index.d.ts +32 -0
  1224. package/node_modules/@playcanvas/pcui/react/types/helpers/search.d.ts +31 -0
  1225. package/node_modules/@playcanvas/pcui/react/types/helpers/utils.d.ts +2 -0
  1226. package/node_modules/@playcanvas/pcui/react/types/index.d.ts +4 -0
  1227. package/node_modules/@playcanvas/pcui/styles/dist/index.mjs +11 -0
  1228. package/node_modules/@playcanvas/pcui/styles/package.json +17 -0
  1229. package/node_modules/@playcanvas/pcui/types/Math/color-value.d.ts +3 -0
  1230. package/node_modules/@playcanvas/pcui/types/binding/BindingBase/index.d.ts +178 -0
  1231. package/node_modules/@playcanvas/pcui/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1232. package/node_modules/@playcanvas/pcui/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1233. package/node_modules/@playcanvas/pcui/types/binding/BindingTwoWay/index.d.ts +54 -0
  1234. package/node_modules/@playcanvas/pcui/types/binding/index.d.ts +5 -0
  1235. package/node_modules/@playcanvas/pcui/types/class.d.ts +17 -0
  1236. package/node_modules/@playcanvas/pcui/types/components/ArrayInput/index.d.ts +140 -0
  1237. package/node_modules/@playcanvas/pcui/types/components/BooleanInput/index.d.ts +41 -0
  1238. package/node_modules/@playcanvas/pcui/types/components/Button/index.d.ts +75 -0
  1239. package/node_modules/@playcanvas/pcui/types/components/Canvas/index.d.ts +61 -0
  1240. package/node_modules/@playcanvas/pcui/types/components/Code/index.d.ts +33 -0
  1241. package/node_modules/@playcanvas/pcui/types/components/ColorPicker/index.d.ts +99 -0
  1242. package/node_modules/@playcanvas/pcui/types/components/Container/index.d.ts +292 -0
  1243. package/node_modules/@playcanvas/pcui/types/components/Divider/index.d.ts +13 -0
  1244. package/node_modules/@playcanvas/pcui/types/components/Element/index.d.ts +671 -0
  1245. package/node_modules/@playcanvas/pcui/types/components/GradientPicker/index.d.ts +152 -0
  1246. package/node_modules/@playcanvas/pcui/types/components/GridView/index.d.ts +103 -0
  1247. package/node_modules/@playcanvas/pcui/types/components/GridViewItem/index.d.ts +82 -0
  1248. package/node_modules/@playcanvas/pcui/types/components/InfoBox/index.d.ts +71 -0
  1249. package/node_modules/@playcanvas/pcui/types/components/InputElement/index.d.ts +84 -0
  1250. package/node_modules/@playcanvas/pcui/types/components/Label/index.d.ts +85 -0
  1251. package/node_modules/@playcanvas/pcui/types/components/LabelGroup/index.d.ts +62 -0
  1252. package/node_modules/@playcanvas/pcui/types/components/Menu/index.d.ts +70 -0
  1253. package/node_modules/@playcanvas/pcui/types/components/MenuItem/index.d.ts +139 -0
  1254. package/node_modules/@playcanvas/pcui/types/components/NumericInput/index.d.ts +173 -0
  1255. package/node_modules/@playcanvas/pcui/types/components/Overlay/index.d.ts +53 -0
  1256. package/node_modules/@playcanvas/pcui/types/components/Panel/index.d.ts +178 -0
  1257. package/node_modules/@playcanvas/pcui/types/components/Progress/index.d.ts +33 -0
  1258. package/node_modules/@playcanvas/pcui/types/components/RadioButton/index.d.ts +33 -0
  1259. package/node_modules/@playcanvas/pcui/types/components/SelectInput/index.d.ts +278 -0
  1260. package/node_modules/@playcanvas/pcui/types/components/SliderInput/index.d.ts +133 -0
  1261. package/node_modules/@playcanvas/pcui/types/components/Spinner/index.d.ts +27 -0
  1262. package/node_modules/@playcanvas/pcui/types/components/TextAreaInput/index.d.ts +24 -0
  1263. package/node_modules/@playcanvas/pcui/types/components/TextInput/index.d.ts +40 -0
  1264. package/node_modules/@playcanvas/pcui/types/components/TreeView/index.d.ts +359 -0
  1265. package/node_modules/@playcanvas/pcui/types/components/TreeViewItem/index.d.ts +224 -0
  1266. package/node_modules/@playcanvas/pcui/types/components/VectorInput/index.d.ts +176 -0
  1267. package/node_modules/@playcanvas/pcui/types/components/index.d.ts +32 -0
  1268. package/node_modules/@playcanvas/pcui/types/helpers/search.d.ts +31 -0
  1269. package/node_modules/@playcanvas/pcui/types/helpers/utils.d.ts +2 -0
  1270. package/node_modules/@playcanvas/pcui/types/index.d.ts +20 -0
  1271. package/node_modules/babylonjs-gltf2interface/babylon.glTF2Interface.d.ts +1655 -0
  1272. package/node_modules/babylonjs-gltf2interface/license.md +71 -0
  1273. package/node_modules/babylonjs-gltf2interface/package.json +26 -0
  1274. package/package.json +31 -19
  1275. package/dist/editor-plugin-hierarchy-command.d.ts +0 -19
  1276. package/dist/editor-plugin-hierarchy-command.d.ts.map +0 -1
  1277. package/dist/editor-plugin-hierarchy-command.js +0 -119
  1278. package/dist/editor-plugin-hierarchy-command.js.map +0 -1
  1279. package/node_modules/@babel/helper-string-parser/lib/index.js.map +0 -1
  1280. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +0 -1
  1281. package/node_modules/@babel/helper-validator-identifier/lib/index.js.map +0 -1
  1282. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +0 -1
  1283. package/node_modules/@babel/parser/lib/index.js.map +0 -1
  1284. package/node_modules/@babel/types/lib/asserts/assertNode.js.map +0 -1
  1285. package/node_modules/@babel/types/lib/asserts/generated/index.js.map +0 -1
  1286. package/node_modules/@babel/types/lib/ast-types/generated/index.js.map +0 -1
  1287. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +0 -1
  1288. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +0 -1
  1289. package/node_modules/@babel/types/lib/builders/generated/index.js.map +0 -1
  1290. package/node_modules/@babel/types/lib/builders/generated/lowercase.js.map +0 -1
  1291. package/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +0 -1
  1292. package/node_modules/@babel/types/lib/builders/productions.js.map +0 -1
  1293. package/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +0 -1
  1294. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +0 -1
  1295. package/node_modules/@babel/types/lib/builders/validateNode.js.map +0 -1
  1296. package/node_modules/@babel/types/lib/clone/clone.js.map +0 -1
  1297. package/node_modules/@babel/types/lib/clone/cloneDeep.js.map +0 -1
  1298. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +0 -1
  1299. package/node_modules/@babel/types/lib/clone/cloneNode.js.map +0 -1
  1300. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +0 -1
  1301. package/node_modules/@babel/types/lib/comments/addComment.js.map +0 -1
  1302. package/node_modules/@babel/types/lib/comments/addComments.js.map +0 -1
  1303. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +0 -1
  1304. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +0 -1
  1305. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +0 -1
  1306. package/node_modules/@babel/types/lib/comments/inheritsComments.js.map +0 -1
  1307. package/node_modules/@babel/types/lib/comments/removeComments.js.map +0 -1
  1308. package/node_modules/@babel/types/lib/constants/generated/index.js.map +0 -1
  1309. package/node_modules/@babel/types/lib/constants/index.js.map +0 -1
  1310. package/node_modules/@babel/types/lib/converters/ensureBlock.js.map +0 -1
  1311. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +0 -1
  1312. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +0 -1
  1313. package/node_modules/@babel/types/lib/converters/toBlock.js.map +0 -1
  1314. package/node_modules/@babel/types/lib/converters/toComputedKey.js.map +0 -1
  1315. package/node_modules/@babel/types/lib/converters/toExpression.js.map +0 -1
  1316. package/node_modules/@babel/types/lib/converters/toIdentifier.js.map +0 -1
  1317. package/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +0 -1
  1318. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +0 -1
  1319. package/node_modules/@babel/types/lib/converters/toStatement.js.map +0 -1
  1320. package/node_modules/@babel/types/lib/converters/valueToNode.js.map +0 -1
  1321. package/node_modules/@babel/types/lib/definitions/core.js.map +0 -1
  1322. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map +0 -1
  1323. package/node_modules/@babel/types/lib/definitions/experimental.js.map +0 -1
  1324. package/node_modules/@babel/types/lib/definitions/flow.js.map +0 -1
  1325. package/node_modules/@babel/types/lib/definitions/index.js.map +0 -1
  1326. package/node_modules/@babel/types/lib/definitions/jsx.js.map +0 -1
  1327. package/node_modules/@babel/types/lib/definitions/misc.js.map +0 -1
  1328. package/node_modules/@babel/types/lib/definitions/placeholders.js.map +0 -1
  1329. package/node_modules/@babel/types/lib/definitions/typescript.js.map +0 -1
  1330. package/node_modules/@babel/types/lib/definitions/utils.js.map +0 -1
  1331. package/node_modules/@babel/types/lib/index.js.map +0 -1
  1332. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +0 -1
  1333. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +0 -1
  1334. package/node_modules/@babel/types/lib/modifications/inherits.js.map +0 -1
  1335. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +0 -1
  1336. package/node_modules/@babel/types/lib/modifications/removeProperties.js.map +0 -1
  1337. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +0 -1
  1338. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +0 -1
  1339. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map +0 -1
  1340. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +0 -1
  1341. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map +0 -1
  1342. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +0 -1
  1343. package/node_modules/@babel/types/lib/traverse/traverse.js.map +0 -1
  1344. package/node_modules/@babel/types/lib/traverse/traverseFast.js.map +0 -1
  1345. package/node_modules/@babel/types/lib/utils/deprecationWarning.js.map +0 -1
  1346. package/node_modules/@babel/types/lib/utils/inherit.js.map +0 -1
  1347. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +0 -1
  1348. package/node_modules/@babel/types/lib/utils/shallowEqual.js.map +0 -1
  1349. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +0 -1
  1350. package/node_modules/@babel/types/lib/validators/generated/index.js.map +0 -1
  1351. package/node_modules/@babel/types/lib/validators/is.js.map +0 -1
  1352. package/node_modules/@babel/types/lib/validators/isBinding.js.map +0 -1
  1353. package/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +0 -1
  1354. package/node_modules/@babel/types/lib/validators/isImmutable.js.map +0 -1
  1355. package/node_modules/@babel/types/lib/validators/isLet.js.map +0 -1
  1356. package/node_modules/@babel/types/lib/validators/isNode.js.map +0 -1
  1357. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +0 -1
  1358. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +0 -1
  1359. package/node_modules/@babel/types/lib/validators/isReferenced.js.map +0 -1
  1360. package/node_modules/@babel/types/lib/validators/isScope.js.map +0 -1
  1361. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +0 -1
  1362. package/node_modules/@babel/types/lib/validators/isType.js.map +0 -1
  1363. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +0 -1
  1364. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +0 -1
  1365. package/node_modules/@babel/types/lib/validators/isVar.js.map +0 -1
  1366. package/node_modules/@babel/types/lib/validators/matchesPattern.js.map +0 -1
  1367. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +0 -1
  1368. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +0 -1
  1369. package/node_modules/@babel/types/lib/validators/validate.js.map +0 -1
  1370. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +0 -37
  1371. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +0 -1
  1372. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +0 -451
  1373. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +0 -1
  1374. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts +0 -49
  1375. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +0 -1
  1376. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +0 -627
  1377. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +0 -1
  1378. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts +0 -52
  1379. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +0 -1
  1380. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +0 -450
  1381. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +0 -1
  1382. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +0 -21
  1383. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +0 -1
  1384. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +0 -75
  1385. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +0 -1
  1386. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts +0 -7
  1387. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts.map +0 -1
  1388. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js +0 -186
  1389. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js.map +0 -1
  1390. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +0 -5
  1391. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +0 -1
  1392. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +0 -98
  1393. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +0 -1
  1394. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +0 -63
  1395. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +0 -1
  1396. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +0 -301
  1397. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +0 -1
@@ -0,0 +1,2485 @@
1
+ import { Deferred } from "@babylonjs/core/Misc/deferred.js";
2
+ import { Quaternion, Vector3, Matrix, TmpVectors } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { Color3 } from "@babylonjs/core/Maths/math.color.js";
4
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
5
+ import { Camera } from "@babylonjs/core/Cameras/camera.js";
6
+ import { FreeCamera } from "@babylonjs/core/Cameras/freeCamera.js";
7
+ import { Bone } from "@babylonjs/core/Bones/bone.js";
8
+ import { Skeleton } from "@babylonjs/core/Bones/skeleton.js";
9
+ import { Material } from "@babylonjs/core/Materials/material.js";
10
+ import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
11
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
12
+ import { Buffer, VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
13
+ import { Geometry } from "@babylonjs/core/Meshes/geometry.js";
14
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
15
+ import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
16
+ import { MorphTarget } from "@babylonjs/core/Morph/morphTarget.js";
17
+ import { MorphTargetManager } from "@babylonjs/core/Morph/morphTargetManager.js";
18
+ import { GLTFFileLoader, GLTFLoaderState, GLTFLoaderCoordinateSystemMode, GLTFLoaderAnimationStartMode } from "../glTFFileLoader.js";
19
+ import { DecodeBase64UrlToBinary, GetMimeType, IsBase64DataUrl, LoadFileError } from "@babylonjs/core/Misc/fileTools.js";
20
+ import { Logger } from "@babylonjs/core/Misc/logger.js";
21
+ import { BoundingInfo } from "@babylonjs/core/Culling/boundingInfo.js";
22
+ import { registeredGLTFExtensions, registerGLTFExtension, unregisterGLTFExtension } from "./glTFLoaderExtensionRegistry.js";
23
+ import { GetMappingForKey } from "./Extensions/objectModelMapping.js";
24
+ import { deepMerge } from "@babylonjs/core/Misc/deepMerger.js";
25
+ import { GetTypedArrayConstructor } from "@babylonjs/core/Buffers/bufferUtils.js";
26
+ import { Lazy } from "@babylonjs/core/Misc/lazy.js";
27
+ // Caching these dynamic imports gives a surprising perf boost (compared to importing them directly each time).
28
+ const LazyAnimationGroupModulePromise = new Lazy(() => import("@babylonjs/core/Animations/animationGroup.js"));
29
+ const LazyLoaderAnimationModulePromise = new Lazy(() => import("./glTFLoaderAnimation.js"));
30
+ export { GLTFFileLoader };
31
+ /**
32
+ * Helper class for working with arrays when loading the glTF asset
33
+ */
34
+ export class ArrayItem {
35
+ /**
36
+ * Gets an item from the given array.
37
+ * @param context The context when loading the asset
38
+ * @param array The array to get the item from
39
+ * @param index The index to the array
40
+ * @returns The array item
41
+ */
42
+ static Get(context, array, index) {
43
+ if (!array || index == undefined || !array[index]) {
44
+ throw new Error(`${context}: Failed to find index (${index})`);
45
+ }
46
+ return array[index];
47
+ }
48
+ /**
49
+ * Gets an item from the given array or returns null if not available.
50
+ * @param array The array to get the item from
51
+ * @param index The index to the array
52
+ * @returns The array item or null
53
+ */
54
+ static TryGet(array, index) {
55
+ if (!array || index == undefined || !array[index]) {
56
+ return null;
57
+ }
58
+ return array[index];
59
+ }
60
+ /**
61
+ * Assign an `index` field to each item of the given array.
62
+ * @param array The array of items
63
+ */
64
+ static Assign(array) {
65
+ if (array) {
66
+ for (let index = 0; index < array.length; index++) {
67
+ array[index].index = index;
68
+ }
69
+ }
70
+ }
71
+ }
72
+ /** @internal */
73
+ export function LoadBoundingInfoFromPositionAccessor(accessor) {
74
+ if (accessor.min && accessor.max) {
75
+ const minArray = accessor.min;
76
+ const maxArray = accessor.max;
77
+ const minVector = TmpVectors.Vector3[0].copyFromFloats(minArray[0], minArray[1], minArray[2]);
78
+ const maxVector = TmpVectors.Vector3[1].copyFromFloats(maxArray[0], maxArray[1], maxArray[2]);
79
+ if (accessor.normalized && accessor.componentType !== 5126 /* AccessorComponentType.FLOAT */) {
80
+ let divider = 1;
81
+ switch (accessor.componentType) {
82
+ case 5120 /* AccessorComponentType.BYTE */:
83
+ divider = 127.0;
84
+ break;
85
+ case 5121 /* AccessorComponentType.UNSIGNED_BYTE */:
86
+ divider = 255.0;
87
+ break;
88
+ case 5122 /* AccessorComponentType.SHORT */:
89
+ divider = 32767.0;
90
+ break;
91
+ case 5123 /* AccessorComponentType.UNSIGNED_SHORT */:
92
+ divider = 65535.0;
93
+ break;
94
+ }
95
+ const oneOverDivider = 1 / divider;
96
+ minVector.scaleInPlace(oneOverDivider);
97
+ maxVector.scaleInPlace(oneOverDivider);
98
+ }
99
+ return new BoundingInfo(minVector, maxVector);
100
+ }
101
+ return null;
102
+ }
103
+ /**
104
+ * The glTF 2.0 loader
105
+ */
106
+ export class GLTFLoader {
107
+ /**
108
+ * Test if the given material is of the same type as the one used by the loader
109
+ * @param material The material to test
110
+ * @returns true if the material is of the same type, false otherwise
111
+ */
112
+ isMatchingMaterialType(material) {
113
+ if (material && this._pbrMaterialImpl) {
114
+ return material instanceof this._pbrMaterialImpl.materialClass;
115
+ }
116
+ return false;
117
+ }
118
+ /**
119
+ * Registers a loader extension.
120
+ * @param name The name of the loader extension.
121
+ * @param factory The factory function that creates the loader extension.
122
+ * @deprecated Please use registerGLTFExtension instead.
123
+ */
124
+ static RegisterExtension(name, factory) {
125
+ registerGLTFExtension(name, false, factory);
126
+ }
127
+ /**
128
+ * Unregisters a loader extension.
129
+ * @param name The name of the loader extension.
130
+ * @returns A boolean indicating whether the extension has been unregistered
131
+ * @deprecated Please use unregisterGLTFExtension instead.
132
+ */
133
+ static UnregisterExtension(name) {
134
+ return unregisterGLTFExtension(name);
135
+ }
136
+ /**
137
+ * The object that represents the glTF JSON.
138
+ */
139
+ get gltf() {
140
+ if (!this._gltf) {
141
+ throw new Error("glTF JSON is not available");
142
+ }
143
+ return this._gltf;
144
+ }
145
+ /**
146
+ * The BIN chunk of a binary glTF.
147
+ */
148
+ get bin() {
149
+ return this._bin;
150
+ }
151
+ /**
152
+ * The parent file loader.
153
+ */
154
+ get parent() {
155
+ return this._parent;
156
+ }
157
+ /**
158
+ * The Babylon scene when loading the asset.
159
+ */
160
+ get babylonScene() {
161
+ if (!this._babylonScene) {
162
+ throw new Error("Scene is not available");
163
+ }
164
+ return this._babylonScene;
165
+ }
166
+ /**
167
+ * The root Babylon node when loading the asset.
168
+ */
169
+ get rootBabylonMesh() {
170
+ return this._rootBabylonMesh;
171
+ }
172
+ /**
173
+ * The root url when loading the asset.
174
+ */
175
+ get rootUrl() {
176
+ return this._rootUrl;
177
+ }
178
+ /**
179
+ * @internal
180
+ */
181
+ constructor(parent) {
182
+ /** @internal */
183
+ this._completePromises = new Array();
184
+ /** @internal */
185
+ this._assetContainer = null;
186
+ /** Storage */
187
+ this._babylonLights = [];
188
+ /** @internal */
189
+ this._disableInstancedMesh = 0;
190
+ /** @internal */
191
+ this._allMaterialsDirtyRequired = false;
192
+ /** @internal */
193
+ this._skipStartAnimationStep = false;
194
+ this._extensions = new Array();
195
+ this._disposed = false;
196
+ this._rootUrl = null;
197
+ this._fileName = null;
198
+ this._uniqueRootUrl = null;
199
+ this._bin = null;
200
+ this._rootBabylonMesh = null;
201
+ this._defaultBabylonMaterialData = {};
202
+ this._postSceneLoadActions = new Array();
203
+ this._materialAdapterCache = new WeakMap();
204
+ /** @internal */
205
+ this._pbrMaterialImpl = null;
206
+ this._parent = parent;
207
+ }
208
+ /**
209
+ * Creates or gets a cached material loading adapter with dynamic imports
210
+ * @param material The material to adapt
211
+ * @returns Promise that resolves to the appropriate adapter
212
+ * @internal
213
+ */
214
+ _getOrCreateMaterialAdapter(material) {
215
+ let adapter = this._materialAdapterCache.get(material);
216
+ if (!adapter) {
217
+ if (this._pbrMaterialImpl) {
218
+ adapter = new this._pbrMaterialImpl.adapterClass(material);
219
+ }
220
+ else {
221
+ throw new Error(`Appropriate material adapter class not found`);
222
+ }
223
+ this._materialAdapterCache.set(material, adapter);
224
+ }
225
+ return adapter;
226
+ }
227
+ /** @internal */
228
+ dispose() {
229
+ if (this._disposed) {
230
+ return;
231
+ }
232
+ this._disposed = true;
233
+ this._completePromises.length = 0;
234
+ this._extensions.forEach((extension) => extension.dispose && extension.dispose());
235
+ this._extensions.length = 0;
236
+ this._gltf = null; // TODO
237
+ this._bin = null;
238
+ this._babylonScene = null; // TODO
239
+ this._rootBabylonMesh = null;
240
+ this._defaultBabylonMaterialData = {};
241
+ this._postSceneLoadActions.length = 0;
242
+ this._parent.dispose();
243
+ }
244
+ /**
245
+ * @internal
246
+ */
247
+ async importMeshAsync(meshesNames, scene, container, data, rootUrl, onProgress, fileName = "") {
248
+ // eslint-disable-next-line github/no-then
249
+ return await Promise.resolve().then(async () => {
250
+ this._babylonScene = scene;
251
+ this._assetContainer = container;
252
+ this._loadData(data);
253
+ let nodes = null;
254
+ if (meshesNames) {
255
+ const nodeMap = {};
256
+ if (this._gltf.nodes) {
257
+ for (const node of this._gltf.nodes) {
258
+ if (node.name) {
259
+ nodeMap[node.name] = node.index;
260
+ }
261
+ }
262
+ }
263
+ const names = meshesNames instanceof Array ? meshesNames : [meshesNames];
264
+ nodes = names.map((name) => {
265
+ const node = nodeMap[name];
266
+ if (node === undefined) {
267
+ throw new Error(`Failed to find node '${name}'`);
268
+ }
269
+ return node;
270
+ });
271
+ }
272
+ return await this._loadAsync(rootUrl, fileName, nodes, () => {
273
+ return {
274
+ meshes: this._getMeshes(),
275
+ particleSystems: [],
276
+ skeletons: this._getSkeletons(),
277
+ animationGroups: this._getAnimationGroups(),
278
+ lights: this._babylonLights,
279
+ transformNodes: this._getTransformNodes(),
280
+ geometries: this._getGeometries(),
281
+ spriteManagers: [],
282
+ };
283
+ });
284
+ });
285
+ }
286
+ /**
287
+ * @internal
288
+ */
289
+ async loadAsync(scene, data, rootUrl, onProgress, fileName = "") {
290
+ this._babylonScene = scene;
291
+ this._loadData(data);
292
+ return await this._loadAsync(rootUrl, fileName, null, () => undefined);
293
+ }
294
+ async _loadAsync(rootUrl, fileName, nodes, resultFunc) {
295
+ return await Promise.resolve()
296
+ .then(async () => {
297
+ this._rootUrl = rootUrl;
298
+ this._uniqueRootUrl = !rootUrl.startsWith("file:") && fileName ? rootUrl : `${rootUrl}${Date.now()}/`;
299
+ this._fileName = fileName;
300
+ this._allMaterialsDirtyRequired = false;
301
+ await this._loadExtensionsAsync();
302
+ // NOTE: Explicitly check _pbrMaterialImpl for null as a value of false means don't use PBR materials at all.
303
+ if (!this.parent.skipMaterials && this._pbrMaterialImpl == null) {
304
+ if (this.parent.useOpenPBR || this.isExtensionUsed("KHR_materials_openpbr")) {
305
+ this._pbrMaterialImpl = {
306
+ materialClass: (await import("@babylonjs/core/Materials/PBR/openpbrMaterial.js")).OpenPBRMaterial,
307
+ adapterClass: (await import("./openpbrMaterialLoadingAdapter.js")).OpenPBRMaterialLoadingAdapter,
308
+ };
309
+ }
310
+ else {
311
+ this._pbrMaterialImpl = {
312
+ materialClass: (await import("@babylonjs/core/Materials/PBR/pbrMaterial.js")).PBRMaterial,
313
+ adapterClass: (await import("./pbrMaterialLoadingAdapter.js")).PBRMaterialLoadingAdapter,
314
+ };
315
+ }
316
+ }
317
+ const loadingToReadyCounterName = `${GLTFLoaderState[GLTFLoaderState.LOADING]} => ${GLTFLoaderState[GLTFLoaderState.READY]}`;
318
+ const loadingToCompleteCounterName = `${GLTFLoaderState[GLTFLoaderState.LOADING]} => ${GLTFLoaderState[GLTFLoaderState.COMPLETE]}`;
319
+ this._parent._startPerformanceCounter(loadingToReadyCounterName);
320
+ this._parent._startPerformanceCounter(loadingToCompleteCounterName);
321
+ this._parent._setState(GLTFLoaderState.LOADING);
322
+ this._extensionsOnLoading();
323
+ const promises = new Array();
324
+ // Block the marking of materials dirty until the scene is loaded.
325
+ const oldBlockMaterialDirtyMechanism = this._babylonScene.blockMaterialDirtyMechanism;
326
+ this._babylonScene.blockMaterialDirtyMechanism = true;
327
+ if (!this.parent.loadOnlyMaterials) {
328
+ if (nodes) {
329
+ promises.push(this.loadSceneAsync("/nodes", { nodes: nodes, index: -1 }));
330
+ }
331
+ else if (this._gltf.scene != undefined || (this._gltf.scenes && this._gltf.scenes[0])) {
332
+ const scene = ArrayItem.Get(`/scene`, this._gltf.scenes, this._gltf.scene || 0);
333
+ promises.push(this.loadSceneAsync(`/scenes/${scene.index}`, scene));
334
+ }
335
+ }
336
+ if (!this.parent.skipMaterials && this.parent.loadAllMaterials && this._gltf.materials) {
337
+ for (let m = 0; m < this._gltf.materials.length; ++m) {
338
+ const material = this._gltf.materials[m];
339
+ const context = "/materials/" + m;
340
+ const babylonDrawMode = Material.TriangleFillMode;
341
+ promises.push(this._loadMaterialAsync(context, material, null, babylonDrawMode, () => { }));
342
+ }
343
+ }
344
+ // Restore the blocking of material dirty.
345
+ if (this._allMaterialsDirtyRequired) {
346
+ // This can happen if we add a light for instance as it will impact the whole scene.
347
+ // This automatically resets everything if needed.
348
+ this._babylonScene.blockMaterialDirtyMechanism = oldBlockMaterialDirtyMechanism;
349
+ }
350
+ else {
351
+ // By default a newly created material is dirty so there is no need to flag the full scene as dirty.
352
+ // For perf reasons, we then bypass blockMaterialDirtyMechanism as this would "dirty" the entire scene.
353
+ this._babylonScene._forceBlockMaterialDirtyMechanism(oldBlockMaterialDirtyMechanism);
354
+ }
355
+ if (this._parent.compileMaterials) {
356
+ promises.push(this._compileMaterialsAsync());
357
+ }
358
+ if (this._parent.compileShadowGenerators) {
359
+ promises.push(this._compileShadowGeneratorsAsync());
360
+ }
361
+ const resultPromise = Promise.all(promises).then(() => {
362
+ if (this._rootBabylonMesh && this._rootBabylonMesh !== this._parent.customRootNode) {
363
+ this._rootBabylonMesh.setEnabled(true);
364
+ }
365
+ // Making sure we enable enough lights to have all lights together
366
+ for (const material of this._babylonScene.materials) {
367
+ const mat = material;
368
+ if (mat.maxSimultaneousLights !== undefined) {
369
+ mat.maxSimultaneousLights = Math.max(mat.maxSimultaneousLights, this._babylonScene.lights.length);
370
+ }
371
+ }
372
+ this._extensionsOnReady();
373
+ this._parent._setState(GLTFLoaderState.READY);
374
+ if (!this._skipStartAnimationStep) {
375
+ this._startAnimations();
376
+ }
377
+ return resultFunc();
378
+ });
379
+ return await resultPromise.then((result) => {
380
+ this._parent._endPerformanceCounter(loadingToReadyCounterName);
381
+ Tools.SetImmediate(() => {
382
+ if (!this._disposed) {
383
+ Promise.all(this._completePromises).then(() => {
384
+ this._parent._endPerformanceCounter(loadingToCompleteCounterName);
385
+ this._parent._setState(GLTFLoaderState.COMPLETE);
386
+ this._parent.onCompleteObservable.notifyObservers(undefined);
387
+ this._parent.onCompleteObservable.clear();
388
+ this.dispose();
389
+ }, (error) => {
390
+ this._parent.onErrorObservable.notifyObservers(error);
391
+ this._parent.onErrorObservable.clear();
392
+ this.dispose();
393
+ });
394
+ }
395
+ });
396
+ return result;
397
+ });
398
+ })
399
+ .catch((error) => {
400
+ if (!this._disposed) {
401
+ this._parent.onErrorObservable.notifyObservers(error);
402
+ this._parent.onErrorObservable.clear();
403
+ this.dispose();
404
+ }
405
+ throw error;
406
+ });
407
+ }
408
+ _loadData(data) {
409
+ this._gltf = data.json;
410
+ this._setupData();
411
+ if (data.bin) {
412
+ const buffers = this._gltf.buffers;
413
+ if (buffers && buffers[0] && !buffers[0].uri) {
414
+ const binaryBuffer = buffers[0];
415
+ if (binaryBuffer.byteLength < data.bin.byteLength - 3 || binaryBuffer.byteLength > data.bin.byteLength) {
416
+ Logger.Warn(`Binary buffer length (${binaryBuffer.byteLength}) from JSON does not match chunk length (${data.bin.byteLength})`);
417
+ }
418
+ this._bin = data.bin;
419
+ }
420
+ else {
421
+ Logger.Warn("Unexpected BIN chunk");
422
+ }
423
+ }
424
+ }
425
+ _setupData() {
426
+ ArrayItem.Assign(this._gltf.accessors);
427
+ ArrayItem.Assign(this._gltf.animations);
428
+ ArrayItem.Assign(this._gltf.buffers);
429
+ ArrayItem.Assign(this._gltf.bufferViews);
430
+ ArrayItem.Assign(this._gltf.cameras);
431
+ ArrayItem.Assign(this._gltf.images);
432
+ ArrayItem.Assign(this._gltf.materials);
433
+ ArrayItem.Assign(this._gltf.meshes);
434
+ ArrayItem.Assign(this._gltf.nodes);
435
+ ArrayItem.Assign(this._gltf.samplers);
436
+ ArrayItem.Assign(this._gltf.scenes);
437
+ ArrayItem.Assign(this._gltf.skins);
438
+ ArrayItem.Assign(this._gltf.textures);
439
+ if (this._gltf.nodes) {
440
+ const nodeParents = {};
441
+ for (const node of this._gltf.nodes) {
442
+ if (node.children) {
443
+ for (const index of node.children) {
444
+ nodeParents[index] = node.index;
445
+ }
446
+ }
447
+ }
448
+ const rootNode = this._createRootNode();
449
+ for (const node of this._gltf.nodes) {
450
+ const parentIndex = nodeParents[node.index];
451
+ node.parent = parentIndex === undefined ? rootNode : this._gltf.nodes[parentIndex];
452
+ }
453
+ }
454
+ }
455
+ async _loadExtensionsAsync() {
456
+ const extensionPromises = [];
457
+ registeredGLTFExtensions.forEach((registeredExtension, name) => {
458
+ // Don't load explicitly disabled extensions.
459
+ if (this.parent.extensionOptions[name]?.enabled === false) {
460
+ // But warn if the disabled extension is used by the model.
461
+ if (registeredExtension.isGLTFExtension && this.isExtensionUsed(name)) {
462
+ Logger.Warn(`Extension ${name} is used but has been explicitly disabled.`);
463
+ }
464
+ }
465
+ // Load loader extensions that are not a glTF extension, as well as extensions that are glTF extensions and are used by the model.
466
+ else if (!registeredExtension.isGLTFExtension || this.isExtensionUsed(name)) {
467
+ extensionPromises.push((async () => {
468
+ const extension = await registeredExtension.factory(this);
469
+ if (extension.name !== name) {
470
+ Logger.Warn(`The name of the glTF loader extension instance does not match the registered name: ${extension.name} !== ${name}`);
471
+ }
472
+ this._parent.onExtensionLoadedObservable.notifyObservers(extension);
473
+ return extension;
474
+ })());
475
+ }
476
+ });
477
+ this._extensions.push(...(await Promise.all(extensionPromises)));
478
+ this._extensions.sort((a, b) => (a.order || Number.MAX_VALUE) - (b.order || Number.MAX_VALUE));
479
+ this._parent.onExtensionLoadedObservable.clear();
480
+ if (this._gltf.extensionsRequired) {
481
+ for (const name of this._gltf.extensionsRequired) {
482
+ const available = this._extensions.some((extension) => extension.name === name && extension.enabled);
483
+ if (!available) {
484
+ if (this.parent.extensionOptions[name]?.enabled === false) {
485
+ throw new Error(`Required extension ${name} is disabled`);
486
+ }
487
+ throw new Error(`Required extension ${name} is not available`);
488
+ }
489
+ }
490
+ }
491
+ }
492
+ _createRootNode() {
493
+ if (this._parent.customRootNode !== undefined) {
494
+ this._rootBabylonMesh = this._parent.customRootNode;
495
+ return {
496
+ // eslint-disable-next-line @typescript-eslint/naming-convention
497
+ _babylonTransformNode: this._rootBabylonMesh === null ? undefined : this._rootBabylonMesh,
498
+ index: -1,
499
+ };
500
+ }
501
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
502
+ const rootMesh = new Mesh("__root__", this._babylonScene);
503
+ this._rootBabylonMesh = rootMesh;
504
+ this._rootBabylonMesh._parentContainer = this._assetContainer;
505
+ this._babylonScene._blockEntityCollection = false;
506
+ this._rootBabylonMesh.setEnabled(false);
507
+ const rootNode = {
508
+ // eslint-disable-next-line @typescript-eslint/naming-convention
509
+ _babylonTransformNode: this._rootBabylonMesh,
510
+ index: -1,
511
+ };
512
+ switch (this._parent.coordinateSystemMode) {
513
+ case GLTFLoaderCoordinateSystemMode.AUTO: {
514
+ if (!this._babylonScene.useRightHandedSystem) {
515
+ rootNode.rotation = [0, 1, 0, 0];
516
+ rootNode.scale = [1, 1, -1];
517
+ GLTFLoader._LoadTransform(rootNode, this._rootBabylonMesh);
518
+ }
519
+ break;
520
+ }
521
+ case GLTFLoaderCoordinateSystemMode.FORCE_RIGHT_HANDED: {
522
+ this._babylonScene.useRightHandedSystem = true;
523
+ break;
524
+ }
525
+ default: {
526
+ throw new Error(`Invalid coordinate system mode (${this._parent.coordinateSystemMode})`);
527
+ }
528
+ }
529
+ this._parent.onMeshLoadedObservable.notifyObservers(rootMesh);
530
+ return rootNode;
531
+ }
532
+ /**
533
+ * Loads a glTF scene.
534
+ * @param context The context when loading the asset
535
+ * @param scene The glTF scene property
536
+ * @returns A promise that resolves when the load is complete
537
+ */
538
+ // eslint-disable-next-line no-restricted-syntax, @typescript-eslint/promise-function-async
539
+ loadSceneAsync(context, scene) {
540
+ const extensionPromise = this._extensionsLoadSceneAsync(context, scene);
541
+ if (extensionPromise) {
542
+ return extensionPromise;
543
+ }
544
+ const promises = new Array();
545
+ this.logOpen(`${context} ${scene.name || ""}`);
546
+ if (scene.nodes) {
547
+ for (const index of scene.nodes) {
548
+ const node = ArrayItem.Get(`${context}/nodes/${index}`, this._gltf.nodes, index);
549
+ promises.push(this.loadNodeAsync(`/nodes/${node.index}`, node, (babylonMesh) => {
550
+ babylonMesh.parent = this._rootBabylonMesh;
551
+ }));
552
+ }
553
+ }
554
+ for (const action of this._postSceneLoadActions) {
555
+ action();
556
+ }
557
+ promises.push(this._loadAnimationsAsync());
558
+ this.logClose();
559
+ return Promise.all(promises).then(() => { });
560
+ }
561
+ _forEachPrimitive(node, callback) {
562
+ if (node._primitiveBabylonMeshes) {
563
+ for (const babylonMesh of node._primitiveBabylonMeshes) {
564
+ callback(babylonMesh);
565
+ }
566
+ }
567
+ }
568
+ _getGeometries() {
569
+ const geometries = [];
570
+ const nodes = this._gltf.nodes;
571
+ if (nodes) {
572
+ for (const node of nodes) {
573
+ this._forEachPrimitive(node, (babylonMesh) => {
574
+ const geometry = babylonMesh.geometry;
575
+ if (geometry && geometries.indexOf(geometry) === -1) {
576
+ geometries.push(geometry);
577
+ }
578
+ });
579
+ }
580
+ }
581
+ return geometries;
582
+ }
583
+ _getMeshes() {
584
+ const meshes = [];
585
+ // Root mesh is always first, if available.
586
+ if (this._rootBabylonMesh instanceof AbstractMesh) {
587
+ meshes.push(this._rootBabylonMesh);
588
+ }
589
+ const nodes = this._gltf.nodes;
590
+ if (nodes) {
591
+ for (const node of nodes) {
592
+ this._forEachPrimitive(node, (babylonMesh) => {
593
+ meshes.push(babylonMesh);
594
+ });
595
+ }
596
+ }
597
+ return meshes;
598
+ }
599
+ _getTransformNodes() {
600
+ const transformNodes = [];
601
+ const nodes = this._gltf.nodes;
602
+ if (nodes) {
603
+ for (const node of nodes) {
604
+ if (node._babylonTransformNode && node._babylonTransformNode.getClassName() === "TransformNode") {
605
+ transformNodes.push(node._babylonTransformNode);
606
+ }
607
+ if (node._babylonTransformNodeForSkin) {
608
+ transformNodes.push(node._babylonTransformNodeForSkin);
609
+ }
610
+ }
611
+ }
612
+ return transformNodes;
613
+ }
614
+ _getSkeletons() {
615
+ const skeletons = [];
616
+ const skins = this._gltf.skins;
617
+ if (skins) {
618
+ for (const skin of skins) {
619
+ if (skin._data) {
620
+ skeletons.push(skin._data.babylonSkeleton);
621
+ }
622
+ }
623
+ }
624
+ return skeletons;
625
+ }
626
+ _getAnimationGroups() {
627
+ const animationGroups = [];
628
+ const animations = this._gltf.animations;
629
+ if (animations) {
630
+ for (const animation of animations) {
631
+ if (animation._babylonAnimationGroup) {
632
+ animationGroups.push(animation._babylonAnimationGroup);
633
+ }
634
+ }
635
+ }
636
+ return animationGroups;
637
+ }
638
+ _startAnimations() {
639
+ switch (this._parent.animationStartMode) {
640
+ case GLTFLoaderAnimationStartMode.NONE: {
641
+ // do nothing
642
+ break;
643
+ }
644
+ case GLTFLoaderAnimationStartMode.FIRST: {
645
+ const babylonAnimationGroups = this._getAnimationGroups();
646
+ if (babylonAnimationGroups.length !== 0) {
647
+ babylonAnimationGroups[0].start(true);
648
+ }
649
+ break;
650
+ }
651
+ case GLTFLoaderAnimationStartMode.ALL: {
652
+ const babylonAnimationGroups = this._getAnimationGroups();
653
+ for (const babylonAnimationGroup of babylonAnimationGroups) {
654
+ babylonAnimationGroup.start(true);
655
+ }
656
+ break;
657
+ }
658
+ default: {
659
+ Logger.Error(`Invalid animation start mode (${this._parent.animationStartMode})`);
660
+ return;
661
+ }
662
+ }
663
+ }
664
+ /**
665
+ * Loads a glTF node.
666
+ * @param context The context when loading the asset
667
+ * @param node The glTF node property
668
+ * @param assign A function called synchronously after parsing the glTF properties
669
+ * @returns A promise that resolves with the loaded Babylon mesh when the load is complete
670
+ */
671
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
672
+ loadNodeAsync(context, node, assign = () => { }) {
673
+ const extensionPromise = this._extensionsLoadNodeAsync(context, node, assign);
674
+ if (extensionPromise) {
675
+ return extensionPromise;
676
+ }
677
+ if (node._babylonTransformNode) {
678
+ throw new Error(`${context}: Invalid recursive node hierarchy`);
679
+ }
680
+ const promises = new Array();
681
+ this.logOpen(`${context} ${node.name || ""}`);
682
+ const loadNode = (babylonTransformNode) => {
683
+ GLTFLoader.AddPointerMetadata(babylonTransformNode, context);
684
+ GLTFLoader._LoadTransform(node, babylonTransformNode);
685
+ if (node.camera != undefined) {
686
+ const camera = ArrayItem.Get(`${context}/camera`, this._gltf.cameras, node.camera);
687
+ promises.push(this.loadCameraAsync(`/cameras/${camera.index}`, camera, (babylonCamera) => {
688
+ babylonCamera.parent = babylonTransformNode;
689
+ if (!this._babylonScene.useRightHandedSystem) {
690
+ babylonTransformNode.scaling.x = -1; // Cancelling root node scaling for handedness so the view matrix does not end up flipped.
691
+ }
692
+ }));
693
+ }
694
+ if (node.children) {
695
+ for (const index of node.children) {
696
+ const childNode = ArrayItem.Get(`${context}/children/${index}`, this._gltf.nodes, index);
697
+ promises.push(this.loadNodeAsync(`/nodes/${childNode.index}`, childNode, (childBabylonMesh) => {
698
+ childBabylonMesh.parent = babylonTransformNode;
699
+ }));
700
+ }
701
+ }
702
+ assign(babylonTransformNode);
703
+ };
704
+ const hasMesh = node.mesh != undefined;
705
+ const hasSkin = this._parent.loadSkins && node.skin != undefined;
706
+ if (!hasMesh || hasSkin) {
707
+ const nodeName = node.name || `node${node.index}`;
708
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
709
+ const transformNode = new TransformNode(nodeName, this._babylonScene);
710
+ transformNode._parentContainer = this._assetContainer;
711
+ this._babylonScene._blockEntityCollection = false;
712
+ if (node.mesh == undefined) {
713
+ node._babylonTransformNode = transformNode;
714
+ }
715
+ else {
716
+ node._babylonTransformNodeForSkin = transformNode;
717
+ }
718
+ loadNode(transformNode);
719
+ }
720
+ if (hasMesh) {
721
+ if (hasSkin) {
722
+ // See https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins (second implementation note)
723
+ // This code path will place the skinned mesh as a sibling of the skeleton root node without loading the
724
+ // transform, which effectively ignores the transform of the skinned mesh, as per spec.
725
+ const mesh = ArrayItem.Get(`${context}/mesh`, this._gltf.meshes, node.mesh);
726
+ promises.push(this._loadMeshAsync(`/meshes/${mesh.index}`, node, mesh, (babylonTransformNode) => {
727
+ const babylonTransformNodeForSkin = node._babylonTransformNodeForSkin;
728
+ // Merge the metadata from the skin node to the skinned mesh in case a loader extension added metadata.
729
+ babylonTransformNode.metadata = deepMerge(babylonTransformNodeForSkin.metadata, babylonTransformNode.metadata || {});
730
+ const skin = ArrayItem.Get(`${context}/skin`, this._gltf.skins, node.skin);
731
+ promises.push(this._loadSkinAsync(`/skins/${skin.index}`, node, skin, (babylonSkeleton) => {
732
+ this._forEachPrimitive(node, (babylonMesh) => {
733
+ babylonMesh.skeleton = babylonSkeleton;
734
+ });
735
+ // Wait until all the nodes are parented before parenting the skinned mesh.
736
+ this._postSceneLoadActions.push(() => {
737
+ if (skin.skeleton != undefined) {
738
+ // Place the skinned mesh node as a sibling of the skeleton root node.
739
+ // Handle special case when the parent of the skeleton root is the skinned mesh.
740
+ const parentNode = ArrayItem.Get(`/skins/${skin.index}/skeleton`, this._gltf.nodes, skin.skeleton).parent;
741
+ if (node.index === parentNode.index) {
742
+ babylonTransformNode.parent = babylonTransformNodeForSkin.parent;
743
+ }
744
+ else {
745
+ babylonTransformNode.parent = parentNode._babylonTransformNode;
746
+ }
747
+ }
748
+ else {
749
+ babylonTransformNode.parent = this._rootBabylonMesh;
750
+ }
751
+ this._parent.onSkinLoadedObservable.notifyObservers({ node: babylonTransformNodeForSkin, skinnedNode: babylonTransformNode });
752
+ });
753
+ }));
754
+ }));
755
+ }
756
+ else {
757
+ const mesh = ArrayItem.Get(`${context}/mesh`, this._gltf.meshes, node.mesh);
758
+ promises.push(this._loadMeshAsync(`/meshes/${mesh.index}`, node, mesh, loadNode));
759
+ }
760
+ }
761
+ this.logClose();
762
+ return Promise.all(promises).then(() => {
763
+ this._forEachPrimitive(node, (babylonMesh) => {
764
+ const asMesh = babylonMesh;
765
+ if (!asMesh.isAnInstance && asMesh.geometry && asMesh.geometry.useBoundingInfoFromGeometry) {
766
+ // simply apply the world matrices to the bounding info - the extends are already ok
767
+ babylonMesh._updateBoundingInfo();
768
+ }
769
+ else {
770
+ babylonMesh.refreshBoundingInfo(true, true);
771
+ }
772
+ });
773
+ return node._babylonTransformNode;
774
+ });
775
+ }
776
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
777
+ _loadMeshAsync(context, node, mesh, assign) {
778
+ const primitives = mesh.primitives;
779
+ if (!primitives || !primitives.length) {
780
+ throw new Error(`${context}: Primitives are missing`);
781
+ }
782
+ if (primitives[0].index == undefined) {
783
+ ArrayItem.Assign(primitives);
784
+ }
785
+ const promises = new Array();
786
+ this.logOpen(`${context} ${mesh.name || ""}`);
787
+ const name = node.name || `node${node.index}`;
788
+ if (primitives.length === 1) {
789
+ const primitive = mesh.primitives[0];
790
+ promises.push(this._loadMeshPrimitiveAsync(`${context}/primitives/${primitive.index}`, name, node, mesh, primitive, (babylonMesh) => {
791
+ node._babylonTransformNode = babylonMesh;
792
+ node._primitiveBabylonMeshes = [babylonMesh];
793
+ }));
794
+ }
795
+ else {
796
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
797
+ node._babylonTransformNode = new TransformNode(name, this._babylonScene);
798
+ node._babylonTransformNode._parentContainer = this._assetContainer;
799
+ this._babylonScene._blockEntityCollection = false;
800
+ node._primitiveBabylonMeshes = [];
801
+ for (const primitive of primitives) {
802
+ promises.push(this._loadMeshPrimitiveAsync(`${context}/primitives/${primitive.index}`, `${name}_primitive${primitive.index}`, node, mesh, primitive, (babylonMesh) => {
803
+ babylonMesh.parent = node._babylonTransformNode;
804
+ node._primitiveBabylonMeshes.push(babylonMesh);
805
+ }));
806
+ }
807
+ }
808
+ assign(node._babylonTransformNode);
809
+ this.logClose();
810
+ return Promise.all(promises).then(() => {
811
+ return node._babylonTransformNode;
812
+ });
813
+ }
814
+ /**
815
+ * @internal Define this method to modify the default behavior when loading data for mesh primitives.
816
+ * @param context The context when loading the asset
817
+ * @param name The mesh name when loading the asset
818
+ * @param node The glTF node when loading the asset
819
+ * @param mesh The glTF mesh when loading the asset
820
+ * @param primitive The glTF mesh primitive property
821
+ * @param assign A function called synchronously after parsing the glTF properties
822
+ * @returns A promise that resolves with the loaded mesh when the load is complete or null if not handled
823
+ */
824
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
825
+ _loadMeshPrimitiveAsync(context, name, node, mesh, primitive, assign) {
826
+ const extensionPromise = this._extensionsLoadMeshPrimitiveAsync(context, name, node, mesh, primitive, assign);
827
+ if (extensionPromise) {
828
+ return extensionPromise;
829
+ }
830
+ this.logOpen(`${context}`);
831
+ const shouldInstance = this._disableInstancedMesh === 0 && this._parent.createInstances && node.skin == undefined && !mesh.primitives[0].targets;
832
+ let babylonAbstractMesh;
833
+ let promise;
834
+ if (shouldInstance && primitive._instanceData) {
835
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
836
+ babylonAbstractMesh = primitive._instanceData.babylonSourceMesh.createInstance(name);
837
+ babylonAbstractMesh._parentContainer = this._assetContainer;
838
+ this._babylonScene._blockEntityCollection = false;
839
+ promise = primitive._instanceData.promise;
840
+ }
841
+ else {
842
+ const promises = new Array();
843
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
844
+ const babylonMesh = new Mesh(name, this._babylonScene);
845
+ babylonMesh._parentContainer = this._assetContainer;
846
+ this._babylonScene._blockEntityCollection = false;
847
+ babylonMesh.sideOrientation = this._babylonScene.useRightHandedSystem ? Material.CounterClockWiseSideOrientation : Material.ClockWiseSideOrientation;
848
+ this._createMorphTargets(context, node, mesh, primitive, babylonMesh);
849
+ promises.push(this._loadVertexDataAsync(context, primitive, babylonMesh).then(async (babylonGeometry) => {
850
+ return await this._loadMorphTargetsAsync(context, primitive, babylonMesh, babylonGeometry).then(() => {
851
+ if (this._disposed) {
852
+ return;
853
+ }
854
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
855
+ babylonGeometry.applyToMesh(babylonMesh);
856
+ babylonGeometry._parentContainer = this._assetContainer;
857
+ this._babylonScene._blockEntityCollection = false;
858
+ });
859
+ }));
860
+ if (!this.parent.skipMaterials) {
861
+ const babylonDrawMode = GLTFLoader._GetDrawMode(context, primitive.mode);
862
+ if (primitive.material == undefined) {
863
+ let babylonMaterial = this._defaultBabylonMaterialData[babylonDrawMode];
864
+ if (!babylonMaterial) {
865
+ babylonMaterial = this._createDefaultMaterial("__GLTFLoader._default", babylonDrawMode);
866
+ this._parent.onMaterialLoadedObservable.notifyObservers(babylonMaterial);
867
+ this._defaultBabylonMaterialData[babylonDrawMode] = babylonMaterial;
868
+ }
869
+ babylonMesh.material = babylonMaterial;
870
+ }
871
+ else {
872
+ const material = ArrayItem.Get(`${context}/material`, this._gltf.materials, primitive.material);
873
+ promises.push(this._loadMaterialAsync(`/materials/${material.index}`, material, babylonMesh, babylonDrawMode, (babylonMaterial) => {
874
+ babylonMesh.material = babylonMaterial;
875
+ }));
876
+ }
877
+ }
878
+ promise = Promise.all(promises);
879
+ if (shouldInstance) {
880
+ primitive._instanceData = {
881
+ babylonSourceMesh: babylonMesh,
882
+ promise: promise,
883
+ };
884
+ }
885
+ babylonAbstractMesh = babylonMesh;
886
+ }
887
+ GLTFLoader.AddPointerMetadata(babylonAbstractMesh, context);
888
+ this._parent.onMeshLoadedObservable.notifyObservers(babylonAbstractMesh);
889
+ assign(babylonAbstractMesh);
890
+ this.logClose();
891
+ return promise.then(() => {
892
+ return babylonAbstractMesh;
893
+ });
894
+ }
895
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
896
+ _loadVertexDataAsync(context, primitive, babylonMesh) {
897
+ const extensionPromise = this._extensionsLoadVertexDataAsync(context, primitive, babylonMesh);
898
+ if (extensionPromise) {
899
+ return extensionPromise;
900
+ }
901
+ const attributes = primitive.attributes;
902
+ if (!attributes) {
903
+ throw new Error(`${context}: Attributes are missing`);
904
+ }
905
+ const promises = new Array();
906
+ const babylonGeometry = new Geometry(babylonMesh.name, this._babylonScene);
907
+ if (primitive.indices == undefined) {
908
+ babylonMesh.isUnIndexed = true;
909
+ }
910
+ else {
911
+ const accessor = ArrayItem.Get(`${context}/indices`, this._gltf.accessors, primitive.indices);
912
+ promises.push(this._loadIndicesAccessorAsync(`/accessors/${accessor.index}`, accessor).then((data) => {
913
+ babylonGeometry.setIndices(data);
914
+ }));
915
+ }
916
+ const loadAttribute = (name, kind, callback) => {
917
+ if (attributes[name] == undefined) {
918
+ return;
919
+ }
920
+ babylonMesh._delayInfo = babylonMesh._delayInfo || [];
921
+ if (babylonMesh._delayInfo.indexOf(kind) === -1) {
922
+ babylonMesh._delayInfo.push(kind);
923
+ }
924
+ const accessor = ArrayItem.Get(`${context}/attributes/${name}`, this._gltf.accessors, attributes[name]);
925
+ promises.push(this._loadVertexAccessorAsync(`/accessors/${accessor.index}`, accessor, kind).then((babylonVertexBuffer) => {
926
+ if (babylonVertexBuffer.getKind() === VertexBuffer.PositionKind && !this.parent.alwaysComputeBoundingBox && !babylonMesh.skeleton) {
927
+ const babylonBoundingInfo = LoadBoundingInfoFromPositionAccessor(accessor);
928
+ if (babylonBoundingInfo) {
929
+ babylonGeometry._boundingInfo = babylonBoundingInfo;
930
+ babylonGeometry.useBoundingInfoFromGeometry = true;
931
+ }
932
+ }
933
+ babylonGeometry.setVerticesBuffer(babylonVertexBuffer, accessor.count);
934
+ }));
935
+ if (kind == VertexBuffer.MatricesIndicesExtraKind) {
936
+ babylonMesh.numBoneInfluencers = 8;
937
+ }
938
+ if (callback) {
939
+ callback(accessor);
940
+ }
941
+ };
942
+ loadAttribute("POSITION", VertexBuffer.PositionKind);
943
+ loadAttribute("NORMAL", VertexBuffer.NormalKind);
944
+ loadAttribute("TANGENT", VertexBuffer.TangentKind);
945
+ loadAttribute("TEXCOORD_0", VertexBuffer.UVKind);
946
+ loadAttribute("TEXCOORD_1", VertexBuffer.UV2Kind);
947
+ loadAttribute("TEXCOORD_2", VertexBuffer.UV3Kind);
948
+ loadAttribute("TEXCOORD_3", VertexBuffer.UV4Kind);
949
+ loadAttribute("TEXCOORD_4", VertexBuffer.UV5Kind);
950
+ loadAttribute("TEXCOORD_5", VertexBuffer.UV6Kind);
951
+ loadAttribute("JOINTS_0", VertexBuffer.MatricesIndicesKind);
952
+ loadAttribute("WEIGHTS_0", VertexBuffer.MatricesWeightsKind);
953
+ loadAttribute("JOINTS_1", VertexBuffer.MatricesIndicesExtraKind);
954
+ loadAttribute("WEIGHTS_1", VertexBuffer.MatricesWeightsExtraKind);
955
+ loadAttribute("COLOR_0", VertexBuffer.ColorKind, (accessor) => {
956
+ if (accessor.type === "VEC4" /* AccessorType.VEC4 */) {
957
+ babylonMesh.hasVertexAlpha = true;
958
+ }
959
+ });
960
+ return Promise.all(promises).then(() => {
961
+ return babylonGeometry;
962
+ });
963
+ }
964
+ _createMorphTargets(context, node, mesh, primitive, babylonMesh) {
965
+ if (!primitive.targets || !this._parent.loadMorphTargets) {
966
+ return;
967
+ }
968
+ if (node._numMorphTargets == undefined) {
969
+ node._numMorphTargets = primitive.targets.length;
970
+ }
971
+ else if (primitive.targets.length !== node._numMorphTargets) {
972
+ throw new Error(`${context}: Primitives do not have the same number of targets`);
973
+ }
974
+ const targetNames = mesh.extras ? mesh.extras.targetNames : null;
975
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
976
+ babylonMesh.morphTargetManager = new MorphTargetManager(this._babylonScene);
977
+ babylonMesh.morphTargetManager._parentContainer = this._assetContainer;
978
+ this._babylonScene._blockEntityCollection = false;
979
+ babylonMesh.morphTargetManager.areUpdatesFrozen = true;
980
+ for (let index = 0; index < primitive.targets.length; index++) {
981
+ const weight = node.weights ? node.weights[index] : mesh.weights ? mesh.weights[index] : 0;
982
+ const name = targetNames ? targetNames[index] : `morphTarget${index}`;
983
+ babylonMesh.morphTargetManager.addTarget(new MorphTarget(name, weight, babylonMesh.getScene()));
984
+ // TODO: tell the target whether it has positions, normals, tangents
985
+ }
986
+ }
987
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
988
+ _loadMorphTargetsAsync(context, primitive, babylonMesh, babylonGeometry) {
989
+ if (!primitive.targets || !this._parent.loadMorphTargets) {
990
+ return Promise.resolve();
991
+ }
992
+ const promises = new Array();
993
+ const morphTargetManager = babylonMesh.morphTargetManager;
994
+ for (let index = 0; index < morphTargetManager.numTargets; index++) {
995
+ const babylonMorphTarget = morphTargetManager.getTarget(index);
996
+ promises.push(this._loadMorphTargetVertexDataAsync(`${context}/targets/${index}`, babylonGeometry, primitive.targets[index], babylonMorphTarget));
997
+ }
998
+ return Promise.all(promises).then(() => {
999
+ morphTargetManager.areUpdatesFrozen = false;
1000
+ });
1001
+ }
1002
+ async _loadMorphTargetVertexDataAsync(context, babylonGeometry, attributes, babylonMorphTarget) {
1003
+ const promises = new Array();
1004
+ const loadAttribute = (attribute, kind, setData) => {
1005
+ if (attributes[attribute] == undefined) {
1006
+ return;
1007
+ }
1008
+ const babylonVertexBuffer = babylonGeometry.getVertexBuffer(kind);
1009
+ if (!babylonVertexBuffer) {
1010
+ return;
1011
+ }
1012
+ const accessor = ArrayItem.Get(`${context}/${attribute}`, this._gltf.accessors, attributes[attribute]);
1013
+ promises.push(this._loadFloatAccessorAsync(`/accessors/${accessor.index}`, accessor).then((data) => {
1014
+ setData(babylonVertexBuffer, data);
1015
+ }));
1016
+ };
1017
+ loadAttribute("POSITION", VertexBuffer.PositionKind, (babylonVertexBuffer, data) => {
1018
+ const positions = new Float32Array(data.length);
1019
+ babylonVertexBuffer.forEach(data.length, (value, index) => {
1020
+ positions[index] = data[index] + value;
1021
+ });
1022
+ babylonMorphTarget.setPositions(positions);
1023
+ });
1024
+ loadAttribute("NORMAL", VertexBuffer.NormalKind, (babylonVertexBuffer, data) => {
1025
+ const normals = new Float32Array(data.length);
1026
+ babylonVertexBuffer.forEach(normals.length, (value, index) => {
1027
+ normals[index] = data[index] + value;
1028
+ });
1029
+ babylonMorphTarget.setNormals(normals);
1030
+ });
1031
+ loadAttribute("TANGENT", VertexBuffer.TangentKind, (babylonVertexBuffer, data) => {
1032
+ const tangents = new Float32Array((data.length / 3) * 4);
1033
+ let dataIndex = 0;
1034
+ babylonVertexBuffer.forEach((data.length / 3) * 4, (value, index) => {
1035
+ // Tangent data for morph targets is stored as xyz delta.
1036
+ // The vertexData.tangent is stored as xyzw.
1037
+ // So we need to skip every fourth vertexData.tangent.
1038
+ if ((index + 1) % 4 !== 0) {
1039
+ tangents[dataIndex] = data[dataIndex] + value;
1040
+ dataIndex++;
1041
+ }
1042
+ });
1043
+ babylonMorphTarget.setTangents(tangents);
1044
+ });
1045
+ loadAttribute("TEXCOORD_0", VertexBuffer.UVKind, (babylonVertexBuffer, data) => {
1046
+ const uvs = new Float32Array(data.length);
1047
+ babylonVertexBuffer.forEach(data.length, (value, index) => {
1048
+ uvs[index] = data[index] + value;
1049
+ });
1050
+ babylonMorphTarget.setUVs(uvs);
1051
+ });
1052
+ loadAttribute("TEXCOORD_1", VertexBuffer.UV2Kind, (babylonVertexBuffer, data) => {
1053
+ const uvs = new Float32Array(data.length);
1054
+ babylonVertexBuffer.forEach(data.length, (value, index) => {
1055
+ uvs[index] = data[index] + value;
1056
+ });
1057
+ babylonMorphTarget.setUV2s(uvs);
1058
+ });
1059
+ loadAttribute("COLOR_0", VertexBuffer.ColorKind, (babylonVertexBuffer, data) => {
1060
+ let colors = null;
1061
+ const componentSize = babylonVertexBuffer.getSize();
1062
+ if (componentSize === 3) {
1063
+ colors = new Float32Array((data.length / 3) * 4);
1064
+ babylonVertexBuffer.forEach(data.length, (value, index) => {
1065
+ const pixid = Math.floor(index / 3);
1066
+ const channel = index % 3;
1067
+ colors[4 * pixid + channel] = data[3 * pixid + channel] + value;
1068
+ });
1069
+ for (let i = 0; i < data.length / 3; ++i) {
1070
+ colors[4 * i + 3] = 1;
1071
+ }
1072
+ }
1073
+ else if (componentSize === 4) {
1074
+ colors = new Float32Array(data.length);
1075
+ babylonVertexBuffer.forEach(data.length, (value, index) => {
1076
+ colors[index] = data[index] + value;
1077
+ });
1078
+ }
1079
+ else {
1080
+ throw new Error(`${context}: Invalid number of components (${componentSize}) for COLOR_0 attribute`);
1081
+ }
1082
+ babylonMorphTarget.setColors(colors);
1083
+ });
1084
+ return await Promise.all(promises).then(() => { });
1085
+ }
1086
+ static _LoadTransform(node, babylonNode) {
1087
+ // Ignore the TRS of skinned nodes.
1088
+ // See https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins (second implementation note)
1089
+ if (node.skin != undefined) {
1090
+ return;
1091
+ }
1092
+ let position = Vector3.Zero();
1093
+ let rotation = Quaternion.Identity();
1094
+ let scaling = Vector3.One();
1095
+ if (node.matrix) {
1096
+ const matrix = Matrix.FromArray(node.matrix);
1097
+ matrix.decompose(scaling, rotation, position);
1098
+ }
1099
+ else {
1100
+ if (node.translation) {
1101
+ position = Vector3.FromArray(node.translation);
1102
+ }
1103
+ if (node.rotation) {
1104
+ rotation = Quaternion.FromArray(node.rotation);
1105
+ }
1106
+ if (node.scale) {
1107
+ scaling = Vector3.FromArray(node.scale);
1108
+ }
1109
+ }
1110
+ babylonNode.position = position;
1111
+ babylonNode.rotationQuaternion = rotation;
1112
+ babylonNode.scaling = scaling;
1113
+ }
1114
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
1115
+ _loadSkinAsync(context, node, skin, assign) {
1116
+ if (!this._parent.loadSkins) {
1117
+ return Promise.resolve();
1118
+ }
1119
+ const extensionPromise = this._extensionsLoadSkinAsync(context, node, skin);
1120
+ if (extensionPromise) {
1121
+ return extensionPromise;
1122
+ }
1123
+ if (skin._data) {
1124
+ assign(skin._data.babylonSkeleton);
1125
+ return skin._data.promise;
1126
+ }
1127
+ const skeletonId = `skeleton${skin.index}`;
1128
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
1129
+ const babylonSkeleton = new Skeleton(skin.name || skeletonId, skeletonId, this._babylonScene);
1130
+ babylonSkeleton._parentContainer = this._assetContainer;
1131
+ this._babylonScene._blockEntityCollection = false;
1132
+ this._loadBones(context, skin, babylonSkeleton);
1133
+ const promise = this._loadSkinInverseBindMatricesDataAsync(context, skin).then((inverseBindMatricesData) => {
1134
+ this._updateBoneMatrices(babylonSkeleton, inverseBindMatricesData);
1135
+ });
1136
+ skin._data = {
1137
+ babylonSkeleton: babylonSkeleton,
1138
+ promise: promise,
1139
+ };
1140
+ assign(babylonSkeleton);
1141
+ return promise;
1142
+ }
1143
+ _loadBones(context, skin, babylonSkeleton) {
1144
+ if (skin.skeleton == undefined || this._parent.alwaysComputeSkeletonRootNode) {
1145
+ const rootNode = this._findSkeletonRootNode(`${context}/joints`, skin.joints);
1146
+ if (rootNode) {
1147
+ if (skin.skeleton === undefined) {
1148
+ skin.skeleton = rootNode.index;
1149
+ }
1150
+ else {
1151
+ const isParent = (a, b) => {
1152
+ for (; b.parent; b = b.parent) {
1153
+ if (b.parent === a) {
1154
+ return true;
1155
+ }
1156
+ }
1157
+ return false;
1158
+ };
1159
+ const skeletonNode = ArrayItem.Get(`${context}/skeleton`, this._gltf.nodes, skin.skeleton);
1160
+ if (skeletonNode !== rootNode && !isParent(skeletonNode, rootNode)) {
1161
+ Logger.Warn(`${context}/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root`);
1162
+ skin.skeleton = rootNode.index;
1163
+ }
1164
+ }
1165
+ }
1166
+ else {
1167
+ Logger.Warn(`${context}: Failed to find common root`);
1168
+ }
1169
+ }
1170
+ const babylonBones = {};
1171
+ for (const index of skin.joints) {
1172
+ const node = ArrayItem.Get(`${context}/joints/${index}`, this._gltf.nodes, index);
1173
+ this._loadBone(node, skin, babylonSkeleton, babylonBones);
1174
+ }
1175
+ }
1176
+ _findSkeletonRootNode(context, joints) {
1177
+ if (joints.length === 0) {
1178
+ return null;
1179
+ }
1180
+ const paths = {};
1181
+ for (const index of joints) {
1182
+ const path = [];
1183
+ let node = ArrayItem.Get(`${context}/${index}`, this._gltf.nodes, index);
1184
+ while (node.index !== -1) {
1185
+ path.unshift(node);
1186
+ node = node.parent;
1187
+ }
1188
+ paths[index] = path;
1189
+ }
1190
+ let rootNode = null;
1191
+ for (let i = 0;; ++i) {
1192
+ let path = paths[joints[0]];
1193
+ if (i >= path.length) {
1194
+ return rootNode;
1195
+ }
1196
+ const node = path[i];
1197
+ for (let j = 1; j < joints.length; ++j) {
1198
+ path = paths[joints[j]];
1199
+ if (i >= path.length || node !== path[i]) {
1200
+ return rootNode;
1201
+ }
1202
+ }
1203
+ rootNode = node;
1204
+ }
1205
+ }
1206
+ _loadBone(node, skin, babylonSkeleton, babylonBones) {
1207
+ node._isJoint = true;
1208
+ let babylonBone = babylonBones[node.index];
1209
+ if (babylonBone) {
1210
+ return babylonBone;
1211
+ }
1212
+ let parentBabylonBone = null;
1213
+ if (node.index !== skin.skeleton) {
1214
+ if (node.parent && node.parent.index !== -1) {
1215
+ parentBabylonBone = this._loadBone(node.parent, skin, babylonSkeleton, babylonBones);
1216
+ }
1217
+ else if (skin.skeleton !== undefined) {
1218
+ Logger.Warn(`/skins/${skin.index}/skeleton: Skeleton node is not a common root`);
1219
+ }
1220
+ }
1221
+ const boneIndex = skin.joints.indexOf(node.index);
1222
+ babylonBone = new Bone(node.name || `joint${node.index}`, babylonSkeleton, parentBabylonBone, this._getNodeMatrix(node), null, null, boneIndex);
1223
+ babylonBones[node.index] = babylonBone;
1224
+ // Wait until the scene is loaded to ensure the transform nodes are loaded.
1225
+ this._postSceneLoadActions.push(() => {
1226
+ // Link the Babylon bone with the corresponding Babylon transform node.
1227
+ // A glTF joint is a pointer to a glTF node in the glTF node hierarchy similar to Unity3D.
1228
+ babylonBone.linkTransformNode(node._babylonTransformNode);
1229
+ });
1230
+ return babylonBone;
1231
+ }
1232
+ _loadSkinInverseBindMatricesDataAsync(context, skin) {
1233
+ if (skin.inverseBindMatrices == undefined) {
1234
+ return Promise.resolve(null);
1235
+ }
1236
+ const accessor = ArrayItem.Get(`${context}/inverseBindMatrices`, this._gltf.accessors, skin.inverseBindMatrices);
1237
+ return this._loadFloatAccessorAsync(`/accessors/${accessor.index}`, accessor);
1238
+ }
1239
+ _updateBoneMatrices(babylonSkeleton, inverseBindMatricesData) {
1240
+ for (const babylonBone of babylonSkeleton.bones) {
1241
+ const baseMatrix = Matrix.Identity();
1242
+ const boneIndex = babylonBone._index;
1243
+ if (inverseBindMatricesData && boneIndex !== -1) {
1244
+ Matrix.FromArrayToRef(inverseBindMatricesData, boneIndex * 16, baseMatrix);
1245
+ baseMatrix.invertToRef(baseMatrix);
1246
+ }
1247
+ const babylonParentBone = babylonBone.getParent();
1248
+ if (babylonParentBone) {
1249
+ baseMatrix.multiplyToRef(babylonParentBone.getAbsoluteInverseBindMatrix(), baseMatrix);
1250
+ }
1251
+ babylonBone.updateMatrix(baseMatrix, false, false);
1252
+ babylonBone._updateAbsoluteBindMatrices(undefined, false);
1253
+ }
1254
+ }
1255
+ _getNodeMatrix(node) {
1256
+ return node.matrix
1257
+ ? Matrix.FromArray(node.matrix)
1258
+ : Matrix.Compose(node.scale ? Vector3.FromArray(node.scale) : Vector3.One(), node.rotation ? Quaternion.FromArray(node.rotation) : Quaternion.Identity(), node.translation ? Vector3.FromArray(node.translation) : Vector3.Zero());
1259
+ }
1260
+ /**
1261
+ * Loads a glTF camera.
1262
+ * @param context The context when loading the asset
1263
+ * @param camera The glTF camera property
1264
+ * @param assign A function called synchronously after parsing the glTF properties
1265
+ * @returns A promise that resolves with the loaded Babylon camera when the load is complete
1266
+ */
1267
+ loadCameraAsync(context, camera, assign = () => { }) {
1268
+ const extensionPromise = this._extensionsLoadCameraAsync(context, camera, assign);
1269
+ if (extensionPromise) {
1270
+ return extensionPromise;
1271
+ }
1272
+ const promises = new Array();
1273
+ this.logOpen(`${context} ${camera.name || ""}`);
1274
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
1275
+ const babylonCamera = new FreeCamera(camera.name || `camera${camera.index}`, Vector3.Zero(), this._babylonScene, false);
1276
+ babylonCamera._parentContainer = this._assetContainer;
1277
+ this._babylonScene._blockEntityCollection = false;
1278
+ camera._babylonCamera = babylonCamera;
1279
+ // glTF cameras look towards the local -Z axis.
1280
+ babylonCamera.setTarget(new Vector3(0, 0, -1));
1281
+ switch (camera.type) {
1282
+ case "perspective" /* CameraType.PERSPECTIVE */: {
1283
+ const perspective = camera.perspective;
1284
+ if (!perspective) {
1285
+ throw new Error(`${context}: Camera perspective properties are missing`);
1286
+ }
1287
+ babylonCamera.fov = perspective.yfov;
1288
+ babylonCamera.minZ = perspective.znear;
1289
+ babylonCamera.maxZ = perspective.zfar || 0;
1290
+ break;
1291
+ }
1292
+ case "orthographic" /* CameraType.ORTHOGRAPHIC */: {
1293
+ if (!camera.orthographic) {
1294
+ throw new Error(`${context}: Camera orthographic properties are missing`);
1295
+ }
1296
+ babylonCamera.mode = Camera.ORTHOGRAPHIC_CAMERA;
1297
+ babylonCamera.orthoLeft = -camera.orthographic.xmag;
1298
+ babylonCamera.orthoRight = camera.orthographic.xmag;
1299
+ babylonCamera.orthoBottom = -camera.orthographic.ymag;
1300
+ babylonCamera.orthoTop = camera.orthographic.ymag;
1301
+ babylonCamera.minZ = camera.orthographic.znear;
1302
+ babylonCamera.maxZ = camera.orthographic.zfar;
1303
+ break;
1304
+ }
1305
+ default: {
1306
+ throw new Error(`${context}: Invalid camera type (${camera.type})`);
1307
+ }
1308
+ }
1309
+ GLTFLoader.AddPointerMetadata(babylonCamera, context);
1310
+ this._parent.onCameraLoadedObservable.notifyObservers(babylonCamera);
1311
+ assign(babylonCamera);
1312
+ this.logClose();
1313
+ return Promise.all(promises).then(() => {
1314
+ return babylonCamera;
1315
+ });
1316
+ }
1317
+ _loadAnimationsAsync() {
1318
+ this._parent._startPerformanceCounter("Load animations");
1319
+ const animations = this._gltf.animations;
1320
+ if (!animations) {
1321
+ return Promise.resolve();
1322
+ }
1323
+ const promises = new Array();
1324
+ for (let index = 0; index < animations.length; index++) {
1325
+ const animation = animations[index];
1326
+ promises.push(this.loadAnimationAsync(`/animations/${animation.index}`, animation).then((animationGroup) => {
1327
+ // Delete the animation group if it ended up not having any animations in it.
1328
+ if (animationGroup.targetedAnimations.length === 0) {
1329
+ animationGroup.dispose();
1330
+ }
1331
+ }));
1332
+ }
1333
+ return Promise.all(promises).then(() => {
1334
+ this._parent._endPerformanceCounter("Load animations");
1335
+ });
1336
+ }
1337
+ /**
1338
+ * Loads a glTF animation.
1339
+ * @param context The context when loading the asset
1340
+ * @param animation The glTF animation property
1341
+ * @returns A promise that resolves with the loaded Babylon animation group when the load is complete
1342
+ */
1343
+ loadAnimationAsync(context, animation) {
1344
+ this._parent._startPerformanceCounter("Load animation");
1345
+ const promise = this._extensionsLoadAnimationAsync(context, animation);
1346
+ if (promise) {
1347
+ return promise;
1348
+ }
1349
+ // eslint-disable-next-line @typescript-eslint/naming-convention
1350
+ return LazyAnimationGroupModulePromise.value.then(({ AnimationGroup }) => {
1351
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
1352
+ const babylonAnimationGroup = new AnimationGroup(animation.name || `animation${animation.index}`, this._babylonScene);
1353
+ babylonAnimationGroup._parentContainer = this._assetContainer;
1354
+ this._babylonScene._blockEntityCollection = false;
1355
+ animation._babylonAnimationGroup = babylonAnimationGroup;
1356
+ const promises = new Array();
1357
+ ArrayItem.Assign(animation.channels);
1358
+ ArrayItem.Assign(animation.samplers);
1359
+ for (const channel of animation.channels) {
1360
+ promises.push(this._loadAnimationChannelAsync(`${context}/channels/${channel.index}`, context, animation, channel, (babylonTarget, babylonAnimation) => {
1361
+ babylonTarget.animations = babylonTarget.animations || [];
1362
+ babylonTarget.animations.push(babylonAnimation);
1363
+ babylonAnimationGroup.addTargetedAnimation(babylonAnimation, babylonTarget);
1364
+ }));
1365
+ }
1366
+ this._parent._endPerformanceCounter("Load animation");
1367
+ return Promise.all(promises).then(() => {
1368
+ babylonAnimationGroup.normalize(0);
1369
+ return babylonAnimationGroup;
1370
+ });
1371
+ });
1372
+ }
1373
+ /**
1374
+ * @hidden
1375
+ * Loads a glTF animation channel.
1376
+ * @param context The context when loading the asset
1377
+ * @param animationContext The context of the animation when loading the asset
1378
+ * @param animation The glTF animation property
1379
+ * @param channel The glTF animation channel property
1380
+ * @param onLoad Called for each animation loaded
1381
+ * @returns A void promise that resolves when the load is complete
1382
+ */
1383
+ _loadAnimationChannelAsync(context, animationContext, animation, channel, onLoad) {
1384
+ const promise = this._extensionsLoadAnimationChannelAsync(context, animationContext, animation, channel, onLoad);
1385
+ if (promise) {
1386
+ return promise;
1387
+ }
1388
+ if (channel.target.node == undefined) {
1389
+ return Promise.resolve();
1390
+ }
1391
+ const targetNode = ArrayItem.Get(`${context}/target/node`, this._gltf.nodes, channel.target.node);
1392
+ const channelTargetPath = channel.target.path;
1393
+ const pathIsWeights = channelTargetPath === "weights" /* AnimationChannelTargetPath.WEIGHTS */;
1394
+ // Ignore animations that have no animation targets.
1395
+ if ((pathIsWeights && !targetNode._numMorphTargets) || (!pathIsWeights && !targetNode._babylonTransformNode)) {
1396
+ return Promise.resolve();
1397
+ }
1398
+ // Don't load node animations if disabled.
1399
+ if (!this._parent.loadNodeAnimations && !pathIsWeights && !targetNode._isJoint) {
1400
+ return Promise.resolve();
1401
+ }
1402
+ // async-load the animation sampler to provide the interpolation of the channelTargetPath
1403
+ return LazyLoaderAnimationModulePromise.value.then(() => {
1404
+ let properties;
1405
+ switch (channelTargetPath) {
1406
+ case "translation" /* AnimationChannelTargetPath.TRANSLATION */: {
1407
+ properties = GetMappingForKey("/nodes/{}/translation")?.interpolation;
1408
+ break;
1409
+ }
1410
+ case "rotation" /* AnimationChannelTargetPath.ROTATION */: {
1411
+ properties = GetMappingForKey("/nodes/{}/rotation")?.interpolation;
1412
+ break;
1413
+ }
1414
+ case "scale" /* AnimationChannelTargetPath.SCALE */: {
1415
+ properties = GetMappingForKey("/nodes/{}/scale")?.interpolation;
1416
+ break;
1417
+ }
1418
+ case "weights" /* AnimationChannelTargetPath.WEIGHTS */: {
1419
+ properties = GetMappingForKey("/nodes/{}/weights")?.interpolation;
1420
+ break;
1421
+ }
1422
+ default: {
1423
+ throw new Error(`${context}/target/path: Invalid value (${channel.target.path})`);
1424
+ }
1425
+ }
1426
+ // stay safe
1427
+ if (!properties) {
1428
+ throw new Error(`${context}/target/path: Could not find interpolation properties for target path (${channel.target.path})`);
1429
+ }
1430
+ const targetInfo = {
1431
+ object: targetNode,
1432
+ info: properties,
1433
+ };
1434
+ return this._loadAnimationChannelFromTargetInfoAsync(context, animationContext, animation, channel, targetInfo, onLoad);
1435
+ });
1436
+ }
1437
+ /**
1438
+ * @hidden
1439
+ * Loads a glTF animation channel.
1440
+ * @param context The context when loading the asset
1441
+ * @param animationContext The context of the animation when loading the asset
1442
+ * @param animation The glTF animation property
1443
+ * @param channel The glTF animation channel property
1444
+ * @param targetInfo The glTF target and properties
1445
+ * @param onLoad Called for each animation loaded
1446
+ * @returns A void promise that resolves when the load is complete
1447
+ */
1448
+ _loadAnimationChannelFromTargetInfoAsync(context, animationContext, animation, channel, targetInfo, onLoad) {
1449
+ const fps = this.parent.targetFps;
1450
+ const invfps = 1 / fps;
1451
+ const sampler = ArrayItem.Get(`${context}/sampler`, animation.samplers, channel.sampler);
1452
+ return this._loadAnimationSamplerAsync(`${animationContext}/samplers/${channel.sampler}`, sampler).then((data) => {
1453
+ let numAnimations = 0;
1454
+ const target = targetInfo.object;
1455
+ const propertyInfos = targetInfo.info;
1456
+ // Extract the corresponding values from the read value.
1457
+ // GLTF values may be dispatched to several Babylon properties.
1458
+ // For example, baseColorFactor [`r`, `g`, `b`, `a`] is dispatched to
1459
+ // - albedoColor as Color3(`r`, `g`, `b`)
1460
+ // - alpha as `a`
1461
+ for (const propertyInfo of propertyInfos) {
1462
+ const stride = propertyInfo.getStride(target);
1463
+ const input = data.input;
1464
+ const output = data.output;
1465
+ const keys = new Array(input.length);
1466
+ let outputOffset = 0;
1467
+ switch (data.interpolation) {
1468
+ case "STEP" /* AnimationSamplerInterpolation.STEP */: {
1469
+ for (let index = 0; index < input.length; index++) {
1470
+ const value = propertyInfo.getValue(target, output, outputOffset, 1);
1471
+ outputOffset += stride;
1472
+ keys[index] = {
1473
+ frame: input[index] * fps,
1474
+ value: value,
1475
+ interpolation: 1 /* AnimationKeyInterpolation.STEP */,
1476
+ };
1477
+ }
1478
+ break;
1479
+ }
1480
+ case "CUBICSPLINE" /* AnimationSamplerInterpolation.CUBICSPLINE */: {
1481
+ for (let index = 0; index < input.length; index++) {
1482
+ const inTangent = propertyInfo.getValue(target, output, outputOffset, invfps);
1483
+ outputOffset += stride;
1484
+ const value = propertyInfo.getValue(target, output, outputOffset, 1);
1485
+ outputOffset += stride;
1486
+ const outTangent = propertyInfo.getValue(target, output, outputOffset, invfps);
1487
+ outputOffset += stride;
1488
+ keys[index] = {
1489
+ frame: input[index] * fps,
1490
+ inTangent: inTangent,
1491
+ value: value,
1492
+ outTangent: outTangent,
1493
+ };
1494
+ }
1495
+ break;
1496
+ }
1497
+ case "LINEAR" /* AnimationSamplerInterpolation.LINEAR */: {
1498
+ for (let index = 0; index < input.length; index++) {
1499
+ const value = propertyInfo.getValue(target, output, outputOffset, 1);
1500
+ outputOffset += stride;
1501
+ keys[index] = {
1502
+ frame: input[index] * fps,
1503
+ value: value,
1504
+ };
1505
+ }
1506
+ break;
1507
+ }
1508
+ }
1509
+ if (outputOffset > 0) {
1510
+ const name = `${animation.name || `animation${animation.index}`}_channel${channel.index}_${numAnimations}`;
1511
+ const babylonAnimations = propertyInfo.buildAnimations(target, name, fps, keys);
1512
+ for (const babylonAnimation of babylonAnimations) {
1513
+ numAnimations++;
1514
+ onLoad(babylonAnimation.babylonAnimatable, babylonAnimation.babylonAnimation);
1515
+ }
1516
+ }
1517
+ }
1518
+ });
1519
+ }
1520
+ _loadAnimationSamplerAsync(context, sampler) {
1521
+ if (sampler._data) {
1522
+ return sampler._data;
1523
+ }
1524
+ const interpolation = sampler.interpolation || "LINEAR" /* AnimationSamplerInterpolation.LINEAR */;
1525
+ switch (interpolation) {
1526
+ case "STEP" /* AnimationSamplerInterpolation.STEP */:
1527
+ case "LINEAR" /* AnimationSamplerInterpolation.LINEAR */:
1528
+ case "CUBICSPLINE" /* AnimationSamplerInterpolation.CUBICSPLINE */: {
1529
+ break;
1530
+ }
1531
+ default: {
1532
+ throw new Error(`${context}/interpolation: Invalid value (${sampler.interpolation})`);
1533
+ }
1534
+ }
1535
+ const inputAccessor = ArrayItem.Get(`${context}/input`, this._gltf.accessors, sampler.input);
1536
+ const outputAccessor = ArrayItem.Get(`${context}/output`, this._gltf.accessors, sampler.output);
1537
+ sampler._data = Promise.all([
1538
+ this._loadFloatAccessorAsync(`/accessors/${inputAccessor.index}`, inputAccessor),
1539
+ this._loadFloatAccessorAsync(`/accessors/${outputAccessor.index}`, outputAccessor),
1540
+ ]).then(([inputData, outputData]) => {
1541
+ return {
1542
+ input: inputData,
1543
+ interpolation: interpolation,
1544
+ output: outputData,
1545
+ };
1546
+ });
1547
+ return sampler._data;
1548
+ }
1549
+ /**
1550
+ * Loads a glTF buffer.
1551
+ * @param context The context when loading the asset
1552
+ * @param buffer The glTF buffer property
1553
+ * @param byteOffset The byte offset to use
1554
+ * @param byteLength The byte length to use
1555
+ * @returns A promise that resolves with the loaded data when the load is complete
1556
+ */
1557
+ loadBufferAsync(context, buffer, byteOffset, byteLength) {
1558
+ const extensionPromise = this._extensionsLoadBufferAsync(context, buffer, byteOffset, byteLength);
1559
+ if (extensionPromise) {
1560
+ return extensionPromise;
1561
+ }
1562
+ if (!buffer._data) {
1563
+ if (buffer.uri) {
1564
+ buffer._data = this.loadUriAsync(`${context}/uri`, buffer, buffer.uri);
1565
+ }
1566
+ else {
1567
+ if (!this._bin) {
1568
+ throw new Error(`${context}: Uri is missing or the binary glTF is missing its binary chunk`);
1569
+ }
1570
+ buffer._data = this._bin.readAsync(0, buffer.byteLength);
1571
+ }
1572
+ }
1573
+ return buffer._data.then((data) => {
1574
+ try {
1575
+ return new Uint8Array(data.buffer, data.byteOffset + byteOffset, byteLength);
1576
+ }
1577
+ catch (e) {
1578
+ throw new Error(`${context}: ${e.message}`, { cause: e });
1579
+ }
1580
+ });
1581
+ }
1582
+ /**
1583
+ * Loads a glTF buffer view.
1584
+ * @param context The context when loading the asset
1585
+ * @param bufferView The glTF buffer view property
1586
+ * @returns A promise that resolves with the loaded data when the load is complete
1587
+ */
1588
+ loadBufferViewAsync(context, bufferView) {
1589
+ const extensionPromise = this._extensionsLoadBufferViewAsync(context, bufferView);
1590
+ if (extensionPromise) {
1591
+ return extensionPromise;
1592
+ }
1593
+ if (bufferView._data) {
1594
+ return bufferView._data;
1595
+ }
1596
+ const buffer = ArrayItem.Get(`${context}/buffer`, this._gltf.buffers, bufferView.buffer);
1597
+ bufferView._data = this.loadBufferAsync(`/buffers/${buffer.index}`, buffer, bufferView.byteOffset || 0, bufferView.byteLength);
1598
+ return bufferView._data;
1599
+ }
1600
+ _loadAccessorAsync(context, accessor, constructor) {
1601
+ if (accessor._data) {
1602
+ return accessor._data;
1603
+ }
1604
+ const numComponents = GLTFLoader._GetNumComponents(context, accessor.type);
1605
+ const byteStride = numComponents * VertexBuffer.GetTypeByteLength(accessor.componentType);
1606
+ const length = numComponents * accessor.count;
1607
+ if (accessor.bufferView == undefined) {
1608
+ accessor._data = Promise.resolve(new constructor(length));
1609
+ }
1610
+ else {
1611
+ const bufferView = ArrayItem.Get(`${context}/bufferView`, this._gltf.bufferViews, accessor.bufferView);
1612
+ accessor._data = this.loadBufferViewAsync(`/bufferViews/${bufferView.index}`, bufferView).then((data) => {
1613
+ if (accessor.componentType === 5126 /* AccessorComponentType.FLOAT */ && !accessor.normalized && (!bufferView.byteStride || bufferView.byteStride === byteStride)) {
1614
+ return GLTFLoader._GetTypedArray(context, accessor.componentType, data, accessor.byteOffset, length);
1615
+ }
1616
+ else {
1617
+ const typedArray = new constructor(length);
1618
+ VertexBuffer.ForEach(data, accessor.byteOffset || 0, bufferView.byteStride || byteStride, numComponents, accessor.componentType, typedArray.length, accessor.normalized || false, (value, index) => {
1619
+ typedArray[index] = value;
1620
+ });
1621
+ return typedArray;
1622
+ }
1623
+ });
1624
+ }
1625
+ if (accessor.sparse) {
1626
+ const sparse = accessor.sparse;
1627
+ accessor._data = accessor._data.then((data) => {
1628
+ const typedArray = data;
1629
+ const indicesBufferView = ArrayItem.Get(`${context}/sparse/indices/bufferView`, this._gltf.bufferViews, sparse.indices.bufferView);
1630
+ const valuesBufferView = ArrayItem.Get(`${context}/sparse/values/bufferView`, this._gltf.bufferViews, sparse.values.bufferView);
1631
+ return Promise.all([
1632
+ this.loadBufferViewAsync(`/bufferViews/${indicesBufferView.index}`, indicesBufferView),
1633
+ this.loadBufferViewAsync(`/bufferViews/${valuesBufferView.index}`, valuesBufferView),
1634
+ ]).then(([indicesData, valuesData]) => {
1635
+ const indices = GLTFLoader._GetTypedArray(`${context}/sparse/indices`, sparse.indices.componentType, indicesData, sparse.indices.byteOffset, sparse.count);
1636
+ const sparseLength = numComponents * sparse.count;
1637
+ let values;
1638
+ if (accessor.componentType === 5126 /* AccessorComponentType.FLOAT */ && !accessor.normalized) {
1639
+ values = GLTFLoader._GetTypedArray(`${context}/sparse/values`, accessor.componentType, valuesData, sparse.values.byteOffset, sparseLength);
1640
+ }
1641
+ else {
1642
+ const sparseData = GLTFLoader._GetTypedArray(`${context}/sparse/values`, accessor.componentType, valuesData, sparse.values.byteOffset, sparseLength);
1643
+ values = new constructor(sparseLength);
1644
+ VertexBuffer.ForEach(sparseData, 0, byteStride, numComponents, accessor.componentType, values.length, accessor.normalized || false, (value, index) => {
1645
+ values[index] = value;
1646
+ });
1647
+ }
1648
+ let valuesIndex = 0;
1649
+ for (let indicesIndex = 0; indicesIndex < indices.length; indicesIndex++) {
1650
+ let dataIndex = indices[indicesIndex] * numComponents;
1651
+ for (let componentIndex = 0; componentIndex < numComponents; componentIndex++) {
1652
+ typedArray[dataIndex++] = values[valuesIndex++];
1653
+ }
1654
+ }
1655
+ return typedArray;
1656
+ });
1657
+ });
1658
+ }
1659
+ return accessor._data;
1660
+ }
1661
+ /**
1662
+ * @internal
1663
+ */
1664
+ _loadFloatAccessorAsync(context, accessor) {
1665
+ return this._loadAccessorAsync(context, accessor, Float32Array);
1666
+ }
1667
+ /**
1668
+ * @internal
1669
+ */
1670
+ _loadIndicesAccessorAsync(context, accessor) {
1671
+ if (accessor.type !== "SCALAR" /* AccessorType.SCALAR */) {
1672
+ throw new Error(`${context}/type: Invalid value ${accessor.type}`);
1673
+ }
1674
+ if (accessor.componentType !== 5121 /* AccessorComponentType.UNSIGNED_BYTE */ &&
1675
+ accessor.componentType !== 5123 /* AccessorComponentType.UNSIGNED_SHORT */ &&
1676
+ accessor.componentType !== 5125 /* AccessorComponentType.UNSIGNED_INT */) {
1677
+ throw new Error(`${context}/componentType: Invalid value ${accessor.componentType}`);
1678
+ }
1679
+ if (accessor._data) {
1680
+ return accessor._data;
1681
+ }
1682
+ if (accessor.sparse) {
1683
+ const constructor = GLTFLoader._GetTypedArrayConstructor(`${context}/componentType`, accessor.componentType);
1684
+ accessor._data = this._loadAccessorAsync(context, accessor, constructor);
1685
+ }
1686
+ else {
1687
+ const bufferView = ArrayItem.Get(`${context}/bufferView`, this._gltf.bufferViews, accessor.bufferView);
1688
+ accessor._data = this.loadBufferViewAsync(`/bufferViews/${bufferView.index}`, bufferView).then((data) => {
1689
+ return GLTFLoader._GetTypedArray(context, accessor.componentType, data, accessor.byteOffset, accessor.count);
1690
+ });
1691
+ }
1692
+ return accessor._data;
1693
+ }
1694
+ /**
1695
+ * @internal
1696
+ */
1697
+ _loadVertexBufferViewAsync(bufferView) {
1698
+ if (bufferView._babylonBuffer) {
1699
+ return bufferView._babylonBuffer;
1700
+ }
1701
+ const engine = this._babylonScene.getEngine();
1702
+ bufferView._babylonBuffer = this.loadBufferViewAsync(`/bufferViews/${bufferView.index}`, bufferView).then((data) => {
1703
+ return new Buffer(engine, data, false);
1704
+ });
1705
+ return bufferView._babylonBuffer;
1706
+ }
1707
+ /**
1708
+ * @internal
1709
+ */
1710
+ _loadVertexAccessorAsync(context, accessor, kind) {
1711
+ if (accessor._babylonVertexBuffer?.[kind]) {
1712
+ return accessor._babylonVertexBuffer[kind];
1713
+ }
1714
+ if (!accessor._babylonVertexBuffer) {
1715
+ accessor._babylonVertexBuffer = {};
1716
+ }
1717
+ const engine = this._babylonScene.getEngine();
1718
+ if (accessor.sparse || accessor.bufferView == undefined) {
1719
+ accessor._babylonVertexBuffer[kind] = this._loadFloatAccessorAsync(context, accessor).then((data) => {
1720
+ return new VertexBuffer(engine, data, kind, false);
1721
+ });
1722
+ }
1723
+ else {
1724
+ const bufferView = ArrayItem.Get(`${context}/bufferView`, this._gltf.bufferViews, accessor.bufferView);
1725
+ accessor._babylonVertexBuffer[kind] = this._loadVertexBufferViewAsync(bufferView).then((babylonBuffer) => {
1726
+ const numComponents = GLTFLoader._GetNumComponents(context, accessor.type);
1727
+ return new VertexBuffer(engine, babylonBuffer, kind, false, undefined, bufferView.byteStride, undefined, accessor.byteOffset, numComponents, accessor.componentType, accessor.normalized, true, undefined, true);
1728
+ });
1729
+ }
1730
+ return accessor._babylonVertexBuffer[kind];
1731
+ }
1732
+ _loadMaterialMetallicRoughnessPropertiesAsync(context, properties, babylonMaterial) {
1733
+ const promises = new Array();
1734
+ const adapter = this._getOrCreateMaterialAdapter(babylonMaterial);
1735
+ if (properties) {
1736
+ // Set base color and alpha using adapter
1737
+ if (properties.baseColorFactor) {
1738
+ adapter.baseColor = Color3.FromArray(properties.baseColorFactor);
1739
+ adapter.geometryOpacity = properties.baseColorFactor[3];
1740
+ }
1741
+ else {
1742
+ adapter.baseColor = Color3.White();
1743
+ }
1744
+ // Set metallic and roughness using adapter
1745
+ adapter.baseMetalness = properties.metallicFactor == undefined ? 1 : properties.metallicFactor;
1746
+ adapter.specularRoughness = properties.roughnessFactor == undefined ? 1 : properties.roughnessFactor;
1747
+ if (properties.baseColorTexture) {
1748
+ promises.push(this.loadTextureInfoAsync(`${context}/baseColorTexture`, properties.baseColorTexture, (texture) => {
1749
+ texture.name = `${babylonMaterial.name} (Base Color)`;
1750
+ adapter.baseColorTexture = texture;
1751
+ }));
1752
+ }
1753
+ if (properties.metallicRoughnessTexture) {
1754
+ properties.metallicRoughnessTexture.nonColorData = true;
1755
+ promises.push(this.loadTextureInfoAsync(`${context}/metallicRoughnessTexture`, properties.metallicRoughnessTexture, (texture) => {
1756
+ texture.name = `${babylonMaterial.name} (Metallic Roughness)`;
1757
+ adapter.baseMetalnessTexture = texture;
1758
+ adapter.specularRoughnessTexture = texture;
1759
+ }));
1760
+ // Configure texture channel usage using adapter
1761
+ adapter.useRoughnessFromMetallicTextureGreen = true;
1762
+ adapter.useMetallicFromMetallicTextureBlue = true;
1763
+ }
1764
+ }
1765
+ return Promise.all(promises).then(() => { });
1766
+ }
1767
+ /**
1768
+ * @internal
1769
+ */
1770
+ _loadMaterialAsync(context, material, babylonMesh, babylonDrawMode, assign = () => { }) {
1771
+ const extensionPromise = this._extensionsLoadMaterialAsync(context, material, babylonMesh, babylonDrawMode, assign);
1772
+ if (extensionPromise) {
1773
+ return extensionPromise;
1774
+ }
1775
+ material._data = material._data || {};
1776
+ let babylonData = material._data[babylonDrawMode];
1777
+ if (!babylonData) {
1778
+ this.logOpen(`${context} ${material.name || ""}`);
1779
+ const babylonMaterial = this.createMaterial(context, material, babylonDrawMode);
1780
+ babylonData = {
1781
+ babylonMaterial: babylonMaterial,
1782
+ babylonMeshes: [],
1783
+ promise: this.loadMaterialPropertiesAsync(context, material, babylonMaterial),
1784
+ };
1785
+ material._data[babylonDrawMode] = babylonData;
1786
+ GLTFLoader.AddPointerMetadata(babylonMaterial, context);
1787
+ this._parent.onMaterialLoadedObservable.notifyObservers(babylonMaterial);
1788
+ this.logClose();
1789
+ }
1790
+ if (babylonMesh) {
1791
+ babylonData.babylonMeshes.push(babylonMesh);
1792
+ babylonMesh.onDisposeObservable.addOnce(() => {
1793
+ const index = babylonData.babylonMeshes.indexOf(babylonMesh);
1794
+ if (index !== -1) {
1795
+ babylonData.babylonMeshes.splice(index, 1);
1796
+ }
1797
+ });
1798
+ }
1799
+ assign(babylonData.babylonMaterial);
1800
+ return babylonData.promise.then(() => {
1801
+ return babylonData.babylonMaterial;
1802
+ });
1803
+ }
1804
+ _createDefaultMaterial(name, babylonDrawMode) {
1805
+ if (!this._pbrMaterialImpl) {
1806
+ throw new Error("PBR Material class not loaded");
1807
+ }
1808
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
1809
+ const babylonMaterial = new this._pbrMaterialImpl.materialClass(name, this._babylonScene);
1810
+ babylonMaterial._parentContainer = this._assetContainer;
1811
+ this._babylonScene._blockEntityCollection = false;
1812
+ babylonMaterial.fillMode = babylonDrawMode;
1813
+ babylonMaterial.transparencyMode = this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;
1814
+ // Create the material adapter and set some default properties.
1815
+ // We don't need to wait for the promise to resolve here.
1816
+ const adapter = this._getOrCreateMaterialAdapter(babylonMaterial);
1817
+ adapter.transparencyAsAlphaCoverage = this._parent.transparencyAsCoverage;
1818
+ // Set default metallic and roughness values
1819
+ adapter.baseMetalness = 1.0;
1820
+ adapter.specularRoughness = 1.0;
1821
+ return babylonMaterial;
1822
+ }
1823
+ /**
1824
+ * Creates a Babylon material from a glTF material.
1825
+ * @param context The context when loading the asset
1826
+ * @param material The glTF material property
1827
+ * @param babylonDrawMode The draw mode for the Babylon material
1828
+ * @returns The Babylon material
1829
+ */
1830
+ createMaterial(context, material, babylonDrawMode) {
1831
+ const extensionMaterial = this._extensionsCreateMaterial(context, material, babylonDrawMode);
1832
+ if (extensionMaterial) {
1833
+ return extensionMaterial;
1834
+ }
1835
+ const name = material.name || `material${material.index}`;
1836
+ const babylonMaterial = this._createDefaultMaterial(name, babylonDrawMode);
1837
+ return babylonMaterial;
1838
+ }
1839
+ /**
1840
+ * Loads properties from a glTF material into a Babylon material.
1841
+ * @param context The context when loading the asset
1842
+ * @param material The glTF material property
1843
+ * @param babylonMaterial The Babylon material
1844
+ * @returns A promise that resolves when the load is complete
1845
+ */
1846
+ loadMaterialPropertiesAsync(context, material, babylonMaterial) {
1847
+ const extensionPromise = this._extensionsLoadMaterialPropertiesAsync(context, material, babylonMaterial);
1848
+ if (extensionPromise) {
1849
+ return extensionPromise;
1850
+ }
1851
+ const promises = new Array();
1852
+ promises.push(this.loadMaterialBasePropertiesAsync(context, material, babylonMaterial));
1853
+ if (material.pbrMetallicRoughness) {
1854
+ promises.push(this._loadMaterialMetallicRoughnessPropertiesAsync(`${context}/pbrMetallicRoughness`, material.pbrMetallicRoughness, babylonMaterial));
1855
+ }
1856
+ this.loadMaterialAlphaProperties(context, material, babylonMaterial);
1857
+ return Promise.all(promises).then(() => { });
1858
+ }
1859
+ /**
1860
+ * Loads the normal, occlusion, and emissive properties from a glTF material into a Babylon material.
1861
+ * @param context The context when loading the asset
1862
+ * @param material The glTF material property
1863
+ * @param babylonMaterial The Babylon material
1864
+ * @returns A promise that resolves when the load is complete
1865
+ */
1866
+ loadMaterialBasePropertiesAsync(context, material, babylonMaterial) {
1867
+ const promises = new Array();
1868
+ const adapter = this._getOrCreateMaterialAdapter(babylonMaterial);
1869
+ // Set emission color using adapter
1870
+ adapter.emissionColor = material.emissiveFactor ? Color3.FromArray(material.emissiveFactor) : new Color3(0, 0, 0);
1871
+ // Set double-sided properties using adapter
1872
+ if (material.doubleSided) {
1873
+ adapter.backFaceCulling = false;
1874
+ adapter.twoSidedLighting = true;
1875
+ }
1876
+ if (material.normalTexture) {
1877
+ material.normalTexture.nonColorData = true;
1878
+ promises.push(this.loadTextureInfoAsync(`${context}/normalTexture`, material.normalTexture, (texture) => {
1879
+ texture.name = `${babylonMaterial.name} (Normal)`;
1880
+ adapter.geometryNormalTexture = texture;
1881
+ if (material.normalTexture?.scale != undefined) {
1882
+ texture.level = material.normalTexture.scale;
1883
+ }
1884
+ }));
1885
+ // Set normal map inversions using adapter
1886
+ adapter.setNormalMapInversions(!this._babylonScene.useRightHandedSystem, this._babylonScene.useRightHandedSystem);
1887
+ }
1888
+ let aoTexture;
1889
+ let aoStrength = 1.0;
1890
+ let emissionTexture;
1891
+ if (material.occlusionTexture) {
1892
+ material.occlusionTexture.nonColorData = true;
1893
+ promises.push(this.loadTextureInfoAsync(`${context}/occlusionTexture`, material.occlusionTexture, (texture) => {
1894
+ texture.name = `${babylonMaterial.name} (Occlusion)`;
1895
+ aoTexture = texture;
1896
+ }));
1897
+ if (material.occlusionTexture.strength != undefined) {
1898
+ aoStrength = material.occlusionTexture.strength;
1899
+ }
1900
+ }
1901
+ if (material.emissiveTexture) {
1902
+ promises.push(this.loadTextureInfoAsync(`${context}/emissiveTexture`, material.emissiveTexture, (texture) => {
1903
+ texture.name = `${babylonMaterial.name} (Emissive)`;
1904
+ emissionTexture = texture;
1905
+ }));
1906
+ }
1907
+ return Promise.all(promises).then(() => {
1908
+ // Set ambient occlusion and emissive textures using adapter
1909
+ if (aoTexture) {
1910
+ adapter.ambientOcclusionTexture = aoTexture;
1911
+ adapter.ambientOcclusionTextureStrength = aoStrength;
1912
+ }
1913
+ if (emissionTexture) {
1914
+ adapter.emissionColorTexture = emissionTexture;
1915
+ }
1916
+ });
1917
+ }
1918
+ /**
1919
+ * Loads the alpha properties from a glTF material into a Babylon material.
1920
+ * Must be called after the setting the albedo texture of the Babylon material when the material has an albedo texture.
1921
+ * @param context The context when loading the asset
1922
+ * @param material The glTF material property
1923
+ * @param babylonMaterial The Babylon material
1924
+ */
1925
+ loadMaterialAlphaProperties(context, material, babylonMaterial) {
1926
+ if (!this._pbrMaterialImpl) {
1927
+ throw new Error(`${context}: Material type not supported`);
1928
+ }
1929
+ const adapter = this._getOrCreateMaterialAdapter(babylonMaterial);
1930
+ const baseColorTexture = adapter.baseColorTexture;
1931
+ const alphaMode = material.alphaMode || "OPAQUE" /* MaterialAlphaMode.OPAQUE */;
1932
+ switch (alphaMode) {
1933
+ case "OPAQUE" /* MaterialAlphaMode.OPAQUE */: {
1934
+ babylonMaterial.transparencyMode = this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;
1935
+ babylonMaterial.alpha = 1.0; // Force alpha to 1.0 for opaque mode.
1936
+ break;
1937
+ }
1938
+ case "MASK" /* MaterialAlphaMode.MASK */: {
1939
+ babylonMaterial.transparencyMode = this._pbrMaterialImpl.materialClass.MATERIAL_ALPHATEST;
1940
+ adapter.alphaCutOff = material.alphaCutoff == undefined ? 0.5 : material.alphaCutoff;
1941
+ if (baseColorTexture) {
1942
+ baseColorTexture.hasAlpha = true;
1943
+ }
1944
+ break;
1945
+ }
1946
+ case "BLEND" /* MaterialAlphaMode.BLEND */: {
1947
+ babylonMaterial.transparencyMode = this._pbrMaterialImpl.materialClass.MATERIAL_ALPHABLEND;
1948
+ if (baseColorTexture) {
1949
+ baseColorTexture.hasAlpha = true;
1950
+ adapter.useAlphaFromBaseColorTexture = true;
1951
+ }
1952
+ break;
1953
+ }
1954
+ default: {
1955
+ throw new Error(`${context}/alphaMode: Invalid value (${material.alphaMode})`);
1956
+ }
1957
+ }
1958
+ }
1959
+ /**
1960
+ * Loads a glTF texture info.
1961
+ * @param context The context when loading the asset
1962
+ * @param textureInfo The glTF texture info property
1963
+ * @param assign A function called synchronously after parsing the glTF properties
1964
+ * @returns A promise that resolves with the loaded Babylon texture when the load is complete
1965
+ */
1966
+ loadTextureInfoAsync(context, textureInfo, assign = () => { }) {
1967
+ const extensionPromise = this._extensionsLoadTextureInfoAsync(context, textureInfo, assign);
1968
+ if (extensionPromise) {
1969
+ return extensionPromise;
1970
+ }
1971
+ this.logOpen(`${context}`);
1972
+ if (textureInfo.texCoord >= 6) {
1973
+ throw new Error(`${context}/texCoord: Invalid value (${textureInfo.texCoord})`);
1974
+ }
1975
+ const texture = ArrayItem.Get(`${context}/index`, this._gltf.textures, textureInfo.index);
1976
+ texture._textureInfo = textureInfo;
1977
+ const promise = this._loadTextureAsync(`/textures/${textureInfo.index}`, texture, (babylonTexture) => {
1978
+ babylonTexture.coordinatesIndex = textureInfo.texCoord || 0;
1979
+ GLTFLoader.AddPointerMetadata(babylonTexture, context);
1980
+ this._parent.onTextureLoadedObservable.notifyObservers(babylonTexture);
1981
+ assign(babylonTexture);
1982
+ });
1983
+ this.logClose();
1984
+ return promise;
1985
+ }
1986
+ /**
1987
+ * @internal
1988
+ */
1989
+ _loadTextureAsync(context, texture, assign = () => { }) {
1990
+ const extensionPromise = this._extensionsLoadTextureAsync(context, texture, assign);
1991
+ if (extensionPromise) {
1992
+ return extensionPromise;
1993
+ }
1994
+ this.logOpen(`${context} ${texture.name || ""}`);
1995
+ const sampler = texture.sampler == undefined ? GLTFLoader.DefaultSampler : ArrayItem.Get(`${context}/sampler`, this._gltf.samplers, texture.sampler);
1996
+ const image = ArrayItem.Get(`${context}/source`, this._gltf.images, texture.source);
1997
+ const promise = this._createTextureAsync(context, sampler, image, assign, undefined, !texture._textureInfo.nonColorData);
1998
+ this.logClose();
1999
+ return promise;
2000
+ }
2001
+ /**
2002
+ * @internal
2003
+ */
2004
+ _createTextureAsync(context, sampler, image, assign = () => { }, textureLoaderOptions, useSRGBBuffer) {
2005
+ const samplerData = this._loadSampler(`/samplers/${sampler.index}`, sampler);
2006
+ const promises = new Array();
2007
+ const deferred = new Deferred();
2008
+ this._babylonScene._blockEntityCollection = !!this._assetContainer;
2009
+ const textureCreationOptions = {
2010
+ noMipmap: samplerData.noMipMaps,
2011
+ invertY: false,
2012
+ samplingMode: samplerData.samplingMode,
2013
+ onLoad: () => {
2014
+ if (!this._disposed) {
2015
+ deferred.resolve();
2016
+ }
2017
+ },
2018
+ onError: (message, exception) => {
2019
+ if (!this._disposed) {
2020
+ deferred.reject(new Error(`${context}: ${exception && exception.message ? exception.message : message || "Failed to load texture"}`));
2021
+ }
2022
+ },
2023
+ mimeType: image.mimeType ?? GetMimeType(image.uri ?? ""),
2024
+ loaderOptions: textureLoaderOptions,
2025
+ useSRGBBuffer: !!useSRGBBuffer && this._parent.useSRGBBuffers,
2026
+ };
2027
+ const babylonTexture = new Texture(null, this._babylonScene, textureCreationOptions);
2028
+ babylonTexture._parentContainer = this._assetContainer;
2029
+ this._babylonScene._blockEntityCollection = false;
2030
+ promises.push(deferred.promise);
2031
+ const nonBase64Uri = image.uri && !IsBase64DataUrl(image.uri) ? image.uri : undefined;
2032
+ const imageId = nonBase64Uri ?? `${this._fileName}#image${image.index}`;
2033
+ promises.push(this.loadImageAsync(`/images/${image.index}`, image).then((data) => {
2034
+ const dataUrl = `data:${this._uniqueRootUrl}${imageId}`;
2035
+ babylonTexture.updateURL(dataUrl, data);
2036
+ // Set the internal texture label.
2037
+ const internalTexture = babylonTexture.getInternalTexture();
2038
+ if (internalTexture) {
2039
+ internalTexture.label = image.name;
2040
+ }
2041
+ }));
2042
+ babylonTexture.wrapU = samplerData.wrapU;
2043
+ babylonTexture.wrapV = samplerData.wrapV;
2044
+ assign(babylonTexture);
2045
+ if (this._parent.useGltfTextureNames) {
2046
+ const textureName = image.name || nonBase64Uri || `image${image.index}`;
2047
+ babylonTexture.name = textureName;
2048
+ }
2049
+ return Promise.all(promises).then(() => {
2050
+ return babylonTexture;
2051
+ });
2052
+ }
2053
+ _loadSampler(context, sampler) {
2054
+ if (!sampler._data) {
2055
+ sampler._data = {
2056
+ noMipMaps: sampler.minFilter === 9728 /* TextureMinFilter.NEAREST */ || sampler.minFilter === 9729 /* TextureMinFilter.LINEAR */,
2057
+ samplingMode: GLTFLoader._GetTextureSamplingMode(context, sampler),
2058
+ wrapU: GLTFLoader._GetTextureWrapMode(`${context}/wrapS`, sampler.wrapS),
2059
+ wrapV: GLTFLoader._GetTextureWrapMode(`${context}/wrapT`, sampler.wrapT),
2060
+ };
2061
+ }
2062
+ return sampler._data;
2063
+ }
2064
+ /**
2065
+ * Loads a glTF image.
2066
+ * @param context The context when loading the asset
2067
+ * @param image The glTF image property
2068
+ * @returns A promise that resolves with the loaded data when the load is complete
2069
+ */
2070
+ loadImageAsync(context, image) {
2071
+ if (!image._data) {
2072
+ this.logOpen(`${context} ${image.name || ""}`);
2073
+ if (image.uri) {
2074
+ image._data = this.loadUriAsync(`${context}/uri`, image, image.uri);
2075
+ }
2076
+ else {
2077
+ const bufferView = ArrayItem.Get(`${context}/bufferView`, this._gltf.bufferViews, image.bufferView);
2078
+ image._data = this.loadBufferViewAsync(`/bufferViews/${bufferView.index}`, bufferView);
2079
+ }
2080
+ this.logClose();
2081
+ }
2082
+ return image._data;
2083
+ }
2084
+ /**
2085
+ * Loads a glTF uri.
2086
+ * @param context The context when loading the asset
2087
+ * @param property The glTF property associated with the uri
2088
+ * @param uri The base64 or relative uri
2089
+ * @returns A promise that resolves with the loaded data when the load is complete
2090
+ */
2091
+ loadUriAsync(context, property, uri) {
2092
+ const extensionPromise = this._extensionsLoadUriAsync(context, property, uri);
2093
+ if (extensionPromise) {
2094
+ return extensionPromise;
2095
+ }
2096
+ if (!GLTFLoader._ValidateUri(uri)) {
2097
+ throw new Error(`${context}: '${uri}' is invalid`);
2098
+ }
2099
+ if (IsBase64DataUrl(uri)) {
2100
+ const data = new Uint8Array(DecodeBase64UrlToBinary(uri));
2101
+ this.log(`${context}: Decoded ${uri.substring(0, 64)}... (${data.length} bytes)`);
2102
+ return Promise.resolve(data);
2103
+ }
2104
+ this.log(`${context}: Loading ${uri}`);
2105
+ return this._parent.preprocessUrlAsync(this._rootUrl + uri).then((url) => {
2106
+ return new Promise((resolve, reject) => {
2107
+ this._parent._loadFile(this._babylonScene, url, (data) => {
2108
+ if (!this._disposed) {
2109
+ this.log(`${context}: Loaded ${uri} (${data.byteLength} bytes)`);
2110
+ resolve(new Uint8Array(data));
2111
+ }
2112
+ }, true, (request) => {
2113
+ reject(new LoadFileError(`${context}: Failed to load '${uri}'${request ? ": " + request.status + " " + request.statusText : ""}`, request));
2114
+ });
2115
+ });
2116
+ });
2117
+ }
2118
+ /**
2119
+ * Adds a JSON pointer to the _internalMetadata of the Babylon object at `<object>._internalMetadata.gltf.pointers`.
2120
+ * @param babylonObject the Babylon object with _internalMetadata
2121
+ * @param pointer the JSON pointer
2122
+ */
2123
+ static AddPointerMetadata(babylonObject, pointer) {
2124
+ babylonObject.metadata = babylonObject.metadata || {};
2125
+ const metadata = (babylonObject._internalMetadata = babylonObject._internalMetadata || {});
2126
+ const gltf = (metadata.gltf = metadata.gltf || {});
2127
+ const pointers = (gltf.pointers = gltf.pointers || []);
2128
+ pointers.push(pointer);
2129
+ }
2130
+ static _GetTextureWrapMode(context, mode) {
2131
+ // Set defaults if undefined
2132
+ mode = mode == undefined ? 10497 /* TextureWrapMode.REPEAT */ : mode;
2133
+ switch (mode) {
2134
+ case 33071 /* TextureWrapMode.CLAMP_TO_EDGE */:
2135
+ return Texture.CLAMP_ADDRESSMODE;
2136
+ case 33648 /* TextureWrapMode.MIRRORED_REPEAT */:
2137
+ return Texture.MIRROR_ADDRESSMODE;
2138
+ case 10497 /* TextureWrapMode.REPEAT */:
2139
+ return Texture.WRAP_ADDRESSMODE;
2140
+ default:
2141
+ Logger.Warn(`${context}: Invalid value (${mode})`);
2142
+ return Texture.WRAP_ADDRESSMODE;
2143
+ }
2144
+ }
2145
+ static _GetTextureSamplingMode(context, sampler) {
2146
+ // Set defaults if undefined
2147
+ const magFilter = sampler.magFilter == undefined ? 9729 /* TextureMagFilter.LINEAR */ : sampler.magFilter;
2148
+ const minFilter = sampler.minFilter == undefined ? 9987 /* TextureMinFilter.LINEAR_MIPMAP_LINEAR */ : sampler.minFilter;
2149
+ if (magFilter === 9729 /* TextureMagFilter.LINEAR */) {
2150
+ switch (minFilter) {
2151
+ case 9728 /* TextureMinFilter.NEAREST */:
2152
+ return Texture.LINEAR_NEAREST;
2153
+ case 9729 /* TextureMinFilter.LINEAR */:
2154
+ return Texture.LINEAR_LINEAR;
2155
+ case 9984 /* TextureMinFilter.NEAREST_MIPMAP_NEAREST */:
2156
+ return Texture.LINEAR_NEAREST_MIPNEAREST;
2157
+ case 9985 /* TextureMinFilter.LINEAR_MIPMAP_NEAREST */:
2158
+ return Texture.LINEAR_LINEAR_MIPNEAREST;
2159
+ case 9986 /* TextureMinFilter.NEAREST_MIPMAP_LINEAR */:
2160
+ return Texture.LINEAR_NEAREST_MIPLINEAR;
2161
+ case 9987 /* TextureMinFilter.LINEAR_MIPMAP_LINEAR */:
2162
+ return Texture.LINEAR_LINEAR_MIPLINEAR;
2163
+ default:
2164
+ Logger.Warn(`${context}/minFilter: Invalid value (${minFilter})`);
2165
+ return Texture.LINEAR_LINEAR_MIPLINEAR;
2166
+ }
2167
+ }
2168
+ else {
2169
+ if (magFilter !== 9728 /* TextureMagFilter.NEAREST */) {
2170
+ Logger.Warn(`${context}/magFilter: Invalid value (${magFilter})`);
2171
+ }
2172
+ switch (minFilter) {
2173
+ case 9728 /* TextureMinFilter.NEAREST */:
2174
+ return Texture.NEAREST_NEAREST;
2175
+ case 9729 /* TextureMinFilter.LINEAR */:
2176
+ return Texture.NEAREST_LINEAR;
2177
+ case 9984 /* TextureMinFilter.NEAREST_MIPMAP_NEAREST */:
2178
+ return Texture.NEAREST_NEAREST_MIPNEAREST;
2179
+ case 9985 /* TextureMinFilter.LINEAR_MIPMAP_NEAREST */:
2180
+ return Texture.NEAREST_LINEAR_MIPNEAREST;
2181
+ case 9986 /* TextureMinFilter.NEAREST_MIPMAP_LINEAR */:
2182
+ return Texture.NEAREST_NEAREST_MIPLINEAR;
2183
+ case 9987 /* TextureMinFilter.LINEAR_MIPMAP_LINEAR */:
2184
+ return Texture.NEAREST_LINEAR_MIPLINEAR;
2185
+ default:
2186
+ Logger.Warn(`${context}/minFilter: Invalid value (${minFilter})`);
2187
+ return Texture.NEAREST_NEAREST_MIPNEAREST;
2188
+ }
2189
+ }
2190
+ }
2191
+ static _GetTypedArrayConstructor(context, componentType) {
2192
+ try {
2193
+ return GetTypedArrayConstructor(componentType);
2194
+ }
2195
+ catch (e) {
2196
+ throw new Error(`${context}: ${e.message}`, { cause: e });
2197
+ }
2198
+ }
2199
+ static _GetTypedArray(context, componentType, bufferView, byteOffset, length) {
2200
+ const buffer = bufferView.buffer;
2201
+ byteOffset = bufferView.byteOffset + (byteOffset || 0);
2202
+ const constructor = GLTFLoader._GetTypedArrayConstructor(`${context}/componentType`, componentType);
2203
+ const componentTypeLength = VertexBuffer.GetTypeByteLength(componentType);
2204
+ if (byteOffset % componentTypeLength !== 0) {
2205
+ // HACK: Copy the buffer if byte offset is not a multiple of component type byte length.
2206
+ Logger.Warn(`${context}: Copying buffer as byte offset (${byteOffset}) is not a multiple of component type byte length (${componentTypeLength})`);
2207
+ return new constructor(buffer.slice(byteOffset, byteOffset + length * componentTypeLength), 0);
2208
+ }
2209
+ return new constructor(buffer, byteOffset, length);
2210
+ }
2211
+ static _GetNumComponents(context, type) {
2212
+ switch (type) {
2213
+ case "SCALAR":
2214
+ return 1;
2215
+ case "VEC2":
2216
+ return 2;
2217
+ case "VEC3":
2218
+ return 3;
2219
+ case "VEC4":
2220
+ return 4;
2221
+ case "MAT2":
2222
+ return 4;
2223
+ case "MAT3":
2224
+ return 9;
2225
+ case "MAT4":
2226
+ return 16;
2227
+ }
2228
+ throw new Error(`${context}: Invalid type (${type})`);
2229
+ }
2230
+ static _ValidateUri(uri) {
2231
+ return Tools.IsBase64(uri) || uri.indexOf("..") === -1;
2232
+ }
2233
+ /**
2234
+ * @internal
2235
+ */
2236
+ static _GetDrawMode(context, mode) {
2237
+ if (mode == undefined) {
2238
+ mode = 4 /* MeshPrimitiveMode.TRIANGLES */;
2239
+ }
2240
+ switch (mode) {
2241
+ case 0 /* MeshPrimitiveMode.POINTS */:
2242
+ return Material.PointListDrawMode;
2243
+ case 1 /* MeshPrimitiveMode.LINES */:
2244
+ return Material.LineListDrawMode;
2245
+ case 2 /* MeshPrimitiveMode.LINE_LOOP */:
2246
+ return Material.LineLoopDrawMode;
2247
+ case 3 /* MeshPrimitiveMode.LINE_STRIP */:
2248
+ return Material.LineStripDrawMode;
2249
+ case 4 /* MeshPrimitiveMode.TRIANGLES */:
2250
+ return Material.TriangleFillMode;
2251
+ case 5 /* MeshPrimitiveMode.TRIANGLE_STRIP */:
2252
+ return Material.TriangleStripDrawMode;
2253
+ case 6 /* MeshPrimitiveMode.TRIANGLE_FAN */:
2254
+ return Material.TriangleFanDrawMode;
2255
+ }
2256
+ throw new Error(`${context}: Invalid mesh primitive mode (${mode})`);
2257
+ }
2258
+ _compileMaterialsAsync() {
2259
+ this._parent._startPerformanceCounter("Compile materials");
2260
+ const promises = new Array();
2261
+ if (this._gltf.materials) {
2262
+ for (const material of this._gltf.materials) {
2263
+ if (material._data) {
2264
+ for (const babylonDrawMode in material._data) {
2265
+ const babylonData = material._data[babylonDrawMode];
2266
+ for (const babylonMesh of babylonData.babylonMeshes) {
2267
+ // Ensure nonUniformScaling is set if necessary.
2268
+ babylonMesh.computeWorldMatrix(true);
2269
+ const babylonMaterial = babylonData.babylonMaterial;
2270
+ promises.push(babylonMaterial.forceCompilationAsync(babylonMesh));
2271
+ promises.push(babylonMaterial.forceCompilationAsync(babylonMesh, { useInstances: true }));
2272
+ if (this._parent.useClipPlane) {
2273
+ promises.push(babylonMaterial.forceCompilationAsync(babylonMesh, { clipPlane: true }));
2274
+ promises.push(babylonMaterial.forceCompilationAsync(babylonMesh, { clipPlane: true, useInstances: true }));
2275
+ }
2276
+ }
2277
+ }
2278
+ }
2279
+ }
2280
+ }
2281
+ return Promise.all(promises).then(() => {
2282
+ this._parent._endPerformanceCounter("Compile materials");
2283
+ });
2284
+ }
2285
+ _compileShadowGeneratorsAsync() {
2286
+ this._parent._startPerformanceCounter("Compile shadow generators");
2287
+ const promises = new Array();
2288
+ const lights = this._babylonScene.lights;
2289
+ for (const light of lights) {
2290
+ const generator = light.getShadowGenerator();
2291
+ if (generator) {
2292
+ promises.push(generator.forceCompilationAsync());
2293
+ }
2294
+ }
2295
+ return Promise.all(promises).then(() => {
2296
+ this._parent._endPerformanceCounter("Compile shadow generators");
2297
+ });
2298
+ }
2299
+ _forEachExtensions(action) {
2300
+ for (const extension of this._extensions) {
2301
+ if (extension.enabled) {
2302
+ action(extension);
2303
+ }
2304
+ }
2305
+ }
2306
+ _applyExtensions(property, functionName, actionAsync) {
2307
+ for (const extension of this._extensions) {
2308
+ if (extension.enabled) {
2309
+ const id = `${extension.name}.${functionName}`;
2310
+ const loaderProperty = property;
2311
+ loaderProperty._activeLoaderExtensionFunctions = loaderProperty._activeLoaderExtensionFunctions || {};
2312
+ const activeLoaderExtensionFunctions = loaderProperty._activeLoaderExtensionFunctions;
2313
+ if (!activeLoaderExtensionFunctions[id]) {
2314
+ activeLoaderExtensionFunctions[id] = true;
2315
+ try {
2316
+ const result = actionAsync(extension);
2317
+ if (result) {
2318
+ return result;
2319
+ }
2320
+ }
2321
+ finally {
2322
+ delete activeLoaderExtensionFunctions[id];
2323
+ }
2324
+ }
2325
+ }
2326
+ }
2327
+ return null;
2328
+ }
2329
+ _extensionsOnLoading() {
2330
+ this._forEachExtensions((extension) => extension.onLoading && extension.onLoading());
2331
+ }
2332
+ _extensionsOnReady() {
2333
+ this._forEachExtensions((extension) => extension.onReady && extension.onReady());
2334
+ }
2335
+ // eslint-disable-next-line no-restricted-syntax
2336
+ _extensionsLoadSceneAsync(context, scene) {
2337
+ return this._applyExtensions(scene, "loadScene", (extension) => extension.loadSceneAsync && extension.loadSceneAsync(context, scene));
2338
+ }
2339
+ // eslint-disable-next-line no-restricted-syntax
2340
+ _extensionsLoadNodeAsync(context, node, assign) {
2341
+ return this._applyExtensions(node, "loadNode", (extension) => extension.loadNodeAsync && extension.loadNodeAsync(context, node, assign));
2342
+ }
2343
+ // eslint-disable-next-line no-restricted-syntax
2344
+ _extensionsLoadCameraAsync(context, camera, assign) {
2345
+ return this._applyExtensions(camera, "loadCamera", (extension) => extension.loadCameraAsync && extension.loadCameraAsync(context, camera, assign));
2346
+ }
2347
+ // eslint-disable-next-line no-restricted-syntax
2348
+ _extensionsLoadVertexDataAsync(context, primitive, babylonMesh) {
2349
+ return this._applyExtensions(primitive, "loadVertexData", (extension) => extension._loadVertexDataAsync && extension._loadVertexDataAsync(context, primitive, babylonMesh));
2350
+ }
2351
+ // eslint-disable-next-line no-restricted-syntax
2352
+ _extensionsLoadMeshPrimitiveAsync(context, name, node, mesh, primitive, assign) {
2353
+ return this._applyExtensions(primitive, "loadMeshPrimitive", (extension) => extension._loadMeshPrimitiveAsync && extension._loadMeshPrimitiveAsync(context, name, node, mesh, primitive, assign));
2354
+ }
2355
+ // eslint-disable-next-line no-restricted-syntax
2356
+ _extensionsLoadMaterialAsync(context, material, babylonMesh, babylonDrawMode, assign) {
2357
+ return this._applyExtensions(material, "loadMaterial", (extension) => extension._loadMaterialAsync && extension._loadMaterialAsync(context, material, babylonMesh, babylonDrawMode, assign));
2358
+ }
2359
+ _extensionsCreateMaterial(context, material, babylonDrawMode) {
2360
+ return this._applyExtensions(material, "createMaterial", (extension) => extension.createMaterial && extension.createMaterial(context, material, babylonDrawMode));
2361
+ }
2362
+ // eslint-disable-next-line no-restricted-syntax
2363
+ _extensionsLoadMaterialPropertiesAsync(context, material, babylonMaterial) {
2364
+ return this._applyExtensions(material, "loadMaterialProperties", (extension) => extension.loadMaterialPropertiesAsync && extension.loadMaterialPropertiesAsync(context, material, babylonMaterial));
2365
+ }
2366
+ // eslint-disable-next-line no-restricted-syntax
2367
+ _extensionsLoadTextureInfoAsync(context, textureInfo, assign) {
2368
+ return this._applyExtensions(textureInfo, "loadTextureInfo", (extension) => extension.loadTextureInfoAsync && extension.loadTextureInfoAsync(context, textureInfo, assign));
2369
+ }
2370
+ // eslint-disable-next-line no-restricted-syntax
2371
+ _extensionsLoadTextureAsync(context, texture, assign) {
2372
+ return this._applyExtensions(texture, "loadTexture", (extension) => extension._loadTextureAsync && extension._loadTextureAsync(context, texture, assign));
2373
+ }
2374
+ // eslint-disable-next-line no-restricted-syntax
2375
+ _extensionsLoadAnimationAsync(context, animation) {
2376
+ return this._applyExtensions(animation, "loadAnimation", (extension) => extension.loadAnimationAsync && extension.loadAnimationAsync(context, animation));
2377
+ }
2378
+ // eslint-disable-next-line no-restricted-syntax
2379
+ _extensionsLoadAnimationChannelAsync(context, animationContext, animation, channel, onLoad) {
2380
+ return this._applyExtensions(animation, "loadAnimationChannel", (extension) => extension._loadAnimationChannelAsync && extension._loadAnimationChannelAsync(context, animationContext, animation, channel, onLoad));
2381
+ }
2382
+ // eslint-disable-next-line no-restricted-syntax
2383
+ _extensionsLoadSkinAsync(context, node, skin) {
2384
+ return this._applyExtensions(skin, "loadSkin", (extension) => extension._loadSkinAsync && extension._loadSkinAsync(context, node, skin));
2385
+ }
2386
+ // eslint-disable-next-line no-restricted-syntax
2387
+ _extensionsLoadUriAsync(context, property, uri) {
2388
+ return this._applyExtensions(property, "loadUri", (extension) => extension._loadUriAsync && extension._loadUriAsync(context, property, uri));
2389
+ }
2390
+ // eslint-disable-next-line no-restricted-syntax
2391
+ _extensionsLoadBufferViewAsync(context, bufferView) {
2392
+ return this._applyExtensions(bufferView, "loadBufferView", (extension) => extension.loadBufferViewAsync && extension.loadBufferViewAsync(context, bufferView));
2393
+ }
2394
+ // eslint-disable-next-line no-restricted-syntax
2395
+ _extensionsLoadBufferAsync(context, buffer, byteOffset, byteLength) {
2396
+ return this._applyExtensions(buffer, "loadBuffer", (extension) => extension.loadBufferAsync && extension.loadBufferAsync(context, buffer, byteOffset, byteLength));
2397
+ }
2398
+ /**
2399
+ * Helper method called by a loader extension to load an glTF extension.
2400
+ * @param context The context when loading the asset
2401
+ * @param property The glTF property to load the extension from
2402
+ * @param extensionName The name of the extension to load
2403
+ * @param actionAsync The action to run
2404
+ * @returns The promise returned by actionAsync or null if the extension does not exist
2405
+ */
2406
+ // eslint-disable-next-line no-restricted-syntax, @typescript-eslint/naming-convention
2407
+ static LoadExtensionAsync(context, property, extensionName, actionAsync) {
2408
+ if (!property.extensions) {
2409
+ return null;
2410
+ }
2411
+ const extensions = property.extensions;
2412
+ const extension = extensions[extensionName];
2413
+ if (!extension) {
2414
+ return null;
2415
+ }
2416
+ return actionAsync(`${context}/extensions/${extensionName}`, extension);
2417
+ }
2418
+ /**
2419
+ * Helper method called by a loader extension to load a glTF extra.
2420
+ * @param context The context when loading the asset
2421
+ * @param property The glTF property to load the extra from
2422
+ * @param extensionName The name of the extension to load
2423
+ * @param actionAsync The action to run
2424
+ * @returns The promise returned by actionAsync or null if the extra does not exist
2425
+ */
2426
+ // eslint-disable-next-line no-restricted-syntax, @typescript-eslint/naming-convention
2427
+ static LoadExtraAsync(context, property, extensionName, actionAsync) {
2428
+ if (!property.extras) {
2429
+ return null;
2430
+ }
2431
+ const extras = property.extras;
2432
+ const extra = extras[extensionName];
2433
+ if (!extra) {
2434
+ return null;
2435
+ }
2436
+ return actionAsync(`${context}/extras/${extensionName}`, extra);
2437
+ }
2438
+ /**
2439
+ * Checks for presence of an extension.
2440
+ * @param name The name of the extension to check
2441
+ * @returns A boolean indicating the presence of the given extension name in `extensionsUsed`
2442
+ */
2443
+ isExtensionUsed(name) {
2444
+ return !!this._gltf.extensionsUsed && this._gltf.extensionsUsed.indexOf(name) !== -1;
2445
+ }
2446
+ /**
2447
+ * Increments the indentation level and logs a message.
2448
+ * @param message The message to log
2449
+ */
2450
+ logOpen(message) {
2451
+ this._parent._logOpen(message);
2452
+ }
2453
+ /**
2454
+ * Decrements the indentation level.
2455
+ */
2456
+ logClose() {
2457
+ this._parent._logClose();
2458
+ }
2459
+ /**
2460
+ * Logs a message
2461
+ * @param message The message to log
2462
+ */
2463
+ log(message) {
2464
+ this._parent._log(message);
2465
+ }
2466
+ /**
2467
+ * Starts a performance counter.
2468
+ * @param counterName The name of the performance counter
2469
+ */
2470
+ startPerformanceCounter(counterName) {
2471
+ this._parent._startPerformanceCounter(counterName);
2472
+ }
2473
+ /**
2474
+ * Ends a performance counter.
2475
+ * @param counterName The name of the performance counter
2476
+ */
2477
+ endPerformanceCounter(counterName) {
2478
+ this._parent._endPerformanceCounter(counterName);
2479
+ }
2480
+ }
2481
+ /**
2482
+ * The default glTF sampler.
2483
+ */
2484
+ GLTFLoader.DefaultSampler = { index: -1 };
2485
+ GLTFFileLoader._CreateGLTF2Loader = (parent) => new GLTFLoader(parent);