@babylonjs/loaders 5.0.0-alpha.8 → 5.0.0-beta.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. package/OBJ/index.d.ts +2 -0
  2. package/OBJ/index.js +4 -2
  3. package/OBJ/index.js.map +1 -1
  4. package/OBJ/mtlFileLoader.d.ts +4 -2
  5. package/OBJ/mtlFileLoader.js +7 -6
  6. package/OBJ/mtlFileLoader.js.map +1 -1
  7. package/OBJ/objFileLoader.d.ts +12 -84
  8. package/OBJ/objFileLoader.js +52 -669
  9. package/OBJ/objFileLoader.js.map +1 -1
  10. package/OBJ/objLoadingOptions.d.ts +43 -0
  11. package/OBJ/objLoadingOptions.js +2 -0
  12. package/OBJ/objLoadingOptions.js.map +1 -0
  13. package/OBJ/solidParser.d.ts +153 -0
  14. package/OBJ/solidParser.js +700 -0
  15. package/OBJ/solidParser.js.map +1 -0
  16. package/STL/index.js +1 -1
  17. package/STL/stlFileLoader.d.ts +6 -0
  18. package/STL/stlFileLoader.js +38 -11
  19. package/STL/stlFileLoader.js.map +1 -1
  20. package/glTF/1.0/glTFBinaryExtension.js +4 -4
  21. package/glTF/1.0/glTFLoader.d.ts +4 -4
  22. package/glTF/1.0/glTFLoader.js +60 -55
  23. package/glTF/1.0/glTFLoader.js.map +1 -1
  24. package/glTF/1.0/glTFLoaderInterfaces.d.ts +3 -1
  25. package/glTF/1.0/glTFLoaderInterfaces.js.map +1 -1
  26. package/glTF/1.0/glTFLoaderUtils.js +6 -6
  27. package/glTF/1.0/glTFMaterialsCommonExtension.js +12 -12
  28. package/glTF/1.0/index.js +5 -5
  29. package/glTF/2.0/Extensions/EXT_lights_image_based.js +15 -12
  30. package/glTF/2.0/Extensions/EXT_lights_image_based.js.map +1 -1
  31. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +1 -0
  32. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +8 -7
  33. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
  34. package/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +1 -5
  35. package/glTF/2.0/Extensions/EXT_meshopt_compression.js +6 -22
  36. package/glTF/2.0/Extensions/EXT_meshopt_compression.js.map +1 -1
  37. package/glTF/2.0/Extensions/EXT_texture_webp.js +4 -4
  38. package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -1
  39. package/glTF/2.0/Extensions/ExtrasAsMetadata.js +1 -1
  40. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +35 -11
  41. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -1
  42. package/glTF/2.0/Extensions/KHR_lights_punctual.js +10 -9
  43. package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
  44. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +9 -9
  45. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
  46. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +30 -0
  47. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +46 -0
  48. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -0
  49. package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +1 -2
  50. package/glTF/2.0/Extensions/KHR_materials_ior.js +4 -5
  51. package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
  52. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +8 -9
  53. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js.map +1 -1
  54. package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +0 -1
  55. package/glTF/2.0/Extensions/KHR_materials_sheen.js +8 -9
  56. package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
  57. package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +1 -2
  58. package/glTF/2.0/Extensions/KHR_materials_specular.js +14 -8
  59. package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
  60. package/glTF/2.0/Extensions/KHR_materials_translucency.js +8 -8
  61. package/glTF/2.0/Extensions/KHR_materials_translucency.js.map +1 -1
  62. package/glTF/2.0/Extensions/KHR_materials_transmission.js +95 -86
  63. package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
  64. package/glTF/2.0/Extensions/KHR_materials_unlit.js +6 -6
  65. package/glTF/2.0/Extensions/KHR_materials_unlit.js.map +1 -1
  66. package/glTF/2.0/Extensions/KHR_materials_variants.js +76 -11
  67. package/glTF/2.0/Extensions/KHR_materials_variants.js.map +1 -1
  68. package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +31 -0
  69. package/glTF/2.0/Extensions/KHR_materials_volume.js +79 -0
  70. package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -0
  71. package/glTF/2.0/Extensions/KHR_mesh_quantization.js +1 -1
  72. package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +1 -2
  73. package/glTF/2.0/Extensions/KHR_texture_basisu.js +5 -6
  74. package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -1
  75. package/glTF/2.0/Extensions/KHR_texture_transform.js +3 -3
  76. package/glTF/2.0/Extensions/KHR_texture_transform.js.map +1 -1
  77. package/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +2 -2
  78. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js +6 -3
  79. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js.map +1 -1
  80. package/glTF/2.0/Extensions/MSFT_audio_emitter.js +19 -20
  81. package/glTF/2.0/Extensions/MSFT_audio_emitter.js.map +1 -1
  82. package/glTF/2.0/Extensions/MSFT_lod.d.ts +1 -1
  83. package/glTF/2.0/Extensions/MSFT_lod.js +20 -17
  84. package/glTF/2.0/Extensions/MSFT_lod.js.map +1 -1
  85. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js +3 -3
  86. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js.map +1 -1
  87. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js +3 -3
  88. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js.map +1 -1
  89. package/glTF/2.0/Extensions/index.d.ts +2 -0
  90. package/glTF/2.0/Extensions/index.js +26 -24
  91. package/glTF/2.0/Extensions/index.js.map +1 -1
  92. package/glTF/2.0/glTFLoader.d.ts +10 -13
  93. package/glTF/2.0/glTFLoader.js +416 -299
  94. package/glTF/2.0/glTFLoader.js.map +1 -1
  95. package/glTF/2.0/glTFLoaderInterfaces.d.ts +4 -5
  96. package/glTF/2.0/glTFLoaderInterfaces.js.map +1 -1
  97. package/glTF/2.0/index.d.ts +1 -1
  98. package/glTF/2.0/index.js +4 -4
  99. package/glTF/2.0/index.js.map +1 -1
  100. package/glTF/glTFFileLoader.d.ts +25 -10
  101. package/glTF/glTFFileLoader.js +86 -94
  102. package/glTF/glTFFileLoader.js.map +1 -1
  103. package/glTF/glTFValidation.js +2 -2
  104. package/glTF/glTFValidation.js.map +1 -1
  105. package/glTF/index.d.ts +2 -2
  106. package/glTF/index.js +4 -4
  107. package/glTF/index.js.map +1 -1
  108. package/index.d.ts +3 -3
  109. package/index.js +3 -3
  110. package/index.js.map +1 -1
  111. package/legacy/legacy-glTF.js +4 -4
  112. package/legacy/legacy-glTF1.d.ts +1 -1
  113. package/legacy/legacy-glTF1.js +1 -1
  114. package/legacy/legacy-glTF1.js.map +1 -1
  115. package/legacy/legacy-glTF1FileLoader.js +2 -2
  116. package/legacy/legacy-glTF2.d.ts +1 -1
  117. package/legacy/legacy-glTF2.js +3 -3
  118. package/legacy/legacy-glTF2.js.map +1 -1
  119. package/legacy/legacy-glTF2FileLoader.js +2 -2
  120. package/legacy/legacy-glTFFileLoader.js +3 -3
  121. package/legacy/legacy-objFileLoader.d.ts +1 -1
  122. package/legacy/legacy-objFileLoader.js +2 -2
  123. package/legacy/legacy-objFileLoader.js.map +1 -1
  124. package/legacy/legacy-stlFileLoader.d.ts +1 -1
  125. package/legacy/legacy-stlFileLoader.js +2 -2
  126. package/legacy/legacy-stlFileLoader.js.map +1 -1
  127. package/legacy/legacy.js +6 -6
  128. package/package.json +16 -4
