@babylonjs/loaders 9.13.0 → 9.14.0

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 (489) hide show
  1. package/BVH/bvhFileLoader.d.ts +4 -67
  2. package/BVH/bvhFileLoader.js +6 -130
  3. package/BVH/bvhFileLoader.js.map +1 -1
  4. package/BVH/bvhFileLoader.pure.d.ts +75 -0
  5. package/BVH/bvhFileLoader.pure.js +154 -0
  6. package/BVH/bvhFileLoader.pure.js.map +1 -0
  7. package/BVH/bvhFileLoader.types.d.ts +11 -0
  8. package/BVH/bvhFileLoader.types.js +2 -0
  9. package/BVH/bvhFileLoader.types.js.map +1 -0
  10. package/BVH/pure.d.ts +3 -0
  11. package/BVH/pure.js +5 -0
  12. package/BVH/pure.js.map +1 -0
  13. package/FBX/fbxFileLoader.d.ts +4 -192
  14. package/FBX/fbxFileLoader.js +6 -2437
  15. package/FBX/fbxFileLoader.js.map +1 -1
  16. package/FBX/fbxFileLoader.pure.d.ts +190 -0
  17. package/FBX/fbxFileLoader.pure.js +2451 -0
  18. package/FBX/fbxFileLoader.pure.js.map +1 -0
  19. package/FBX/fbxFileLoader.types.d.ts +11 -0
  20. package/FBX/fbxFileLoader.types.js +2 -0
  21. package/FBX/fbxFileLoader.types.js.map +1 -0
  22. package/FBX/pure.d.ts +3 -0
  23. package/FBX/pure.js +4 -0
  24. package/FBX/pure.js.map +1 -0
  25. package/OBJ/objFileLoader.d.ts +4 -134
  26. package/OBJ/objFileLoader.js +6 -315
  27. package/OBJ/objFileLoader.js.map +1 -1
  28. package/OBJ/objFileLoader.pure.d.ts +132 -0
  29. package/OBJ/objFileLoader.pure.js +329 -0
  30. package/OBJ/objFileLoader.pure.js.map +1 -0
  31. package/OBJ/objFileLoader.types.d.ts +11 -0
  32. package/OBJ/objFileLoader.types.js +2 -0
  33. package/OBJ/objFileLoader.types.js.map +1 -0
  34. package/OBJ/pure.d.ts +5 -0
  35. package/OBJ/pure.js +6 -0
  36. package/OBJ/pure.js.map +1 -0
  37. package/OBJ/solidParser.js +4 -3
  38. package/OBJ/solidParser.js.map +1 -1
  39. package/SPLAT/gaussianSplattingBlockAllocator.d.ts +137 -0
  40. package/SPLAT/gaussianSplattingBlockAllocator.js +555 -0
  41. package/SPLAT/gaussianSplattingBlockAllocator.js.map +1 -0
  42. package/SPLAT/gaussianSplattingDownloadManager.d.ts +109 -0
  43. package/SPLAT/gaussianSplattingDownloadManager.js +241 -0
  44. package/SPLAT/gaussianSplattingDownloadManager.js.map +1 -0
  45. package/SPLAT/gaussianSplattingResidencyController.d.ts +133 -0
  46. package/SPLAT/gaussianSplattingResidencyController.js +222 -0
  47. package/SPLAT/gaussianSplattingResidencyController.js.map +1 -0
  48. package/SPLAT/gaussianSplattingStream.d.ts +122 -4
  49. package/SPLAT/gaussianSplattingStream.js +413 -42
  50. package/SPLAT/gaussianSplattingStream.js.map +1 -1
  51. package/SPLAT/gaussianSplattingWorkBuffer.d.ts +36 -0
  52. package/SPLAT/gaussianSplattingWorkBuffer.js +125 -13
  53. package/SPLAT/gaussianSplattingWorkBuffer.js.map +1 -1
  54. package/SPLAT/gaussianSplattingWorkBufferShaders.d.ts +15 -0
  55. package/SPLAT/gaussianSplattingWorkBufferShaders.js +82 -0
  56. package/SPLAT/gaussianSplattingWorkBufferShaders.js.map +1 -1
  57. package/SPLAT/pure.d.ts +5 -0
  58. package/SPLAT/pure.js +7 -0
  59. package/SPLAT/pure.js.map +1 -0
  60. package/SPLAT/sog.d.ts +1 -97
  61. package/SPLAT/sog.js +1 -501
  62. package/SPLAT/sog.js.map +1 -1
  63. package/SPLAT/sog.pure.d.ts +102 -0
  64. package/SPLAT/sog.pure.js +514 -0
  65. package/SPLAT/sog.pure.js.map +1 -0
  66. package/SPLAT/splatFileLoader.d.ts +5 -106
  67. package/SPLAT/splatFileLoader.js +9 -636
  68. package/SPLAT/splatFileLoader.js.map +1 -1
  69. package/SPLAT/splatFileLoader.pure.d.ts +104 -0
  70. package/SPLAT/splatFileLoader.pure.js +650 -0
  71. package/SPLAT/splatFileLoader.pure.js.map +1 -0
  72. package/SPLAT/splatFileLoader.types.d.ts +11 -0
  73. package/SPLAT/splatFileLoader.types.js +2 -0
  74. package/SPLAT/splatFileLoader.types.js.map +1 -0
  75. package/STL/pure.d.ts +2 -0
  76. package/STL/pure.js +3 -0
  77. package/STL/pure.js.map +1 -0
  78. package/STL/stlFileLoader.d.ts +5 -76
  79. package/STL/stlFileLoader.js +7 -236
  80. package/STL/stlFileLoader.js.map +1 -1
  81. package/STL/stlFileLoader.pure.d.ts +73 -0
  82. package/STL/stlFileLoader.pure.js +249 -0
  83. package/STL/stlFileLoader.pure.js.map +1 -0
  84. package/STL/stlFileLoader.types.d.ts +10 -0
  85. package/STL/stlFileLoader.types.js +2 -0
  86. package/STL/stlFileLoader.types.js.map +1 -0
  87. package/glTF/1.0/pure.d.ts +3 -0
  88. package/glTF/1.0/pure.js +4 -0
  89. package/glTF/1.0/pure.js.map +1 -0
  90. package/glTF/2.0/Extensions/EXT_lights_area.d.ts +4 -39
  91. package/glTF/2.0/Extensions/EXT_lights_area.js +6 -91
  92. package/glTF/2.0/Extensions/EXT_lights_area.js.map +1 -1
  93. package/glTF/2.0/Extensions/EXT_lights_area.pure.d.ts +38 -0
  94. package/glTF/2.0/Extensions/EXT_lights_area.pure.js +106 -0
  95. package/glTF/2.0/Extensions/EXT_lights_area.pure.js.map +1 -0
  96. package/glTF/2.0/Extensions/EXT_lights_area.types.d.ts +9 -0
  97. package/glTF/2.0/Extensions/EXT_lights_area.types.js +2 -0
  98. package/glTF/2.0/Extensions/EXT_lights_area.types.js.map +1 -0
  99. package/glTF/2.0/Extensions/EXT_lights_ies.d.ts +4 -39
  100. package/glTF/2.0/Extensions/EXT_lights_ies.js +6 -81
  101. package/glTF/2.0/Extensions/EXT_lights_ies.js.map +1 -1
  102. package/glTF/2.0/Extensions/EXT_lights_ies.pure.d.ts +38 -0
  103. package/glTF/2.0/Extensions/EXT_lights_ies.pure.js +96 -0
  104. package/glTF/2.0/Extensions/EXT_lights_ies.pure.js.map +1 -0
  105. package/glTF/2.0/Extensions/EXT_lights_ies.types.d.ts +9 -0
  106. package/glTF/2.0/Extensions/EXT_lights_ies.types.js +2 -0
  107. package/glTF/2.0/Extensions/EXT_lights_ies.types.js.map +1 -0
  108. package/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +4 -46
  109. package/glTF/2.0/Extensions/EXT_lights_image_based.js +6 -113
  110. package/glTF/2.0/Extensions/EXT_lights_image_based.js.map +1 -1
  111. package/glTF/2.0/Extensions/EXT_lights_image_based.pure.d.ts +37 -0
  112. package/glTF/2.0/Extensions/EXT_lights_image_based.pure.js +128 -0
  113. package/glTF/2.0/Extensions/EXT_lights_image_based.pure.js.map +1 -0
  114. package/glTF/2.0/Extensions/EXT_lights_image_based.types.d.ts +17 -0
  115. package/glTF/2.0/Extensions/EXT_lights_image_based.types.js +2 -0
  116. package/glTF/2.0/Extensions/EXT_lights_image_based.types.js.map +1 -0
  117. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +5 -37
  118. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +7 -92
  119. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
  120. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.d.ts +35 -0
  121. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.js +106 -0
  122. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.pure.js.map +1 -0
  123. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.d.ts +9 -0
  124. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.js +2 -0
  125. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.types.js.map +1 -0
  126. package/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +4 -37
  127. package/glTF/2.0/Extensions/EXT_meshopt_compression.js +6 -48
  128. package/glTF/2.0/Extensions/EXT_meshopt_compression.js.map +1 -1
  129. package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.d.ts +36 -0
  130. package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.js +63 -0
  131. package/glTF/2.0/Extensions/EXT_meshopt_compression.pure.js.map +1 -0
  132. package/glTF/2.0/Extensions/EXT_meshopt_compression.types.d.ts +9 -0
  133. package/glTF/2.0/Extensions/EXT_meshopt_compression.types.js +2 -0
  134. package/glTF/2.0/Extensions/EXT_meshopt_compression.types.js.map +1 -0
  135. package/glTF/2.0/Extensions/EXT_texture_avif.d.ts +4 -32
  136. package/glTF/2.0/Extensions/EXT_texture_avif.js +6 -36
  137. package/glTF/2.0/Extensions/EXT_texture_avif.js.map +1 -1
  138. package/glTF/2.0/Extensions/EXT_texture_avif.pure.d.ts +31 -0
  139. package/glTF/2.0/Extensions/EXT_texture_avif.pure.js +51 -0
  140. package/glTF/2.0/Extensions/EXT_texture_avif.pure.js.map +1 -0
  141. package/glTF/2.0/Extensions/EXT_texture_avif.types.d.ts +9 -0
  142. package/glTF/2.0/Extensions/EXT_texture_avif.types.js +2 -0
  143. package/glTF/2.0/Extensions/EXT_texture_avif.types.js.map +1 -0
  144. package/glTF/2.0/Extensions/EXT_texture_webp.d.ts +4 -31
  145. package/glTF/2.0/Extensions/EXT_texture_webp.js +6 -35
  146. package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -1
  147. package/glTF/2.0/Extensions/EXT_texture_webp.pure.d.ts +30 -0
  148. package/glTF/2.0/Extensions/EXT_texture_webp.pure.js +50 -0
  149. package/glTF/2.0/Extensions/EXT_texture_webp.pure.js.map +1 -0
  150. package/glTF/2.0/Extensions/EXT_texture_webp.types.d.ts +9 -0
  151. package/glTF/2.0/Extensions/EXT_texture_webp.types.js +2 -0
  152. package/glTF/2.0/Extensions/EXT_texture_webp.types.js.map +1 -0
  153. package/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +4 -51
  154. package/glTF/2.0/Extensions/ExtrasAsMetadata.js +6 -71
  155. package/glTF/2.0/Extensions/ExtrasAsMetadata.js.map +1 -1
  156. package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.d.ts +50 -0
  157. package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.js +85 -0
  158. package/glTF/2.0/Extensions/ExtrasAsMetadata.pure.js.map +1 -0
  159. package/glTF/2.0/Extensions/ExtrasAsMetadata.types.d.ts +9 -0
  160. package/glTF/2.0/Extensions/ExtrasAsMetadata.types.js +2 -0
  161. package/glTF/2.0/Extensions/ExtrasAsMetadata.types.js.map +1 -0
  162. package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +5 -45
  163. package/glTF/2.0/Extensions/KHR_animation_pointer.js +7 -75
  164. package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -1
  165. package/glTF/2.0/Extensions/KHR_animation_pointer.pure.d.ts +43 -0
  166. package/glTF/2.0/Extensions/KHR_animation_pointer.pure.js +89 -0
  167. package/glTF/2.0/Extensions/KHR_animation_pointer.pure.js.map +1 -0
  168. package/glTF/2.0/Extensions/KHR_animation_pointer.types.d.ts +9 -0
  169. package/glTF/2.0/Extensions/KHR_animation_pointer.types.js +2 -0
  170. package/glTF/2.0/Extensions/KHR_animation_pointer.types.js.map +1 -0
  171. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +4 -45
  172. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +6 -90
  173. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -1
  174. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.d.ts +44 -0
  175. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.js +105 -0
  176. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.pure.js.map +1 -0
  177. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.d.ts +9 -0
  178. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.js +2 -0
  179. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.types.js.map +1 -0
  180. package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +4 -0
  181. package/glTF/2.0/Extensions/KHR_interactivity/pure.js +5 -0
  182. package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -0
  183. package/glTF/2.0/Extensions/KHR_interactivity.d.ts +4 -36
  184. package/glTF/2.0/Extensions/KHR_interactivity.js +6 -148
  185. package/glTF/2.0/Extensions/KHR_interactivity.js.map +1 -1
  186. package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +35 -0
  187. package/glTF/2.0/Extensions/KHR_interactivity.pure.js +163 -0
  188. package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -0
  189. package/glTF/2.0/Extensions/KHR_interactivity.types.d.ts +9 -0
  190. package/glTF/2.0/Extensions/KHR_interactivity.types.js +2 -0
  191. package/glTF/2.0/Extensions/KHR_interactivity.types.js.map +1 -0
  192. package/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +4 -39
  193. package/glTF/2.0/Extensions/KHR_lights_punctual.js +6 -89
  194. package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
  195. package/glTF/2.0/Extensions/KHR_lights_punctual.pure.d.ts +38 -0
  196. package/glTF/2.0/Extensions/KHR_lights_punctual.pure.js +104 -0
  197. package/glTF/2.0/Extensions/KHR_lights_punctual.pure.js.map +1 -0
  198. package/glTF/2.0/Extensions/KHR_lights_punctual.types.d.ts +9 -0
  199. package/glTF/2.0/Extensions/KHR_lights_punctual.types.js +2 -0
  200. package/glTF/2.0/Extensions/KHR_lights_punctual.types.js.map +1 -0
  201. package/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +4 -40
  202. package/glTF/2.0/Extensions/KHR_materials_anisotropy.js +6 -63
  203. package/glTF/2.0/Extensions/KHR_materials_anisotropy.js.map +1 -1
  204. package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.d.ts +39 -0
  205. package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.js +78 -0
  206. package/glTF/2.0/Extensions/KHR_materials_anisotropy.pure.js.map +1 -0
  207. package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.d.ts +9 -0
  208. package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.js +2 -0
  209. package/glTF/2.0/Extensions/KHR_materials_anisotropy.types.js.map +1 -0
  210. package/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +4 -41
  211. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +6 -77
  212. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
  213. package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.d.ts +40 -0
  214. package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.js +92 -0
  215. package/glTF/2.0/Extensions/KHR_materials_clearcoat.pure.js.map +1 -0
  216. package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.d.ts +9 -0
  217. package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.js +2 -0
  218. package/glTF/2.0/Extensions/KHR_materials_clearcoat.types.js.map +1 -0
  219. package/glTF/2.0/Extensions/KHR_materials_coat.d.ts +4 -47
  220. package/glTF/2.0/Extensions/KHR_materials_coat.js +6 -117
  221. package/glTF/2.0/Extensions/KHR_materials_coat.js.map +1 -1
  222. package/glTF/2.0/Extensions/KHR_materials_coat.pure.d.ts +46 -0
  223. package/glTF/2.0/Extensions/KHR_materials_coat.pure.js +132 -0
  224. package/glTF/2.0/Extensions/KHR_materials_coat.pure.js.map +1 -0
  225. package/glTF/2.0/Extensions/KHR_materials_coat.types.d.ts +9 -0
  226. package/glTF/2.0/Extensions/KHR_materials_coat.types.js +2 -0
  227. package/glTF/2.0/Extensions/KHR_materials_coat.types.js.map +1 -0
  228. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +4 -41
  229. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +6 -56
  230. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js.map +1 -1
  231. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.d.ts +40 -0
  232. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.js +71 -0
  233. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.pure.js.map +1 -0
  234. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.d.ts +9 -0
  235. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.js +2 -0
  236. package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.types.js.map +1 -0
  237. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +4 -41
  238. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +6 -71
  239. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js.map +1 -1
  240. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.d.ts +40 -0
  241. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.js +86 -0
  242. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.pure.js.map +1 -0
  243. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.d.ts +9 -0
  244. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.js +2 -0
  245. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.types.js.map +1 -0
  246. package/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +4 -41
  247. package/glTF/2.0/Extensions/KHR_materials_dispersion.js +6 -54
  248. package/glTF/2.0/Extensions/KHR_materials_dispersion.js.map +1 -1
  249. package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.d.ts +40 -0
  250. package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.js +69 -0
  251. package/glTF/2.0/Extensions/KHR_materials_dispersion.pure.js.map +1 -0
  252. package/glTF/2.0/Extensions/KHR_materials_dispersion.types.d.ts +9 -0
  253. package/glTF/2.0/Extensions/KHR_materials_dispersion.types.js +2 -0
  254. package/glTF/2.0/Extensions/KHR_materials_dispersion.types.js.map +1 -0
  255. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +4 -40
  256. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +6 -45
  257. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -1
  258. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.d.ts +39 -0
  259. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.js +60 -0
  260. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.pure.js.map +1 -0
  261. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.d.ts +9 -0
  262. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.js +2 -0
  263. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.types.js.map +1 -0
  264. package/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +4 -41
  265. package/glTF/2.0/Extensions/KHR_materials_fuzz.js +6 -75
  266. package/glTF/2.0/Extensions/KHR_materials_fuzz.js.map +1 -1
  267. package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.d.ts +40 -0
  268. package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.js +90 -0
  269. package/glTF/2.0/Extensions/KHR_materials_fuzz.pure.js.map +1 -0
  270. package/glTF/2.0/Extensions/KHR_materials_fuzz.types.d.ts +9 -0
  271. package/glTF/2.0/Extensions/KHR_materials_fuzz.types.js +2 -0
  272. package/glTF/2.0/Extensions/KHR_materials_fuzz.types.js.map +1 -0
  273. package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +4 -44
  274. package/glTF/2.0/Extensions/KHR_materials_ior.js +6 -52
  275. package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
  276. package/glTF/2.0/Extensions/KHR_materials_ior.pure.d.ts +43 -0
  277. package/glTF/2.0/Extensions/KHR_materials_ior.pure.js +67 -0
  278. package/glTF/2.0/Extensions/KHR_materials_ior.pure.js.map +1 -0
  279. package/glTF/2.0/Extensions/KHR_materials_ior.types.d.ts +9 -0
  280. package/glTF/2.0/Extensions/KHR_materials_ior.types.js +2 -0
  281. package/glTF/2.0/Extensions/KHR_materials_ior.types.js.map +1 -0
  282. package/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +4 -40
  283. package/glTF/2.0/Extensions/KHR_materials_iridescence.js +6 -66
  284. package/glTF/2.0/Extensions/KHR_materials_iridescence.js.map +1 -1
  285. package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.d.ts +39 -0
  286. package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.js +81 -0
  287. package/glTF/2.0/Extensions/KHR_materials_iridescence.pure.js.map +1 -0
  288. package/glTF/2.0/Extensions/KHR_materials_iridescence.types.d.ts +9 -0
  289. package/glTF/2.0/Extensions/KHR_materials_iridescence.types.js +2 -0
  290. package/glTF/2.0/Extensions/KHR_materials_iridescence.types.js.map +1 -0
  291. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +4 -40
  292. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +6 -72
  293. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js.map +1 -1
  294. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.d.ts +39 -0
  295. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.js +87 -0
  296. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.pure.js.map +1 -0
  297. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.d.ts +9 -0
  298. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.js +2 -0
  299. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.types.js.map +1 -0
  300. package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +4 -41
  301. package/glTF/2.0/Extensions/KHR_materials_sheen.js +6 -71
  302. package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
  303. package/glTF/2.0/Extensions/KHR_materials_sheen.pure.d.ts +40 -0
  304. package/glTF/2.0/Extensions/KHR_materials_sheen.pure.js +86 -0
  305. package/glTF/2.0/Extensions/KHR_materials_sheen.pure.js.map +1 -0
  306. package/glTF/2.0/Extensions/KHR_materials_sheen.types.d.ts +9 -0
  307. package/glTF/2.0/Extensions/KHR_materials_sheen.types.js +2 -0
  308. package/glTF/2.0/Extensions/KHR_materials_sheen.types.js.map +1 -0
  309. package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +4 -40
  310. package/glTF/2.0/Extensions/KHR_materials_specular.js +6 -74
  311. package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
  312. package/glTF/2.0/Extensions/KHR_materials_specular.pure.d.ts +39 -0
  313. package/glTF/2.0/Extensions/KHR_materials_specular.pure.js +89 -0
  314. package/glTF/2.0/Extensions/KHR_materials_specular.pure.js.map +1 -0
  315. package/glTF/2.0/Extensions/KHR_materials_specular.types.d.ts +9 -0
  316. package/glTF/2.0/Extensions/KHR_materials_specular.types.js +2 -0
  317. package/glTF/2.0/Extensions/KHR_materials_specular.types.js.map +1 -0
  318. package/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +4 -40
  319. package/glTF/2.0/Extensions/KHR_materials_transmission.js +6 -70
  320. package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
  321. package/glTF/2.0/Extensions/KHR_materials_transmission.pure.d.ts +39 -0
  322. package/glTF/2.0/Extensions/KHR_materials_transmission.pure.js +85 -0
  323. package/glTF/2.0/Extensions/KHR_materials_transmission.pure.js.map +1 -0
  324. package/glTF/2.0/Extensions/KHR_materials_transmission.types.d.ts +9 -0
  325. package/glTF/2.0/Extensions/KHR_materials_transmission.types.js +2 -0
  326. package/glTF/2.0/Extensions/KHR_materials_transmission.types.js.map +1 -0
  327. package/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +4 -40
  328. package/glTF/2.0/Extensions/KHR_materials_unlit.js +6 -64
  329. package/glTF/2.0/Extensions/KHR_materials_unlit.js.map +1 -1
  330. package/glTF/2.0/Extensions/KHR_materials_unlit.pure.d.ts +39 -0
  331. package/glTF/2.0/Extensions/KHR_materials_unlit.pure.js +79 -0
  332. package/glTF/2.0/Extensions/KHR_materials_unlit.pure.js.map +1 -0
  333. package/glTF/2.0/Extensions/KHR_materials_unlit.types.d.ts +9 -0
  334. package/glTF/2.0/Extensions/KHR_materials_unlit.types.js +2 -0
  335. package/glTF/2.0/Extensions/KHR_materials_unlit.types.js.map +1 -0
  336. package/glTF/2.0/Extensions/KHR_materials_variants.d.ts +4 -110
  337. package/glTF/2.0/Extensions/KHR_materials_variants.js +6 -260
  338. package/glTF/2.0/Extensions/KHR_materials_variants.js.map +1 -1
  339. package/glTF/2.0/Extensions/KHR_materials_variants.pure.d.ts +97 -0
  340. package/glTF/2.0/Extensions/KHR_materials_variants.pure.js +275 -0
  341. package/glTF/2.0/Extensions/KHR_materials_variants.pure.js.map +1 -0
  342. package/glTF/2.0/Extensions/KHR_materials_variants.types.d.ts +29 -0
  343. package/glTF/2.0/Extensions/KHR_materials_variants.types.js +2 -0
  344. package/glTF/2.0/Extensions/KHR_materials_variants.types.js.map +1 -0
  345. package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +4 -41
  346. package/glTF/2.0/Extensions/KHR_materials_volume.js +6 -77
  347. package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -1
  348. package/glTF/2.0/Extensions/KHR_materials_volume.pure.d.ts +40 -0
  349. package/glTF/2.0/Extensions/KHR_materials_volume.pure.js +92 -0
  350. package/glTF/2.0/Extensions/KHR_materials_volume.pure.js.map +1 -0
  351. package/glTF/2.0/Extensions/KHR_materials_volume.types.d.ts +9 -0
  352. package/glTF/2.0/Extensions/KHR_materials_volume.types.js +2 -0
  353. package/glTF/2.0/Extensions/KHR_materials_volume.types.js.map +1 -0
  354. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +4 -43
  355. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +6 -113
  356. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js.map +1 -1
  357. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.d.ts +42 -0
  358. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.js +128 -0
  359. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.pure.js.map +1 -0
  360. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.d.ts +9 -0
  361. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.js +2 -0
  362. package/glTF/2.0/Extensions/KHR_materials_volume_scatter.types.js.map +1 -0
  363. package/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +4 -27
  364. package/glTF/2.0/Extensions/KHR_mesh_quantization.js +6 -20
  365. package/glTF/2.0/Extensions/KHR_mesh_quantization.js.map +1 -1
  366. package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.d.ts +26 -0
  367. package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.js +35 -0
  368. package/glTF/2.0/Extensions/KHR_mesh_quantization.pure.js.map +1 -0
  369. package/glTF/2.0/Extensions/KHR_mesh_quantization.types.d.ts +9 -0
  370. package/glTF/2.0/Extensions/KHR_mesh_quantization.types.js +2 -0
  371. package/glTF/2.0/Extensions/KHR_mesh_quantization.types.js.map +1 -0
  372. package/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +4 -29
  373. package/glTF/2.0/Extensions/KHR_node_hoverability.js +6 -187
  374. package/glTF/2.0/Extensions/KHR_node_hoverability.js.map +1 -1
  375. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +28 -0
  376. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +202 -0
  377. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -0
  378. package/glTF/2.0/Extensions/KHR_node_hoverability.types.d.ts +9 -0
  379. package/glTF/2.0/Extensions/KHR_node_hoverability.types.js +2 -0
  380. package/glTF/2.0/Extensions/KHR_node_hoverability.types.js.map +1 -0
  381. package/glTF/2.0/Extensions/KHR_node_selectability.d.ts +4 -28
  382. package/glTF/2.0/Extensions/KHR_node_selectability.js +6 -121
  383. package/glTF/2.0/Extensions/KHR_node_selectability.js.map +1 -1
  384. package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +27 -0
  385. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +136 -0
  386. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -0
  387. package/glTF/2.0/Extensions/KHR_node_selectability.types.d.ts +9 -0
  388. package/glTF/2.0/Extensions/KHR_node_selectability.types.js +2 -0
  389. package/glTF/2.0/Extensions/KHR_node_selectability.types.js.map +1 -0
  390. package/glTF/2.0/Extensions/KHR_node_visibility.d.ts +4 -28
  391. package/glTF/2.0/Extensions/KHR_node_visibility.js +6 -64
  392. package/glTF/2.0/Extensions/KHR_node_visibility.js.map +1 -1
  393. package/glTF/2.0/Extensions/KHR_node_visibility.pure.d.ts +27 -0
  394. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js +79 -0
  395. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js.map +1 -0
  396. package/glTF/2.0/Extensions/KHR_node_visibility.types.d.ts +9 -0
  397. package/glTF/2.0/Extensions/KHR_node_visibility.types.js +2 -0
  398. package/glTF/2.0/Extensions/KHR_node_visibility.types.js.map +1 -0
  399. package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +4 -31
  400. package/glTF/2.0/Extensions/KHR_texture_basisu.js +6 -35
  401. package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -1
  402. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.d.ts +30 -0
  403. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js +50 -0
  404. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js.map +1 -0
  405. package/glTF/2.0/Extensions/KHR_texture_basisu.types.d.ts +9 -0
  406. package/glTF/2.0/Extensions/KHR_texture_basisu.types.js +2 -0
  407. package/glTF/2.0/Extensions/KHR_texture_basisu.types.js.map +1 -0
  408. package/glTF/2.0/Extensions/KHR_texture_transform.d.ts +4 -35
  409. package/glTF/2.0/Extensions/KHR_texture_transform.js +6 -56
  410. package/glTF/2.0/Extensions/KHR_texture_transform.js.map +1 -1
  411. package/glTF/2.0/Extensions/KHR_texture_transform.pure.d.ts +34 -0
  412. package/glTF/2.0/Extensions/KHR_texture_transform.pure.js +71 -0
  413. package/glTF/2.0/Extensions/KHR_texture_transform.pure.js.map +1 -0
  414. package/glTF/2.0/Extensions/KHR_texture_transform.types.d.ts +9 -0
  415. package/glTF/2.0/Extensions/KHR_texture_transform.types.js +2 -0
  416. package/glTF/2.0/Extensions/KHR_texture_transform.types.js.map +1 -0
  417. package/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +4 -37
  418. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js +6 -45
  419. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js.map +1 -1
  420. package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.d.ts +36 -0
  421. package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.js +60 -0
  422. package/glTF/2.0/Extensions/KHR_xmp_json_ld.pure.js.map +1 -0
  423. package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.d.ts +9 -0
  424. package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.js +2 -0
  425. package/glTF/2.0/Extensions/KHR_xmp_json_ld.types.js.map +1 -0
  426. package/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +5 -54
  427. package/glTF/2.0/Extensions/MSFT_audio_emitter.js +7 -226
  428. package/glTF/2.0/Extensions/MSFT_audio_emitter.js.map +1 -1
  429. package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.d.ts +52 -0
  430. package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.js +240 -0
  431. package/glTF/2.0/Extensions/MSFT_audio_emitter.pure.js.map +1 -0
  432. package/glTF/2.0/Extensions/MSFT_audio_emitter.types.d.ts +9 -0
  433. package/glTF/2.0/Extensions/MSFT_audio_emitter.types.js +2 -0
  434. package/glTF/2.0/Extensions/MSFT_audio_emitter.types.js.map +1 -0
  435. package/glTF/2.0/Extensions/MSFT_lod.d.ts +4 -102
  436. package/glTF/2.0/Extensions/MSFT_lod.js +6 -335
  437. package/glTF/2.0/Extensions/MSFT_lod.js.map +1 -1
  438. package/glTF/2.0/Extensions/MSFT_lod.pure.d.ts +96 -0
  439. package/glTF/2.0/Extensions/MSFT_lod.pure.js +350 -0
  440. package/glTF/2.0/Extensions/MSFT_lod.pure.js.map +1 -0
  441. package/glTF/2.0/Extensions/MSFT_lod.types.d.ts +14 -0
  442. package/glTF/2.0/Extensions/MSFT_lod.types.js +2 -0
  443. package/glTF/2.0/Extensions/MSFT_lod.types.js.map +1 -0
  444. package/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +6 -27
  445. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js +8 -40
  446. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js.map +1 -1
  447. package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.d.ts +24 -0
  448. package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.js +53 -0
  449. package/glTF/2.0/Extensions/MSFT_minecraftMesh.pure.js.map +1 -0
  450. package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.d.ts +9 -0
  451. package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.js +2 -0
  452. package/glTF/2.0/Extensions/MSFT_minecraftMesh.types.js.map +1 -0
  453. package/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +6 -27
  454. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js +8 -38
  455. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js.map +1 -1
  456. package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.d.ts +24 -0
  457. package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.js +51 -0
  458. package/glTF/2.0/Extensions/MSFT_sRGBFactors.pure.js.map +1 -0
  459. package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.d.ts +9 -0
  460. package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.js +2 -0
  461. package/glTF/2.0/Extensions/MSFT_sRGBFactors.types.js.map +1 -0
  462. package/glTF/2.0/Extensions/pure.d.ts +45 -0
  463. package/glTF/2.0/Extensions/pure.js +47 -0
  464. package/glTF/2.0/Extensions/pure.js.map +1 -0
  465. package/glTF/2.0/glTFLoader.d.ts +1 -471
  466. package/glTF/2.0/glTFLoader.js +3 -2539
  467. package/glTF/2.0/glTFLoader.js.map +1 -1
  468. package/glTF/2.0/glTFLoader.pure.d.ts +476 -0
  469. package/glTF/2.0/glTFLoader.pure.js +2563 -0
  470. package/glTF/2.0/glTFLoader.pure.js.map +1 -0
  471. package/glTF/2.0/pure.d.ts +8 -0
  472. package/glTF/2.0/pure.js +10 -0
  473. package/glTF/2.0/pure.js.map +1 -0
  474. package/glTF/glTFFileLoader.d.ts +5 -551
  475. package/glTF/glTFFileLoader.js +6 -996
  476. package/glTF/glTFFileLoader.js.map +1 -1
  477. package/glTF/glTFFileLoader.pure.d.ts +562 -0
  478. package/glTF/glTFFileLoader.pure.js +1024 -0
  479. package/glTF/glTFFileLoader.pure.js.map +1 -0
  480. package/glTF/glTFFileLoader.types.d.ts +11 -0
  481. package/glTF/glTFFileLoader.types.js +2 -0
  482. package/glTF/glTFFileLoader.types.js.map +1 -0
  483. package/glTF/pure.d.ts +6 -0
  484. package/glTF/pure.js +8 -0
  485. package/glTF/pure.js.map +1 -0
  486. package/package.json +56 -4
  487. package/pure.d.ts +8 -0
  488. package/pure.js +10 -0
  489. package/pure.js.map +1 -0
