@galacean/engine-loader 1.1.2 → 1.1.6

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 (51) hide show
  1. package/dist/main.js +728 -598
  2. package/dist/main.js.map +1 -1
  3. package/dist/miniprogram.js +728 -598
  4. package/dist/module.js +730 -601
  5. package/dist/module.js.map +1 -1
  6. package/package.json +5 -5
  7. package/types/GLTFContentRestorer.d.ts +7 -6
  8. package/types/gltf/GLTFUtils.d.ts +2 -7
  9. package/types/gltf/parser/GLTFMeshParser.d.ts +11 -6
  10. package/types/gltf/parser/GLTFParser.d.ts +1 -1
  11. package/types/gltf/parser/GLTFParserContext.d.ts +7 -6
  12. package/types/gltf/parser/index.d.ts +2 -1
  13. package/types/ktx2/KTX2Loader.d.ts +1 -1
  14. package/types/resource-deserialize/index.d.ts +8 -8
  15. package/types/resource-deserialize/resources/mesh/MeshDecoder.d.ts +1 -1
  16. package/types/resource-deserialize/resources/texture2D/TextureDecoder.d.ts +1 -1
  17. package/types/resource-deserialize/utils/Decorator.d.ts +1 -1
  18. package/types/PrimitiveMeshLoader.d.ts +0 -1
  19. package/types/gltf/GLTFParser.d.ts +0 -9
  20. package/types/gltf/GLTFPipeline.d.ts +0 -23
  21. package/types/gltf/GLTFUtil.d.ts +0 -53
  22. package/types/gltf/Schema.d.ts +0 -814
  23. package/types/gltf/extensions/EXT_meshopt_compression.d.ts +0 -13
  24. package/types/gltf/extensions/ExtensionParser.d.ts +0 -8
  25. package/types/gltf/extensions/KHR_materials_anisotropy.d.ts +0 -1
  26. package/types/gltf/extensions/MeshoptDecoder.d.ts +0 -8
  27. package/types/gltf/extensions/Schema.d.ts +0 -142
  28. package/types/gltf/parser/AnimationParser.d.ts +0 -7
  29. package/types/gltf/parser/BufferParser.d.ts +0 -7
  30. package/types/gltf/parser/EntityParser.d.ts +0 -9
  31. package/types/gltf/parser/MaterialParser.d.ts +0 -8
  32. package/types/gltf/parser/MeshParser.d.ts +0 -13
  33. package/types/gltf/parser/Parser.d.ts +0 -21
  34. package/types/gltf/parser/ParserContext.d.ts +0 -46
  35. package/types/gltf/parser/SceneParser.d.ts +0 -11
  36. package/types/gltf/parser/SkinParser.d.ts +0 -6
  37. package/types/gltf/parser/TextureParser.d.ts +0 -8
  38. package/types/gltf/parser/Validator.d.ts +0 -5
  39. package/types/ktx2/BinomialLLCTranscoder/BinomialLLCTranscoder.d.ts +0 -13
  40. package/types/ktx2/BinomialLLCTranscoder/TranscodeWorkerCode.d.ts +0 -33
  41. package/types/ktx2/KhronosTranscoder/KhronosTranscoder.d.ts +0 -17
  42. package/types/ktx2/KhronosTranscoder/TranscoderWorkerCode.d.ts +0 -34
  43. package/types/ktx2/TranscodeResult.d.ts +0 -10
  44. package/types/ktx2/constants.d.ts +0 -7
  45. package/types/ktx2/zstddec.d.ts +0 -62
  46. package/types/resource-deserialize/resources/parser/HierarchyParser.d.ts +0 -36
  47. package/types/resource-deserialize/resources/parser/ParserContext.d.ts +0 -29
  48. package/types/resource-deserialize/resources/prefab/PrefabDesign.d.ts +0 -70
  49. package/types/resource-deserialize/resources/prefab/PrefabParser.d.ts +0 -14
  50. package/types/resource-deserialize/resources/prefab/PrefabParserContext.d.ts +0 -5
  51. package/types/resource-deserialize/resources/prefab/ReflectionParser.d.ts +0 -14