@@ -1,9 +1,8 @@
1
1
  import { AnimationGroup } from "@babylonjs/core/Animations/animationGroup";
2
- import { Bone } from "@babylonjs/core/Bones/bone";
3
2
  import { Skeleton } from "@babylonjs/core/Bones/skeleton";
4
3
  import { Material } from "@babylonjs/core/Materials/material";
5
4
  import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
6
- import { Buffer, VertexBuffer } from "@babylonjs/core/Meshes/buffer";
5
+ import { Buffer, VertexBuffer } from "@babylonjs/core/Buffers/buffer";
7
6
  import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
8
7
  import { Mesh } from "@babylonjs/core/Meshes/mesh";
9
8
  import * as GLTF2 from "babylonjs-gltf2interface";
@@ -23,7 +22,9 @@ export interface IAccessor extends GLTF2.IAccessor, IArrayItem {
23
22
  /** @hidden */
24
23
  _data?: Promise<ArrayBufferView>;
25
24
  /** @hidden */
26
- _babylonVertexBuffer?: Promise<VertexBuffer>;
25
+ _babylonVertexBuffer?: {
26
+ [kind: string]: Promise<VertexBuffer>;
27
+ };
27
28
  }
28
29
  /**
29
30
  * Loader interface with additional members.
@@ -143,8 +144,6 @@ export interface INode extends GLTF2.INode, IArrayItem {
143
144
  /** @hidden */
144
145
  _primitiveBabylonMeshes?: AbstractMesh[];
145
146
  /** @hidden */
146
- _babylonBones?: Bone[];
147
- /** @hidden */
148
147
  _numMorphTargets?: number;
149
148
  }
150
149
  /** @hidden */