@@ -0,0 +1,1024 @@
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ import { Tools } from "@babylonjs/core/Misc/tools.pure.js";
3
+ import { RegisterSceneLoaderPlugin, } from "@babylonjs/core/Loading/sceneLoader.js";
4
+ import { AssetContainer } from "@babylonjs/core/assetContainer.js";
5
+ import { Logger } from "@babylonjs/core/Misc/logger.js";
6
+ import { DataReader } from "@babylonjs/core/Misc/dataReader.js";
7
+ import { GLTFValidation } from "./glTFValidation.js";
8
+ import { GLTFFileLoaderMetadata, GLTFMagicBase64Encoded } from "./glTFFileLoader.metadata.js";
9
+ import { DecodeBase64UrlToBinary } from "@babylonjs/core/Misc/fileTools.pure.js";
10
+ import { RuntimeError, ErrorCodes } from "@babylonjs/core/Misc/error.js";
11
+ function readAsync(arrayBuffer, byteOffset, byteLength) {
12
+ try {
13
+ return Promise.resolve(new Uint8Array(arrayBuffer, byteOffset, byteLength));
14
+ }
15
+ catch (e) {
16
+ return Promise.reject(e);
17
+ }
18
+ }
19
+ function readViewAsync(arrayBufferView, byteOffset, byteLength) {
20
+ try {
21
+ if (byteOffset < 0 || byteOffset >= arrayBufferView.byteLength) {
22
+ throw new RangeError("Offset is out of range.");
23
+ }
24
+ if (byteOffset + byteLength > arrayBufferView.byteLength) {
25
+ throw new RangeError("Length is out of range.");
26
+ }
27
+ return Promise.resolve(new Uint8Array(arrayBufferView.buffer, arrayBufferView.byteOffset + byteOffset, byteLength));
28
+ }
29
+ catch (e) {
30
+ return Promise.reject(e);
31
+ }
32
+ }
33
+ /**
34
+ * Mode that determines the coordinate system to use.
35
+ */
36
+ export var GLTFLoaderCoordinateSystemMode;
37
+ (function (GLTFLoaderCoordinateSystemMode) {
38
+ /**
39
+ * Automatically convert the glTF right-handed data to the appropriate system based on the current coordinate system mode of the scene.
40
+ */
41
+ GLTFLoaderCoordinateSystemMode[GLTFLoaderCoordinateSystemMode["AUTO"] = 0] = "AUTO";
42
+ /**
43
+ * Sets the useRightHandedSystem flag on the scene.
44
+ */
45
+ GLTFLoaderCoordinateSystemMode[GLTFLoaderCoordinateSystemMode["FORCE_RIGHT_HANDED"] = 1] = "FORCE_RIGHT_HANDED";
46
+ })(GLTFLoaderCoordinateSystemMode || (GLTFLoaderCoordinateSystemMode = {}));
47
+ /**
48
+ * Mode that determines what animations will start.
49
+ */
50
+ export var GLTFLoaderAnimationStartMode;
51
+ (function (GLTFLoaderAnimationStartMode) {
52
+ /**
53
+ * No animation will start.
54
+ */
55
+ GLTFLoaderAnimationStartMode[GLTFLoaderAnimationStartMode["NONE"] = 0] = "NONE";
56
+ /**
57
+ * The first animation will start.
58
+ */
59
+ GLTFLoaderAnimationStartMode[GLTFLoaderAnimationStartMode["FIRST"] = 1] = "FIRST";
60
+ /**
61
+ * All animations will start.
62
+ */
63
+ GLTFLoaderAnimationStartMode[GLTFLoaderAnimationStartMode["ALL"] = 2] = "ALL";
64
+ })(GLTFLoaderAnimationStartMode || (GLTFLoaderAnimationStartMode = {}));
65
+ /**
66
+ * Loader state.
67
+ */
68
+ export var GLTFLoaderState;
69
+ (function (GLTFLoaderState) {
70
+ /**
71
+ * The asset is loading.
72
+ */
73
+ GLTFLoaderState[GLTFLoaderState["LOADING"] = 0] = "LOADING";
74
+ /**
75
+ * The asset is ready for rendering.
76
+ */
77
+ GLTFLoaderState[GLTFLoaderState["READY"] = 1] = "READY";
78
+ /**
79
+ * The asset is completely loaded.
80
+ */
81
+ GLTFLoaderState[GLTFLoaderState["COMPLETE"] = 2] = "COMPLETE";
82
+ })(GLTFLoaderState || (GLTFLoaderState = {}));
83
+ /**
84
+ * This class contains all the concrete (not abstract) glTF options, excluding callbacks.
85
+ * The purpose of this class is to make it easy to provide a way to mutate the default
86
+ * loader options (see the GLTFLoaderDefaultOptions instance below) without duplicating
87
+ * all the options in yet another object. Since this class is instantiated for the default
88
+ * options object, abstract properties and callbacks are not included, it's more just
89
+ * flag-type options.
90
+ */
91
+ class GLTFLoaderBaseOptions {
92
+ constructor() {
93
+ /**
94
+ * Defines if the loader should always compute the bounding boxes of meshes and not use the min/max values from the position accessor. Defaults to false.
95
+ */
96
+ this.alwaysComputeBoundingBox = false;
97
+ /**
98
+ * Defines if the loader should always compute the nearest common ancestor of the skeleton joints instead of using `skin.skeleton`. Defaults to false.
99
+ * Set this to true if loading assets with invalid `skin.skeleton` values.
100
+ */
101
+ this.alwaysComputeSkeletonRootNode = false;
102
+ /**
103
+ * The animation start mode. Defaults to FIRST.
104
+ */
105
+ this.animationStartMode = GLTFLoaderAnimationStartMode.FIRST;
106
+ /**
107
+ * Defines if the loader should compile materials before raising the success callback. Defaults to false.
108
+ */
109
+ this.compileMaterials = false;
110
+ /**
111
+ * Defines if the loader should compile shadow generators before raising the success callback. Defaults to false.
112
+ */
113
+ this.compileShadowGenerators = false;
114
+ /**
115
+ * The coordinate system mode. Defaults to AUTO.
116
+ */
117
+ this.coordinateSystemMode = GLTFLoaderCoordinateSystemMode.AUTO;
118
+ /**
119
+ * Defines if the loader should create instances when multiple glTF nodes point to the same glTF mesh. Defaults to true.
120
+ */
121
+ this.createInstances = true;
122
+ /**
123
+ * If true, load all materials defined in the file, even if not used by any mesh. Defaults to false.
124
+ */
125
+ this.loadAllMaterials = false;
126
+ /**
127
+ * Defines if the loader should load morph targets. Defaults to true.
128
+ */
129
+ this.loadMorphTargets = true;
130
+ /**
131
+ * When loading a mesh with morph targets, configure its MorphTargetManager so the morph shader is compiled
132
+ * once for all targets (`numMaxInfluencers = numTargets`, `optimizeInfluencers = false`). This prevents the
133
+ * shader from being recompiled (and the resulting one-frame visual glitch) when an animated morph target
134
+ * influence passes through zero and the active influencer count changes.
135
+ * Disable to restore the previous behavior, where only the currently active (non-zero) influencers drive the
136
+ * shader. That is cheaper per frame for meshes with very large morph target counts, but recompiles the shader
137
+ * during animation. Defaults to true.
138
+ */
139
+ this.useMaxMorphTargetInfluencers = true;
140
+ /**
141
+ * Defines if the loader should load node animations. Defaults to true.
142
+ * NOTE: The animation of this node will still load if the node is also a joint of a skin and `loadSkins` is true.
143
+ */
144
+ this.loadNodeAnimations = true;
145
+ /**
146
+ * If true, load only the materials defined in the file. Defaults to false.
147
+ */
148
+ this.loadOnlyMaterials = false;
149
+ /**
150
+ * Defines if the loader should load skins. Defaults to true.
151
+ */
152
+ this.loadSkins = true;
153
+ /**
154
+ * If true, do not load any materials defined in the file. Defaults to false.
155
+ */
156
+ this.skipMaterials = false;
157
+ /**
158
+ * When loading glTF animations, which are defined in seconds, target them to this FPS. Defaults to 60.
159
+ */
160
+ this.targetFps = 60;
161
+ /**
162
+ * Defines if the Alpha blended materials are only applied as coverage.
163
+ * If false, (default) The luminance of each pixel will reduce its opacity to simulate the behaviour of most physical materials.
164
+ * If true, no extra effects are applied to transparent pixels.
165
+ */
166
+ this.transparencyAsCoverage = false;
167
+ /**
168
+ * Defines if the loader should also compile materials with clip planes. Defaults to false.
169
+ */
170
+ this.useClipPlane = false;
171
+ /**
172
+ * If true, the loader will derive the name for Babylon textures from the glTF texture name, image name, or image url. Defaults to false.
173
+ * Note that it is possible for multiple Babylon textures to share the same name when the Babylon textures load from the same glTF texture or image.
174
+ */
175
+ this.useGltfTextureNames = false;
176
+ /**
177
+ * Defines if the loader should use range requests when load binary glTF files from HTTP.
178
+ * Enabling will disable offline support and glTF validator.
179
+ * Defaults to false.
180
+ */
181
+ this.useRangeRequests = false;
182
+ /**
183
+ * If true, load the color (gamma encoded) textures into sRGB buffers (if supported by the GPU), which will yield more accurate results when sampling the texture. Defaults to true.
184
+ */
185
+ this.useSRGBBuffers = true;
186
+ /**
187
+ * Defines if the loader should validate the asset.
188
+ */
189
+ this.validate = false;
190
+ /**
191
+ * Load the glTF files using the OpenPBR material.
192
+ * @experimental
193
+ */
194
+ this.useOpenPBR = false;
195
+ /**
196
+ * If true, the loader will not use the transmission helper when loading materials with transmission.
197
+ */
198
+ this.dontUseTransmissionHelper = false;
199
+ }
200
+ }
201
+ /**
202
+ * The default GLTF loader options.
203
+ * Override the properties of this object to globally change the default loader options.
204
+ * To specify options for a specific load call, pass those options into the associated load function.
205
+ */
206
+ export const GLTFLoaderDefaultOptions = new GLTFLoaderBaseOptions();
207
+ /**
208
+ * Base class for glTF loader options that supports copying values from a partial options object.
209
+ */
210
+ class GLTFLoaderOptions extends GLTFLoaderBaseOptions {
211
+ constructor() {
212
+ super(...arguments);
213
+ /**
214
+ * Defines options for glTF extensions.
215
+ */
216
+ this.extensionOptions = {};
217
+ /**
218
+ * Function called before loading a url referenced by the asset.
219
+ * @param url url referenced by the asset
220
+ * @returns Async url to load
221
+ */
222
+ this.preprocessUrlAsync = (url) => Promise.resolve(url);
223
+ }
224
+ // eslint-disable-next-line babylonjs/available
225
+ copyFrom(options) {
226
+ if (options) {
227
+ this.alwaysComputeBoundingBox = options.alwaysComputeBoundingBox ?? this.alwaysComputeBoundingBox;
228
+ this.alwaysComputeSkeletonRootNode = options.alwaysComputeSkeletonRootNode ?? this.alwaysComputeSkeletonRootNode;
229
+ this.animationStartMode = options.animationStartMode ?? this.animationStartMode;
230
+ this.capturePerformanceCounters = options.capturePerformanceCounters ?? this.capturePerformanceCounters;
231
+ this.compileMaterials = options.compileMaterials ?? this.compileMaterials;
232
+ this.compileShadowGenerators = options.compileShadowGenerators ?? this.compileShadowGenerators;
233
+ this.coordinateSystemMode = options.coordinateSystemMode ?? this.coordinateSystemMode;
234
+ this.createInstances = options.createInstances ?? this.createInstances;
235
+ this.customRootNode = options.customRootNode;
236
+ this.extensionOptions = options.extensionOptions ?? this.extensionOptions;
237
+ this.loadAllMaterials = options.loadAllMaterials ?? this.loadAllMaterials;
238
+ this.loadMorphTargets = options.loadMorphTargets ?? this.loadMorphTargets;
239
+ this.loadNodeAnimations = options.loadNodeAnimations ?? this.loadNodeAnimations;
240
+ this.loadOnlyMaterials = options.loadOnlyMaterials ?? this.loadOnlyMaterials;
241
+ this.loadSkins = options.loadSkins ?? this.loadSkins;
242
+ this.loggingEnabled = options.loggingEnabled ?? this.loggingEnabled;
243
+ this.onCameraLoaded = options.onCameraLoaded;
244
+ this.onMaterialLoaded = options.onMaterialLoaded;
245
+ this.onMeshLoaded = options.onMeshLoaded;
246
+ this.onParsed = options.onParsed;
247
+ this.onSkinLoaded = options.onSkinLoaded;
248
+ this.onTextureLoaded = options.onTextureLoaded;
249
+ this.onValidated = options.onValidated;
250
+ this.preprocessUrlAsync = options.preprocessUrlAsync ?? this.preprocessUrlAsync;
251
+ this.skipMaterials = options.skipMaterials ?? this.skipMaterials;
252
+ this.targetFps = options.targetFps ?? this.targetFps;
253
+ this.transparencyAsCoverage = options.transparencyAsCoverage ?? this.transparencyAsCoverage;
254
+ this.useClipPlane = options.useClipPlane ?? this.useClipPlane;
255
+ this.useGltfTextureNames = options.useGltfTextureNames ?? this.useGltfTextureNames;
256
+ this.useMaxMorphTargetInfluencers = options.useMaxMorphTargetInfluencers ?? this.useMaxMorphTargetInfluencers;
257
+ this.useOpenPBR = options.useOpenPBR ?? this.useOpenPBR;
258
+ this.useRangeRequests = options.useRangeRequests ?? this.useRangeRequests;
259
+ this.useSRGBBuffers = options.useSRGBBuffers ?? this.useSRGBBuffers;
260
+ this.validate = options.validate ?? this.validate;
261
+ this.dontUseTransmissionHelper = options.dontUseTransmissionHelper ?? this.dontUseTransmissionHelper;
262
+ }
263
+ }
264
+ }
265
+ /**
266
+ * File loader for loading glTF files into a scene.
267
+ */
268
+ export class GLTFFileLoader extends GLTFLoaderOptions {
269
+ /**
270
+ * Creates a new glTF file loader.
271
+ * @param options The options for the loader
272
+ */
273
+ constructor(options) {
274
+ super();
275
+ // --------------------
276
+ // Begin Common options
277
+ // --------------------
278
+ /**
279
+ * Raised when the asset has been parsed
280
+ */
281
+ this.onParsedObservable = new Observable();
282
+ // --------------
283
+ // End V1 options
284
+ // --------------
285
+ /**
286
+ * Observable raised when the loader creates a mesh after parsing the glTF properties of the mesh.
287
+ * Note that the observable is raised as soon as the mesh object is created, meaning some data may not have been setup yet for this mesh (vertex data, morph targets, material, ...)
288
+ */
289
+ this.onMeshLoadedObservable = new Observable();
290
+ /**
291
+ * Observable raised when the loader creates a skin after parsing the glTF properties of the skin node.
292
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/importers/glTF/glTFSkinning#ignoring-the-transform-of-the-skinned-mesh
293
+ * @param node - the transform node that corresponds to the original glTF skin node used for animations
294
+ * @param skinnedNode - the transform node that is the skinned mesh itself or the parent of the skinned meshes
295
+ */
296
+ this.onSkinLoadedObservable = new Observable();
297
+ /**
298
+ * Observable raised when the loader creates a texture after parsing the glTF properties of the texture.
299
+ */
300
+ this.onTextureLoadedObservable = new Observable();
301
+ /**
302
+ * Observable raised when the loader creates a material after parsing the glTF properties of the material.
303
+ */
304
+ this.onMaterialLoadedObservable = new Observable();
305
+ /**
306
+ * Observable raised when the loader creates a camera after parsing the glTF properties of the camera.
307
+ */
308
+ this.onCameraLoadedObservable = new Observable();
309
+ /**
310
+ * Observable raised when the asset is completely loaded, immediately before the loader is disposed.
311
+ * For assets with LODs, raised when all of the LODs are complete.
312
+ * For assets without LODs, raised when the model is complete, immediately after the loader resolves the returned promise.
313
+ */
314
+ this.onCompleteObservable = new Observable();
315
+ /**
316
+ * Observable raised when an error occurs.
317
+ */
318
+ this.onErrorObservable = new Observable();
319
+ /**
320
+ * Observable raised after the loader is disposed.
321
+ */
322
+ this.onDisposeObservable = new Observable();
323
+ /**
324
+ * Observable raised after a loader extension is created.
325
+ * Set additional options for a loader extension in this event.
326
+ */
327
+ this.onExtensionLoadedObservable = new Observable();
328
+ /**
329
+ * Observable raised after validation when validate is set to true. The event data is the result of the validation.
330
+ */
331
+ this.onValidatedObservable = new Observable();
332
+ this._loader = null;
333
+ this._state = null;
334
+ this._requests = new Array();
335
+ /**
336
+ * Name of the loader ("gltf")
337
+ */
338
+ this.name = GLTFFileLoaderMetadata.name;
339
+ /** @internal */
340
+ this.extensions = GLTFFileLoaderMetadata.extensions;
341
+ /**
342
+ * Observable raised when the loader state changes.
343
+ */
344
+ this.onLoaderStateChangedObservable = new Observable();
345
+ this._logIndentLevel = 0;
346
+ this._loggingEnabled = false;
347
+ /** @internal */
348
+ this._log = this._logDisabled;
349
+ this._capturePerformanceCounters = false;
350
+ /** @internal */
351
+ this._startPerformanceCounter = this._startPerformanceCounterDisabled;
352
+ /** @internal */
353
+ this._endPerformanceCounter = this._endPerformanceCounterDisabled;
354
+ this.copyFrom(Object.assign({ ...GLTFLoaderDefaultOptions }, options));
355
+ }
356
+ /**
357
+ * Raised when the asset has been parsed
358
+ */
359
+ set onParsed(callback) {
360
+ if (this._onParsedObserver) {
361
+ this.onParsedObservable.remove(this._onParsedObserver);
362
+ }
363
+ if (callback) {
364
+ this._onParsedObserver = this.onParsedObservable.add(callback);
365
+ }
366
+ }
367
+ /**
368
+ * Callback raised when the loader creates a mesh after parsing the glTF properties of the mesh.
369
+ * Note that the callback is called as soon as the mesh object is created, meaning some data may not have been setup yet for this mesh (vertex data, morph targets, material, ...)
370
+ */
371
+ set onMeshLoaded(callback) {
372
+ if (this._onMeshLoadedObserver) {
373
+ this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver);
374
+ }
375
+ if (callback) {
376
+ this._onMeshLoadedObserver = this.onMeshLoadedObservable.add(callback);
377
+ }
378
+ }
379
+ /**
380
+ * Callback raised when the loader creates a skin after parsing the glTF properties of the skin node.
381
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/importers/glTF/glTFSkinning#ignoring-the-transform-of-the-skinned-mesh
382
+ */
383
+ set onSkinLoaded(callback) {
384
+ if (this._onSkinLoadedObserver) {
385
+ this.onSkinLoadedObservable.remove(this._onSkinLoadedObserver);
386
+ }
387
+ if (callback) {
388
+ this._onSkinLoadedObserver = this.onSkinLoadedObservable.add((data) => callback(data.node, data.skinnedNode));
389
+ }
390
+ }
391
+ /**
392
+ * Callback raised when the loader creates a texture after parsing the glTF properties of the texture.
393
+ */
394
+ set onTextureLoaded(callback) {
395
+ if (this._onTextureLoadedObserver) {
396
+ this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver);
397
+ }
398
+ if (callback) {
399
+ this._onTextureLoadedObserver = this.onTextureLoadedObservable.add(callback);
400
+ }
401
+ }
402
+ /**
403
+ * Callback raised when the loader creates a material after parsing the glTF properties of the material.
404
+ */
405
+ set onMaterialLoaded(callback) {
406
+ if (this._onMaterialLoadedObserver) {
407
+ this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver);
408
+ }
409
+ if (callback) {
410
+ this._onMaterialLoadedObserver = this.onMaterialLoadedObservable.add(callback);
411
+ }
412
+ }
413
+ /**
414
+ * Callback raised when the loader creates a camera after parsing the glTF properties of the camera.
415
+ */
416
+ set onCameraLoaded(callback) {
417
+ if (this._onCameraLoadedObserver) {
418
+ this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver);
419
+ }
420
+ if (callback) {
421
+ this._onCameraLoadedObserver = this.onCameraLoadedObservable.add(callback);
422
+ }
423
+ }
424
+ /**
425
+ * Callback raised when the asset is completely loaded, immediately before the loader is disposed.
426
+ * For assets with LODs, raised when all of the LODs are complete.
427
+ * For assets without LODs, raised when the model is complete, immediately after the loader resolves the returned promise.
428
+ */
429
+ set onComplete(callback) {
430
+ if (this._onCompleteObserver) {
431
+ this.onCompleteObservable.remove(this._onCompleteObserver);
432
+ }
433
+ this._onCompleteObserver = this.onCompleteObservable.add(callback);
434
+ }
435
+ /**
436
+ * Callback raised when an error occurs.
437
+ */
438
+ set onError(callback) {
439
+ if (this._onErrorObserver) {
440
+ this.onErrorObservable.remove(this._onErrorObserver);
441
+ }
442
+ this._onErrorObserver = this.onErrorObservable.add(callback);
443
+ }
444
+ /**
445
+ * Callback raised after the loader is disposed.
446
+ */
447
+ set onDispose(callback) {
448
+ if (this._onDisposeObserver) {
449
+ this.onDisposeObservable.remove(this._onDisposeObserver);
450
+ }
451
+ this._onDisposeObserver = this.onDisposeObservable.add(callback);
452
+ }
453
+ /**
454
+ * Callback raised after a loader extension is created.
455
+ */
456
+ set onExtensionLoaded(callback) {
457
+ if (this._onExtensionLoadedObserver) {
458
+ this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver);
459
+ }
460
+ this._onExtensionLoadedObserver = this.onExtensionLoadedObservable.add(callback);
461
+ }
462
+ /**
463
+ * Defines if the loader logging is enabled.
464
+ */
465
+ get loggingEnabled() {
466
+ return this._loggingEnabled;
467
+ }
468
+ set loggingEnabled(value) {
469
+ if (this._loggingEnabled === value) {
470
+ return;
471
+ }
472
+ this._loggingEnabled = value;
473
+ if (this._loggingEnabled) {
474
+ this._log = this._logEnabled;
475
+ }
476
+ else {
477
+ this._log = this._logDisabled;
478
+ }
479
+ }
480
+ /**
481
+ * Defines if the loader should capture performance counters.
482
+ */
483
+ get capturePerformanceCounters() {
484
+ return this._capturePerformanceCounters;
485
+ }
486
+ set capturePerformanceCounters(value) {
487
+ if (this._capturePerformanceCounters === value) {
488
+ return;
489
+ }
490
+ this._capturePerformanceCounters = value;
491
+ if (this._capturePerformanceCounters) {
492
+ this._startPerformanceCounter = this._startPerformanceCounterEnabled;
493
+ this._endPerformanceCounter = this._endPerformanceCounterEnabled;
494
+ }
495
+ else {
496
+ this._startPerformanceCounter = this._startPerformanceCounterDisabled;
497
+ this._endPerformanceCounter = this._endPerformanceCounterDisabled;
498
+ }
499
+ }
500
+ /**
501
+ * Callback raised after the asset is validated.
502
+ */
503
+ set onValidated(callback) {
504
+ if (this._onValidatedObserver) {
505
+ this.onValidatedObservable.remove(this._onValidatedObserver);
506
+ }
507
+ this._onValidatedObserver = this.onValidatedObservable.add(callback);
508
+ }
509
+ /**
510
+ * Disposes the loader, releases resources during load, and cancels any outstanding requests.
511
+ */
512
+ dispose() {
513
+ if (this._loader) {
514
+ this._loader.dispose();
515
+ this._loader = null;
516
+ }
517
+ for (const request of this._requests) {
518
+ request.abort();
519
+ }
520
+ this._requests.length = 0;
521
+ delete this._progressCallback;
522
+ this.preprocessUrlAsync = (url) => Promise.resolve(url);
523
+ this.onMeshLoadedObservable.clear();
524
+ this.onSkinLoadedObservable.clear();
525
+ this.onTextureLoadedObservable.clear();
526
+ this.onMaterialLoadedObservable.clear();
527
+ this.onCameraLoadedObservable.clear();
528
+ this.onCompleteObservable.clear();
529
+ this.onExtensionLoadedObservable.clear();
530
+ this.onDisposeObservable.notifyObservers(undefined);
531
+ this.onDisposeObservable.clear();
532
+ }
533
+ /**
534
+ * @internal
535
+ */
536
+ loadFile(scene, fileOrUrl, rootUrl, onSuccess, onProgress, useArrayBuffer, onError, name) {
537
+ if (ArrayBuffer.isView(fileOrUrl)) {
538
+ this._loadBinary(scene, fileOrUrl, rootUrl, onSuccess, onError, name);
539
+ return null;
540
+ }
541
+ this._progressCallback = onProgress;
542
+ const fileName = fileOrUrl.name || Tools.GetFilename(fileOrUrl);
543
+ if (useArrayBuffer) {
544
+ if (this.useRangeRequests) {
545
+ if (this.validate) {
546
+ Logger.Warn("glTF validation is not supported when range requests are enabled");
547
+ }
548
+ const fileRequest = {
549
+ abort: () => { },
550
+ onCompleteObservable: new Observable(),
551
+ };
552
+ const dataBuffer = {
553
+ readAsync: (byteOffset, byteLength) => {
554
+ return new Promise((resolve, reject) => {
555
+ this._loadFile(scene, fileOrUrl, (data) => {
556
+ resolve(new Uint8Array(data));
557
+ }, true, (error) => {
558
+ reject(error);
559
+ }, (webRequest) => {
560
+ webRequest.setRequestHeader("Range", `bytes=${byteOffset}-${byteOffset + byteLength - 1}`);
561
+ });
562
+ });
563
+ },
564
+ byteLength: 0,
565
+ };
566
+ this._unpackBinaryAsync(new DataReader(dataBuffer)).then((loaderData) => {
567
+ fileRequest.onCompleteObservable.notifyObservers(fileRequest);
568
+ onSuccess(loaderData);
569
+ }, onError ? (error) => onError(undefined, error) : undefined);
570
+ return fileRequest;
571
+ }
572
+ return this._loadFile(scene, fileOrUrl, (data) => {
573
+ this._validate(scene, new Uint8Array(data, 0, data.byteLength), rootUrl, fileName);
574
+ this._unpackBinaryAsync(new DataReader({
575
+ readAsync: (byteOffset, byteLength) => readAsync(data, byteOffset, byteLength),
576
+ byteLength: data.byteLength,
577
+ })).then((loaderData) => {
578
+ onSuccess(loaderData);
579
+ }, onError ? (error) => onError(undefined, error) : undefined);
580
+ }, true, onError);
581
+ }
582
+ else {
583
+ return this._loadFile(scene, fileOrUrl, (data) => {
584
+ try {
585
+ this._validate(scene, data, rootUrl, fileName);
586
+ onSuccess({ json: this._parseJson(data) });
587
+ }
588
+ catch {
589
+ if (onError) {
590
+ onError();
591
+ }
592
+ }
593
+ }, false, onError);
594
+ }
595
+ }
596
+ _loadBinary(scene, data, rootUrl, onSuccess, onError, fileName) {
597
+ this._validate(scene, new Uint8Array(data.buffer, data.byteOffset, data.byteLength), rootUrl, fileName);
598
+ this._unpackBinaryAsync(new DataReader({
599
+ readAsync: (byteOffset, byteLength) => readViewAsync(data, byteOffset, byteLength),
600
+ byteLength: data.byteLength,
601
+ })).then((loaderData) => {
602
+ onSuccess(loaderData);
603
+ }, onError ? (error) => onError(undefined, error) : undefined);
604
+ }
605
+ /**
606
+ * @internal
607
+ */
608
+ importMeshAsync(meshesNames, scene, data, rootUrl, onProgress, fileName) {
609
+ return Promise.resolve().then(() => {
610
+ this.onParsedObservable.notifyObservers(data);
611
+ this.onParsedObservable.clear();
612
+ this._log(`Loading ${fileName || ""}`);
613
+ this._loader = this._getLoader(data);
614
+ return this._loader.importMeshAsync(meshesNames, scene, null, data, rootUrl, onProgress, fileName);
615
+ });
616
+ }
617
+ /**
618
+ * @internal
619
+ */
620
+ loadAsync(scene, data, rootUrl, onProgress, fileName) {
621
+ return Promise.resolve().then(() => {
622
+ this.onParsedObservable.notifyObservers(data);
623
+ this.onParsedObservable.clear();
624
+ this._log(`Loading ${fileName || ""}`);
625
+ this._loader = this._getLoader(data);
626
+ return this._loader.loadAsync(scene, data, rootUrl, onProgress, fileName);
627
+ });
628
+ }
629
+ /**
630
+ * @internal
631
+ */
632
+ loadAssetContainerAsync(scene, data, rootUrl, onProgress, fileName) {
633
+ return Promise.resolve().then(() => {
634
+ this.onParsedObservable.notifyObservers(data);
635
+ this.onParsedObservable.clear();
636
+ this._log(`Loading ${fileName || ""}`);
637
+ this._loader = this._getLoader(data);
638
+ // Prepare the asset container.
639
+ const container = new AssetContainer(scene);
640
+ // Get materials/textures when loading to add to container
641
+ const materials = [];
642
+ this.onMaterialLoadedObservable.add((material) => {
643
+ materials.push(material);
644
+ });
645
+ const textures = [];
646
+ this.onTextureLoadedObservable.add((texture) => {
647
+ textures.push(texture);
648
+ });
649
+ const cameras = [];
650
+ this.onCameraLoadedObservable.add((camera) => {
651
+ cameras.push(camera);
652
+ });
653
+ const morphTargetManagers = [];
654
+ this.onMeshLoadedObservable.add((mesh) => {
655
+ if (mesh.morphTargetManager) {
656
+ morphTargetManagers.push(mesh.morphTargetManager);
657
+ }
658
+ });
659
+ return this._loader.importMeshAsync(null, scene, container, data, rootUrl, onProgress, fileName).then((result) => {
660
+ Array.prototype.push.apply(container.geometries, result.geometries);
661
+ Array.prototype.push.apply(container.meshes, result.meshes);
662
+ Array.prototype.push.apply(container.particleSystems, result.particleSystems);
663
+ Array.prototype.push.apply(container.skeletons, result.skeletons);
664
+ Array.prototype.push.apply(container.animationGroups, result.animationGroups);
665
+ Array.prototype.push.apply(container.materials, materials);
666
+ Array.prototype.push.apply(container.textures, textures);
667
+ Array.prototype.push.apply(container.lights, result.lights);
668
+ Array.prototype.push.apply(container.transformNodes, result.transformNodes);
669
+ Array.prototype.push.apply(container.cameras, cameras);
670
+ Array.prototype.push.apply(container.morphTargetManagers, morphTargetManagers);
671
+ return container;
672
+ });
673
+ });
674
+ }
675
+ /**
676
+ * @internal
677
+ */
678
+ canDirectLoad(data) {
679
+ return GLTFFileLoaderMetadata.canDirectLoad(data);
680
+ }
681
+ /**
682
+ * @internal
683
+ */
684
+ directLoad(scene, data) {
685
+ if (data.startsWith("base64," + GLTFMagicBase64Encoded) || // this is technically incorrect, but will continue to support for backcompat.
686
+ data.startsWith(";base64," + GLTFMagicBase64Encoded) ||
687
+ data.startsWith("application/octet-stream;base64," + GLTFMagicBase64Encoded) ||
688
+ data.startsWith("model/gltf-binary;base64," + GLTFMagicBase64Encoded)) {
689
+ const arrayBuffer = DecodeBase64UrlToBinary(data);
690
+ this._validate(scene, new Uint8Array(arrayBuffer, 0, arrayBuffer.byteLength));
691
+ return this._unpackBinaryAsync(new DataReader({
692
+ readAsync: (byteOffset, byteLength) => readAsync(arrayBuffer, byteOffset, byteLength),
693
+ byteLength: arrayBuffer.byteLength,
694
+ }));
695
+ }
696
+ this._validate(scene, data);
697
+ return Promise.resolve({ json: this._parseJson(data) });
698
+ }
699
+ /** @internal */
700
+ createPlugin(options) {
701
+ return new GLTFFileLoader(options[GLTFFileLoaderMetadata.name]);
702
+ }
703
+ /**
704
+ * The loader state or null if the loader is not active.
705
+ */
706
+ get loaderState() {
707
+ return this._state;
708
+ }
709
+ /**
710
+ * Returns a promise that resolves when the asset is completely loaded.
711
+ * @returns a promise that resolves when the asset is completely loaded.
712
+ */
713
+ whenCompleteAsync() {
714
+ return new Promise((resolve, reject) => {
715
+ this.onCompleteObservable.addOnce(() => {
716
+ resolve();
717
+ });
718
+ this.onErrorObservable.addOnce((reason) => {
719
+ reject(reason);
720
+ });
721
+ });
722
+ }
723
+ /**
724
+ * @internal
725
+ */
726
+ _setState(state) {
727
+ if (this._state === state) {
728
+ return;
729
+ }
730
+ this._state = state;
731
+ this.onLoaderStateChangedObservable.notifyObservers(this._state);
732
+ this._log(GLTFLoaderState[this._state]);
733
+ }
734
+ /**
735
+ * @internal
736
+ */
737
+ _loadFile(scene, fileOrUrl, onSuccess, useArrayBuffer, onError, onOpened) {
738
+ const request = scene._loadFile(fileOrUrl, onSuccess, (event) => {
739
+ this._onProgress(event, request);
740
+ }, true, useArrayBuffer, onError, onOpened);
741
+ request.onCompleteObservable.add(() => {
742
+ // Force the length computable to be true since we can guarantee the data is loaded.
743
+ request._lengthComputable = true;
744
+ request._total = request._loaded;
745
+ });
746
+ this._requests.push(request);
747
+ return request;
748
+ }
749
+ _onProgress(event, request) {
750
+ if (!this._progressCallback) {
751
+ return;
752
+ }
753
+ request._lengthComputable = event.lengthComputable;
754
+ request._loaded = event.loaded;
755
+ request._total = event.total;
756
+ let lengthComputable = true;
757
+ let loaded = 0;
758
+ let total = 0;
759
+ for (const request of this._requests) {
760
+ if (request._lengthComputable === undefined || request._loaded === undefined || request._total === undefined) {
761
+ return;
762
+ }
763
+ lengthComputable = lengthComputable && request._lengthComputable;
764
+ loaded += request._loaded;
765
+ total += request._total;
766
+ }
767
+ this._progressCallback({
768
+ lengthComputable: lengthComputable,
769
+ loaded: loaded,
770
+ total: lengthComputable ? total : 0,
771
+ });
772
+ }
773
+ _validate(scene, data, rootUrl = "", fileName = "") {
774
+ if (!this.validate) {
775
+ return;
776
+ }
777
+ this._startPerformanceCounter("Validate JSON");
778
+ GLTFValidation.ValidateAsync(data, rootUrl, fileName, (uri) => {
779
+ return this.preprocessUrlAsync(rootUrl + uri).then((url) => {
780
+ return scene._loadFileAsync(url, undefined, true, true).then((data) => {
781
+ return new Uint8Array(data, 0, data.byteLength);
782
+ });
783
+ });
784
+ }).then((result) => {
785
+ this._endPerformanceCounter("Validate JSON");
786
+ this.onValidatedObservable.notifyObservers(result);
787
+ this.onValidatedObservable.clear();
788
+ }, (reason) => {
789
+ this._endPerformanceCounter("Validate JSON");
790
+ Tools.Warn(`Failed to validate: ${reason.message}`);
791
+ this.onValidatedObservable.clear();
792
+ });
793
+ }
794
+ _getLoader(loaderData) {
795
+ const asset = loaderData.json.asset || {};
796
+ this._log(`Asset version: ${asset.version}`);
797
+ asset.minVersion && this._log(`Asset minimum version: ${asset.minVersion}`);
798
+ asset.generator && this._log(`Asset generator: ${asset.generator}`);
799
+ const version = GLTFFileLoader._parseVersion(asset.version);
800
+ if (!version) {
801
+ throw new Error("Invalid version: " + asset.version);
802
+ }
803
+ if (asset.minVersion !== undefined) {
804
+ const minVersion = GLTFFileLoader._parseVersion(asset.minVersion);
805
+ if (!minVersion) {
806
+ throw new Error("Invalid minimum version: " + asset.minVersion);
807
+ }
808
+ if (GLTFFileLoader._compareVersion(minVersion, { major: 2, minor: 0 }) > 0) {
809
+ throw new Error("Incompatible minimum version: " + asset.minVersion);
810
+ }
811
+ }
812
+ const createLoaders = {
813
+ 1: GLTFFileLoader._CreateGLTF1Loader,
814
+ 2: GLTFFileLoader._CreateGLTF2Loader,
815
+ };
816
+ const createLoader = createLoaders[version.major];
817
+ if (!createLoader) {
818
+ throw new Error("Unsupported version: " + asset.version);
819
+ }
820
+ return createLoader(this);
821
+ }
822
+ _parseJson(json) {
823
+ this._startPerformanceCounter("Parse JSON");
824
+ this._log(`JSON length: ${json.length}`);
825
+ const parsed = JSON.parse(json);
826
+ this._endPerformanceCounter("Parse JSON");
827
+ return parsed;
828
+ }
829
+ _unpackBinaryAsync(dataReader) {
830
+ this._startPerformanceCounter("Unpack Binary");
831
+ // Read magic + version + length + json length + json format
832
+ return dataReader.loadAsync(20).then(() => {
833
+ const Binary = {
834
+ Magic: 0x46546c67,
835
+ };
836
+ const magic = dataReader.readUint32();
837
+ if (magic !== Binary.Magic) {
838
+ throw new RuntimeError("Unexpected magic: " + magic, ErrorCodes.GLTFLoaderUnexpectedMagicError);
839
+ }
840
+ const version = dataReader.readUint32();
841
+ if (this.loggingEnabled) {
842
+ this._log(`Binary version: ${version}`);
843
+ }
844
+ const length = dataReader.readUint32();
845
+ if (!this.useRangeRequests && length !== dataReader.buffer.byteLength) {
846
+ Logger.Warn(`Length in header does not match actual data length: ${length} != ${dataReader.buffer.byteLength}`);
847
+ }
848
+ let unpacked;
849
+ switch (version) {
850
+ case 1: {
851
+ unpacked = this._unpackBinaryV1Async(dataReader, length);
852
+ break;
853
+ }
854
+ case 2: {
855
+ unpacked = this._unpackBinaryV2Async(dataReader, length);
856
+ break;
857
+ }
858
+ default: {
859
+ throw new Error("Unsupported version: " + version);
860
+ }
861
+ }
862
+ this._endPerformanceCounter("Unpack Binary");
863
+ return unpacked;
864
+ });
865
+ }
866
+ _unpackBinaryV1Async(dataReader, length) {
867
+ const ContentFormat = {
868
+ JSON: 0,
869
+ };
870
+ const contentLength = dataReader.readUint32();
871
+ const contentFormat = dataReader.readUint32();
872
+ if (contentFormat !== ContentFormat.JSON) {
873
+ throw new Error(`Unexpected content format: ${contentFormat}`);
874
+ }
875
+ const bodyLength = length - dataReader.byteOffset;
876
+ const data = { json: this._parseJson(dataReader.readString(contentLength)), bin: null };
877
+ if (bodyLength !== 0) {
878
+ const startByteOffset = dataReader.byteOffset;
879
+ data.bin = {
880
+ readAsync: (byteOffset, byteLength) => dataReader.buffer.readAsync(startByteOffset + byteOffset, byteLength),
881
+ byteLength: bodyLength,
882
+ };
883
+ }
884
+ return Promise.resolve(data);
885
+ }
886
+ _unpackBinaryV2Async(dataReader, length) {
887
+ const ChunkFormat = {
888
+ JSON: 0x4e4f534a,
889
+ BIN: 0x004e4942,
890
+ };
891
+ // Read the JSON chunk header.
892
+ const chunkLength = dataReader.readUint32();
893
+ const chunkFormat = dataReader.readUint32();
894
+ if (chunkFormat !== ChunkFormat.JSON) {
895
+ throw new Error("First chunk format is not JSON");
896
+ }
897
+ // Bail if there are no other chunks.
898
+ if (dataReader.byteOffset + chunkLength === length) {
899
+ return dataReader.loadAsync(chunkLength).then(() => {
900
+ return { json: this._parseJson(dataReader.readString(chunkLength)), bin: null };
901
+ });
902
+ }
903
+ // Read the JSON chunk and the length and type of the next chunk.
904
+ return dataReader.loadAsync(chunkLength + 8).then(() => {
905
+ const data = { json: this._parseJson(dataReader.readString(chunkLength)), bin: null };
906
+ const readAsync = () => {
907
+ const chunkLength = dataReader.readUint32();
908
+ const chunkFormat = dataReader.readUint32();
909
+ switch (chunkFormat) {
910
+ case ChunkFormat.JSON: {
911
+ throw new Error("Unexpected JSON chunk");
912
+ }
913
+ case ChunkFormat.BIN: {
914
+ const startByteOffset = dataReader.byteOffset;
915
+ data.bin = {
916
+ readAsync: (byteOffset, byteLength) => dataReader.buffer.readAsync(startByteOffset + byteOffset, byteLength),
917
+ byteLength: chunkLength,
918
+ };
919
+ dataReader.skipBytes(chunkLength);
920
+ break;
921
+ }
922
+ default: {
923
+ // ignore unrecognized chunkFormat
924
+ dataReader.skipBytes(chunkLength);
925
+ break;
926
+ }
927
+ }
928
+ if (dataReader.byteOffset !== length) {
929
+ return dataReader.loadAsync(8).then(readAsync);
930
+ }
931
+ return Promise.resolve(data);
932
+ };
933
+ return readAsync();
934
+ });
935
+ }
936
+ static _parseVersion(version) {
937
+ if (version === "1.0" || version === "1.0.1") {
938
+ return {
939
+ major: 1,
940
+ minor: 0,
941
+ };
942
+ }
943
+ const match = (version + "").match(/^(\d+)\.(\d+)/);
944
+ if (!match) {
945
+ return null;
946
+ }
947
+ return {
948
+ major: parseInt(match[1]),
949
+ minor: parseInt(match[2]),
950
+ };
951
+ }
952
+ static _compareVersion(a, b) {
953
+ if (a.major > b.major) {
954
+ return 1;
955
+ }
956
+ if (a.major < b.major) {
957
+ return -1;
958
+ }
959
+ if (a.minor > b.minor) {
960
+ return 1;
961
+ }
962
+ if (a.minor < b.minor) {
963
+ return -1;
964
+ }
965
+ return 0;
966
+ }
967
+ /**
968
+ * @internal
969
+ */
970
+ _logOpen(message) {
971
+ this._log(message);
972
+ this._logIndentLevel++;
973
+ }
974
+ /** @internal */
975
+ _logClose() {
976
+ --this._logIndentLevel;
977
+ }
978
+ _logEnabled(message) {
979
+ const spaces = GLTFFileLoader._logSpaces.substring(0, this._logIndentLevel * 2);
980
+ Logger.Log(`${spaces}${message}`);
981
+ }
982
+ _logDisabled(message) { }
983
+ _startPerformanceCounterEnabled(counterName) {
984
+ Tools.StartPerformanceCounter(counterName);
985
+ }
986
+ _startPerformanceCounterDisabled(counterName) { }
987
+ _endPerformanceCounterEnabled(counterName) {
988
+ Tools.EndPerformanceCounter(counterName);
989
+ }
990
+ _endPerformanceCounterDisabled(counterName) { }
991
+ }
992
+ // ------------------
993
+ // End Common options
994
+ // ------------------
995
+ // ----------------
996
+ // Begin V1 options
997
+ // ----------------
998
+ /**
999
+ * Set this property to false to disable incremental loading which delays the loader from calling the success callback until after loading the meshes and shaders.
1000
+ * Textures always loads asynchronously. For example, the success callback can compute the bounding information of the loaded meshes when incremental loading is disabled.
1001
+ * Defaults to true.
1002
+ * @internal
1003
+ */
1004
+ GLTFFileLoader.IncrementalLoading = true;
1005
+ /**
1006
+ * Set this property to true in order to work with homogeneous coordinates, available with some converters and exporters.
1007
+ * Defaults to false. See https://en.wikipedia.org/wiki/Homogeneous_coordinates.
1008
+ * @internal
1009
+ */
1010
+ GLTFFileLoader.HomogeneousCoordinates = false;
1011
+ GLTFFileLoader._logSpaces = " ";
1012
+ let _Registered = false;
1013
+ /**
1014
+ * Registers the GLTFFileLoader scene loader plugin.
1015
+ * Safe to call multiple times; only the first call has an effect.
1016
+ */
1017
+ export function RegisterGLTFFileLoader() {
1018
+ if (_Registered) {
1019
+ return;
1020
+ }
1021
+ _Registered = true;
1022
+ RegisterSceneLoaderPlugin(new GLTFFileLoader());
1023
+ }
1024
+ //# sourceMappingURL=glTFFileLoader.pure.js.map