package/dist/module.js CHANGED
@@ -1,5 +1,5 @@
1
- import { Utils, ModelMesh, BlendShape, Texture2D, Loader, Entity, Transform, Animator, DirectLight, Camera, MeshRenderer, ParticleRenderer, PointLight, SpotLight, Script, SpriteMask, SpriteRenderer, TextRenderer, AnimationClip, AnimationEvent, AnimationRefCurve, Keyframe, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, Scene, resourceLoader, AssetPromise, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateMachine, AnimatorStateTransition, TextureCube, TextureFilterMode, TextureCubeFace, AmbientLight, DiffuseMode, Font, ReferResource, IndexFormat, VertexElementFormat, GLCapabilityType, Logger, TextureFormat, request, ContentRestorer, InterpolationType, SkinnedMeshRenderer, PBRMaterial, BlinnPhongMaterial, PBRSpecularMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Skin, TextureWrapMode as TextureWrapMode$1, Material, Shader, SpriteAtlas, Sprite, BackgroundMode, UnlitMaterial } from '@galacean/engine-core';
2
- import { Color, Vector4, Vector3, Vector2, Quaternion, SphericalHarmonics3, MathUtil, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
1
+ import { Utils, Transform, Animator, DirectLight, Camera, MeshRenderer, ParticleRenderer, PointLight, SpotLight, Script, SpriteMask, SpriteRenderer, TextRenderer, AnimationClip, AnimationEvent, AnimationRefCurve, Keyframe, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Loader, Entity, Texture2D, resourceLoader, AssetPromise, ContentRestorer, Scene, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateMachine, AnimatorStateTransition, AmbientLight, DiffuseMode, TextureCube, TextureFilterMode, TextureCubeFace, Font, ReferResource, IndexFormat, VertexElementFormat, GLCapabilityType, Logger, TextureFormat, request, InterpolationType, SkinnedMeshRenderer, PBRMaterial, BlinnPhongMaterial, PBRSpecularMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Skin, TextureWrapMode as TextureWrapMode$1, Material, Shader, SpriteAtlas, Sprite, BackgroundMode, UnlitMaterial } from '@galacean/engine-core';
2
+ import { Quaternion, Vector4, Color, Vector3, Vector2, SphericalHarmonics3, MathUtil, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
3
3
  import { GLCompressedTextureInternalFormat } from '@galacean/engine-rhi-webgl';
4
4
  import { DRACODecoder } from '@galacean/engine-draco';
5
5
 
@@ -280,11 +280,201 @@ var FileHeader = /*#__PURE__*/ function() {
280
280
  return FileHeader;
281
281
  }();
282
282
 
283
+ var ComponentMap = {
284
+ Transform: Transform,
285
+ Animator: Animator,
286
+ DirectLight: DirectLight,
287
+ Camera: Camera,
288
+ MeshRenderer: MeshRenderer,
289
+ ParticleRenderer: ParticleRenderer,
290
+ PointLight: PointLight,
291
+ SpotLight: SpotLight,
292
+ Script: Script,
293
+ SpriteMask: SpriteMask,
294
+ SpriteRenderer: SpriteRenderer,
295
+ TextRenderer: TextRenderer
296
+ };
297
+
298
+ var InterpolableValueType;
299
+ (function(InterpolableValueType) {
300
+ InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
301
+ InterpolableValueType[InterpolableValueType["FloatArray"] = 1] = "FloatArray";
302
+ InterpolableValueType[InterpolableValueType["Vector2"] = 2] = "Vector2";
303
+ InterpolableValueType[InterpolableValueType["Vector3"] = 3] = "Vector3";
304
+ InterpolableValueType[InterpolableValueType["Vector4"] = 4] = "Vector4";
305
+ InterpolableValueType[InterpolableValueType["Quaternion"] = 5] = "Quaternion";
306
+ InterpolableValueType[InterpolableValueType["Color"] = 6] = "Color";
307
+ InterpolableValueType[InterpolableValueType["Array"] = 7] = "Array";
308
+ InterpolableValueType[InterpolableValueType["Boolean"] = 8] = "Boolean";
309
+ InterpolableValueType[InterpolableValueType["Rect"] = 9] = "Rect";
310
+ InterpolableValueType[InterpolableValueType["ReferResource"] = 10] = "ReferResource";
311
+ })(InterpolableValueType || (InterpolableValueType = {}));
312
+ var AnimationClipDecoder = /*#__PURE__*/ function() {
313
+ function AnimationClipDecoder() {}
314
+ AnimationClipDecoder.decode = function decode(engine, bufferReader) {
315
+ return new Promise(function(resolve) {
316
+ var name = bufferReader.nextStr();
317
+ var clip = new AnimationClip(name);
318
+ var eventsLen = bufferReader.nextUint16();
319
+ for(var i = 0; i < eventsLen; ++i){
320
+ var event = new AnimationEvent();
321
+ event.time = bufferReader.nextFloat32();
322
+ event.functionName = bufferReader.nextStr();
323
+ event.parameter = JSON.parse(bufferReader.nextStr()).val;
324
+ clip.addEvent(event);
325
+ }
326
+ var curveBindingsLen = bufferReader.nextUint16();
327
+ for(var i1 = 0; i1 < curveBindingsLen; ++i1){
328
+ var relativePath = bufferReader.nextStr();
329
+ var componentStr = bufferReader.nextStr();
330
+ var componentType = ComponentMap[componentStr];
331
+ var property = bufferReader.nextStr();
332
+ var curve = void 0;
333
+ var interpolation = bufferReader.nextUint8();
334
+ var keysLen = bufferReader.nextUint16();
335
+ var curveType = bufferReader.nextStr();
336
+ switch(curveType){
337
+ case "AnimationFloatCurve":
338
+ {
339
+ curve = new AnimationFloatCurve();
340
+ curve.interpolation = interpolation;
341
+ for(var j = 0; j < keysLen; ++j){
342
+ var keyframe = new Keyframe();
343
+ keyframe.time = bufferReader.nextFloat32();
344
+ keyframe.value = bufferReader.nextFloat32();
345
+ keyframe.inTangent = bufferReader.nextFloat32();
346
+ keyframe.outTangent = bufferReader.nextFloat32();
347
+ curve.addKey(keyframe);
348
+ }
349
+ break;
350
+ }
351
+ case "AnimationArrayCurve":
352
+ {
353
+ curve = new AnimationArrayCurve();
354
+ curve.interpolation = interpolation;
355
+ for(var j1 = 0; j1 < keysLen; ++j1){
356
+ var keyframe1 = new Keyframe();
357
+ keyframe1.time = bufferReader.nextFloat32();
358
+ var len = bufferReader.nextUint16();
359
+ keyframe1.value = Array.from(bufferReader.nextFloat32Array(len));
360
+ keyframe1.inTangent = Array.from(bufferReader.nextFloat32Array(len));
361
+ keyframe1.outTangent = Array.from(bufferReader.nextFloat32Array(len));
362
+ curve.addKey(keyframe1);
363
+ }
364
+ break;
365
+ }
366
+ case "AnimationFloatArrayCurve":
367
+ {
368
+ curve = new AnimationFloatArrayCurve();
369
+ curve.interpolation = interpolation;
370
+ for(var j2 = 0; j2 < keysLen; ++j2){
371
+ var keyframe2 = new Keyframe();
372
+ keyframe2.time = bufferReader.nextFloat32();
373
+ var len1 = bufferReader.nextUint16();
374
+ keyframe2.value = bufferReader.nextFloat32Array(len1);
375
+ keyframe2.inTangent = Array.from(bufferReader.nextFloat32Array(len1));
376
+ keyframe2.outTangent = Array.from(bufferReader.nextFloat32Array(len1));
377
+ curve.addKey(keyframe2);
378
+ }
379
+ break;
380
+ }
381
+ case "AnimationVector2Curve":
382
+ {
383
+ curve = new AnimationVector2Curve();
384
+ curve.interpolation = interpolation;
385
+ for(var j3 = 0; j3 < keysLen; ++j3){
386
+ var keyframe3 = new Keyframe();
387
+ keyframe3.time = bufferReader.nextFloat32();
388
+ keyframe3.value = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
389
+ keyframe3.inTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
390
+ keyframe3.outTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
391
+ curve.addKey(keyframe3);
392
+ }
393
+ break;
394
+ }
395
+ case "AnimationVector3Curve":
396
+ {
397
+ curve = new AnimationVector3Curve();
398
+ curve.interpolation = interpolation;
399
+ for(var j4 = 0; j4 < keysLen; ++j4){
400
+ var keyframe4 = new Keyframe();
401
+ keyframe4.time = bufferReader.nextFloat32();
402
+ keyframe4.value = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
403
+ keyframe4.inTangent = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
404
+ keyframe4.outTangent = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
405
+ curve.addKey(keyframe4);
406
+ }
407
+ break;
408
+ }
409
+ case "AnimationVector4Curve":
410
+ {
411
+ curve = new AnimationVector4Curve();
412
+ curve.interpolation = interpolation;
413
+ var keyframe5 = new Keyframe();
414
+ keyframe5.time = bufferReader.nextFloat32();
415
+ keyframe5.value = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
416
+ keyframe5.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
417
+ keyframe5.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
418
+ curve.addKey(keyframe5);
419
+ break;
420
+ }
421
+ case "AnimationColorCurve":
422
+ {
423
+ curve = new AnimationColorCurve();
424
+ curve.interpolation = interpolation;
425
+ for(var j5 = 0; j5 < keysLen; ++j5){
426
+ var keyframe6 = new Keyframe();
427
+ keyframe6.time = bufferReader.nextFloat32();
428
+ keyframe6.value = new Color(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
429
+ keyframe6.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
430
+ keyframe6.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
431
+ curve.addKey(keyframe6);
432
+ }
433
+ break;
434
+ }
435
+ case "AnimationQuaternionCurve":
436
+ {
437
+ curve = new AnimationQuaternionCurve();
438
+ curve.interpolation = interpolation;
439
+ for(var j6 = 0; j6 < keysLen; ++j6){
440
+ var keyframe7 = new Keyframe();
441
+ keyframe7.time = bufferReader.nextFloat32();
442
+ keyframe7.value = new Quaternion(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
443
+ keyframe7.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
444
+ keyframe7.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
445
+ curve.addKey(keyframe7);
446
+ }
447
+ break;
448
+ }
449
+ case "AnimationRefCurve":
450
+ {
451
+ curve = new AnimationRefCurve();
452
+ curve.interpolation = interpolation;
453
+ for(var j7 = 0; j7 < keysLen; ++j7){
454
+ var keyframe8 = new Keyframe();
455
+ keyframe8.time = bufferReader.nextFloat32();
456
+ keyframe8.value = JSON.parse(bufferReader.nextStr());
457
+ curve.addKey(keyframe8);
458
+ }
459
+ break;
460
+ }
461
+ }
462
+ clip.addCurveBinding(relativePath, componentType, property, curve);
463
+ }
464
+ resolve(clip);
465
+ });
466
+ };
467
+ return AnimationClipDecoder;
468
+ }();
469
+ AnimationClipDecoder = __decorate([
470
+ decoder("AnimationClip")
471
+ ], AnimationClipDecoder);
472
+
283
473
  var MeshDecoder = /*#__PURE__*/ function() {
284
474
  function MeshDecoder() {}
285
- MeshDecoder.decode = function decode(engine, bufferReader) {
475
+ MeshDecoder.decode = function decode(engine, bufferReader, restoredMesh) {
286
476
  return new Promise(function(resolve) {
287
- var modelMesh = new ModelMesh(engine);
477
+ var modelMesh = restoredMesh || new ModelMesh(engine);
288
478
  var jsonDataString = bufferReader.nextStr();
289
479
  var encodedMeshData = JSON.parse(jsonDataString);
290
480
  // @ts-ignore Vector3 is not compatible with {x: number, y: number, z: number}.
@@ -414,80 +604,22 @@ function float32ArrayToVector2(float32Array, vertexCount) {
414
604
  return array;
415
605
  }
416
606
 
417
- var Texture2DDecoder = /*#__PURE__*/ function() {
418
- function Texture2DDecoder() {}
419
- Texture2DDecoder.decode = function decode(engine, bufferReader) {
420
- return new Promise(function(resolve, reject) {
421
- var objectId = bufferReader.nextStr();
422
- var mipmap = !!bufferReader.nextUint8();
423
- var filterMode = bufferReader.nextUint8();
424
- var anisoLevel = bufferReader.nextUint8();
425
- var wrapModeU = bufferReader.nextUint8();
426
- var wrapModeV = bufferReader.nextUint8();
427
- var format = bufferReader.nextUint8();
428
- var width = bufferReader.nextUint16();
429
- var height = bufferReader.nextUint16();
430
- var isPixelBuffer = bufferReader.nextUint8();
431
- var mipCount = bufferReader.nextUint8();
432
- var imagesData = bufferReader.nextImagesData(mipCount);
433
- var texture2D = new Texture2D(engine, width, height, format, mipmap);
434
- texture2D.filterMode = filterMode;
435
- texture2D.anisoLevel = anisoLevel;
436
- texture2D.wrapModeU = wrapModeU;
437
- texture2D.wrapModeV = wrapModeV;
438
- if (isPixelBuffer) {
439
- var pixelBuffer = imagesData[0];
440
- texture2D.setPixelBuffer(pixelBuffer);
441
- if (mipmap) {
442
- texture2D.generateMipmaps();
443
- for(var i = 1; i < mipCount; i++){
444
- var pixelBuffer1 = imagesData[i];
445
- texture2D.setPixelBuffer(pixelBuffer1, i);
446
- }
447
- }
448
- // @ts-ignore
449
- engine.resourceManager._objectPool[objectId] = texture2D;
450
- resolve(texture2D);
451
- } else {
452
- var blob = new window.Blob([
453
- imagesData[0]
454
- ]);
455
- var img = new Image();
456
- img.onload = function() {
457
- texture2D.setImageSource(img);
458
- var completedCount = 0;
459
- var onComplete = function() {
460
- completedCount++;
461
- if (completedCount >= mipCount) {
462
- resolve(texture2D);
463
- }
464
- };
465
- onComplete();
466
- if (mipmap) {
467
- var _loop = function(i) {
468
- var blob = new window.Blob([
469
- imagesData[i]
470
- ]);
471
- var img = new Image();
472
- img.onload = function() {
473
- texture2D.setImageSource(img, i);
474
- onComplete();
475
- };
476
- img.src = URL.createObjectURL(blob);
477
- };
478
- texture2D.generateMipmaps();
479
- for(var i = 1; i < mipCount; i++)_loop(i);
480
- }
481
- };
482
- img.src = URL.createObjectURL(blob);
607
+ var PrefabParser = /*#__PURE__*/ function() {
608
+ function PrefabParser() {}
609
+ PrefabParser.parseChildren = function parseChildren(entitiesConfig, entities, parentId) {
610
+ var children = entitiesConfig.get(parentId).children;
611
+ if (children && children.length > 0) {
612
+ var parent = entities.get(parentId);
613
+ for(var i = 0; i < children.length; i++){
614
+ var childId = children[i];
615
+ var entity = entities.get(childId);
616
+ parent.addChild(entity);
617
+ this.parseChildren(entitiesConfig, entities, childId);
483
618
  }
484
- });
619
+ }
485
620
  };
486
- return Texture2DDecoder;
621
+ return PrefabParser;
487
622
  }();
488
- Texture2DDecoder = __decorate([
489
- decoder("Texture2D")
490
- ], Texture2DDecoder);
491
623
 
492
624
  function _is_native_reflect_construct() {
493
625
  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
@@ -669,218 +801,148 @@ var ReflectionParser = /*#__PURE__*/ function() {
669
801
  ReflectionParser.customParseComponentHandles = new Map();
670
802
  })();
671
803
 
672
- var PrefabParser = /*#__PURE__*/ function() {
673
- function PrefabParser() {}
674
- PrefabParser.parseChildren = function parseChildren(entitiesConfig, entities, parentId) {
675
- var children = entitiesConfig.get(parentId).children;
676
- if (children && children.length > 0) {
677
- var parent = entities.get(parentId);
678
- for(var i = 0; i < children.length; i++){
679
- var childId = children[i];
680
- var entity = entities.get(childId);
681
- parent.addChild(entity);
682
- this.parseChildren(entitiesConfig, entities, childId);
683
- }
684
- }
685
- };
686
- return PrefabParser;
687
- }();
688
-
689
- var ComponentMap = {
690
- Transform: Transform,
691
- Animator: Animator,
692
- DirectLight: DirectLight,
693
- Camera: Camera,
694
- MeshRenderer: MeshRenderer,
695
- ParticleRenderer: ParticleRenderer,
696
- PointLight: PointLight,
697
- SpotLight: SpotLight,
698
- Script: Script,
699
- SpriteMask: SpriteMask,
700
- SpriteRenderer: SpriteRenderer,
701
- TextRenderer: TextRenderer
702
- };
703
-
704
- var InterpolableValueType;
705
- (function(InterpolableValueType) {
706
- InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
707
- InterpolableValueType[InterpolableValueType["FloatArray"] = 1] = "FloatArray";
708
- InterpolableValueType[InterpolableValueType["Vector2"] = 2] = "Vector2";
709
- InterpolableValueType[InterpolableValueType["Vector3"] = 3] = "Vector3";
710
- InterpolableValueType[InterpolableValueType["Vector4"] = 4] = "Vector4";
711
- InterpolableValueType[InterpolableValueType["Quaternion"] = 5] = "Quaternion";
712
- InterpolableValueType[InterpolableValueType["Color"] = 6] = "Color";
713
- InterpolableValueType[InterpolableValueType["Array"] = 7] = "Array";
714
- InterpolableValueType[InterpolableValueType["Boolean"] = 8] = "Boolean";
715
- InterpolableValueType[InterpolableValueType["Rect"] = 9] = "Rect";
716
- InterpolableValueType[InterpolableValueType["ReferResource"] = 10] = "ReferResource";
717
- })(InterpolableValueType || (InterpolableValueType = {}));
718
- var AnimationClipDecoder = /*#__PURE__*/ function() {
719
- function AnimationClipDecoder() {}
720
- AnimationClipDecoder.decode = function decode(engine, bufferReader) {
721
- return new Promise(function(resolve) {
722
- var name = bufferReader.nextStr();
723
- var clip = new AnimationClip(name);
724
- var eventsLen = bufferReader.nextUint16();
725
- for(var i = 0; i < eventsLen; ++i){
726
- var event = new AnimationEvent();
727
- event.time = bufferReader.nextFloat32();
728
- event.functionName = bufferReader.nextStr();
729
- event.parameter = JSON.parse(bufferReader.nextStr()).val;
730
- clip.addEvent(event);
731
- }
732
- var curveBindingsLen = bufferReader.nextUint16();
733
- for(var i1 = 0; i1 < curveBindingsLen; ++i1){
734
- var relativePath = bufferReader.nextStr();
735
- var componentStr = bufferReader.nextStr();
736
- var componentType = ComponentMap[componentStr];
737
- var property = bufferReader.nextStr();
738
- var curve = void 0;
739
- var interpolation = bufferReader.nextUint8();
740
- var keysLen = bufferReader.nextUint16();
741
- var curveType = bufferReader.nextStr();
742
- switch(curveType){
743
- case "AnimationFloatCurve":
744
- {
745
- curve = new AnimationFloatCurve();
746
- curve.interpolation = interpolation;
747
- for(var j = 0; j < keysLen; ++j){
748
- var keyframe = new Keyframe();
749
- keyframe.time = bufferReader.nextFloat32();
750
- keyframe.value = bufferReader.nextFloat32();
751
- keyframe.inTangent = bufferReader.nextFloat32();
752
- keyframe.outTangent = bufferReader.nextFloat32();
753
- curve.addKey(keyframe);
754
- }
755
- break;
756
- }
757
- case "AnimationArrayCurve":
758
- {
759
- curve = new AnimationArrayCurve();
760
- curve.interpolation = interpolation;
761
- for(var j1 = 0; j1 < keysLen; ++j1){
762
- var keyframe1 = new Keyframe();
763
- keyframe1.time = bufferReader.nextFloat32();
764
- var len = bufferReader.nextUint16();
765
- keyframe1.value = Array.from(bufferReader.nextFloat32Array(len));
766
- keyframe1.inTangent = Array.from(bufferReader.nextFloat32Array(len));
767
- keyframe1.outTangent = Array.from(bufferReader.nextFloat32Array(len));
768
- curve.addKey(keyframe1);
769
- }
770
- break;
771
- }
772
- case "AnimationFloatArrayCurve":
773
- {
774
- curve = new AnimationFloatArrayCurve();
775
- curve.interpolation = interpolation;
776
- for(var j2 = 0; j2 < keysLen; ++j2){
777
- var keyframe2 = new Keyframe();
778
- keyframe2.time = bufferReader.nextFloat32();
779
- var len1 = bufferReader.nextUint16();
780
- keyframe2.value = bufferReader.nextFloat32Array(len1);
781
- keyframe2.inTangent = Array.from(bufferReader.nextFloat32Array(len1));
782
- keyframe2.outTangent = Array.from(bufferReader.nextFloat32Array(len1));
783
- curve.addKey(keyframe2);
784
- }
785
- break;
786
- }
787
- case "AnimationVector2Curve":
788
- {
789
- curve = new AnimationVector2Curve();
790
- curve.interpolation = interpolation;
791
- for(var j3 = 0; j3 < keysLen; ++j3){
792
- var keyframe3 = new Keyframe();
793
- keyframe3.time = bufferReader.nextFloat32();
794
- keyframe3.value = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
795
- keyframe3.inTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
796
- keyframe3.outTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
797
- curve.addKey(keyframe3);
798
- }
799
- break;
800
- }
801
- case "AnimationVector3Curve":
802
- {
803
- curve = new AnimationVector3Curve();
804
- curve.interpolation = interpolation;
805
- for(var j4 = 0; j4 < keysLen; ++j4){
806
- var keyframe4 = new Keyframe();
807
- keyframe4.time = bufferReader.nextFloat32();
808
- keyframe4.value = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
809
- keyframe4.inTangent = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
810
- keyframe4.outTangent = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
811
- curve.addKey(keyframe4);
812
- }
813
- break;
814
- }
815
- case "AnimationVector4Curve":
816
- {
817
- curve = new AnimationVector4Curve();
818
- curve.interpolation = interpolation;
819
- var keyframe5 = new Keyframe();
820
- keyframe5.time = bufferReader.nextFloat32();
821
- keyframe5.value = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
822
- keyframe5.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
823
- keyframe5.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
824
- curve.addKey(keyframe5);
825
- break;
826
- }
827
- case "AnimationColorCurve":
828
- {
829
- curve = new AnimationColorCurve();
830
- curve.interpolation = interpolation;
831
- for(var j5 = 0; j5 < keysLen; ++j5){
832
- var keyframe6 = new Keyframe();
833
- keyframe6.time = bufferReader.nextFloat32();
834
- keyframe6.value = new Color(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
835
- keyframe6.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
836
- keyframe6.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
837
- curve.addKey(keyframe6);
838
- }
839
- break;
840
- }
841
- case "AnimationQuaternionCurve":
842
- {
843
- curve = new AnimationQuaternionCurve();
844
- curve.interpolation = interpolation;
845
- for(var j6 = 0; j6 < keysLen; ++j6){
846
- var keyframe7 = new Keyframe();
847
- keyframe7.time = bufferReader.nextFloat32();
848
- keyframe7.value = new Quaternion(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
849
- keyframe7.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
850
- keyframe7.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
851
- curve.addKey(keyframe7);
852
- }
853
- break;
854
- }
855
- case "AnimationRefCurve":
856
- {
857
- curve = new AnimationRefCurve();
858
- curve.interpolation = interpolation;
859
- for(var j7 = 0; j7 < keysLen; ++j7){
860
- var keyframe8 = new Keyframe();
861
- keyframe8.time = bufferReader.nextFloat32();
862
- keyframe8.value = JSON.parse(bufferReader.nextStr());
863
- curve.addKey(keyframe8);
864
- }
865
- break;
866
- }
804
+ var Texture2DDecoder = /*#__PURE__*/ function() {
805
+ function Texture2DDecoder() {}
806
+ Texture2DDecoder.decode = function decode(engine, bufferReader, restoredTexture) {
807
+ return new Promise(function(resolve, reject) {
808
+ var objectId = bufferReader.nextStr();
809
+ var mipmap = !!bufferReader.nextUint8();
810
+ var filterMode = bufferReader.nextUint8();
811
+ var anisoLevel = bufferReader.nextUint8();
812
+ var wrapModeU = bufferReader.nextUint8();
813
+ var wrapModeV = bufferReader.nextUint8();
814
+ var format = bufferReader.nextUint8();
815
+ var width = bufferReader.nextUint16();
816
+ var height = bufferReader.nextUint16();
817
+ var isPixelBuffer = bufferReader.nextUint8();
818
+ var mipCount = bufferReader.nextUint8();
819
+ var imagesData = bufferReader.nextImagesData(mipCount);
820
+ var texture2D = restoredTexture || new Texture2D(engine, width, height, format, mipmap);
821
+ texture2D.filterMode = filterMode;
822
+ texture2D.anisoLevel = anisoLevel;
823
+ texture2D.wrapModeU = wrapModeU;
824
+ texture2D.wrapModeV = wrapModeV;
825
+ if (isPixelBuffer) {
826
+ var pixelBuffer = imagesData[0];
827
+ texture2D.setPixelBuffer(pixelBuffer);
828
+ if (mipmap) {
829
+ texture2D.generateMipmaps();
830
+ for(var i = 1; i < mipCount; i++){
831
+ var pixelBuffer1 = imagesData[i];
832
+ texture2D.setPixelBuffer(pixelBuffer1, i);
833
+ }
867
834
  }
868
- clip.addCurveBinding(relativePath, componentType, property, curve);
835
+ // @ts-ignore
836
+ engine.resourceManager._objectPool[objectId] = texture2D;
837
+ resolve(texture2D);
838
+ } else {
839
+ var blob = new window.Blob([
840
+ imagesData[0]
841
+ ]);
842
+ var img = new Image();
843
+ img.onload = function() {
844
+ texture2D.setImageSource(img);
845
+ var completedCount = 0;
846
+ var onComplete = function() {
847
+ completedCount++;
848
+ if (completedCount >= mipCount) {
849
+ resolve(texture2D);
850
+ }
851
+ };
852
+ onComplete();
853
+ if (mipmap) {
854
+ var _loop = function(i) {
855
+ var blob = new window.Blob([
856
+ imagesData[i]
857
+ ]);
858
+ var img = new Image();
859
+ img.onload = function() {
860
+ texture2D.setImageSource(img, i);
861
+ onComplete();
862
+ };
863
+ img.src = URL.createObjectURL(blob);
864
+ };
865
+ texture2D.generateMipmaps();
866
+ for(var i = 1; i < mipCount; i++)_loop(i);
867
+ }
868
+ };
869
+ img.src = URL.createObjectURL(blob);
869
870
  }
870
- resolve(clip);
871
871
  });
872
872
  };
873
- return AnimationClipDecoder;
873
+ return Texture2DDecoder;
874
874
  }();
875
- AnimationClipDecoder = __decorate([
876
- decoder("AnimationClip")
877
- ], AnimationClipDecoder);
875
+ Texture2DDecoder = __decorate([
876
+ decoder("Texture2D")
877
+ ], Texture2DDecoder);
878
878
 
879
- var SpecularMode;
880
- (function(SpecularMode) {
881
- SpecularMode["Sky"] = "Sky";
882
- SpecularMode["Custom"] = "Custom";
883
- })(SpecularMode || (SpecularMode = {}));
879
+ var EditorTextureLoader = /*#__PURE__*/ function(Loader1) {
880
+ _inherits(EditorTextureLoader, Loader1);
881
+ function EditorTextureLoader() {
882
+ return Loader1.apply(this, arguments);
883
+ }
884
+ var _proto = EditorTextureLoader.prototype;
885
+ _proto.load = function load(item, resourceManager) {
886
+ var _this = this;
887
+ return new AssetPromise(function(resolve, reject) {
888
+ var request = _this.request;
889
+ request(item.url, _extends({}, item, {
890
+ type: "arraybuffer"
891
+ })).then(function(data) {
892
+ decode(data, resourceManager.engine).then(function(texture) {
893
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
894
+ _inherits(_class, ContentRestorer);
895
+ function _class() {
896
+ return ContentRestorer.apply(this, arguments);
897
+ }
898
+ var _proto = _class.prototype;
899
+ _proto.restoreContent = function restoreContent() {
900
+ return request(item.url, _extends({}, item, {
901
+ type: "arraybuffer"
902
+ })).then(function(data) {
903
+ return decode(data, resourceManager.engine, texture);
904
+ });
905
+ };
906
+ return _class;
907
+ }(ContentRestorer))(texture));
908
+ resolve(texture);
909
+ });
910
+ }).catch(reject);
911
+ });
912
+ };
913
+ return EditorTextureLoader;
914
+ }(Loader);
915
+ EditorTextureLoader = __decorate([
916
+ resourceLoader("EditorTexture2D", [
917
+ "prefab"
918
+ ], true)
919
+ ], EditorTextureLoader);
920
+
921
+ var MeshLoader$1 = /*#__PURE__*/ function(Loader1) {
922
+ _inherits(MeshLoader, Loader1);
923
+ function MeshLoader() {
924
+ return Loader1.apply(this, arguments);
925
+ }
926
+ var _proto = MeshLoader.prototype;
927
+ _proto.load = function load(item, resourceManager) {
928
+ var _this = this;
929
+ return new AssetPromise(function(resolve, reject) {
930
+ _this.request(item.url, {
931
+ type: "arraybuffer"
932
+ }).then(function(data) {
933
+ decode(data, resourceManager.engine).then(function(mesh) {
934
+ resolve(mesh);
935
+ });
936
+ }).catch(reject);
937
+ });
938
+ };
939
+ return MeshLoader;
940
+ }(Loader);
941
+ MeshLoader$1 = __decorate([
942
+ resourceLoader("Mesh", [
943
+ "prefab"
944
+ ], true)
945
+ ], MeshLoader$1);
884
946
 
885
947
  function _array_like_to_array(arr, len) {
886
948
  if (len == null || len > arr.length) len = arr.length;
@@ -1037,57 +1099,11 @@ var SceneParserContext = /*#__PURE__*/ function() {
1037
1099
  return SceneParser;
1038
1100
  }();
1039
1101
 
1040
- var MeshLoader$1 = /*#__PURE__*/ function(Loader1) {
1041
- _inherits(MeshLoader, Loader1);
1042
- function MeshLoader() {
1043
- return Loader1.apply(this, arguments);
1044
- }
1045
- var _proto = MeshLoader.prototype;
1046
- _proto.load = function load(item, resourceManager) {
1047
- var _this = this;
1048
- return new AssetPromise(function(resolve, reject) {
1049
- _this.request(item.url, {
1050
- type: "arraybuffer"
1051
- }).then(function(data) {
1052
- decode(data, resourceManager.engine).then(function(mesh) {
1053
- resolve(mesh);
1054
- });
1055
- }).catch(reject);
1056
- });
1057
- };
1058
- return MeshLoader;
1059
- }(Loader);
1060
- MeshLoader$1 = __decorate([
1061
- resourceLoader("Mesh", [
1062
- "prefab"
1063
- ], true)
1064
- ], MeshLoader$1);
1065
-
1066
- var EditorTextureLoader = /*#__PURE__*/ function(Loader1) {
1067
- _inherits(EditorTextureLoader, Loader1);
1068
- function EditorTextureLoader() {
1069
- return Loader1.apply(this, arguments);
1070
- }
1071
- var _proto = EditorTextureLoader.prototype;
1072
- _proto.load = function load(item, resourceManager) {
1073
- var _this = this;
1074
- return new AssetPromise(function(resolve, reject) {
1075
- _this.request(item.url, {
1076
- type: "arraybuffer"
1077
- }).then(function(data) {
1078
- decode(data, resourceManager.engine).then(function(texture) {
1079
- resolve(texture);
1080
- });
1081
- }).catch(reject);
1082
- });
1083
- };
1084
- return EditorTextureLoader;
1085
- }(Loader);
1086
- EditorTextureLoader = __decorate([
1087
- resourceLoader("EditorTexture2D", [
1088
- "prefab"
1089
- ], true)
1090
- ], EditorTextureLoader);
1102
+ var SpecularMode;
1103
+ (function(SpecularMode) {
1104
+ SpecularMode["Sky"] = "Sky";
1105
+ SpecularMode["Custom"] = "Custom";
1106
+ })(SpecularMode || (SpecularMode = {}));
1091
1107
 
1092
1108
  /**
1093
1109
  * Decode engine binary resource.
@@ -1095,9 +1111,13 @@ EditorTextureLoader = __decorate([
1095
1111
  * @param engine - engine
1096
1112
  * @returns
1097
1113
  */ function decode(arrayBuffer, engine) {
1114
+ for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
1115
+ args[_key - 2] = arguments[_key];
1116
+ }
1117
+ var _decoderMap_header_type;
1098
1118
  var header = FileHeader.decode(arrayBuffer);
1099
1119
  var bufferReader = new BufferReader(new Uint8Array(arrayBuffer), header.headerLength, header.dataLength);
1100
- return decoderMap[header.type].decode(engine, bufferReader).then(function(object) {
1120
+ return (_decoderMap_header_type = decoderMap[header.type]).decode.apply(_decoderMap_header_type, [].concat(engine, bufferReader, args)).then(function(object) {
1101
1121
  object.name = header.name;
1102
1122
  return object;
1103
1123
  });
@@ -1265,39 +1285,42 @@ BufferLoader = __decorate([
1265
1285
  ], BufferLoader);
1266
1286
 
1267
1287
  var EnvLoader = /*#__PURE__*/ function(Loader1) {
1268
- _inherits(EnvLoader, Loader1);
1269
- function EnvLoader() {
1288
+ _inherits(EnvLoader1, Loader1);
1289
+ function EnvLoader1() {
1270
1290
  return Loader1.apply(this, arguments);
1271
1291
  }
1272
- var _proto = EnvLoader.prototype;
1292
+ var _proto = EnvLoader1.prototype;
1273
1293
  _proto.load = function load(item, resourceManager) {
1274
1294
  var _this = this;
1275
1295
  return new AssetPromise(function(resolve, reject) {
1276
- _this.request(item.url, {
1296
+ var engine = resourceManager.engine;
1297
+ var request = _this.request;
1298
+ request(item.url, _extends({}, item, {
1277
1299
  type: "arraybuffer"
1278
- }).then(function(arraybuffer) {
1279
- var _this;
1280
- var shArray = new Float32Array(arraybuffer, 0, 27);
1281
- var shByteLength = 27 * 4;
1282
- var size = (_this = new Uint16Array(arraybuffer, shByteLength, 1)) == null ? void 0 : _this[0];
1283
- var engine = resourceManager.engine;
1284
- var texture = new TextureCube(engine, size);
1285
- texture.filterMode = TextureFilterMode.Trilinear;
1286
- var mipmapCount = texture.mipmapCount;
1287
- var offset = shByteLength + 2;
1288
- for(var mipLevel = 0; mipLevel < mipmapCount; mipLevel++){
1289
- var mipSize = size >> mipLevel;
1290
- for(var face = 0; face < 6; face++){
1291
- var dataSize = mipSize * mipSize * 4;
1292
- var data = new Uint8Array(arraybuffer, offset, dataSize);
1293
- offset += dataSize;
1294
- texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);
1300
+ })).then(function(arraybuffer) {
1301
+ var texture = EnvLoader._setTextureByBuffer(engine, arraybuffer);
1302
+ engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
1303
+ _inherits(_class, ContentRestorer);
1304
+ function _class() {
1305
+ return ContentRestorer.apply(this, arguments);
1295
1306
  }
1296
- }
1307
+ var _proto = _class.prototype;
1308
+ _proto.restoreContent = function restoreContent() {
1309
+ return new AssetPromise(function(resolve, reject) {
1310
+ request(item.url, _extends({}, item, {
1311
+ type: "arraybuffer"
1312
+ })).then(function(buffer) {
1313
+ EnvLoader._setTextureByBuffer(engine, buffer, texture);
1314
+ resolve(texture);
1315
+ }).catch(reject);
1316
+ });
1317
+ };
1318
+ return _class;
1319
+ }(ContentRestorer))(texture));
1297
1320
  var ambientLight = new AmbientLight(engine);
1298
1321
  var sh = new SphericalHarmonics3();
1299
1322
  ambientLight.diffuseMode = DiffuseMode.SphericalHarmonics;
1300
- sh.copyFromArray(shArray);
1323
+ sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));
1301
1324
  ambientLight.diffuseSphericalHarmonics = sh;
1302
1325
  ambientLight.specularTexture = texture;
1303
1326
  ambientLight.specularTextureDecodeRGBM = true;
@@ -1307,7 +1330,28 @@ var EnvLoader = /*#__PURE__*/ function(Loader1) {
1307
1330
  });
1308
1331
  });
1309
1332
  };
1310
- return EnvLoader;
1333
+ /**
1334
+ * @internal
1335
+ */ EnvLoader1._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
1336
+ var _this;
1337
+ var shByteLength = 27 * 4;
1338
+ var size = (_this = new Uint16Array(buffer, shByteLength, 1)) == null ? void 0 : _this[0];
1339
+ texture || (texture = new TextureCube(engine, size));
1340
+ texture.filterMode = TextureFilterMode.Trilinear;
1341
+ var mipmapCount = texture.mipmapCount;
1342
+ var offset = shByteLength + 2;
1343
+ for(var mipLevel = 0; mipLevel < mipmapCount; mipLevel++){
1344
+ var mipSize = size >> mipLevel;
1345
+ for(var face = 0; face < 6; face++){
1346
+ var dataSize = mipSize * mipSize * 4;
1347
+ var data = new Uint8Array(buffer, offset, dataSize);
1348
+ offset += dataSize;
1349
+ texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);
1350
+ }
1351
+ }
1352
+ return texture;
1353
+ };
1354
+ return EnvLoader1;
1311
1355
  }(Loader);
1312
1356
  EnvLoader = __decorate([
1313
1357
  resourceLoader(AssetType.Env, [
@@ -1595,7 +1639,7 @@ var TextureWrapMode;
1595
1639
  var glTFItems = this.glTF[glTFSchemaMap[type]];
1596
1640
  if (glTFItems && (index === undefined || glTFItems[index])) {
1597
1641
  if (index === undefined) {
1598
- resource = type === 7 ? glTFItems.map(function(_, index) {
1642
+ resource = type === 8 ? glTFItems.map(function(_, index) {
1599
1643
  return _this.get(type, index);
1600
1644
  }) : Promise.all(glTFItems.map(function(_, index) {
1601
1645
  return _this.get(type, index);
@@ -1617,11 +1661,11 @@ var TextureWrapMode;
1617
1661
  _this.glTF = json;
1618
1662
  return Promise.all([
1619
1663
  _this.get(1),
1620
- _this.get(4),
1621
1664
  _this.get(5),
1622
1665
  _this.get(6),
1623
- _this.get(8),
1666
+ _this.get(7),
1624
1667
  _this.get(9),
1668
+ _this.get(10),
1625
1669
  _this.get(2)
1626
1670
  ]).then(function() {
1627
1671
  var glTFResource = _this.glTFResource;
@@ -1659,7 +1703,7 @@ var TextureWrapMode;
1659
1703
  var _this = this;
1660
1704
  var glTFResourceKey = glTFResourceMap[type];
1661
1705
  if (!glTFResourceKey) return;
1662
- if (type === 7) {
1706
+ if (type === 8) {
1663
1707
  var _this_glTFResource, _glTFResourceKey;
1664
1708
  ((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
1665
1709
  } else {
@@ -1667,7 +1711,7 @@ var TextureWrapMode;
1667
1711
  resource.then(function(item) {
1668
1712
  var _this_glTFResource, _glTFResourceKey;
1669
1713
  ((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
1670
- if (type === 6) {
1714
+ if (type === 7) {
1671
1715
  for(var i = 0, length = item.length; i < length; i++){
1672
1716
  var mesh = item[i];
1673
1717
  // @ts-ignore
@@ -1707,17 +1751,18 @@ var GLTFParserType;
1707
1751
  GLTFParserType[GLTFParserType["Validator"] = 1] = "Validator";
1708
1752
  GLTFParserType[GLTFParserType["Scene"] = 2] = "Scene";
1709
1753
  GLTFParserType[GLTFParserType["Buffer"] = 3] = "Buffer";
1710
- GLTFParserType[GLTFParserType["Texture"] = 4] = "Texture";
1711
- GLTFParserType[GLTFParserType["Material"] = 5] = "Material";
1712
- GLTFParserType[GLTFParserType["Mesh"] = 6] = "Mesh";
1713
- GLTFParserType[GLTFParserType["Entity"] = 7] = "Entity";
1714
- GLTFParserType[GLTFParserType["Skin"] = 8] = "Skin";
1715
- GLTFParserType[GLTFParserType["Animation"] = 9] = "Animation";
1754
+ GLTFParserType[GLTFParserType["BufferView"] = 4] = "BufferView";
1755
+ GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
1756
+ GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
1757
+ GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
1758
+ GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
1759
+ GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
1760
+ GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
1716
1761
  })(GLTFParserType || (GLTFParserType = {}));
1717
1762
  var _obj;
1718
- var glTFSchemaMap = (_obj = {}, _obj[2] = "scenes", _obj[3] = "buffers", _obj[4] = "textures", _obj[5] = "materials", _obj[6] = "meshes", _obj[7] = "nodes", _obj[8] = "skins", _obj[9] = "animations", _obj);
1763
+ var glTFSchemaMap = (_obj = {}, _obj[2] = "scenes", _obj[3] = "buffers", _obj[5] = "textures", _obj[6] = "materials", _obj[7] = "meshes", _obj[8] = "nodes", _obj[9] = "skins", _obj[10] = "animations", _obj[4] = "bufferViews", _obj);
1719
1764
  var _obj1;
1720
- var glTFResourceMap = (_obj1 = {}, _obj1[2] = "sceneRoots", _obj1[4] = "textures", _obj1[5] = "materials", _obj1[6] = "meshes", _obj1[7] = "entities", _obj1[8] = "skins", _obj1[9] = "animations", _obj1);
1765
+ var glTFResourceMap = (_obj1 = {}, _obj1[2] = "sceneRoots", _obj1[5] = "textures", _obj1[6] = "materials", _obj1[7] = "meshes", _obj1[8] = "entities", _obj1[9] = "skins", _obj1[10] = "animations", _obj1);
1721
1766
  function registerGLTFParser(pipeline) {
1722
1767
  return function(Parser) {
1723
1768
  var parser = new Parser();
@@ -1822,113 +1867,68 @@ function registerGLTFParser(pipeline) {
1822
1867
  };
1823
1868
  GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
1824
1869
  var componentType = accessor.componentType;
1825
- var _accessor_bufferView;
1826
- var bufferViewIndex = (_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0;
1827
- var bufferView = bufferViews[bufferViewIndex];
1828
- return context.get(GLTFParserType.Buffer).then(function(buffers) {
1829
- var bufferIndex = bufferView.buffer;
1830
- var buffer = buffers[bufferIndex];
1831
- var _bufferView_byteOffset;
1832
- var bufferByteOffset = (_bufferView_byteOffset = bufferView.byteOffset) != null ? _bufferView_byteOffset : 0;
1833
- var _accessor_byteOffset;
1834
- var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1835
- var TypedArray = GLTFUtils.getComponentType(componentType);
1836
- var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1837
- var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
1838
- var elementStride = dataElementSize * dataElementBytes;
1839
- var accessorCount = accessor.count;
1840
- var bufferStride = bufferView.byteStride;
1841
- var bufferInfo;
1842
- // According to the glTF official documentation only byteStride not undefined is allowed
1843
- if (bufferStride !== undefined && bufferStride !== elementStride) {
1844
- var bufferSlice = Math.floor(byteOffset / bufferStride);
1845
- var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
1846
- var accessorBufferCache = context.accessorBufferCache;
1847
- bufferInfo = accessorBufferCache[bufferCacheKey];
1848
- if (!bufferInfo) {
1849
- var offset = bufferByteOffset + bufferSlice * bufferStride;
1850
- var count = accessorCount * (bufferStride / dataElementBytes);
1851
- var data = new TypedArray(buffer, offset, count);
1852
- accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1853
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1870
+ var TypedArray = GLTFUtils.getComponentType(componentType);
1871
+ var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1872
+ var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
1873
+ var elementStride = dataElementSize * dataElementBytes;
1874
+ var accessorCount = accessor.count;
1875
+ var promise;
1876
+ if (accessor.bufferView !== undefined) {
1877
+ var bufferViewIndex = accessor.bufferView;
1878
+ var bufferView = bufferViews[bufferViewIndex];
1879
+ promise = context.get(GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
1880
+ var bufferIndex = bufferView.buffer;
1881
+ var _bufferViewData_byteOffset;
1882
+ var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
1883
+ var _accessor_byteOffset;
1884
+ var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1885
+ var bufferStride = bufferView.byteStride;
1886
+ var bufferInfo;
1887
+ // According to the glTF official documentation only byteStride not undefined is allowed
1888
+ if (bufferStride !== undefined && bufferStride !== elementStride) {
1889
+ var bufferSlice = Math.floor(byteOffset / bufferStride);
1890
+ var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
1891
+ var accessorBufferCache = context.accessorBufferCache;
1892
+ bufferInfo = accessorBufferCache[bufferCacheKey];
1893
+ if (!bufferInfo) {
1894
+ var offset = bufferByteOffset + bufferSlice * bufferStride;
1895
+ var count = accessorCount * (bufferStride / dataElementBytes);
1896
+ var data = new TypedArray(bufferViewData.buffer, offset, count);
1897
+ accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1898
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1899
+ }
1900
+ } else {
1901
+ var offset1 = bufferByteOffset + byteOffset;
1902
+ var count1 = accessorCount * dataElementSize;
1903
+ var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
1904
+ bufferInfo = new BufferInfo(data1, false, elementStride);
1905
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1854
1906
  }
1855
- } else {
1856
- var offset1 = bufferByteOffset + byteOffset;
1857
- var count1 = accessorCount * dataElementSize;
1858
- var data1 = new TypedArray(buffer, offset1, count1);
1859
- bufferInfo = new BufferInfo(data1, false, elementStride);
1860
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1861
- }
1862
- if (accessor.sparse) {
1863
- GLTFUtils.processingSparseData(bufferViews, accessor, buffers, bufferInfo);
1864
- }
1865
- return bufferInfo;
1866
- });
1907
+ return bufferInfo;
1908
+ });
1909
+ } else {
1910
+ var count = accessorCount * dataElementSize;
1911
+ var data = new TypedArray(count);
1912
+ var bufferInfo = new BufferInfo(data, false, elementStride);
1913
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
1914
+ promise = Promise.resolve(bufferInfo);
1915
+ }
1916
+ return accessor.sparse ? promise.then(function(bufferInfo) {
1917
+ return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
1918
+ return bufferInfo;
1919
+ });
1920
+ }) : promise;
1867
1921
  };
1868
- GLTFUtils.bufferToVector3Array = function bufferToVector3Array(data, byteStride, accessorByteOffset, count) {
1869
- var bytesPerElement = data.BYTES_PER_ELEMENT;
1870
- var offset = accessorByteOffset % byteStride / bytesPerElement;
1871
- var stride = byteStride / bytesPerElement;
1872
- var vector3s = new Array(count);
1922
+ GLTFUtils.bufferToVector3Array = function bufferToVector3Array(buffer, byteOffset, count, normalized, componentType) {
1923
+ var baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;
1924
+ var stride = buffer.length / count;
1925
+ var vertices = new Array(count);
1926
+ var factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;
1873
1927
  for(var i = 0; i < count; i++){
1874
- var index = offset + i * stride;
1875
- vector3s[i] = new Vector3(data[index], data[index + 1], data[index + 2]);
1876
- }
1877
- return vector3s;
1878
- };
1879
- /**
1880
- * @deprecated
1881
- * Get accessor data.
1882
- */ GLTFUtils.getAccessorData = function getAccessorData(glTF, accessor, buffers) {
1883
- var bufferViews = glTF.bufferViews;
1884
- var _accessor_bufferView;
1885
- var bufferView = bufferViews[(_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0];
1886
- var arrayBuffer = buffers[bufferView.buffer];
1887
- var accessorByteOffset = accessor.hasOwnProperty("byteOffset") ? accessor.byteOffset : 0;
1888
- var bufferViewByteOffset = bufferView.hasOwnProperty("byteOffset") ? bufferView.byteOffset : 0;
1889
- var byteOffset = accessorByteOffset + bufferViewByteOffset;
1890
- var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1891
- var length = accessorTypeSize * accessor.count;
1892
- var _bufferView_byteStride;
1893
- var byteStride = (_bufferView_byteStride = bufferView.byteStride) != null ? _bufferView_byteStride : 0;
1894
- var arrayType = GLTFUtils.getComponentType(accessor.componentType);
1895
- var uint8Array;
1896
- if (byteStride) {
1897
- var accessorByteSize = accessorTypeSize * arrayType.BYTES_PER_ELEMENT;
1898
- uint8Array = new Uint8Array(accessor.count * accessorByteSize);
1899
- var originalBufferView = new Uint8Array(arrayBuffer, bufferViewByteOffset, bufferView.byteLength);
1900
- for(var i = 0; i < accessor.count; i++){
1901
- for(var j = 0; j < accessorByteSize; j++){
1902
- uint8Array[i * accessorByteSize + j] = originalBufferView[i * byteStride + accessorByteOffset + j];
1903
- }
1904
- }
1905
- } else {
1906
- uint8Array = new Uint8Array(arrayBuffer.slice(byteOffset, byteOffset + length * arrayType.BYTES_PER_ELEMENT));
1907
- }
1908
- var typedArray = new arrayType(uint8Array.buffer);
1909
- if (accessor.sparse) {
1910
- var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
1911
- var indicesBufferView = bufferViews[indices.bufferView];
1912
- var valuesBufferView = bufferViews[values.bufferView];
1913
- var indicesArrayBuffer = buffers[indicesBufferView.buffer];
1914
- var valuesArrayBuffer = buffers[valuesBufferView.buffer];
1915
- var _indices_byteOffset, _indicesBufferView_byteOffset;
1916
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
1917
- var indicesByteLength = indicesBufferView.byteLength;
1918
- var _values_byteOffset, _valuesBufferView_byteOffset;
1919
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
1920
- var valuesByteLength = valuesBufferView.byteLength;
1921
- var indicesType = GLTFUtils.getComponentType(indices.componentType);
1922
- var indicesArray = new indicesType(indicesArrayBuffer, indicesByteOffset, indicesByteLength / indicesType.BYTES_PER_ELEMENT);
1923
- var valuesArray = new arrayType(valuesArrayBuffer, valuesByteOffset, valuesByteLength / arrayType.BYTES_PER_ELEMENT);
1924
- for(var i1 = 0; i1 < count; i1++){
1925
- var replaceIndex = indicesArray[i1];
1926
- for(var j1 = 0; j1 < accessorTypeSize; j1++){
1927
- typedArray[replaceIndex * accessorTypeSize + j1] = valuesArray[i1 * accessorTypeSize + j1];
1928
- }
1929
- }
1928
+ var index = baseOffset + i * stride;
1929
+ vertices[i] = new Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);
1930
1930
  }
1931
- return typedArray;
1931
+ return vertices;
1932
1932
  };
1933
1933
  GLTFUtils.getBufferViewData = function getBufferViewData(bufferView, buffers) {
1934
1934
  var _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset;
@@ -1937,40 +1937,43 @@ function registerGLTFParser(pipeline) {
1937
1937
  };
1938
1938
  /**
1939
1939
  * Get accessor data.
1940
- */ GLTFUtils.processingSparseData = function processingSparseData(bufferViews, accessor, buffers, bufferInfo) {
1940
+ */ GLTFUtils.processingSparseData = function processingSparseData(context, accessor, bufferInfo) {
1941
1941
  var restoreInfo = bufferInfo.restoreInfo;
1942
+ var bufferViews = context.glTF.bufferViews;
1942
1943
  var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1943
1944
  var TypedArray = GLTFUtils.getComponentType(accessor.componentType);
1944
1945
  var data = bufferInfo.data.slice();
1945
1946
  var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
1946
1947
  var indicesBufferView = bufferViews[indices.bufferView];
1947
1948
  var valuesBufferView = bufferViews[values.bufferView];
1948
- var indicesBufferIndex = indicesBufferView.buffer;
1949
- var valuesBufferIndex = valuesBufferView.buffer;
1950
- var indicesArrayBuffer = buffers[indicesBufferIndex];
1951
- var valuesArrayBuffer = buffers[valuesBufferIndex];
1952
- var _indices_byteOffset, _indicesBufferView_byteOffset;
1953
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
1954
- var indicesByteLength = indicesBufferView.byteLength;
1955
- var _values_byteOffset, _valuesBufferView_byteOffset;
1956
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
1957
- var valuesByteLength = valuesBufferView.byteLength;
1958
- restoreInfo.typeSize = accessorTypeSize;
1959
- restoreInfo.sparseCount = count;
1960
- var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
1961
- var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
1962
- var indicesArray = new IndexTypeArray(indicesArrayBuffer, indicesByteOffset, indexLength);
1963
- restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferIndex, IndexTypeArray, indicesByteOffset, indexLength);
1964
- var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
1965
- var valuesArray = new TypedArray(valuesArrayBuffer, valuesByteOffset, valueLength);
1966
- restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferIndex, TypedArray, valuesByteOffset, valueLength);
1967
- for(var i = 0; i < count; i++){
1968
- var replaceIndex = indicesArray[i];
1969
- for(var j = 0; j < accessorTypeSize; j++){
1970
- data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
1949
+ return Promise.all([
1950
+ context.get(GLTFParserType.BufferView, indices.bufferView),
1951
+ context.get(GLTFParserType.BufferView, values.bufferView)
1952
+ ]).then(function(param) {
1953
+ var indicesUint8Array = param[0], valuesUin8Array = param[1];
1954
+ var _indices_byteOffset, _indicesUint8Array_byteOffset;
1955
+ var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesUint8Array_byteOffset = indicesUint8Array.byteOffset) != null ? _indicesUint8Array_byteOffset : 0);
1956
+ var indicesByteLength = indicesUint8Array.byteLength;
1957
+ var _values_byteOffset, _valuesUin8Array_byteOffset;
1958
+ var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesUin8Array_byteOffset = valuesUin8Array.byteOffset) != null ? _valuesUin8Array_byteOffset : 0);
1959
+ var valuesByteLength = valuesUin8Array.byteLength;
1960
+ restoreInfo.typeSize = accessorTypeSize;
1961
+ restoreInfo.sparseCount = count;
1962
+ var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
1963
+ var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
1964
+ var indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);
1965
+ restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferView.buffer, IndexTypeArray, indicesByteOffset, indexLength);
1966
+ var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
1967
+ var valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);
1968
+ restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferView.buffer, TypedArray, valuesByteOffset, valueLength);
1969
+ for(var i = 0; i < count; i++){
1970
+ var replaceIndex = indicesArray[i];
1971
+ for(var j = 0; j < accessorTypeSize; j++){
1972
+ data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
1973
+ }
1971
1974
  }
1972
- }
1973
- bufferInfo.data = data;
1975
+ bufferInfo.data = data;
1976
+ });
1974
1977
  };
1975
1978
  GLTFUtils.getIndexFormat = function getIndexFormat(type) {
1976
1979
  switch(type){
@@ -2068,28 +2071,29 @@ function registerGLTFParser(pipeline) {
2068
2071
  BIN: 0x004e4942
2069
2072
  };
2070
2073
  var dataView = new DataView(originBuffer);
2071
- // read header
2074
+ // Read header
2072
2075
  var header = {
2073
2076
  magic: dataView.getUint32(0, true),
2074
2077
  version: dataView.getUint32(UINT32_LENGTH, true),
2075
2078
  length: dataView.getUint32(2 * UINT32_LENGTH, true)
2076
2079
  };
2080
+ // Return the original buffer if it is not a glb
2077
2081
  if (header.magic !== GLB_HEADER_MAGIC) {
2078
2082
  return {
2079
2083
  originBuffer: originBuffer
2080
2084
  };
2081
2085
  }
2082
- // read main data
2086
+ // Read main data
2083
2087
  var chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);
2084
2088
  var chunkType = dataView.getUint32(GLB_HEADER_LENGTH + UINT32_LENGTH, true);
2085
- // read glTF json
2089
+ // Read glTF json
2086
2090
  if (chunkType !== GLB_CHUNK_TYPES.JSON) {
2087
2091
  console.error("Invalid glb chunk type. Expected 0x4E4F534A, found 0x" + chunkType.toString(16));
2088
2092
  return null;
2089
2093
  }
2090
2094
  var glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2091
2095
  var glTF = JSON.parse(Utils.decodeText(glTFData));
2092
- // read all buffers
2096
+ // Read all buffers
2093
2097
  var buffers = [];
2094
2098
  var byteOffset = GLB_HEADER_LENGTH + 2 * UINT32_LENGTH + chunkLength;
2095
2099
  var restoreGLBBufferSlice = context.contentRestorer.glbBufferSlices;
@@ -2980,13 +2984,39 @@ var KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2980
2984
  /**
2981
2985
  * @internal
2982
2986
  */ _proto.load = function load(item, resourceManager) {
2983
- return this.request(item.url, {
2984
- type: "arraybuffer"
2985
- }).then(function(buffer) {
2986
- return KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
2987
- var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
2988
- return KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
2989
- });
2987
+ var _this = this;
2988
+ return new AssetPromise(function(resolve, reject) {
2989
+ var request = _this.request;
2990
+ request(item.url, _extends({}, item, {
2991
+ type: "arraybuffer"
2992
+ })).then(function(buffer) {
2993
+ return KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
2994
+ var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
2995
+ return KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
2996
+ }).then(function(texture) {
2997
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
2998
+ _inherits(_class, ContentRestorer);
2999
+ function _class() {
3000
+ return ContentRestorer.apply(this, arguments);
3001
+ }
3002
+ var _proto = _class.prototype;
3003
+ _proto.restoreContent = function restoreContent() {
3004
+ return new AssetPromise(function(resolve, reject) {
3005
+ request(item.url, _extends({}, item, {
3006
+ type: "arraybuffer"
3007
+ })).then(function(buffer) {
3008
+ return KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
3009
+ var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
3010
+ return KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params, texture);
3011
+ });
3012
+ }).then(resolve).catch(reject);
3013
+ });
3014
+ };
3015
+ return _class;
3016
+ }(ContentRestorer))(texture));
3017
+ resolve(texture);
3018
+ });
3019
+ }).catch(reject);
2990
3020
  });
2991
3021
  };
2992
3022
  /**
@@ -3025,7 +3055,7 @@ var KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
3025
3055
  };
3026
3056
  });
3027
3057
  };
3028
- /** @internal */ KTX2Loader1._createTextureByBuffer = function _createTextureByBuffer(engine, transcodeResult, targetFormat, params) {
3058
+ /** @internal */ KTX2Loader1._createTextureByBuffer = function _createTextureByBuffer(engine, transcodeResult, targetFormat, params, restoredTexture) {
3029
3059
  var width = transcodeResult.width, height = transcodeResult.height, faces = transcodeResult.faces;
3030
3060
  var faceCount = faces.length;
3031
3061
  var mipmaps = faces[0];
@@ -3033,13 +3063,13 @@ var KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
3033
3063
  var engineFormat = this._getEngineTextureFormat(targetFormat, transcodeResult);
3034
3064
  var texture;
3035
3065
  if (faceCount !== 6) {
3036
- texture = new Texture2D(engine, width, height, engineFormat, mipmap);
3066
+ texture = restoredTexture || new Texture2D(engine, width, height, engineFormat, mipmap);
3037
3067
  for(var mipLevel = 0; mipLevel < mipmaps.length; mipLevel++){
3038
3068
  var data = mipmaps[mipLevel].data;
3039
3069
  texture.setPixelBuffer(data, mipLevel);
3040
3070
  }
3041
3071
  } else {
3042
- texture = new TextureCube(engine, height, engineFormat, mipmap);
3072
+ texture = restoredTexture || new TextureCube(engine, height, engineFormat, mipmap);
3043
3073
  for(var i = 0; i < faces.length; i++){
3044
3074
  var faceData = faces[i];
3045
3075
  for(var mipLevel1 = 0; mipLevel1 < mipmaps.length; mipLevel1++){
@@ -3236,16 +3266,16 @@ var KTX2Transcoder;
3236
3266
  var frame = restoreInfo.blendShape.frames[0];
3237
3267
  var position = restoreInfo.position;
3238
3268
  var positionData = _this._getBufferData(buffers, position.buffer);
3239
- frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.stride, position.byteOffset, position.count);
3269
+ frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.byteOffset, position.count, position.normalized, position.componentType);
3240
3270
  if (restoreInfo.normal) {
3241
3271
  var normal = restoreInfo.normal;
3242
3272
  var normalData = _this._getBufferData(buffers, normal.buffer);
3243
- frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.stride, normal.byteOffset, normal.count);
3273
+ frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.byteOffset, normal.count, normal.normalized, normal.componentType);
3244
3274
  }
3245
3275
  if (restoreInfo.tangent) {
3246
3276
  var tangent = restoreInfo.tangent;
3247
3277
  var tangentData = _this._getBufferData(buffers, tangent.buffer);
3248
- frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.stride, tangent.byteOffset, tangent.count);
3278
+ frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.byteOffset, tangent.count, tangent.normalized, tangent.componentType);
3249
3279
  }
3250
3280
  }
3251
3281
  mesh.uploadData(true);
@@ -3257,8 +3287,13 @@ var KTX2Transcoder;
3257
3287
  };
3258
3288
  _proto._getBufferData = function _getBufferData(buffers, restoreInfo) {
3259
3289
  var main = restoreInfo.main;
3260
- var buffer = buffers[main.bufferIndex];
3261
- var data = new main.TypedArray(buffer, main.byteOffset, main.length);
3290
+ var data;
3291
+ if (main) {
3292
+ var buffer = buffers[main.bufferIndex];
3293
+ data = new main.TypedArray(buffer, main.byteOffset, main.length);
3294
+ } else {
3295
+ data = new main.TypedArray(main.length);
3296
+ }
3262
3297
  var sparseCount = restoreInfo.sparseCount;
3263
3298
  if (sparseCount) {
3264
3299
  var sparseIndex = restoreInfo.sparseIndices;
@@ -3331,11 +3366,12 @@ var KTX2Transcoder;
3331
3366
  };
3332
3367
  /**
3333
3368
  * @internal
3334
- */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, stride, byteOffset, count) {
3369
+ */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, byteOffset, count, normalized, componentType) {
3335
3370
  this.buffer = buffer;
3336
- this.stride = stride;
3337
3371
  this.byteOffset = byteOffset;
3338
3372
  this.count = count;
3373
+ this.normalized = normalized;
3374
+ this.componentType = componentType;
3339
3375
  };
3340
3376
 
3341
3377
  /**
@@ -3512,8 +3548,13 @@ var GLTFSchemaParser = /*#__PURE__*/ function(GLTFParser1) {
3512
3548
  type: "arraybuffer"
3513
3549
  };
3514
3550
  return request(url, requestConfig).then(function(buffer) {
3515
- restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3516
- return GLTFUtils.parseGLB(context, buffer);
3551
+ var _parseResult;
3552
+ var parseResult = GLTFUtils.parseGLB(context, buffer);
3553
+ // If the buffer is a GLB file, we need to restore the buffer data
3554
+ if ((_parseResult = parseResult) == null ? void 0 : _parseResult.glTF) {
3555
+ restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3556
+ }
3557
+ return parseResult;
3517
3558
  }).then(function(result) {
3518
3559
  var _result;
3519
3560
  if ((_result = result) == null ? void 0 : _result.glTF) {
@@ -3931,7 +3972,7 @@ var GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
3931
3972
  resolve(mesh);
3932
3973
  } else {
3933
3974
  mesh.then(function(mesh) {
3934
- return resolve(mesh);
3975
+ resolve(mesh);
3935
3976
  });
3936
3977
  }
3937
3978
  } else {
@@ -3939,35 +3980,20 @@ var GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
3939
3980
  var meshRestoreInfo = new ModelMeshRestoreInfo();
3940
3981
  meshRestoreInfo.mesh = mesh1;
3941
3982
  context.contentRestorer.meshes.push(meshRestoreInfo);
3942
- GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, function(attributeSemantic) {
3943
- return null;
3944
- }, function(attributeName, shapeIndex) {
3945
- var shapeAccessorIdx = gltfPrimitive.targets[shapeIndex];
3946
- var attributeAccessorIdx = shapeAccessorIdx[attributeName];
3947
- if (attributeAccessorIdx) {
3948
- var accessor = glTF.accessors[attributeAccessorIdx];
3949
- return GLTFUtils.getAccessorBuffer(context, context.glTF.bufferViews, accessor);
3950
- } else {
3951
- return null;
3952
- }
3953
- }, function() {
3954
- var indexAccessor = glTF.accessors[gltfPrimitive.indices];
3955
- return context.get(GLTFParserType.Buffer).then(function(buffers) {
3956
- return GLTFUtils.getAccessorData(glTF, indexAccessor, buffers);
3957
- });
3958
- }, context.params.keepMeshData).then(resolve);
3983
+ GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, context.params.keepMeshData).then(resolve);
3959
3984
  }
3960
3985
  });
3961
3986
  };
3962
3987
  var meshInfo = context.glTF.meshes[index];
3963
- var glTF = context.glTF, engine = context.glTFResource.engine;
3988
+ var glTF = context.glTF, glTFResource = context.glTFResource;
3989
+ var engine = glTFResource.engine;
3964
3990
  var primitivePromises = new Array();
3965
3991
  for(var i = 0, length = meshInfo.primitives.length; i < length; i++)_loop(i);
3966
3992
  return Promise.all(primitivePromises);
3967
3993
  };
3968
3994
  /**
3969
3995
  * @internal
3970
- */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
3996
+ */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, keepMeshData) {
3971
3997
  var _loop = function(attribute) {
3972
3998
  var accessor = accessors[attributes[attribute]];
3973
3999
  var promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor).then(function(accessorBuffer) {
@@ -4038,6 +4064,7 @@ var GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
4038
4064
  });
4039
4065
  promises.push(promise);
4040
4066
  };
4067
+ var _this = this;
4041
4068
  var accessors = gltf.accessors;
4042
4069
  var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
4043
4070
  var engine = mesh.engine;
@@ -4062,61 +4089,68 @@ var GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
4062
4089
  }
4063
4090
  // BlendShapes
4064
4091
  if (targets) {
4065
- promises.push(GLTFMeshParser._createBlendShape(mesh, meshRestoreInfo, gltfMesh, accessors, targets, getBlendShapeData));
4092
+ promises.push(GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets, _this._getBlendShapeData));
4066
4093
  }
4067
4094
  return Promise.all(promises).then(function() {
4068
4095
  mesh.uploadData(!keepMeshData);
4069
- return Promise.resolve(mesh);
4096
+ return mesh;
4070
4097
  });
4071
4098
  });
4072
4099
  };
4100
+ GLTFMeshParser1._getBlendShapeData = function _getBlendShapeData(context, glTF, accessor) {
4101
+ return GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then(function(bufferInfo) {
4102
+ var buffer = bufferInfo.data;
4103
+ var _accessor_byteOffset;
4104
+ var byteOffset = bufferInfo.interleaved ? ((_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0) % bufferInfo.stride : 0;
4105
+ var count = accessor.count, normalized = accessor.normalized, componentType = accessor.componentType;
4106
+ var vertices = GLTFUtils.bufferToVector3Array(buffer, byteOffset, count, normalized, componentType);
4107
+ var restoreInfo = new BlendShapeDataRestoreInfo(bufferInfo.restoreInfo, byteOffset, count, normalized, componentType);
4108
+ return {
4109
+ vertices: vertices,
4110
+ restoreInfo: restoreInfo
4111
+ };
4112
+ });
4113
+ };
4073
4114
  /**
4074
4115
  * @internal
4075
- */ GLTFMeshParser1._createBlendShape = function _createBlendShape(mesh, meshRestoreInfo, glTFMesh, accessors, glTFTargets, getBlendShapeData) {
4076
- var _loop = function(i, n) {
4116
+ */ GLTFMeshParser1._createBlendShape = function _createBlendShape(context, mesh, meshRestoreInfo, glTFMesh, gltfPrimitive, glTFTargets, getBlendShapeData) {
4117
+ var _loop = function(i) {
4118
+ var blendShapeData = {};
4119
+ blendShapeCollection[i] = blendShapeData;
4077
4120
  var name = blendShapeNames ? blendShapeNames[i] : "blendShape" + i;
4121
+ var targets = gltfPrimitive.targets[i];
4122
+ var normalTarget = targets["NORMAL"];
4123
+ var tangentTarget = targets["TANGENT"];
4124
+ var hasNormal = normalTarget !== undefined;
4125
+ var hasTangent = tangentTarget !== undefined;
4078
4126
  var promise = Promise.all([
4079
- getBlendShapeData("POSITION", i),
4080
- getBlendShapeData("NORMAL", i),
4081
- getBlendShapeData("TANGENT", i)
4082
- ]).then(function(infos) {
4083
- var posBufferInfo = infos[0];
4084
- var norBufferInfo = infos[1];
4085
- var tanBufferInfo = infos[2];
4086
- var target = glTFTargets[i];
4087
- var posAccessor;
4088
- var norAccessor;
4089
- var tanAccessor;
4090
- var positions = null;
4091
- if (posBufferInfo) {
4092
- posAccessor = accessors[target["POSITION"]];
4093
- var _posAccessor_byteOffset;
4094
- positions = GLTFUtils.bufferToVector3Array(posBufferInfo.data, posBufferInfo.stride, (_posAccessor_byteOffset = posAccessor.byteOffset) != null ? _posAccessor_byteOffset : 0, posAccessor.count);
4095
- }
4096
- var normals = null;
4097
- if (norBufferInfo) {
4098
- norAccessor = accessors[target["NORMAL"]];
4099
- var _norAccessor_byteOffset;
4100
- normals = GLTFUtils.bufferToVector3Array(norBufferInfo.data, norBufferInfo.stride, (_norAccessor_byteOffset = norAccessor.byteOffset) != null ? _norAccessor_byteOffset : 0, norAccessor.count);
4101
- }
4102
- var tangents = null;
4103
- if (tanBufferInfo) {
4104
- tanAccessor = accessors[target["NORMAL"]];
4105
- var _tanAccessor_byteOffset;
4106
- tangents = GLTFUtils.bufferToVector3Array(tanBufferInfo.data, tanBufferInfo.stride, (_tanAccessor_byteOffset = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset : 0, tanAccessor.count);
4107
- }
4127
+ getBlendShapeData(context, glTF, accessors[targets["POSITION"]]),
4128
+ hasNormal ? getBlendShapeData(context, glTF, accessors[normalTarget]) : null,
4129
+ hasTangent ? getBlendShapeData(context, glTF, accessors[tangentTarget]) : null
4130
+ ]).then(function(vertices) {
4131
+ var _tangentData;
4132
+ var positionData = vertices[0], normalData = vertices[1], tangentData = vertices[2];
4108
4133
  var blendShape = new BlendShape(name);
4109
- blendShape.addFrame(1.0, positions, normals, tangents);
4110
- mesh.addBlendShape(blendShape);
4111
- var _posAccessor_byteOffset1, _norAccessor_byteOffset1, _tanAccessor_byteOffset1;
4112
- meshRestoreInfo.blendShapes.push(new BlendShapeRestoreInfo(blendShape, new BlendShapeDataRestoreInfo(posBufferInfo.restoreInfo, posBufferInfo.stride, (_posAccessor_byteOffset1 = posAccessor.byteOffset) != null ? _posAccessor_byteOffset1 : 0, posAccessor.count), norBufferInfo ? new BlendShapeDataRestoreInfo(norBufferInfo.restoreInfo, norBufferInfo.stride, (_norAccessor_byteOffset1 = norAccessor.byteOffset) != null ? _norAccessor_byteOffset1 : 0, norAccessor.count) : null, tanBufferInfo ? new BlendShapeDataRestoreInfo(tanBufferInfo.restoreInfo, tanBufferInfo.stride, (_tanAccessor_byteOffset1 = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset1 : 0, tanAccessor.count) : null));
4134
+ blendShape.addFrame(1.0, positionData.vertices, hasNormal ? normalData.vertices : null, hasTangent ? tangentData.vertices : null);
4135
+ blendShapeData.blendShape = blendShape;
4136
+ blendShapeData.restoreInfo = new BlendShapeRestoreInfo(blendShape, positionData.restoreInfo, hasNormal ? normalData.restoreInfo : null, hasTangent ? (_tangentData = tangentData) == null ? void 0 : _tangentData.restoreInfo : null);
4113
4137
  });
4114
4138
  promises.push(promise);
4115
4139
  };
4140
+ var glTF = context.glTF;
4141
+ var accessors = glTF.accessors;
4116
4142
  var blendShapeNames = glTFMesh.extras ? glTFMesh.extras.targetNames : null;
4117
4143
  var promises = new Array();
4118
- for(var i = 0, n = glTFTargets.length; i < n; i++)_loop(i);
4119
- return Promise.all(promises);
4144
+ var blendShapeCount = glTFTargets.length;
4145
+ var blendShapeCollection = new Array(blendShapeCount);
4146
+ for(var i = 0; i < blendShapeCount; i++)_loop(i);
4147
+ return Promise.all(promises).then(function() {
4148
+ for(var _iterator = _create_for_of_iterator_helper_loose(blendShapeCollection), _step; !(_step = _iterator()).done;){
4149
+ var blendShape = _step.value;
4150
+ mesh.addBlendShape(blendShape.blendShape);
4151
+ meshRestoreInfo.blendShapes.push(blendShape.restoreInfo);
4152
+ }
4153
+ });
4120
4154
  };
4121
4155
  return GLTFMeshParser1;
4122
4156
  }(GLTFParser), function() {
@@ -4497,6 +4531,25 @@ GLTFValidator = __decorate([
4497
4531
  registerGLTFParser(GLTFParserType.Validator)
4498
4532
  ], GLTFValidator);
4499
4533
 
4534
+ var GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
4535
+ _inherits(GLTFBufferViewParser, GLTFParser1);
4536
+ function GLTFBufferViewParser() {
4537
+ return GLTFParser1.apply(this, arguments);
4538
+ }
4539
+ var _proto = GLTFBufferViewParser.prototype;
4540
+ _proto.parse = function parse(context, index) {
4541
+ var bufferView = context.glTF.bufferViews[index];
4542
+ var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
4543
+ return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
4544
+ return new Uint8Array(buffer, byteOffset, byteLength);
4545
+ });
4546
+ };
4547
+ return GLTFBufferViewParser;
4548
+ }(GLTFParser);
4549
+ GLTFBufferViewParser = __decorate([
4550
+ registerGLTFParser(GLTFParserType.BufferView)
4551
+ ], GLTFBufferViewParser);
4552
+
4500
4553
  var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4501
4554
  _inherits(GLTFLoader, Loader1);
4502
4555
  function GLTFLoader() {
@@ -4533,23 +4586,48 @@ var HDRLoader = (_HDRLoader = /*#__PURE__*/ function(Loader1) {
4533
4586
  var _this = this;
4534
4587
  return new AssetPromise(function(resolve, reject) {
4535
4588
  var engine = resourceManager.engine;
4536
- _this.request(item.url, {
4589
+ var request = _this.request;
4590
+ _this.request(item.url, _extends({}, item, {
4537
4591
  type: "arraybuffer"
4538
- }).then(function(buffer) {
4539
- var uint8Array = new Uint8Array(buffer);
4540
- var _HDRLoader__parseHeader = HDRLoader._parseHeader(uint8Array), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
4541
- var pixels = HDRLoader._readPixels(uint8Array.subarray(dataPosition), width, height);
4542
- var cubeSize = height >> 1;
4543
- var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
4544
- var texture = new TextureCube(engine, cubeSize);
4545
- for(var faceIndex = 0; faceIndex < 6; faceIndex++){
4546
- texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
4547
- }
4548
- texture.generateMipmaps();
4592
+ })).then(function(buffer) {
4593
+ var texture = HDRLoader._setTextureByBuffer(engine, buffer);
4594
+ engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
4595
+ _inherits(_class, ContentRestorer);
4596
+ function _class() {
4597
+ return ContentRestorer.apply(this, arguments);
4598
+ }
4599
+ var _proto = _class.prototype;
4600
+ _proto.restoreContent = function restoreContent() {
4601
+ return new AssetPromise(function(resolve, reject) {
4602
+ request(item.url, _extends({}, item, {
4603
+ type: "arraybuffer"
4604
+ })).then(function(buffer) {
4605
+ HDRLoader._setTextureByBuffer(engine, buffer, texture);
4606
+ resolve(texture);
4607
+ }).catch(reject);
4608
+ });
4609
+ };
4610
+ return _class;
4611
+ }(ContentRestorer))(texture));
4549
4612
  resolve(texture);
4550
4613
  }).catch(reject);
4551
4614
  });
4552
4615
  };
4616
+ /**
4617
+ * @internal
4618
+ */ HDRLoader1._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
4619
+ var bufferArray = new Uint8Array(buffer);
4620
+ var _HDRLoader__parseHeader = HDRLoader._parseHeader(bufferArray), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
4621
+ var cubeSize = height >> 1;
4622
+ texture || (texture = new TextureCube(engine, cubeSize));
4623
+ var pixels = HDRLoader._readPixels(bufferArray.subarray(dataPosition), width, height);
4624
+ var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
4625
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
4626
+ texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
4627
+ }
4628
+ texture.generateMipmaps();
4629
+ return texture;
4630
+ };
4553
4631
  HDRLoader1._convertToCubemap = function _convertToCubemap(pixels, inputWidth, inputHeight, size) {
4554
4632
  if (!pixels) {
4555
4633
  throw "ConvertPanoramaToCubemap: input cannot be null";
@@ -5087,7 +5165,8 @@ var KTXLoader = /*#__PURE__*/ function(Loader1) {
5087
5165
  _proto.load = function load(item, resourceManager) {
5088
5166
  var _this = this;
5089
5167
  return new AssetPromise(function(resolve, reject) {
5090
- _this.request(item.url, _extends({}, item, {
5168
+ var request = _this.request;
5169
+ request(item.url, _extends({}, item, {
5091
5170
  type: "arraybuffer"
5092
5171
  })).then(function(bin) {
5093
5172
  var parsedData = parseSingleKTX(bin);
@@ -5098,6 +5177,32 @@ var KTXLoader = /*#__PURE__*/ function(Loader1) {
5098
5177
  var _mipmaps_miplevel = mipmaps[miplevel], width1 = _mipmaps_miplevel.width, height1 = _mipmaps_miplevel.height, data = _mipmaps_miplevel.data;
5099
5178
  texture.setPixelBuffer(data, miplevel, 0, 0, width1, height1);
5100
5179
  }
5180
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
5181
+ _inherits(_class, ContentRestorer);
5182
+ function _class() {
5183
+ return ContentRestorer.apply(this, arguments);
5184
+ }
5185
+ var _proto = _class.prototype;
5186
+ _proto.restoreContent = function restoreContent() {
5187
+ var _this = this;
5188
+ return new AssetPromise(function(resolve, reject) {
5189
+ request(item.url, _extends({}, item, {
5190
+ type: "arraybuffer"
5191
+ })).then(function(bin) {
5192
+ var mipmaps = parseSingleKTX(bin).mipmaps;
5193
+ var texture = _this.resource;
5194
+ for(var miplevel = 0; miplevel < mipmaps.length; miplevel++){
5195
+ var _mipmaps_miplevel = mipmaps[miplevel], width = _mipmaps_miplevel.width, height = _mipmaps_miplevel.height, data = _mipmaps_miplevel.data;
5196
+ texture.setPixelBuffer(data, miplevel, 0, 0, width, height);
5197
+ }
5198
+ resolve(texture);
5199
+ }).catch(function(e) {
5200
+ reject(e);
5201
+ });
5202
+ });
5203
+ };
5204
+ return _class;
5205
+ }(ContentRestorer))(texture));
5101
5206
  resolve(texture);
5102
5207
  }).catch(function(e) {
5103
5208
  reject(e);
@@ -5204,11 +5309,32 @@ var MeshLoader = /*#__PURE__*/ function(Loader1) {
5204
5309
  _proto.load = function load(item, resourceManager) {
5205
5310
  var _this = this;
5206
5311
  return new AssetPromise(function(resolve, reject) {
5207
- _this.request(item.url, _extends({}, item, {
5312
+ var request = _this.request;
5313
+ var engine = resourceManager.engine;
5314
+ request(item.url, _extends({}, item, {
5208
5315
  type: "arraybuffer"
5209
5316
  })).then(function(data) {
5210
- return decode(data, resourceManager.engine);
5317
+ return decode(data, engine);
5211
5318
  }).then(function(mesh) {
5319
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
5320
+ _inherits(_class, ContentRestorer);
5321
+ function _class() {
5322
+ return ContentRestorer.apply(this, arguments);
5323
+ }
5324
+ var _proto = _class.prototype;
5325
+ _proto.restoreContent = function restoreContent() {
5326
+ return new AssetPromise(function(resolve, reject) {
5327
+ request(item.url, _extends({}, item, {
5328
+ type: "arraybuffer"
5329
+ })).then(function(data) {
5330
+ return decode(data, engine, mesh);
5331
+ }).then(function(mesh) {
5332
+ resolve(mesh);
5333
+ }).catch(reject);
5334
+ });
5335
+ };
5336
+ return _class;
5337
+ }(ContentRestorer))(mesh));
5212
5338
  resolve(mesh);
5213
5339
  }).catch(reject);
5214
5340
  });
@@ -5744,14 +5870,17 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5744
5870
  var buffer = GLTFUtils.getBufferViewData(bufferViews[bufferViewIndex], buffers);
5745
5871
  return KHR_draco_mesh_compression._decoder.decode(buffer, taskConfig).then(function(decodedGeometry) {
5746
5872
  var mesh = new ModelMesh(engine, glTFMesh.name);
5747
- return _this._parseMeshFromGLTFPrimitiveDraco(mesh, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
5873
+ var meshRestoreInfo = new ModelMeshRestoreInfo();
5874
+ meshRestoreInfo.mesh = mesh;
5875
+ context.contentRestorer.meshes.push(meshRestoreInfo);
5876
+ return _this._parseMeshFromGLTFPrimitiveDraco(context, mesh, meshRestoreInfo, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
5748
5877
  for(var j = 0; j < decodedGeometry.attributes.length; j++){
5749
5878
  if (decodedGeometry.attributes[j].name === attributeSemantic) {
5750
5879
  return decodedGeometry.attributes[j].array;
5751
5880
  }
5752
5881
  }
5753
5882
  return null;
5754
- }, function(attributeSemantic, shapeIndex) {
5883
+ }, function() {
5755
5884
  throw "BlendShape animation is not supported when using draco.";
5756
5885
  }, function() {
5757
5886
  return decodedGeometry.index.array;
@@ -5764,7 +5893,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5764
5893
  KHR_draco_mesh_compression._decoder = new DRACODecoder();
5765
5894
  }
5766
5895
  };
5767
- _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(mesh, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
5896
+ _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
5768
5897
  var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
5769
5898
  var vertexCount;
5770
5899
  var accessors = gltf.accessors;
@@ -5860,7 +5989,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5860
5989
  mesh.addSubMesh(0, vertexCount, mode);
5861
5990
  }
5862
5991
  // BlendShapes
5863
- targets && GLTFMeshParser._createBlendShape(mesh, null, gltfMesh, accessors, targets, getBlendShapeData);
5992
+ targets && GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets, getBlendShapeData);
5864
5993
  mesh.uploadData(!keepMeshData);
5865
5994
  return Promise.resolve(mesh);
5866
5995
  };
@@ -6200,5 +6329,5 @@ GALACEAN_animation_event = __decorate([
6200
6329
  registerGLTFExtension("GALACEAN_animation_event", GLTFExtensionMode.AdditiveParse)
6201
6330
  ], GALACEAN_animation_event);
6202
6331
 
6203
- export { AnimationClipDecoder, ComponentMap, EditorTextureLoader, GLTFAnimationParser, GLTFBufferParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, InterpolableValueType, KTX2Loader, KTX2TargetFormat, KTX2Transcoder, MeshDecoder, MeshLoader$1 as MeshLoader, PrefabParser, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
6332
+ export { AnimationClipDecoder, BufferInfo, ComponentMap, EditorTextureLoader, GLTFAnimationParser, GLTFBufferParser, GLTFBufferViewParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, InterpolableValueType, KTX2Loader, KTX2TargetFormat, KTX2Transcoder, MeshDecoder, MeshLoader$1 as MeshLoader, PrefabParser, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
6204
6333
  //# sourceMappingURL=module.js.map