@@ -1 +1 @@
1
- {"version":3,"file":"glTFLoaderInterfaces.js","sourceRoot":"","sources":["../../../../sourceES6/loaders/src/glTF/2.0/glTFLoaderInterfaces.ts"],"names":[],"mappings":"","sourcesContent":["import { AnimationGroup } from \"@babylonjs/core/Animations/animationGroup\";\r\nimport { Bone } from \"@babylonjs/core/Bones/bone\";\r\nimport { Skeleton } from \"@babylonjs/core/Bones/skeleton\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Buffer, VertexBuffer } from \"@babylonjs/core/Meshes/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\n\r\nimport * as GLTF2 from \"babylonjs-gltf2interface\";\r\n\r\n/**\r\n * Loader interface with an index field.\r\n */\r\nexport interface IArrayItem {\r\n /**\r\n * The index of this item in the array.\r\n */\r\n index: number;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAccessor extends GLTF2.IAccessor, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n\r\n /** @hidden */\r\n _babylonVertexBuffer?: Promise<VertexBuffer>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimationChannel extends GLTF2.IAnimationChannel, IArrayItem {\r\n}\r\n\r\n/** @hidden */\r\nexport interface _IAnimationSamplerData {\r\n input: Float32Array;\r\n interpolation: GLTF2.AnimationSamplerInterpolation;\r\n output: Float32Array;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimationSampler extends GLTF2.IAnimationSampler, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<_IAnimationSamplerData>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimation extends GLTF2.IAnimation, IArrayItem {\r\n channels: IAnimationChannel[];\r\n samplers: IAnimationSampler[];\r\n\r\n /** @hidden */\r\n _babylonAnimationGroup?: AnimationGroup;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IBuffer extends GLTF2.IBuffer, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IBufferView extends GLTF2.IBufferView, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n\r\n /** @hidden */\r\n _babylonBuffer?: Promise<Buffer>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ICamera extends GLTF2.ICamera, IArrayItem {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IImage extends GLTF2.IImage, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialNormalTextureInfo extends GLTF2.IMaterialNormalTextureInfo, ITextureInfo {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialOcclusionTextureInfo extends GLTF2.IMaterialOcclusionTextureInfo, ITextureInfo {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialPbrMetallicRoughness extends GLTF2.IMaterialPbrMetallicRoughness {\r\n baseColorTexture?: ITextureInfo;\r\n metallicRoughnessTexture?: ITextureInfo;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterial extends GLTF2.IMaterial, IArrayItem {\r\n pbrMetallicRoughness?: IMaterialPbrMetallicRoughness;\r\n normalTexture?: IMaterialNormalTextureInfo;\r\n occlusionTexture?: IMaterialOcclusionTextureInfo;\r\n emissiveTexture?: ITextureInfo;\r\n\r\n /** @hidden */\r\n _data?: {\r\n [babylonDrawMode: number]: {\r\n babylonMaterial: Material;\r\n babylonMeshes: AbstractMesh[];\r\n promise: Promise<void>;\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMesh extends GLTF2.IMesh, IArrayItem {\r\n primitives: IMeshPrimitive[];\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMeshPrimitive extends GLTF2.IMeshPrimitive, IArrayItem {\r\n /** @hidden */\r\n _instanceData?: {\r\n babylonSourceMesh: Mesh;\r\n promise: Promise<any>;\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface INode extends GLTF2.INode, IArrayItem {\r\n /**\r\n * The parent glTF node.\r\n */\r\n parent?: INode;\r\n\r\n /** @hidden */\r\n _babylonTransformNode?: TransformNode;\r\n\r\n /** @hidden */\r\n _primitiveBabylonMeshes?: AbstractMesh[];\r\n\r\n /** @hidden */\r\n _babylonBones?: Bone[];\r\n\r\n /** @hidden */\r\n _numMorphTargets?: number;\r\n}\r\n\r\n/** @hidden */\r\nexport interface _ISamplerData {\r\n noMipMaps: boolean;\r\n samplingMode: number;\r\n wrapU: number;\r\n wrapV: number;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ISampler extends GLTF2.ISampler, IArrayItem {\r\n /** @hidden */\r\n _data?: _ISamplerData;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IScene extends GLTF2.IScene, IArrayItem {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ISkin extends GLTF2.ISkin, IArrayItem {\r\n /** @hidden */\r\n _data?: {\r\n babylonSkeleton: Skeleton;\r\n promise: Promise<void>;\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ITexture extends GLTF2.ITexture, IArrayItem {\r\n /** @hidden */\r\n _textureInfo: ITextureInfo;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ITextureInfo extends GLTF2.ITextureInfo {\r\n /** false or undefined if the texture holds color data (true if data are roughness, normal, ...) */\r\n nonColorData?: boolean;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IGLTF extends GLTF2.IGLTF {\r\n accessors?: IAccessor[];\r\n animations?: IAnimation[];\r\n buffers?: IBuffer[];\r\n bufferViews?: IBufferView[];\r\n cameras?: ICamera[];\r\n images?: IImage[];\r\n materials?: IMaterial[];\r\n meshes?: IMesh[];\r\n nodes?: INode[];\r\n samplers?: ISampler[];\r\n scenes?: IScene[];\r\n skins?: ISkin[];\r\n textures?: ITexture[];\r\n}\r\n"]}
1
+ {"version":3,"file":"glTFLoaderInterfaces.js","sourceRoot":"","sources":["../../../../sourceES6/loaders/src/glTF/2.0/glTFLoaderInterfaces.ts"],"names":[],"mappings":"","sourcesContent":["import { AnimationGroup } from \"@babylonjs/core/Animations/animationGroup\";\r\nimport { Skeleton } from \"@babylonjs/core/Bones/skeleton\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Buffer, VertexBuffer } from \"@babylonjs/core/Buffers/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\n\r\nimport * as GLTF2 from \"babylonjs-gltf2interface\";\r\n\r\n/**\r\n * Loader interface with an index field.\r\n */\r\nexport interface IArrayItem {\r\n /**\r\n * The index of this item in the array.\r\n */\r\n index: number;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAccessor extends GLTF2.IAccessor, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n\r\n /** @hidden */\r\n _babylonVertexBuffer?: { [kind: string]: Promise<VertexBuffer>; };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimationChannel extends GLTF2.IAnimationChannel, IArrayItem {\r\n}\r\n\r\n/** @hidden */\r\nexport interface _IAnimationSamplerData {\r\n input: Float32Array;\r\n interpolation: GLTF2.AnimationSamplerInterpolation;\r\n output: Float32Array;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimationSampler extends GLTF2.IAnimationSampler, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<_IAnimationSamplerData>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimation extends GLTF2.IAnimation, IArrayItem {\r\n channels: IAnimationChannel[];\r\n samplers: IAnimationSampler[];\r\n\r\n /** @hidden */\r\n _babylonAnimationGroup?: AnimationGroup;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IBuffer extends GLTF2.IBuffer, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IBufferView extends GLTF2.IBufferView, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n\r\n /** @hidden */\r\n _babylonBuffer?: Promise<Buffer>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ICamera extends GLTF2.ICamera, IArrayItem {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IImage extends GLTF2.IImage, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialNormalTextureInfo extends GLTF2.IMaterialNormalTextureInfo, ITextureInfo {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialOcclusionTextureInfo extends GLTF2.IMaterialOcclusionTextureInfo, ITextureInfo {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialPbrMetallicRoughness extends GLTF2.IMaterialPbrMetallicRoughness {\r\n baseColorTexture?: ITextureInfo;\r\n metallicRoughnessTexture?: ITextureInfo;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterial extends GLTF2.IMaterial, IArrayItem {\r\n pbrMetallicRoughness?: IMaterialPbrMetallicRoughness;\r\n normalTexture?: IMaterialNormalTextureInfo;\r\n occlusionTexture?: IMaterialOcclusionTextureInfo;\r\n emissiveTexture?: ITextureInfo;\r\n\r\n /** @hidden */\r\n _data?: {\r\n [babylonDrawMode: number]: {\r\n babylonMaterial: Material;\r\n babylonMeshes: AbstractMesh[];\r\n promise: Promise<void>;\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMesh extends GLTF2.IMesh, IArrayItem {\r\n primitives: IMeshPrimitive[];\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMeshPrimitive extends GLTF2.IMeshPrimitive, IArrayItem {\r\n /** @hidden */\r\n _instanceData?: {\r\n babylonSourceMesh: Mesh;\r\n promise: Promise<any>;\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface INode extends GLTF2.INode, IArrayItem {\r\n /**\r\n * The parent glTF node.\r\n */\r\n parent?: INode;\r\n\r\n /** @hidden */\r\n _babylonTransformNode?: TransformNode;\r\n\r\n /** @hidden */\r\n _primitiveBabylonMeshes?: AbstractMesh[];\r\n\r\n /** @hidden */\r\n _numMorphTargets?: number;\r\n}\r\n\r\n/** @hidden */\r\nexport interface _ISamplerData {\r\n noMipMaps: boolean;\r\n samplingMode: number;\r\n wrapU: number;\r\n wrapV: number;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ISampler extends GLTF2.ISampler, IArrayItem {\r\n /** @hidden */\r\n _data?: _ISamplerData;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IScene extends GLTF2.IScene, IArrayItem {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ISkin extends GLTF2.ISkin, IArrayItem {\r\n /** @hidden */\r\n _data?: {\r\n babylonSkeleton: Skeleton;\r\n promise: Promise<void>;\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ITexture extends GLTF2.ITexture, IArrayItem {\r\n /** @hidden */\r\n _textureInfo: ITextureInfo;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ITextureInfo extends GLTF2.ITextureInfo {\r\n /** false or undefined if the texture holds color data (true if data are roughness, normal, ...) */\r\n nonColorData?: boolean;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IGLTF extends GLTF2.IGLTF {\r\n accessors?: IAccessor[];\r\n animations?: IAnimation[];\r\n buffers?: IBuffer[];\r\n bufferViews?: IBufferView[];\r\n cameras?: ICamera[];\r\n images?: IImage[];\r\n materials?: IMaterial[];\r\n meshes?: IMesh[];\r\n nodes?: INode[];\r\n samplers?: ISampler[];\r\n scenes?: IScene[];\r\n skins?: ISkin[];\r\n textures?: ITexture[];\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
1
  export * from "./glTFLoader";
2
2
  export * from "./glTFLoaderExtension";
3
3
  export * from "./glTFLoaderInterfaces";
4
- export * from "./Extensions";
4
+ export * from "./Extensions/index";
package/glTF/2.0/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export * from "./glTFLoader";
2
- export * from "./glTFLoaderExtension";
3
- export * from "./glTFLoaderInterfaces";
4
- export * from "./Extensions";
1
+ export * from "./glTFLoader.js";
2
+ export * from "./glTFLoaderExtension.js";
3
+ export * from "./glTFLoaderInterfaces.js";
4
+ export * from "./Extensions/index.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../sourceES6/loaders/src/glTF/2.0/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./glTFLoader\";\r\nexport * from \"./glTFLoaderExtension\";\r\nexport * from \"./glTFLoaderInterfaces\";\r\nexport * from \"./Extensions\";"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../sourceES6/loaders/src/glTF/2.0/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./glTFLoader\";\r\nexport * from \"./glTFLoaderExtension\";\r\nexport * from \"./glTFLoaderInterfaces\";\r\nexport * from \"./Extensions/index\";"]}
@@ -10,8 +10,8 @@ import { AssetContainer } from "@babylonjs/core/assetContainer";
10
10
  import { Scene, IDisposable } from "@babylonjs/core/scene";
11
11
  import { WebRequest } from "@babylonjs/core/Misc/webRequest";
12
12
  import { IFileRequest } from "@babylonjs/core/Misc/fileRequest";
13
- import { IDataBuffer } from '@babylonjs/core/Misc/dataReader';
14
- import { RequestFileError } from '@babylonjs/core/Misc/fileTools';
13
+ import { IDataBuffer } from "@babylonjs/core/Misc/dataReader";
14
+ import { LoadFileError } from "@babylonjs/core/Misc/fileTools";
15
15
  /**
16
16
  * Mode that determines the coordinate system to use.
17
17
  */
@@ -92,8 +92,7 @@ export declare enum GLTFLoaderState {
92
92
  }
93
93
  /** @hidden */
94
94
  export interface IGLTFLoader extends IDisposable {
95
- readonly state: Nullable<GLTFLoaderState>;
96
- importMeshAsync: (meshesNames: any, scene: Scene, forAssetContainer: boolean, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string) => Promise<ISceneLoaderAsyncResult>;
95
+ importMeshAsync: (meshesNames: any, scene: Scene, container: Nullable<AssetContainer>, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string) => Promise<ISceneLoaderAsyncResult>;
97
96
  loadAsync: (scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string) => Promise<void>;
98
97
  }
99
98
  /**
@@ -171,8 +170,21 @@ export declare class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAs
171
170
  */
172
171
  loadAllMaterials: boolean;
173
172
  /**
174
- * Function called before loading a url referenced by the asset.
173
+ * 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.
175
174
  */
175
+ useSRGBBuffers: boolean;
176
+ /**
177
+ * When loading glTF animations, which are defined in seconds, target them to this FPS. Defaults to 60.
178
+ */
179
+ targetFps: number;
180
+ /**
181
+ * Defines if the loader should always compute the nearest common ancestor of the skeleton joints instead of using `skin.skeleton`. Defaults to false.
182
+ * Set this to true if loading assets with invalid `skin.skeleton` values.
183
+ */
184
+ alwaysComputeSkeletonRootNode: boolean;
185
+ /**
186
+ * Function called before loading a url referenced by the asset.
187
+ */
176
188
  preprocessUrlAsync: (url: string) => Promise<string>;
177
189
  /**
178
190
  * Observable raised when the loader creates a mesh after parsing the glTF properties of the mesh.
@@ -277,6 +289,7 @@ export declare class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAs
277
289
  */
278
290
  set onValidated(callback: (results: GLTF2.IGLTFValidationResults) => void);
279
291
  private _loader;
292
+ private _state;
280
293
  private _progressCallback?;
281
294
  private _requests;
282
295
  private static magicBase64Encoded;
@@ -291,9 +304,7 @@ export declare class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAs
291
304
  */
292
305
  dispose(): void;
293
306
  /** @hidden */
294
- requestFile(scene: Scene, url: string, onSuccess: (data: any, request?: WebRequest) => void, onProgress?: (ev: ISceneLoaderProgressEvent) => void, useArrayBuffer?: boolean, onError?: (error: any) => void): IFileRequest;
295
- /** @hidden */
296
- readFile(scene: Scene, file: File, onSuccess: (data: any) => void, onProgress?: (ev: ISceneLoaderProgressEvent) => any, useArrayBuffer?: boolean, onError?: (error: any) => void): IFileRequest;
307
+ loadFile(scene: Scene, fileOrUrl: File | string, onSuccess: (data: any, responseURL?: string) => void, onProgress?: (ev: ISceneLoaderProgressEvent) => void, useArrayBuffer?: boolean, onError?: (request?: WebRequest, exception?: LoadFileError) => void): IFileRequest;
297
308
  /** @hidden */
298
309
  importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string): Promise<ISceneLoaderAsyncResult>;
299
310
  /** @hidden */
@@ -317,15 +328,19 @@ export declare class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAs
317
328
  * The loader state or null if the loader is not active.
318
329
  */
319
330
  get loaderState(): Nullable<GLTFLoaderState>;
331
+ /**
332
+ * Observable raised when the loader state changes.
333
+ */
334
+ onLoaderStateChangedObservable: Observable<Nullable<GLTFLoaderState>>;
320
335
  /**
321
336
  * Returns a promise that resolves when the asset is completely loaded.
322
337
  * @returns a promise that resolves when the asset is completely loaded.
323
338
  */
324
339
  whenCompleteAsync(): Promise<void>;
325
340
  /** @hidden */
326
- _loadFile(url: string, scene: Scene, onSuccess: (data: string | ArrayBuffer) => void, useArrayBuffer?: boolean, onError?: (request?: WebRequest) => void): IFileRequest;
341
+ _setState(state: GLTFLoaderState): void;
327
342
  /** @hidden */
328
- _requestFile(url: string, scene: Scene, onSuccess: (data: string | ArrayBuffer, request?: WebRequest) => void, useArrayBuffer?: boolean, onError?: (error: RequestFileError) => void, onOpened?: (request: WebRequest) => void): IFileRequest;
343
+ _loadFile(scene: Scene, fileOrUrl: File | string, onSuccess: (data: string | ArrayBuffer) => void, useArrayBuffer?: boolean, onError?: (request?: WebRequest) => void, onOpened?: (request: WebRequest) => void): IFileRequest;
329
344
  private _onProgress;
330
345
  private _validate;
331
346
  private _getLoader;
@@ -1,11 +1,21 @@
1
- import { Observable } from "@babylonjs/core/Misc/observable";
2
- import { Tools } from "@babylonjs/core/Misc/tools";
3
- import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader";
4
- import { AssetContainer } from "@babylonjs/core/assetContainer";
5
- import { Logger } from '@babylonjs/core/Misc/logger';
6
- import { DataReader } from '@babylonjs/core/Misc/dataReader';
7
- import { GLTFValidation } from './glTFValidation';
8
- import { StringTools } from '@babylonjs/core/Misc/stringTools';
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
3
+ import { SceneLoader } 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 { DecodeBase64UrlToBinary } from "@babylonjs/core/Misc/fileTools.js";
9
+ import { StringTools } from "@babylonjs/core/Misc/stringTools.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
+ }
9
19
  /**
10
20
  * Mode that determines the coordinate system to use.
11
21
  */
@@ -116,8 +126,21 @@ var GLTFFileLoader = /** @class */ (function () {
116
126
  */
117
127
  this.loadAllMaterials = false;
118
128
  /**
119
- * Function called before loading a url referenced by the asset.
129
+ * 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.
130
+ */
131
+ this.useSRGBBuffers = true;
132
+ /**
133
+ * When loading glTF animations, which are defined in seconds, target them to this FPS. Defaults to 60.
134
+ */
135
+ this.targetFps = 60;
136
+ /**
137
+ * Defines if the loader should always compute the nearest common ancestor of the skeleton joints instead of using `skin.skeleton`. Defaults to false.
138
+ * Set this to true if loading assets with invalid `skin.skeleton` values.
120
139
  */
140
+ this.alwaysComputeSkeletonRootNode = false;
141
+ /**
142
+ * Function called before loading a url referenced by the asset.
143
+ */
121
144
  this.preprocessUrlAsync = function (url) { return Promise.resolve(url); };
122
145
  /**
123
146
  * Observable raised when the loader creates a mesh after parsing the glTF properties of the mesh.
@@ -164,6 +187,7 @@ var GLTFFileLoader = /** @class */ (function () {
164
187
  */
165
188
  this.onValidatedObservable = new Observable();
166
189
  this._loader = null;
190
+ this._state = null;
167
191
  this._requests = new Array();
168
192
  /**
169
193
  * Name of the loader ("gltf")
@@ -174,6 +198,10 @@ var GLTFFileLoader = /** @class */ (function () {
174
198
  ".gltf": { isBinary: false },
175
199
  ".glb": { isBinary: true }
176
200
  };
201
+ /**
202
+ * Observable raised when the loader state changes.
203
+ */
204
+ this.onLoaderStateChangedObservable = new Observable();
177
205
  this._logIndentLevel = 0;
178
206
  this._loggingEnabled = false;
179
207
  /** @hidden */
@@ -388,9 +416,11 @@ var GLTFFileLoader = /** @class */ (function () {
388
416
  this.onDisposeObservable.clear();
389
417
  };
390
418
  /** @hidden */
391
- GLTFFileLoader.prototype.requestFile = function (scene, url, onSuccess, onProgress, useArrayBuffer, onError) {
419
+ GLTFFileLoader.prototype.loadFile = function (scene, fileOrUrl, onSuccess, onProgress, useArrayBuffer, onError) {
392
420
  var _this = this;
393
421
  this._progressCallback = onProgress;
422
+ var rootUrl = fileOrUrl.name ? "file:" : Tools.GetFolderPath(fileOrUrl);
423
+ var fileName = fileOrUrl.name || Tools.GetFilename(fileOrUrl);
394
424
  if (useArrayBuffer) {
395
425
  if (this.useRangeRequests) {
396
426
  if (this.validate) {
@@ -403,12 +433,12 @@ var GLTFFileLoader = /** @class */ (function () {
403
433
  var dataBuffer = {
404
434
  readAsync: function (byteOffset, byteLength) {
405
435
  return new Promise(function (resolve, reject) {
406
- _this._requestFile(url, scene, function (data) {
436
+ _this._loadFile(scene, fileOrUrl, function (data) {
407
437
  resolve(new Uint8Array(data));
408
438
  }, true, function (error) {
409
439
  reject(error);
410
440
  }, function (webRequest) {
411
- webRequest.setRequestHeader("Range", "bytes=" + byteOffset + "-" + (byteOffset + byteLength - 1));
441
+ webRequest.setRequestHeader("Range", "bytes=".concat(byteOffset, "-").concat(byteOffset + byteLength - 1));
412
442
  });
413
443
  });
414
444
  },
@@ -417,50 +447,33 @@ var GLTFFileLoader = /** @class */ (function () {
417
447
  this._unpackBinaryAsync(new DataReader(dataBuffer)).then(function (loaderData) {
418
448
  fileRequest_1.onCompleteObservable.notifyObservers(fileRequest_1);
419
449
  onSuccess(loaderData);
420
- }, onError);
450
+ }, onError ? function (error) { return onError(undefined, error); } : undefined);
421
451
  return fileRequest_1;
422
452
  }
423
- return this._requestFile(url, scene, function (data, request) {
424
- var arrayBuffer = data;
453
+ return this._loadFile(scene, fileOrUrl, function (data) {
454
+ _this._validate(scene, data, rootUrl, fileName);
425
455
  _this._unpackBinaryAsync(new DataReader({
426
- readAsync: function (byteOffset, byteLength) { return Promise.resolve(new Uint8Array(arrayBuffer, byteOffset, byteLength)); },
427
- byteLength: arrayBuffer.byteLength
456
+ readAsync: function (byteOffset, byteLength) { return readAsync(data, byteOffset, byteLength); },
457
+ byteLength: data.byteLength
428
458
  })).then(function (loaderData) {
429
- onSuccess(loaderData, request);
430
- }, onError);
459
+ onSuccess(loaderData);
460
+ }, onError ? function (error) { return onError(undefined, error); } : undefined);
431
461
  }, true, onError);
432
462
  }
433
- return this._requestFile(url, scene, function (data, request) {
434
- _this._validate(scene, data, Tools.GetFolderPath(url), Tools.GetFilename(url));
435
- onSuccess({ json: _this._parseJson(data) }, request);
463
+ return this._loadFile(scene, fileOrUrl, function (data) {
464
+ _this._validate(scene, data, rootUrl, fileName);
465
+ onSuccess({ json: _this._parseJson(data) });
436
466
  }, useArrayBuffer, onError);
437
467
  };
438
468
  /** @hidden */
439
- GLTFFileLoader.prototype.readFile = function (scene, file, onSuccess, onProgress, useArrayBuffer, onError) {
440
- var _this = this;
441
- return scene._readFile(file, function (data) {
442
- _this._validate(scene, data, "file:", file.name);
443
- if (useArrayBuffer) {
444
- var arrayBuffer_1 = data;
445
- _this._unpackBinaryAsync(new DataReader({
446
- readAsync: function (byteOffset, byteLength) { return Promise.resolve(new Uint8Array(arrayBuffer_1, byteOffset, byteLength)); },
447
- byteLength: arrayBuffer_1.byteLength
448
- })).then(onSuccess, onError);
449
- }
450
- else {
451
- onSuccess({ json: _this._parseJson(data) });
452
- }
453
- }, onProgress, useArrayBuffer, onError);
454
- };
455
- /** @hidden */
456
469
  GLTFFileLoader.prototype.importMeshAsync = function (meshesNames, scene, data, rootUrl, onProgress, fileName) {
457
470
  var _this = this;
458
471
  return Promise.resolve().then(function () {
459
472
  _this.onParsedObservable.notifyObservers(data);
460
473
  _this.onParsedObservable.clear();
461
- _this._log("Loading " + (fileName || ""));
474
+ _this._log("Loading ".concat(fileName || ""));
462
475
  _this._loader = _this._getLoader(data);
463
- return _this._loader.importMeshAsync(meshesNames, scene, false, data, rootUrl, onProgress, fileName);
476
+ return _this._loader.importMeshAsync(meshesNames, scene, null, data, rootUrl, onProgress, fileName);
464
477
  });
465
478
  };
466
479
  /** @hidden */
@@ -469,7 +482,7 @@ var GLTFFileLoader = /** @class */ (function () {
469
482
  return Promise.resolve().then(function () {
470
483
  _this.onParsedObservable.notifyObservers(data);
471
484
  _this.onParsedObservable.clear();
472
- _this._log("Loading " + (fileName || ""));
485
+ _this._log("Loading ".concat(fileName || ""));
473
486
  _this._loader = _this._getLoader(data);
474
487
  return _this._loader.loadAsync(scene, data, rootUrl, onProgress, fileName);
475
488
  });
@@ -480,7 +493,7 @@ var GLTFFileLoader = /** @class */ (function () {
480
493
  return Promise.resolve().then(function () {
481
494
  _this.onParsedObservable.notifyObservers(data);
482
495
  _this.onParsedObservable.clear();
483
- _this._log("Loading " + (fileName || ""));
496
+ _this._log("Loading ".concat(fileName || ""));
484
497
  _this._loader = _this._getLoader(data);
485
498
  // Prepare the asset container.
486
499
  var container = new AssetContainer(scene);
@@ -488,36 +501,16 @@ var GLTFFileLoader = /** @class */ (function () {
488
501
  var materials = [];
489
502
  _this.onMaterialLoadedObservable.add(function (material) {
490
503
  materials.push(material);
491
- material.onDisposeObservable.addOnce(function () {
492
- var index = container.materials.indexOf(material);
493
- if (index > -1) {
494
- container.materials.splice(index, 1);
495
- }
496
- index = materials.indexOf(material);
497
- if (index > -1) {
498
- materials.splice(index, 1);
499
- }
500
- });
501
504
  });
502
505
  var textures = [];
503
506
  _this.onTextureLoadedObservable.add(function (texture) {
504
507
  textures.push(texture);
505
- texture.onDisposeObservable.addOnce(function () {
506
- var index = container.textures.indexOf(texture);
507
- if (index > -1) {
508
- container.textures.splice(index, 1);
509
- }
510
- index = textures.indexOf(texture);
511
- if (index > -1) {
512
- textures.splice(index, 1);
513
- }
514
- });
515
508
  });
516
509
  var cameras = [];
517
510
  _this.onCameraLoadedObservable.add(function (camera) {
518
511
  cameras.push(camera);
519
512
  });
520
- return _this._loader.importMeshAsync(null, scene, true, data, rootUrl, onProgress, fileName).then(function (result) {
513
+ return _this._loader.importMeshAsync(null, scene, container, data, rootUrl, onProgress, fileName).then(function (result) {
521
514
  Array.prototype.push.apply(container.geometries, result.geometries);
522
515
  Array.prototype.push.apply(container.meshes, result.meshes);
523
516
  Array.prototype.push.apply(container.particleSystems, result.particleSystems);
@@ -535,20 +528,22 @@ var GLTFFileLoader = /** @class */ (function () {
535
528
  /** @hidden */
536
529
  GLTFFileLoader.prototype.canDirectLoad = function (data) {
537
530
  return (data.indexOf("asset") !== -1 && data.indexOf("version") !== -1)
538
- || StringTools.StartsWith(data, "data:base64," + GLTFFileLoader.magicBase64Encoded)
531
+ || StringTools.StartsWith(data, "data:base64," + GLTFFileLoader.magicBase64Encoded) // this is technically incorrect, but will continue to support for backcompat.
532
+ || StringTools.StartsWith(data, "data:;base64," + GLTFFileLoader.magicBase64Encoded)
539
533
  || StringTools.StartsWith(data, "data:application/octet-stream;base64," + GLTFFileLoader.magicBase64Encoded)
540
534
  || StringTools.StartsWith(data, "data:model/gltf-binary;base64," + GLTFFileLoader.magicBase64Encoded);
541
535
  };
542
536
  /** @hidden */
543
537
  GLTFFileLoader.prototype.directLoad = function (scene, data) {
544
- if (StringTools.StartsWith(data, "base64," + GLTFFileLoader.magicBase64Encoded) ||
538
+ if (StringTools.StartsWith(data, "base64," + GLTFFileLoader.magicBase64Encoded) || // this is technically incorrect, but will continue to support for backcompat.
539
+ StringTools.StartsWith(data, ";base64," + GLTFFileLoader.magicBase64Encoded) ||
545
540
  StringTools.StartsWith(data, "application/octet-stream;base64," + GLTFFileLoader.magicBase64Encoded) ||
546
541
  StringTools.StartsWith(data, "model/gltf-binary;base64," + GLTFFileLoader.magicBase64Encoded)) {
547
- var arrayBuffer_2 = Tools.DecodeBase64(data);
548
- this._validate(scene, arrayBuffer_2);
542
+ var arrayBuffer_1 = DecodeBase64UrlToBinary(data);
543
+ this._validate(scene, arrayBuffer_1);
549
544
  return this._unpackBinaryAsync(new DataReader({
550
- readAsync: function (byteOffset, byteLength) { return Promise.resolve(new Uint8Array(arrayBuffer_2, byteOffset, byteLength)); },
551
- byteLength: arrayBuffer_2.byteLength
545
+ readAsync: function (byteOffset, byteLength) { return readAsync(arrayBuffer_1, byteOffset, byteLength); },
546
+ byteLength: arrayBuffer_1.byteLength
552
547
  }));
553
548
  }
554
549
  this._validate(scene, data);
@@ -563,7 +558,7 @@ var GLTFFileLoader = /** @class */ (function () {
563
558
  * The loader state or null if the loader is not active.
564
559
  */
565
560
  get: function () {
566
- return this._loader ? this._loader.state : null;
561
+ return this._state;
567
562
  },
568
563
  enumerable: false,
569
564
  configurable: true
@@ -584,23 +579,20 @@ var GLTFFileLoader = /** @class */ (function () {
584
579
  });
585
580
  };
586
581
  /** @hidden */
587
- GLTFFileLoader.prototype._loadFile = function (url, scene, onSuccess, useArrayBuffer, onError) {
588
- var _this = this;
589
- var request = scene._loadFile(url, onSuccess, function (event) {
590
- _this._onProgress(event, request);
591
- }, undefined, useArrayBuffer, onError);
592
- request.onCompleteObservable.add(function (request) {
593
- _this._requests.splice(_this._requests.indexOf(request), 1);
594
- });
595
- this._requests.push(request);
596
- return request;
582
+ GLTFFileLoader.prototype._setState = function (state) {
583
+ if (this._state === state) {
584
+ return;
585
+ }
586
+ this._state = state;
587
+ this.onLoaderStateChangedObservable.notifyObservers(this._state);
588
+ this._log(GLTFLoaderState[this._state]);
597
589
  };
598
590
  /** @hidden */
599
- GLTFFileLoader.prototype._requestFile = function (url, scene, onSuccess, useArrayBuffer, onError, onOpened) {
591
+ GLTFFileLoader.prototype._loadFile = function (scene, fileOrUrl, onSuccess, useArrayBuffer, onError, onOpened) {
600
592
  var _this = this;
601
- var request = scene._requestFile(url, onSuccess, function (event) {
593
+ var request = scene._loadFile(fileOrUrl, onSuccess, function (event) {
602
594
  _this._onProgress(event, request);
603
- }, undefined, useArrayBuffer, onError, onOpened);
595
+ }, true, useArrayBuffer, onError, onOpened);
604
596
  request.onCompleteObservable.add(function (request) {
605
597
  _this._requests.splice(_this._requests.indexOf(request), 1);
606
598
  });
@@ -648,15 +640,15 @@ var GLTFFileLoader = /** @class */ (function () {
648
640
  _this.onValidatedObservable.clear();
649
641
  }, function (reason) {
650
642
  _this._endPerformanceCounter("Validate JSON");
651
- Tools.Warn("Failed to validate: " + reason.message);
643
+ Tools.Warn("Failed to validate: ".concat(reason.message));
652
644
  _this.onValidatedObservable.clear();
653
645
  });
654
646
  };
655
647
  GLTFFileLoader.prototype._getLoader = function (loaderData) {
656
648
  var asset = loaderData.json.asset || {};
657
- this._log("Asset version: " + asset.version);
658
- asset.minVersion && this._log("Asset minimum version: " + asset.minVersion);
659
- asset.generator && this._log("Asset generator: " + asset.generator);
649
+ this._log("Asset version: ".concat(asset.version));
650
+ asset.minVersion && this._log("Asset minimum version: ".concat(asset.minVersion));
651
+ asset.generator && this._log("Asset generator: ".concat(asset.generator));
660
652
  var version = GLTFFileLoader._parseVersion(asset.version);
661
653
  if (!version) {
662
654
  throw new Error("Invalid version: " + asset.version);
@@ -682,7 +674,7 @@ var GLTFFileLoader = /** @class */ (function () {
682
674
  };
683
675
  GLTFFileLoader.prototype._parseJson = function (json) {
684
676
  this._startPerformanceCounter("Parse JSON");
685
- this._log("JSON length: " + json.length);
677
+ this._log("JSON length: ".concat(json.length));
686
678
  var parsed = JSON.parse(json);
687
679
  this._endPerformanceCounter("Parse JSON");
688
680
  return parsed;
@@ -697,15 +689,15 @@ var GLTFFileLoader = /** @class */ (function () {
697
689
  };
698
690
  var magic = dataReader.readUint32();
699
691
  if (magic !== Binary.Magic) {
700
- throw new Error("Unexpected magic: " + magic);
692
+ throw new RuntimeError("Unexpected magic: " + magic, ErrorCodes.GLTFLoaderUnexpectedMagicError);
701
693
  }
702
694
  var version = dataReader.readUint32();
703
695
  if (_this.loggingEnabled) {
704
- _this._log("Binary version: " + version);
696
+ _this._log("Binary version: ".concat(version));
705
697
  }
706
698
  var length = dataReader.readUint32();
707
699
  if (dataReader.buffer.byteLength !== 0 && length !== dataReader.buffer.byteLength) {
708
- throw new Error("Length in header does not match actual data length: " + length + " != " + dataReader.buffer.byteLength);
700
+ throw new Error("Length in header does not match actual data length: ".concat(length, " != ").concat(dataReader.buffer.byteLength));
709
701
  }
710
702
  var unpacked;
711
703
  switch (version) {
@@ -732,7 +724,7 @@ var GLTFFileLoader = /** @class */ (function () {
732
724
  var contentLength = dataReader.readUint32();
733
725
  var contentFormat = dataReader.readUint32();
734
726
  if (contentFormat !== ContentFormat.JSON) {
735
- throw new Error("Unexpected content format: " + contentFormat);
727
+ throw new Error("Unexpected content format: ".concat(contentFormat));
736
728
  }
737
729
  var bodyLength = length - dataReader.byteOffset;
738
730
  var data = { json: this._parseJson(dataReader.readString(contentLength)), bin: null };
@@ -838,7 +830,7 @@ var GLTFFileLoader = /** @class */ (function () {
838
830
  };
839
831
  GLTFFileLoader.prototype._logEnabled = function (message) {
840
832
  var spaces = GLTFFileLoader._logSpaces.substr(0, this._logIndentLevel * 2);
841
- Logger.Log("" + spaces + message);
833
+ Logger.Log("".concat(spaces).concat(message));
842
834
  };
843
835
  GLTFFileLoader.prototype._logDisabled = function (message) {
844
836
  };