@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
@@ -285,11 +285,201 @@ var FileHeader = /*#__PURE__*/ function() {
285
285
  return FileHeader;
286
286
  }();
287
287
 
288
+ var ComponentMap = {
289
+ Transform: miniprogram.Transform,
290
+ Animator: miniprogram.Animator,
291
+ DirectLight: miniprogram.DirectLight,
292
+ Camera: miniprogram.Camera,
293
+ MeshRenderer: miniprogram.MeshRenderer,
294
+ ParticleRenderer: miniprogram.ParticleRenderer,
295
+ PointLight: miniprogram.PointLight,
296
+ SpotLight: miniprogram.SpotLight,
297
+ Script: miniprogram.Script,
298
+ SpriteMask: miniprogram.SpriteMask,
299
+ SpriteRenderer: miniprogram.SpriteRenderer,
300
+ TextRenderer: miniprogram.TextRenderer
301
+ };
302
+
303
+ exports.InterpolableValueType = void 0;
304
+ (function(InterpolableValueType) {
305
+ InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
306
+ InterpolableValueType[InterpolableValueType["FloatArray"] = 1] = "FloatArray";
307
+ InterpolableValueType[InterpolableValueType["Vector2"] = 2] = "Vector2";
308
+ InterpolableValueType[InterpolableValueType["Vector3"] = 3] = "Vector3";
309
+ InterpolableValueType[InterpolableValueType["Vector4"] = 4] = "Vector4";
310
+ InterpolableValueType[InterpolableValueType["Quaternion"] = 5] = "Quaternion";
311
+ InterpolableValueType[InterpolableValueType["Color"] = 6] = "Color";
312
+ InterpolableValueType[InterpolableValueType["Array"] = 7] = "Array";
313
+ InterpolableValueType[InterpolableValueType["Boolean"] = 8] = "Boolean";
314
+ InterpolableValueType[InterpolableValueType["Rect"] = 9] = "Rect";
315
+ InterpolableValueType[InterpolableValueType["ReferResource"] = 10] = "ReferResource";
316
+ })(exports.InterpolableValueType || (exports.InterpolableValueType = {}));
317
+ exports.AnimationClipDecoder = /*#__PURE__*/ function() {
318
+ function AnimationClipDecoder() {}
319
+ AnimationClipDecoder.decode = function decode(engine, bufferReader) {
320
+ return new Promise(function(resolve) {
321
+ var name = bufferReader.nextStr();
322
+ var clip = new miniprogram.AnimationClip(name);
323
+ var eventsLen = bufferReader.nextUint16();
324
+ for(var i = 0; i < eventsLen; ++i){
325
+ var event = new miniprogram.AnimationEvent();
326
+ event.time = bufferReader.nextFloat32();
327
+ event.functionName = bufferReader.nextStr();
328
+ event.parameter = JSON.parse(bufferReader.nextStr()).val;
329
+ clip.addEvent(event);
330
+ }
331
+ var curveBindingsLen = bufferReader.nextUint16();
332
+ for(var i1 = 0; i1 < curveBindingsLen; ++i1){
333
+ var relativePath = bufferReader.nextStr();
334
+ var componentStr = bufferReader.nextStr();
335
+ var componentType = ComponentMap[componentStr];
336
+ var property = bufferReader.nextStr();
337
+ var curve = void 0;
338
+ var interpolation = bufferReader.nextUint8();
339
+ var keysLen = bufferReader.nextUint16();
340
+ var curveType = bufferReader.nextStr();
341
+ switch(curveType){
342
+ case "AnimationFloatCurve":
343
+ {
344
+ curve = new miniprogram.AnimationFloatCurve();
345
+ curve.interpolation = interpolation;
346
+ for(var j = 0; j < keysLen; ++j){
347
+ var keyframe = new miniprogram.Keyframe();
348
+ keyframe.time = bufferReader.nextFloat32();
349
+ keyframe.value = bufferReader.nextFloat32();
350
+ keyframe.inTangent = bufferReader.nextFloat32();
351
+ keyframe.outTangent = bufferReader.nextFloat32();
352
+ curve.addKey(keyframe);
353
+ }
354
+ break;
355
+ }
356
+ case "AnimationArrayCurve":
357
+ {
358
+ curve = new miniprogram.AnimationArrayCurve();
359
+ curve.interpolation = interpolation;
360
+ for(var j1 = 0; j1 < keysLen; ++j1){
361
+ var keyframe1 = new miniprogram.Keyframe();
362
+ keyframe1.time = bufferReader.nextFloat32();
363
+ var len = bufferReader.nextUint16();
364
+ keyframe1.value = Array.from(bufferReader.nextFloat32Array(len));
365
+ keyframe1.inTangent = Array.from(bufferReader.nextFloat32Array(len));
366
+ keyframe1.outTangent = Array.from(bufferReader.nextFloat32Array(len));
367
+ curve.addKey(keyframe1);
368
+ }
369
+ break;
370
+ }
371
+ case "AnimationFloatArrayCurve":
372
+ {
373
+ curve = new miniprogram.AnimationFloatArrayCurve();
374
+ curve.interpolation = interpolation;
375
+ for(var j2 = 0; j2 < keysLen; ++j2){
376
+ var keyframe2 = new miniprogram.Keyframe();
377
+ keyframe2.time = bufferReader.nextFloat32();
378
+ var len1 = bufferReader.nextUint16();
379
+ keyframe2.value = bufferReader.nextFloat32Array(len1);
380
+ keyframe2.inTangent = Array.from(bufferReader.nextFloat32Array(len1));
381
+ keyframe2.outTangent = Array.from(bufferReader.nextFloat32Array(len1));
382
+ curve.addKey(keyframe2);
383
+ }
384
+ break;
385
+ }
386
+ case "AnimationVector2Curve":
387
+ {
388
+ curve = new miniprogram.AnimationVector2Curve();
389
+ curve.interpolation = interpolation;
390
+ for(var j3 = 0; j3 < keysLen; ++j3){
391
+ var keyframe3 = new miniprogram.Keyframe();
392
+ keyframe3.time = bufferReader.nextFloat32();
393
+ keyframe3.value = new miniprogram$1.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
394
+ keyframe3.inTangent = new miniprogram$1.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
395
+ keyframe3.outTangent = new miniprogram$1.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
396
+ curve.addKey(keyframe3);
397
+ }
398
+ break;
399
+ }
400
+ case "AnimationVector3Curve":
401
+ {
402
+ curve = new miniprogram.AnimationVector3Curve();
403
+ curve.interpolation = interpolation;
404
+ for(var j4 = 0; j4 < keysLen; ++j4){
405
+ var keyframe4 = new miniprogram.Keyframe();
406
+ keyframe4.time = bufferReader.nextFloat32();
407
+ keyframe4.value = new miniprogram$1.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
408
+ keyframe4.inTangent = new miniprogram$1.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
409
+ keyframe4.outTangent = new miniprogram$1.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
410
+ curve.addKey(keyframe4);
411
+ }
412
+ break;
413
+ }
414
+ case "AnimationVector4Curve":
415
+ {
416
+ curve = new miniprogram.AnimationVector4Curve();
417
+ curve.interpolation = interpolation;
418
+ var keyframe5 = new miniprogram.Keyframe();
419
+ keyframe5.time = bufferReader.nextFloat32();
420
+ keyframe5.value = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
421
+ keyframe5.inTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
422
+ keyframe5.outTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
423
+ curve.addKey(keyframe5);
424
+ break;
425
+ }
426
+ case "AnimationColorCurve":
427
+ {
428
+ curve = new miniprogram.AnimationColorCurve();
429
+ curve.interpolation = interpolation;
430
+ for(var j5 = 0; j5 < keysLen; ++j5){
431
+ var keyframe6 = new miniprogram.Keyframe();
432
+ keyframe6.time = bufferReader.nextFloat32();
433
+ keyframe6.value = new miniprogram$1.Color(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
434
+ keyframe6.inTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
435
+ keyframe6.outTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
436
+ curve.addKey(keyframe6);
437
+ }
438
+ break;
439
+ }
440
+ case "AnimationQuaternionCurve":
441
+ {
442
+ curve = new miniprogram.AnimationQuaternionCurve();
443
+ curve.interpolation = interpolation;
444
+ for(var j6 = 0; j6 < keysLen; ++j6){
445
+ var keyframe7 = new miniprogram.Keyframe();
446
+ keyframe7.time = bufferReader.nextFloat32();
447
+ keyframe7.value = new miniprogram$1.Quaternion(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
448
+ keyframe7.inTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
449
+ keyframe7.outTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
450
+ curve.addKey(keyframe7);
451
+ }
452
+ break;
453
+ }
454
+ case "AnimationRefCurve":
455
+ {
456
+ curve = new miniprogram.AnimationRefCurve();
457
+ curve.interpolation = interpolation;
458
+ for(var j7 = 0; j7 < keysLen; ++j7){
459
+ var keyframe8 = new miniprogram.Keyframe();
460
+ keyframe8.time = bufferReader.nextFloat32();
461
+ keyframe8.value = JSON.parse(bufferReader.nextStr());
462
+ curve.addKey(keyframe8);
463
+ }
464
+ break;
465
+ }
466
+ }
467
+ clip.addCurveBinding(relativePath, componentType, property, curve);
468
+ }
469
+ resolve(clip);
470
+ });
471
+ };
472
+ return AnimationClipDecoder;
473
+ }();
474
+ exports.AnimationClipDecoder = __decorate([
475
+ decoder("AnimationClip")
476
+ ], exports.AnimationClipDecoder);
477
+
288
478
  exports.MeshDecoder = /*#__PURE__*/ function() {
289
479
  function MeshDecoder() {}
290
- MeshDecoder.decode = function decode(engine, bufferReader) {
480
+ MeshDecoder.decode = function decode(engine, bufferReader, restoredMesh) {
291
481
  return new Promise(function(resolve) {
292
- var modelMesh = new miniprogram.ModelMesh(engine);
482
+ var modelMesh = restoredMesh || new miniprogram.ModelMesh(engine);
293
483
  var jsonDataString = bufferReader.nextStr();
294
484
  var encodedMeshData = JSON.parse(jsonDataString);
295
485
  // @ts-ignore Vector3 is not compatible with {x: number, y: number, z: number}.
@@ -419,80 +609,22 @@ function float32ArrayToVector2(float32Array, vertexCount) {
419
609
  return array;
420
610
  }
421
611
 
422
- exports.Texture2DDecoder = /*#__PURE__*/ function() {
423
- function Texture2DDecoder() {}
424
- Texture2DDecoder.decode = function decode(engine, bufferReader) {
425
- return new Promise(function(resolve, reject) {
426
- var objectId = bufferReader.nextStr();
427
- var mipmap = !!bufferReader.nextUint8();
428
- var filterMode = bufferReader.nextUint8();
429
- var anisoLevel = bufferReader.nextUint8();
430
- var wrapModeU = bufferReader.nextUint8();
431
- var wrapModeV = bufferReader.nextUint8();
432
- var format = bufferReader.nextUint8();
433
- var width = bufferReader.nextUint16();
434
- var height = bufferReader.nextUint16();
435
- var isPixelBuffer = bufferReader.nextUint8();
436
- var mipCount = bufferReader.nextUint8();
437
- var imagesData = bufferReader.nextImagesData(mipCount);
438
- var texture2D = new miniprogram.Texture2D(engine, width, height, format, mipmap);
439
- texture2D.filterMode = filterMode;
440
- texture2D.anisoLevel = anisoLevel;
441
- texture2D.wrapModeU = wrapModeU;
442
- texture2D.wrapModeV = wrapModeV;
443
- if (isPixelBuffer) {
444
- var pixelBuffer = imagesData[0];
445
- texture2D.setPixelBuffer(pixelBuffer);
446
- if (mipmap) {
447
- texture2D.generateMipmaps();
448
- for(var i = 1; i < mipCount; i++){
449
- var pixelBuffer1 = imagesData[i];
450
- texture2D.setPixelBuffer(pixelBuffer1, i);
451
- }
452
- }
453
- // @ts-ignore
454
- engine.resourceManager._objectPool[objectId] = texture2D;
455
- resolve(texture2D);
456
- } else {
457
- var blob = new engineMiniprogramAdapter.window.Blob([
458
- imagesData[0]
459
- ]);
460
- var img = new engineMiniprogramAdapter.Image();
461
- img.onload = function() {
462
- texture2D.setImageSource(img);
463
- var completedCount = 0;
464
- var onComplete = function() {
465
- completedCount++;
466
- if (completedCount >= mipCount) {
467
- resolve(texture2D);
468
- }
469
- };
470
- onComplete();
471
- if (mipmap) {
472
- var _loop = function(i) {
473
- var blob = new engineMiniprogramAdapter.window.Blob([
474
- imagesData[i]
475
- ]);
476
- var img = new engineMiniprogramAdapter.Image();
477
- img.onload = function() {
478
- texture2D.setImageSource(img, i);
479
- onComplete();
480
- };
481
- img.src = engineMiniprogramAdapter.URL.createObjectURL(blob);
482
- };
483
- texture2D.generateMipmaps();
484
- for(var i = 1; i < mipCount; i++)_loop(i);
485
- }
486
- };
487
- img.src = engineMiniprogramAdapter.URL.createObjectURL(blob);
612
+ var PrefabParser = /*#__PURE__*/ function() {
613
+ function PrefabParser() {}
614
+ PrefabParser.parseChildren = function parseChildren(entitiesConfig, entities, parentId) {
615
+ var children = entitiesConfig.get(parentId).children;
616
+ if (children && children.length > 0) {
617
+ var parent = entities.get(parentId);
618
+ for(var i = 0; i < children.length; i++){
619
+ var childId = children[i];
620
+ var entity = entities.get(childId);
621
+ parent.addChild(entity);
622
+ this.parseChildren(entitiesConfig, entities, childId);
488
623
  }
489
- });
624
+ }
490
625
  };
491
- return Texture2DDecoder;
626
+ return PrefabParser;
492
627
  }();
493
- exports.Texture2DDecoder = __decorate([
494
- decoder("Texture2D")
495
- ], exports.Texture2DDecoder);
496
628
 
497
629
  function _is_native_reflect_construct() {
498
630
  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
@@ -674,218 +806,148 @@ var ReflectionParser = /*#__PURE__*/ function() {
674
806
  ReflectionParser.customParseComponentHandles = new Map();
675
807
  })();
676
808
 
677
- var PrefabParser = /*#__PURE__*/ function() {
678
- function PrefabParser() {}
679
- PrefabParser.parseChildren = function parseChildren(entitiesConfig, entities, parentId) {
680
- var children = entitiesConfig.get(parentId).children;
681
- if (children && children.length > 0) {
682
- var parent = entities.get(parentId);
683
- for(var i = 0; i < children.length; i++){
684
- var childId = children[i];
685
- var entity = entities.get(childId);
686
- parent.addChild(entity);
687
- this.parseChildren(entitiesConfig, entities, childId);
688
- }
689
- }
690
- };
691
- return PrefabParser;
692
- }();
693
-
694
- var ComponentMap = {
695
- Transform: miniprogram.Transform,
696
- Animator: miniprogram.Animator,
697
- DirectLight: miniprogram.DirectLight,
698
- Camera: miniprogram.Camera,
699
- MeshRenderer: miniprogram.MeshRenderer,
700
- ParticleRenderer: miniprogram.ParticleRenderer,
701
- PointLight: miniprogram.PointLight,
702
- SpotLight: miniprogram.SpotLight,
703
- Script: miniprogram.Script,
704
- SpriteMask: miniprogram.SpriteMask,
705
- SpriteRenderer: miniprogram.SpriteRenderer,
706
- TextRenderer: miniprogram.TextRenderer
707
- };
708
-
709
- exports.InterpolableValueType = void 0;
710
- (function(InterpolableValueType) {
711
- InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
712
- InterpolableValueType[InterpolableValueType["FloatArray"] = 1] = "FloatArray";
713
- InterpolableValueType[InterpolableValueType["Vector2"] = 2] = "Vector2";
714
- InterpolableValueType[InterpolableValueType["Vector3"] = 3] = "Vector3";
715
- InterpolableValueType[InterpolableValueType["Vector4"] = 4] = "Vector4";
716
- InterpolableValueType[InterpolableValueType["Quaternion"] = 5] = "Quaternion";
717
- InterpolableValueType[InterpolableValueType["Color"] = 6] = "Color";
718
- InterpolableValueType[InterpolableValueType["Array"] = 7] = "Array";
719
- InterpolableValueType[InterpolableValueType["Boolean"] = 8] = "Boolean";
720
- InterpolableValueType[InterpolableValueType["Rect"] = 9] = "Rect";
721
- InterpolableValueType[InterpolableValueType["ReferResource"] = 10] = "ReferResource";
722
- })(exports.InterpolableValueType || (exports.InterpolableValueType = {}));
723
- exports.AnimationClipDecoder = /*#__PURE__*/ function() {
724
- function AnimationClipDecoder() {}
725
- AnimationClipDecoder.decode = function decode(engine, bufferReader) {
726
- return new Promise(function(resolve) {
727
- var name = bufferReader.nextStr();
728
- var clip = new miniprogram.AnimationClip(name);
729
- var eventsLen = bufferReader.nextUint16();
730
- for(var i = 0; i < eventsLen; ++i){
731
- var event = new miniprogram.AnimationEvent();
732
- event.time = bufferReader.nextFloat32();
733
- event.functionName = bufferReader.nextStr();
734
- event.parameter = JSON.parse(bufferReader.nextStr()).val;
735
- clip.addEvent(event);
736
- }
737
- var curveBindingsLen = bufferReader.nextUint16();
738
- for(var i1 = 0; i1 < curveBindingsLen; ++i1){
739
- var relativePath = bufferReader.nextStr();
740
- var componentStr = bufferReader.nextStr();
741
- var componentType = ComponentMap[componentStr];
742
- var property = bufferReader.nextStr();
743
- var curve = void 0;
744
- var interpolation = bufferReader.nextUint8();
745
- var keysLen = bufferReader.nextUint16();
746
- var curveType = bufferReader.nextStr();
747
- switch(curveType){
748
- case "AnimationFloatCurve":
749
- {
750
- curve = new miniprogram.AnimationFloatCurve();
751
- curve.interpolation = interpolation;
752
- for(var j = 0; j < keysLen; ++j){
753
- var keyframe = new miniprogram.Keyframe();
754
- keyframe.time = bufferReader.nextFloat32();
755
- keyframe.value = bufferReader.nextFloat32();
756
- keyframe.inTangent = bufferReader.nextFloat32();
757
- keyframe.outTangent = bufferReader.nextFloat32();
758
- curve.addKey(keyframe);
759
- }
760
- break;
761
- }
762
- case "AnimationArrayCurve":
763
- {
764
- curve = new miniprogram.AnimationArrayCurve();
765
- curve.interpolation = interpolation;
766
- for(var j1 = 0; j1 < keysLen; ++j1){
767
- var keyframe1 = new miniprogram.Keyframe();
768
- keyframe1.time = bufferReader.nextFloat32();
769
- var len = bufferReader.nextUint16();
770
- keyframe1.value = Array.from(bufferReader.nextFloat32Array(len));
771
- keyframe1.inTangent = Array.from(bufferReader.nextFloat32Array(len));
772
- keyframe1.outTangent = Array.from(bufferReader.nextFloat32Array(len));
773
- curve.addKey(keyframe1);
774
- }
775
- break;
776
- }
777
- case "AnimationFloatArrayCurve":
778
- {
779
- curve = new miniprogram.AnimationFloatArrayCurve();
780
- curve.interpolation = interpolation;
781
- for(var j2 = 0; j2 < keysLen; ++j2){
782
- var keyframe2 = new miniprogram.Keyframe();
783
- keyframe2.time = bufferReader.nextFloat32();
784
- var len1 = bufferReader.nextUint16();
785
- keyframe2.value = bufferReader.nextFloat32Array(len1);
786
- keyframe2.inTangent = Array.from(bufferReader.nextFloat32Array(len1));
787
- keyframe2.outTangent = Array.from(bufferReader.nextFloat32Array(len1));
788
- curve.addKey(keyframe2);
789
- }
790
- break;
791
- }
792
- case "AnimationVector2Curve":
793
- {
794
- curve = new miniprogram.AnimationVector2Curve();
795
- curve.interpolation = interpolation;
796
- for(var j3 = 0; j3 < keysLen; ++j3){
797
- var keyframe3 = new miniprogram.Keyframe();
798
- keyframe3.time = bufferReader.nextFloat32();
799
- keyframe3.value = new miniprogram$1.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
800
- keyframe3.inTangent = new miniprogram$1.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
801
- keyframe3.outTangent = new miniprogram$1.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
802
- curve.addKey(keyframe3);
803
- }
804
- break;
805
- }
806
- case "AnimationVector3Curve":
807
- {
808
- curve = new miniprogram.AnimationVector3Curve();
809
- curve.interpolation = interpolation;
810
- for(var j4 = 0; j4 < keysLen; ++j4){
811
- var keyframe4 = new miniprogram.Keyframe();
812
- keyframe4.time = bufferReader.nextFloat32();
813
- keyframe4.value = new miniprogram$1.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
814
- keyframe4.inTangent = new miniprogram$1.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
815
- keyframe4.outTangent = new miniprogram$1.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
816
- curve.addKey(keyframe4);
817
- }
818
- break;
819
- }
820
- case "AnimationVector4Curve":
821
- {
822
- curve = new miniprogram.AnimationVector4Curve();
823
- curve.interpolation = interpolation;
824
- var keyframe5 = new miniprogram.Keyframe();
825
- keyframe5.time = bufferReader.nextFloat32();
826
- keyframe5.value = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
827
- keyframe5.inTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
828
- keyframe5.outTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
829
- curve.addKey(keyframe5);
830
- break;
831
- }
832
- case "AnimationColorCurve":
833
- {
834
- curve = new miniprogram.AnimationColorCurve();
835
- curve.interpolation = interpolation;
836
- for(var j5 = 0; j5 < keysLen; ++j5){
837
- var keyframe6 = new miniprogram.Keyframe();
838
- keyframe6.time = bufferReader.nextFloat32();
839
- keyframe6.value = new miniprogram$1.Color(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
840
- keyframe6.inTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
841
- keyframe6.outTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
842
- curve.addKey(keyframe6);
843
- }
844
- break;
845
- }
846
- case "AnimationQuaternionCurve":
847
- {
848
- curve = new miniprogram.AnimationQuaternionCurve();
849
- curve.interpolation = interpolation;
850
- for(var j6 = 0; j6 < keysLen; ++j6){
851
- var keyframe7 = new miniprogram.Keyframe();
852
- keyframe7.time = bufferReader.nextFloat32();
853
- keyframe7.value = new miniprogram$1.Quaternion(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
854
- keyframe7.inTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
855
- keyframe7.outTangent = new miniprogram$1.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
856
- curve.addKey(keyframe7);
857
- }
858
- break;
859
- }
860
- case "AnimationRefCurve":
861
- {
862
- curve = new miniprogram.AnimationRefCurve();
863
- curve.interpolation = interpolation;
864
- for(var j7 = 0; j7 < keysLen; ++j7){
865
- var keyframe8 = new miniprogram.Keyframe();
866
- keyframe8.time = bufferReader.nextFloat32();
867
- keyframe8.value = JSON.parse(bufferReader.nextStr());
868
- curve.addKey(keyframe8);
869
- }
870
- break;
871
- }
809
+ exports.Texture2DDecoder = /*#__PURE__*/ function() {
810
+ function Texture2DDecoder() {}
811
+ Texture2DDecoder.decode = function decode(engine, bufferReader, restoredTexture) {
812
+ return new Promise(function(resolve, reject) {
813
+ var objectId = bufferReader.nextStr();
814
+ var mipmap = !!bufferReader.nextUint8();
815
+ var filterMode = bufferReader.nextUint8();
816
+ var anisoLevel = bufferReader.nextUint8();
817
+ var wrapModeU = bufferReader.nextUint8();
818
+ var wrapModeV = bufferReader.nextUint8();
819
+ var format = bufferReader.nextUint8();
820
+ var width = bufferReader.nextUint16();
821
+ var height = bufferReader.nextUint16();
822
+ var isPixelBuffer = bufferReader.nextUint8();
823
+ var mipCount = bufferReader.nextUint8();
824
+ var imagesData = bufferReader.nextImagesData(mipCount);
825
+ var texture2D = restoredTexture || new miniprogram.Texture2D(engine, width, height, format, mipmap);
826
+ texture2D.filterMode = filterMode;
827
+ texture2D.anisoLevel = anisoLevel;
828
+ texture2D.wrapModeU = wrapModeU;
829
+ texture2D.wrapModeV = wrapModeV;
830
+ if (isPixelBuffer) {
831
+ var pixelBuffer = imagesData[0];
832
+ texture2D.setPixelBuffer(pixelBuffer);
833
+ if (mipmap) {
834
+ texture2D.generateMipmaps();
835
+ for(var i = 1; i < mipCount; i++){
836
+ var pixelBuffer1 = imagesData[i];
837
+ texture2D.setPixelBuffer(pixelBuffer1, i);
838
+ }
872
839
  }
873
- clip.addCurveBinding(relativePath, componentType, property, curve);
840
+ // @ts-ignore
841
+ engine.resourceManager._objectPool[objectId] = texture2D;
842
+ resolve(texture2D);
843
+ } else {
844
+ var blob = new engineMiniprogramAdapter.window.Blob([
845
+ imagesData[0]
846
+ ]);
847
+ var img = new engineMiniprogramAdapter.Image();
848
+ img.onload = function() {
849
+ texture2D.setImageSource(img);
850
+ var completedCount = 0;
851
+ var onComplete = function() {
852
+ completedCount++;
853
+ if (completedCount >= mipCount) {
854
+ resolve(texture2D);
855
+ }
856
+ };
857
+ onComplete();
858
+ if (mipmap) {
859
+ var _loop = function(i) {
860
+ var blob = new engineMiniprogramAdapter.window.Blob([
861
+ imagesData[i]
862
+ ]);
863
+ var img = new engineMiniprogramAdapter.Image();
864
+ img.onload = function() {
865
+ texture2D.setImageSource(img, i);
866
+ onComplete();
867
+ };
868
+ img.src = engineMiniprogramAdapter.URL.createObjectURL(blob);
869
+ };
870
+ texture2D.generateMipmaps();
871
+ for(var i = 1; i < mipCount; i++)_loop(i);
872
+ }
873
+ };
874
+ img.src = engineMiniprogramAdapter.URL.createObjectURL(blob);
874
875
  }
875
- resolve(clip);
876
876
  });
877
877
  };
878
- return AnimationClipDecoder;
878
+ return Texture2DDecoder;
879
879
  }();
880
- exports.AnimationClipDecoder = __decorate([
881
- decoder("AnimationClip")
882
- ], exports.AnimationClipDecoder);
880
+ exports.Texture2DDecoder = __decorate([
881
+ decoder("Texture2D")
882
+ ], exports.Texture2DDecoder);
883
883
 
884
- exports.SpecularMode = void 0;
885
- (function(SpecularMode) {
886
- SpecularMode["Sky"] = "Sky";
887
- SpecularMode["Custom"] = "Custom";
888
- })(exports.SpecularMode || (exports.SpecularMode = {}));
884
+ exports.EditorTextureLoader = /*#__PURE__*/ function(Loader1) {
885
+ _inherits(EditorTextureLoader, Loader1);
886
+ function EditorTextureLoader() {
887
+ return Loader1.apply(this, arguments);
888
+ }
889
+ var _proto = EditorTextureLoader.prototype;
890
+ _proto.load = function load(item, resourceManager) {
891
+ var _this = this;
892
+ return new miniprogram.AssetPromise(function(resolve, reject) {
893
+ var request = _this.request;
894
+ request(item.url, _extends({}, item, {
895
+ type: "arraybuffer"
896
+ })).then(function(data) {
897
+ decode(data, resourceManager.engine).then(function(texture) {
898
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
899
+ _inherits(_class, ContentRestorer);
900
+ function _class() {
901
+ return ContentRestorer.apply(this, arguments);
902
+ }
903
+ var _proto = _class.prototype;
904
+ _proto.restoreContent = function restoreContent() {
905
+ return request(item.url, _extends({}, item, {
906
+ type: "arraybuffer"
907
+ })).then(function(data) {
908
+ return decode(data, resourceManager.engine, texture);
909
+ });
910
+ };
911
+ return _class;
912
+ }(miniprogram.ContentRestorer))(texture));
913
+ resolve(texture);
914
+ });
915
+ }).catch(reject);
916
+ });
917
+ };
918
+ return EditorTextureLoader;
919
+ }(miniprogram.Loader);
920
+ exports.EditorTextureLoader = __decorate([
921
+ miniprogram.resourceLoader("EditorTexture2D", [
922
+ "prefab"
923
+ ], true)
924
+ ], exports.EditorTextureLoader);
925
+
926
+ exports.MeshLoader = /*#__PURE__*/ function(Loader1) {
927
+ _inherits(MeshLoader, Loader1);
928
+ function MeshLoader() {
929
+ return Loader1.apply(this, arguments);
930
+ }
931
+ var _proto = MeshLoader.prototype;
932
+ _proto.load = function load(item, resourceManager) {
933
+ var _this = this;
934
+ return new miniprogram.AssetPromise(function(resolve, reject) {
935
+ _this.request(item.url, {
936
+ type: "arraybuffer"
937
+ }).then(function(data) {
938
+ decode(data, resourceManager.engine).then(function(mesh) {
939
+ resolve(mesh);
940
+ });
941
+ }).catch(reject);
942
+ });
943
+ };
944
+ return MeshLoader;
945
+ }(miniprogram.Loader);
946
+ exports.MeshLoader = __decorate([
947
+ miniprogram.resourceLoader("Mesh", [
948
+ "prefab"
949
+ ], true)
950
+ ], exports.MeshLoader);
889
951
 
890
952
  function _array_like_to_array(arr, len) {
891
953
  if (len == null || len > arr.length) len = arr.length;
@@ -1042,57 +1104,11 @@ var SceneParserContext = /*#__PURE__*/ function() {
1042
1104
  return SceneParser;
1043
1105
  }();
1044
1106
 
1045
- exports.MeshLoader = /*#__PURE__*/ function(Loader1) {
1046
- _inherits(MeshLoader, Loader1);
1047
- function MeshLoader() {
1048
- return Loader1.apply(this, arguments);
1049
- }
1050
- var _proto = MeshLoader.prototype;
1051
- _proto.load = function load(item, resourceManager) {
1052
- var _this = this;
1053
- return new miniprogram.AssetPromise(function(resolve, reject) {
1054
- _this.request(item.url, {
1055
- type: "arraybuffer"
1056
- }).then(function(data) {
1057
- decode(data, resourceManager.engine).then(function(mesh) {
1058
- resolve(mesh);
1059
- });
1060
- }).catch(reject);
1061
- });
1062
- };
1063
- return MeshLoader;
1064
- }(miniprogram.Loader);
1065
- exports.MeshLoader = __decorate([
1066
- miniprogram.resourceLoader("Mesh", [
1067
- "prefab"
1068
- ], true)
1069
- ], exports.MeshLoader);
1070
-
1071
- exports.EditorTextureLoader = /*#__PURE__*/ function(Loader1) {
1072
- _inherits(EditorTextureLoader, Loader1);
1073
- function EditorTextureLoader() {
1074
- return Loader1.apply(this, arguments);
1075
- }
1076
- var _proto = EditorTextureLoader.prototype;
1077
- _proto.load = function load(item, resourceManager) {
1078
- var _this = this;
1079
- return new miniprogram.AssetPromise(function(resolve, reject) {
1080
- _this.request(item.url, {
1081
- type: "arraybuffer"
1082
- }).then(function(data) {
1083
- decode(data, resourceManager.engine).then(function(texture) {
1084
- resolve(texture);
1085
- });
1086
- }).catch(reject);
1087
- });
1088
- };
1089
- return EditorTextureLoader;
1090
- }(miniprogram.Loader);
1091
- exports.EditorTextureLoader = __decorate([
1092
- miniprogram.resourceLoader("EditorTexture2D", [
1093
- "prefab"
1094
- ], true)
1095
- ], exports.EditorTextureLoader);
1107
+ exports.SpecularMode = void 0;
1108
+ (function(SpecularMode) {
1109
+ SpecularMode["Sky"] = "Sky";
1110
+ SpecularMode["Custom"] = "Custom";
1111
+ })(exports.SpecularMode || (exports.SpecularMode = {}));
1096
1112
 
1097
1113
  /**
1098
1114
  * Decode engine binary resource.
@@ -1100,9 +1116,13 @@ exports.EditorTextureLoader = __decorate([
1100
1116
  * @param engine - engine
1101
1117
  * @returns
1102
1118
  */ function decode(arrayBuffer, engine) {
1119
+ for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
1120
+ args[_key - 2] = arguments[_key];
1121
+ }
1122
+ var _decoderMap_header_type;
1103
1123
  var header = FileHeader.decode(arrayBuffer);
1104
1124
  var bufferReader = new BufferReader(new Uint8Array(arrayBuffer), header.headerLength, header.dataLength);
1105
- return decoderMap[header.type].decode(engine, bufferReader).then(function(object) {
1125
+ return (_decoderMap_header_type = decoderMap[header.type]).decode.apply(_decoderMap_header_type, [].concat(engine, bufferReader, args)).then(function(object) {
1106
1126
  object.name = header.name;
1107
1127
  return object;
1108
1128
  });
@@ -1270,39 +1290,42 @@ BufferLoader = __decorate([
1270
1290
  ], BufferLoader);
1271
1291
 
1272
1292
  var EnvLoader = /*#__PURE__*/ function(Loader1) {
1273
- _inherits(EnvLoader, Loader1);
1274
- function EnvLoader() {
1293
+ _inherits(EnvLoader1, Loader1);
1294
+ function EnvLoader1() {
1275
1295
  return Loader1.apply(this, arguments);
1276
1296
  }
1277
- var _proto = EnvLoader.prototype;
1297
+ var _proto = EnvLoader1.prototype;
1278
1298
  _proto.load = function load(item, resourceManager) {
1279
1299
  var _this = this;
1280
1300
  return new miniprogram.AssetPromise(function(resolve, reject) {
1281
- _this.request(item.url, {
1301
+ var engine = resourceManager.engine;
1302
+ var request = _this.request;
1303
+ request(item.url, _extends({}, item, {
1282
1304
  type: "arraybuffer"
1283
- }).then(function(arraybuffer) {
1284
- var _this;
1285
- var shArray = new Float32Array(arraybuffer, 0, 27);
1286
- var shByteLength = 27 * 4;
1287
- var size = (_this = new Uint16Array(arraybuffer, shByteLength, 1)) == null ? void 0 : _this[0];
1288
- var engine = resourceManager.engine;
1289
- var texture = new miniprogram.TextureCube(engine, size);
1290
- texture.filterMode = miniprogram.TextureFilterMode.Trilinear;
1291
- var mipmapCount = texture.mipmapCount;
1292
- var offset = shByteLength + 2;
1293
- for(var mipLevel = 0; mipLevel < mipmapCount; mipLevel++){
1294
- var mipSize = size >> mipLevel;
1295
- for(var face = 0; face < 6; face++){
1296
- var dataSize = mipSize * mipSize * 4;
1297
- var data = new Uint8Array(arraybuffer, offset, dataSize);
1298
- offset += dataSize;
1299
- texture.setPixelBuffer(miniprogram.TextureCubeFace.PositiveX + face, data, mipLevel);
1305
+ })).then(function(arraybuffer) {
1306
+ var texture = EnvLoader._setTextureByBuffer(engine, arraybuffer);
1307
+ engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
1308
+ _inherits(_class, ContentRestorer);
1309
+ function _class() {
1310
+ return ContentRestorer.apply(this, arguments);
1300
1311
  }
1301
- }
1312
+ var _proto = _class.prototype;
1313
+ _proto.restoreContent = function restoreContent() {
1314
+ return new miniprogram.AssetPromise(function(resolve, reject) {
1315
+ request(item.url, _extends({}, item, {
1316
+ type: "arraybuffer"
1317
+ })).then(function(buffer) {
1318
+ EnvLoader._setTextureByBuffer(engine, buffer, texture);
1319
+ resolve(texture);
1320
+ }).catch(reject);
1321
+ });
1322
+ };
1323
+ return _class;
1324
+ }(miniprogram.ContentRestorer))(texture));
1302
1325
  var ambientLight = new miniprogram.AmbientLight(engine);
1303
1326
  var sh = new miniprogram$1.SphericalHarmonics3();
1304
1327
  ambientLight.diffuseMode = miniprogram.DiffuseMode.SphericalHarmonics;
1305
- sh.copyFromArray(shArray);
1328
+ sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));
1306
1329
  ambientLight.diffuseSphericalHarmonics = sh;
1307
1330
  ambientLight.specularTexture = texture;
1308
1331
  ambientLight.specularTextureDecodeRGBM = true;
@@ -1312,7 +1335,28 @@ var EnvLoader = /*#__PURE__*/ function(Loader1) {
1312
1335
  });
1313
1336
  });
1314
1337
  };
1315
- return EnvLoader;
1338
+ /**
1339
+ * @internal
1340
+ */ EnvLoader1._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
1341
+ var _this;
1342
+ var shByteLength = 27 * 4;
1343
+ var size = (_this = new Uint16Array(buffer, shByteLength, 1)) == null ? void 0 : _this[0];
1344
+ texture || (texture = new miniprogram.TextureCube(engine, size));
1345
+ texture.filterMode = miniprogram.TextureFilterMode.Trilinear;
1346
+ var mipmapCount = texture.mipmapCount;
1347
+ var offset = shByteLength + 2;
1348
+ for(var mipLevel = 0; mipLevel < mipmapCount; mipLevel++){
1349
+ var mipSize = size >> mipLevel;
1350
+ for(var face = 0; face < 6; face++){
1351
+ var dataSize = mipSize * mipSize * 4;
1352
+ var data = new Uint8Array(buffer, offset, dataSize);
1353
+ offset += dataSize;
1354
+ texture.setPixelBuffer(miniprogram.TextureCubeFace.PositiveX + face, data, mipLevel);
1355
+ }
1356
+ }
1357
+ return texture;
1358
+ };
1359
+ return EnvLoader1;
1316
1360
  }(miniprogram.Loader);
1317
1361
  EnvLoader = __decorate([
1318
1362
  miniprogram.resourceLoader(miniprogram.AssetType.Env, [
@@ -1600,7 +1644,7 @@ var TextureWrapMode;
1600
1644
  var glTFItems = this.glTF[glTFSchemaMap[type]];
1601
1645
  if (glTFItems && (index === undefined || glTFItems[index])) {
1602
1646
  if (index === undefined) {
1603
- resource = type === 7 ? glTFItems.map(function(_, index) {
1647
+ resource = type === 8 ? glTFItems.map(function(_, index) {
1604
1648
  return _this.get(type, index);
1605
1649
  }) : Promise.all(glTFItems.map(function(_, index) {
1606
1650
  return _this.get(type, index);
@@ -1622,11 +1666,11 @@ var TextureWrapMode;
1622
1666
  _this.glTF = json;
1623
1667
  return Promise.all([
1624
1668
  _this.get(1),
1625
- _this.get(4),
1626
1669
  _this.get(5),
1627
1670
  _this.get(6),
1628
- _this.get(8),
1671
+ _this.get(7),
1629
1672
  _this.get(9),
1673
+ _this.get(10),
1630
1674
  _this.get(2)
1631
1675
  ]).then(function() {
1632
1676
  var glTFResource = _this.glTFResource;
@@ -1664,7 +1708,7 @@ var TextureWrapMode;
1664
1708
  var _this = this;
1665
1709
  var glTFResourceKey = glTFResourceMap[type];
1666
1710
  if (!glTFResourceKey) return;
1667
- if (type === 7) {
1711
+ if (type === 8) {
1668
1712
  var _this_glTFResource, _glTFResourceKey;
1669
1713
  ((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
1670
1714
  } else {
@@ -1672,7 +1716,7 @@ var TextureWrapMode;
1672
1716
  resource.then(function(item) {
1673
1717
  var _this_glTFResource, _glTFResourceKey;
1674
1718
  ((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
1675
- if (type === 6) {
1719
+ if (type === 7) {
1676
1720
  for(var i = 0, length = item.length; i < length; i++){
1677
1721
  var mesh = item[i];
1678
1722
  // @ts-ignore
@@ -1712,17 +1756,18 @@ exports.GLTFParserType = void 0;
1712
1756
  GLTFParserType[GLTFParserType["Validator"] = 1] = "Validator";
1713
1757
  GLTFParserType[GLTFParserType["Scene"] = 2] = "Scene";
1714
1758
  GLTFParserType[GLTFParserType["Buffer"] = 3] = "Buffer";
1715
- GLTFParserType[GLTFParserType["Texture"] = 4] = "Texture";
1716
- GLTFParserType[GLTFParserType["Material"] = 5] = "Material";
1717
- GLTFParserType[GLTFParserType["Mesh"] = 6] = "Mesh";
1718
- GLTFParserType[GLTFParserType["Entity"] = 7] = "Entity";
1719
- GLTFParserType[GLTFParserType["Skin"] = 8] = "Skin";
1720
- GLTFParserType[GLTFParserType["Animation"] = 9] = "Animation";
1759
+ GLTFParserType[GLTFParserType["BufferView"] = 4] = "BufferView";
1760
+ GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
1761
+ GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
1762
+ GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
1763
+ GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
1764
+ GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
1765
+ GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
1721
1766
  })(exports.GLTFParserType || (exports.GLTFParserType = {}));
1722
1767
  var _obj;
1723
- 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);
1768
+ 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);
1724
1769
  var _obj1;
1725
- 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);
1770
+ 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);
1726
1771
  function registerGLTFParser(pipeline) {
1727
1772
  return function(Parser) {
1728
1773
  var parser = new Parser();
@@ -1827,113 +1872,68 @@ function registerGLTFParser(pipeline) {
1827
1872
  };
1828
1873
  GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
1829
1874
  var componentType = accessor.componentType;
1830
- var _accessor_bufferView;
1831
- var bufferViewIndex = (_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0;
1832
- var bufferView = bufferViews[bufferViewIndex];
1833
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
1834
- var bufferIndex = bufferView.buffer;
1835
- var buffer = buffers[bufferIndex];
1836
- var _bufferView_byteOffset;
1837
- var bufferByteOffset = (_bufferView_byteOffset = bufferView.byteOffset) != null ? _bufferView_byteOffset : 0;
1838
- var _accessor_byteOffset;
1839
- var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1840
- var TypedArray = GLTFUtils.getComponentType(componentType);
1841
- var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1842
- var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
1843
- var elementStride = dataElementSize * dataElementBytes;
1844
- var accessorCount = accessor.count;
1845
- var bufferStride = bufferView.byteStride;
1846
- var bufferInfo;
1847
- // According to the glTF official documentation only byteStride not undefined is allowed
1848
- if (bufferStride !== undefined && bufferStride !== elementStride) {
1849
- var bufferSlice = Math.floor(byteOffset / bufferStride);
1850
- var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
1851
- var accessorBufferCache = context.accessorBufferCache;
1852
- bufferInfo = accessorBufferCache[bufferCacheKey];
1853
- if (!bufferInfo) {
1854
- var offset = bufferByteOffset + bufferSlice * bufferStride;
1855
- var count = accessorCount * (bufferStride / dataElementBytes);
1856
- var data = new TypedArray(buffer, offset, count);
1857
- accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1858
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1875
+ var TypedArray = GLTFUtils.getComponentType(componentType);
1876
+ var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1877
+ var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
1878
+ var elementStride = dataElementSize * dataElementBytes;
1879
+ var accessorCount = accessor.count;
1880
+ var promise;
1881
+ if (accessor.bufferView !== undefined) {
1882
+ var bufferViewIndex = accessor.bufferView;
1883
+ var bufferView = bufferViews[bufferViewIndex];
1884
+ promise = context.get(exports.GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
1885
+ var bufferIndex = bufferView.buffer;
1886
+ var _bufferViewData_byteOffset;
1887
+ var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
1888
+ var _accessor_byteOffset;
1889
+ var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1890
+ var bufferStride = bufferView.byteStride;
1891
+ var bufferInfo;
1892
+ // According to the glTF official documentation only byteStride not undefined is allowed
1893
+ if (bufferStride !== undefined && bufferStride !== elementStride) {
1894
+ var bufferSlice = Math.floor(byteOffset / bufferStride);
1895
+ var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
1896
+ var accessorBufferCache = context.accessorBufferCache;
1897
+ bufferInfo = accessorBufferCache[bufferCacheKey];
1898
+ if (!bufferInfo) {
1899
+ var offset = bufferByteOffset + bufferSlice * bufferStride;
1900
+ var count = accessorCount * (bufferStride / dataElementBytes);
1901
+ var data = new TypedArray(bufferViewData.buffer, offset, count);
1902
+ accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1903
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1904
+ }
1905
+ } else {
1906
+ var offset1 = bufferByteOffset + byteOffset;
1907
+ var count1 = accessorCount * dataElementSize;
1908
+ var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
1909
+ bufferInfo = new BufferInfo(data1, false, elementStride);
1910
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1859
1911
  }
1860
- } else {
1861
- var offset1 = bufferByteOffset + byteOffset;
1862
- var count1 = accessorCount * dataElementSize;
1863
- var data1 = new TypedArray(buffer, offset1, count1);
1864
- bufferInfo = new BufferInfo(data1, false, elementStride);
1865
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1866
- }
1867
- if (accessor.sparse) {
1868
- GLTFUtils.processingSparseData(bufferViews, accessor, buffers, bufferInfo);
1869
- }
1870
- return bufferInfo;
1871
- });
1912
+ return bufferInfo;
1913
+ });
1914
+ } else {
1915
+ var count = accessorCount * dataElementSize;
1916
+ var data = new TypedArray(count);
1917
+ var bufferInfo = new BufferInfo(data, false, elementStride);
1918
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
1919
+ promise = Promise.resolve(bufferInfo);
1920
+ }
1921
+ return accessor.sparse ? promise.then(function(bufferInfo) {
1922
+ return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
1923
+ return bufferInfo;
1924
+ });
1925
+ }) : promise;
1872
1926
  };
1873
- GLTFUtils.bufferToVector3Array = function bufferToVector3Array(data, byteStride, accessorByteOffset, count) {
1874
- var bytesPerElement = data.BYTES_PER_ELEMENT;
1875
- var offset = accessorByteOffset % byteStride / bytesPerElement;
1876
- var stride = byteStride / bytesPerElement;
1877
- var vector3s = new Array(count);
1927
+ GLTFUtils.bufferToVector3Array = function bufferToVector3Array(buffer, byteOffset, count, normalized, componentType) {
1928
+ var baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;
1929
+ var stride = buffer.length / count;
1930
+ var vertices = new Array(count);
1931
+ var factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;
1878
1932
  for(var i = 0; i < count; i++){
1879
- var index = offset + i * stride;
1880
- vector3s[i] = new miniprogram$1.Vector3(data[index], data[index + 1], data[index + 2]);
1881
- }
1882
- return vector3s;
1883
- };
1884
- /**
1885
- * @deprecated
1886
- * Get accessor data.
1887
- */ GLTFUtils.getAccessorData = function getAccessorData(glTF, accessor, buffers) {
1888
- var bufferViews = glTF.bufferViews;
1889
- var _accessor_bufferView;
1890
- var bufferView = bufferViews[(_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0];
1891
- var arrayBuffer = buffers[bufferView.buffer];
1892
- var accessorByteOffset = accessor.hasOwnProperty("byteOffset") ? accessor.byteOffset : 0;
1893
- var bufferViewByteOffset = bufferView.hasOwnProperty("byteOffset") ? bufferView.byteOffset : 0;
1894
- var byteOffset = accessorByteOffset + bufferViewByteOffset;
1895
- var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1896
- var length = accessorTypeSize * accessor.count;
1897
- var _bufferView_byteStride;
1898
- var byteStride = (_bufferView_byteStride = bufferView.byteStride) != null ? _bufferView_byteStride : 0;
1899
- var arrayType = GLTFUtils.getComponentType(accessor.componentType);
1900
- var uint8Array;
1901
- if (byteStride) {
1902
- var accessorByteSize = accessorTypeSize * arrayType.BYTES_PER_ELEMENT;
1903
- uint8Array = new Uint8Array(accessor.count * accessorByteSize);
1904
- var originalBufferView = new Uint8Array(arrayBuffer, bufferViewByteOffset, bufferView.byteLength);
1905
- for(var i = 0; i < accessor.count; i++){
1906
- for(var j = 0; j < accessorByteSize; j++){
1907
- uint8Array[i * accessorByteSize + j] = originalBufferView[i * byteStride + accessorByteOffset + j];
1908
- }
1909
- }
1910
- } else {
1911
- uint8Array = new Uint8Array(arrayBuffer.slice(byteOffset, byteOffset + length * arrayType.BYTES_PER_ELEMENT));
1912
- }
1913
- var typedArray = new arrayType(uint8Array.buffer);
1914
- if (accessor.sparse) {
1915
- var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
1916
- var indicesBufferView = bufferViews[indices.bufferView];
1917
- var valuesBufferView = bufferViews[values.bufferView];
1918
- var indicesArrayBuffer = buffers[indicesBufferView.buffer];
1919
- var valuesArrayBuffer = buffers[valuesBufferView.buffer];
1920
- var _indices_byteOffset, _indicesBufferView_byteOffset;
1921
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
1922
- var indicesByteLength = indicesBufferView.byteLength;
1923
- var _values_byteOffset, _valuesBufferView_byteOffset;
1924
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
1925
- var valuesByteLength = valuesBufferView.byteLength;
1926
- var indicesType = GLTFUtils.getComponentType(indices.componentType);
1927
- var indicesArray = new indicesType(indicesArrayBuffer, indicesByteOffset, indicesByteLength / indicesType.BYTES_PER_ELEMENT);
1928
- var valuesArray = new arrayType(valuesArrayBuffer, valuesByteOffset, valuesByteLength / arrayType.BYTES_PER_ELEMENT);
1929
- for(var i1 = 0; i1 < count; i1++){
1930
- var replaceIndex = indicesArray[i1];
1931
- for(var j1 = 0; j1 < accessorTypeSize; j1++){
1932
- typedArray[replaceIndex * accessorTypeSize + j1] = valuesArray[i1 * accessorTypeSize + j1];
1933
- }
1934
- }
1933
+ var index = baseOffset + i * stride;
1934
+ vertices[i] = new miniprogram$1.Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);
1935
1935
  }
1936
- return typedArray;
1936
+ return vertices;
1937
1937
  };
1938
1938
  GLTFUtils.getBufferViewData = function getBufferViewData(bufferView, buffers) {
1939
1939
  var _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset;
@@ -1942,40 +1942,43 @@ function registerGLTFParser(pipeline) {
1942
1942
  };
1943
1943
  /**
1944
1944
  * Get accessor data.
1945
- */ GLTFUtils.processingSparseData = function processingSparseData(bufferViews, accessor, buffers, bufferInfo) {
1945
+ */ GLTFUtils.processingSparseData = function processingSparseData(context, accessor, bufferInfo) {
1946
1946
  var restoreInfo = bufferInfo.restoreInfo;
1947
+ var bufferViews = context.glTF.bufferViews;
1947
1948
  var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1948
1949
  var TypedArray = GLTFUtils.getComponentType(accessor.componentType);
1949
1950
  var data = bufferInfo.data.slice();
1950
1951
  var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
1951
1952
  var indicesBufferView = bufferViews[indices.bufferView];
1952
1953
  var valuesBufferView = bufferViews[values.bufferView];
1953
- var indicesBufferIndex = indicesBufferView.buffer;
1954
- var valuesBufferIndex = valuesBufferView.buffer;
1955
- var indicesArrayBuffer = buffers[indicesBufferIndex];
1956
- var valuesArrayBuffer = buffers[valuesBufferIndex];
1957
- var _indices_byteOffset, _indicesBufferView_byteOffset;
1958
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
1959
- var indicesByteLength = indicesBufferView.byteLength;
1960
- var _values_byteOffset, _valuesBufferView_byteOffset;
1961
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
1962
- var valuesByteLength = valuesBufferView.byteLength;
1963
- restoreInfo.typeSize = accessorTypeSize;
1964
- restoreInfo.sparseCount = count;
1965
- var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
1966
- var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
1967
- var indicesArray = new IndexTypeArray(indicesArrayBuffer, indicesByteOffset, indexLength);
1968
- restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferIndex, IndexTypeArray, indicesByteOffset, indexLength);
1969
- var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
1970
- var valuesArray = new TypedArray(valuesArrayBuffer, valuesByteOffset, valueLength);
1971
- restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferIndex, TypedArray, valuesByteOffset, valueLength);
1972
- for(var i = 0; i < count; i++){
1973
- var replaceIndex = indicesArray[i];
1974
- for(var j = 0; j < accessorTypeSize; j++){
1975
- data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
1954
+ return Promise.all([
1955
+ context.get(exports.GLTFParserType.BufferView, indices.bufferView),
1956
+ context.get(exports.GLTFParserType.BufferView, values.bufferView)
1957
+ ]).then(function(param) {
1958
+ var indicesUint8Array = param[0], valuesUin8Array = param[1];
1959
+ var _indices_byteOffset, _indicesUint8Array_byteOffset;
1960
+ var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesUint8Array_byteOffset = indicesUint8Array.byteOffset) != null ? _indicesUint8Array_byteOffset : 0);
1961
+ var indicesByteLength = indicesUint8Array.byteLength;
1962
+ var _values_byteOffset, _valuesUin8Array_byteOffset;
1963
+ var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesUin8Array_byteOffset = valuesUin8Array.byteOffset) != null ? _valuesUin8Array_byteOffset : 0);
1964
+ var valuesByteLength = valuesUin8Array.byteLength;
1965
+ restoreInfo.typeSize = accessorTypeSize;
1966
+ restoreInfo.sparseCount = count;
1967
+ var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
1968
+ var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
1969
+ var indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);
1970
+ restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferView.buffer, IndexTypeArray, indicesByteOffset, indexLength);
1971
+ var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
1972
+ var valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);
1973
+ restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferView.buffer, TypedArray, valuesByteOffset, valueLength);
1974
+ for(var i = 0; i < count; i++){
1975
+ var replaceIndex = indicesArray[i];
1976
+ for(var j = 0; j < accessorTypeSize; j++){
1977
+ data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
1978
+ }
1976
1979
  }
1977
- }
1978
- bufferInfo.data = data;
1980
+ bufferInfo.data = data;
1981
+ });
1979
1982
  };
1980
1983
  GLTFUtils.getIndexFormat = function getIndexFormat(type) {
1981
1984
  switch(type){
@@ -2073,28 +2076,29 @@ function registerGLTFParser(pipeline) {
2073
2076
  BIN: 0x004e4942
2074
2077
  };
2075
2078
  var dataView = new DataView(originBuffer);
2076
- // read header
2079
+ // Read header
2077
2080
  var header = {
2078
2081
  magic: dataView.getUint32(0, true),
2079
2082
  version: dataView.getUint32(UINT32_LENGTH, true),
2080
2083
  length: dataView.getUint32(2 * UINT32_LENGTH, true)
2081
2084
  };
2085
+ // Return the original buffer if it is not a glb
2082
2086
  if (header.magic !== GLB_HEADER_MAGIC) {
2083
2087
  return {
2084
2088
  originBuffer: originBuffer
2085
2089
  };
2086
2090
  }
2087
- // read main data
2091
+ // Read main data
2088
2092
  var chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);
2089
2093
  var chunkType = dataView.getUint32(GLB_HEADER_LENGTH + UINT32_LENGTH, true);
2090
- // read glTF json
2094
+ // Read glTF json
2091
2095
  if (chunkType !== GLB_CHUNK_TYPES.JSON) {
2092
2096
  console.error("Invalid glb chunk type. Expected 0x4E4F534A, found 0x" + chunkType.toString(16));
2093
2097
  return null;
2094
2098
  }
2095
2099
  var glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2096
2100
  var glTF = JSON.parse(miniprogram.Utils.decodeText(glTFData));
2097
- // read all buffers
2101
+ // Read all buffers
2098
2102
  var buffers = [];
2099
2103
  var byteOffset = GLB_HEADER_LENGTH + 2 * UINT32_LENGTH + chunkLength;
2100
2104
  var restoreGLBBufferSlice = context.contentRestorer.glbBufferSlices;
@@ -2985,13 +2989,39 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2985
2989
  /**
2986
2990
  * @internal
2987
2991
  */ _proto.load = function load(item, resourceManager) {
2988
- return this.request(item.url, {
2989
- type: "arraybuffer"
2990
- }).then(function(buffer) {
2991
- return exports.KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
2992
- var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
2993
- return exports.KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
2994
- });
2992
+ var _this = this;
2993
+ return new miniprogram.AssetPromise(function(resolve, reject) {
2994
+ var request = _this.request;
2995
+ request(item.url, _extends({}, item, {
2996
+ type: "arraybuffer"
2997
+ })).then(function(buffer) {
2998
+ return exports.KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
2999
+ var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
3000
+ return exports.KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
3001
+ }).then(function(texture) {
3002
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
3003
+ _inherits(_class, ContentRestorer);
3004
+ function _class() {
3005
+ return ContentRestorer.apply(this, arguments);
3006
+ }
3007
+ var _proto = _class.prototype;
3008
+ _proto.restoreContent = function restoreContent() {
3009
+ return new miniprogram.AssetPromise(function(resolve, reject) {
3010
+ request(item.url, _extends({}, item, {
3011
+ type: "arraybuffer"
3012
+ })).then(function(buffer) {
3013
+ return exports.KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
3014
+ var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
3015
+ return exports.KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params, texture);
3016
+ });
3017
+ }).then(resolve).catch(reject);
3018
+ });
3019
+ };
3020
+ return _class;
3021
+ }(miniprogram.ContentRestorer))(texture));
3022
+ resolve(texture);
3023
+ });
3024
+ }).catch(reject);
2995
3025
  });
2996
3026
  };
2997
3027
  /**
@@ -3030,7 +3060,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
3030
3060
  };
3031
3061
  });
3032
3062
  };
3033
- /** @internal */ KTX2Loader1._createTextureByBuffer = function _createTextureByBuffer(engine, transcodeResult, targetFormat, params) {
3063
+ /** @internal */ KTX2Loader1._createTextureByBuffer = function _createTextureByBuffer(engine, transcodeResult, targetFormat, params, restoredTexture) {
3034
3064
  var width = transcodeResult.width, height = transcodeResult.height, faces = transcodeResult.faces;
3035
3065
  var faceCount = faces.length;
3036
3066
  var mipmaps = faces[0];
@@ -3038,13 +3068,13 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
3038
3068
  var engineFormat = this._getEngineTextureFormat(targetFormat, transcodeResult);
3039
3069
  var texture;
3040
3070
  if (faceCount !== 6) {
3041
- texture = new miniprogram.Texture2D(engine, width, height, engineFormat, mipmap);
3071
+ texture = restoredTexture || new miniprogram.Texture2D(engine, width, height, engineFormat, mipmap);
3042
3072
  for(var mipLevel = 0; mipLevel < mipmaps.length; mipLevel++){
3043
3073
  var data = mipmaps[mipLevel].data;
3044
3074
  texture.setPixelBuffer(data, mipLevel);
3045
3075
  }
3046
3076
  } else {
3047
- texture = new miniprogram.TextureCube(engine, height, engineFormat, mipmap);
3077
+ texture = restoredTexture || new miniprogram.TextureCube(engine, height, engineFormat, mipmap);
3048
3078
  for(var i = 0; i < faces.length; i++){
3049
3079
  var faceData = faces[i];
3050
3080
  for(var mipLevel1 = 0; mipLevel1 < mipmaps.length; mipLevel1++){
@@ -3241,16 +3271,16 @@ exports.KTX2Transcoder = void 0;
3241
3271
  var frame = restoreInfo.blendShape.frames[0];
3242
3272
  var position = restoreInfo.position;
3243
3273
  var positionData = _this._getBufferData(buffers, position.buffer);
3244
- frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.stride, position.byteOffset, position.count);
3274
+ frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.byteOffset, position.count, position.normalized, position.componentType);
3245
3275
  if (restoreInfo.normal) {
3246
3276
  var normal = restoreInfo.normal;
3247
3277
  var normalData = _this._getBufferData(buffers, normal.buffer);
3248
- frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.stride, normal.byteOffset, normal.count);
3278
+ frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.byteOffset, normal.count, normal.normalized, normal.componentType);
3249
3279
  }
3250
3280
  if (restoreInfo.tangent) {
3251
3281
  var tangent = restoreInfo.tangent;
3252
3282
  var tangentData = _this._getBufferData(buffers, tangent.buffer);
3253
- frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.stride, tangent.byteOffset, tangent.count);
3283
+ frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.byteOffset, tangent.count, tangent.normalized, tangent.componentType);
3254
3284
  }
3255
3285
  }
3256
3286
  mesh.uploadData(true);
@@ -3262,8 +3292,13 @@ exports.KTX2Transcoder = void 0;
3262
3292
  };
3263
3293
  _proto._getBufferData = function _getBufferData(buffers, restoreInfo) {
3264
3294
  var main = restoreInfo.main;
3265
- var buffer = buffers[main.bufferIndex];
3266
- var data = new main.TypedArray(buffer, main.byteOffset, main.length);
3295
+ var data;
3296
+ if (main) {
3297
+ var buffer = buffers[main.bufferIndex];
3298
+ data = new main.TypedArray(buffer, main.byteOffset, main.length);
3299
+ } else {
3300
+ data = new main.TypedArray(main.length);
3301
+ }
3267
3302
  var sparseCount = restoreInfo.sparseCount;
3268
3303
  if (sparseCount) {
3269
3304
  var sparseIndex = restoreInfo.sparseIndices;
@@ -3336,11 +3371,12 @@ exports.KTX2Transcoder = void 0;
3336
3371
  };
3337
3372
  /**
3338
3373
  * @internal
3339
- */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, stride, byteOffset, count) {
3374
+ */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, byteOffset, count, normalized, componentType) {
3340
3375
  this.buffer = buffer;
3341
- this.stride = stride;
3342
3376
  this.byteOffset = byteOffset;
3343
3377
  this.count = count;
3378
+ this.normalized = normalized;
3379
+ this.componentType = componentType;
3344
3380
  };
3345
3381
 
3346
3382
  /**
@@ -3517,8 +3553,13 @@ exports.GLTFSchemaParser = /*#__PURE__*/ function(GLTFParser1) {
3517
3553
  type: "arraybuffer"
3518
3554
  };
3519
3555
  return miniprogram.request(url, requestConfig).then(function(buffer) {
3520
- restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3521
- return GLTFUtils.parseGLB(context, buffer);
3556
+ var _parseResult;
3557
+ var parseResult = GLTFUtils.parseGLB(context, buffer);
3558
+ // If the buffer is a GLB file, we need to restore the buffer data
3559
+ if ((_parseResult = parseResult) == null ? void 0 : _parseResult.glTF) {
3560
+ restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3561
+ }
3562
+ return parseResult;
3522
3563
  }).then(function(result) {
3523
3564
  var _result;
3524
3565
  if ((_result = result) == null ? void 0 : _result.glTF) {
@@ -3936,7 +3977,7 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
3936
3977
  resolve(mesh);
3937
3978
  } else {
3938
3979
  mesh.then(function(mesh) {
3939
- return resolve(mesh);
3980
+ resolve(mesh);
3940
3981
  });
3941
3982
  }
3942
3983
  } else {
@@ -3944,35 +3985,20 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
3944
3985
  var meshRestoreInfo = new ModelMeshRestoreInfo();
3945
3986
  meshRestoreInfo.mesh = mesh1;
3946
3987
  context.contentRestorer.meshes.push(meshRestoreInfo);
3947
- exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, function(attributeSemantic) {
3948
- return null;
3949
- }, function(attributeName, shapeIndex) {
3950
- var shapeAccessorIdx = gltfPrimitive.targets[shapeIndex];
3951
- var attributeAccessorIdx = shapeAccessorIdx[attributeName];
3952
- if (attributeAccessorIdx) {
3953
- var accessor = glTF.accessors[attributeAccessorIdx];
3954
- return GLTFUtils.getAccessorBuffer(context, context.glTF.bufferViews, accessor);
3955
- } else {
3956
- return null;
3957
- }
3958
- }, function() {
3959
- var indexAccessor = glTF.accessors[gltfPrimitive.indices];
3960
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
3961
- return GLTFUtils.getAccessorData(glTF, indexAccessor, buffers);
3962
- });
3963
- }, context.params.keepMeshData).then(resolve);
3988
+ exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, context.params.keepMeshData).then(resolve);
3964
3989
  }
3965
3990
  });
3966
3991
  };
3967
3992
  var meshInfo = context.glTF.meshes[index];
3968
- var glTF = context.glTF, engine = context.glTFResource.engine;
3993
+ var glTF = context.glTF, glTFResource = context.glTFResource;
3994
+ var engine = glTFResource.engine;
3969
3995
  var primitivePromises = new Array();
3970
3996
  for(var i = 0, length = meshInfo.primitives.length; i < length; i++)_loop(i);
3971
3997
  return Promise.all(primitivePromises);
3972
3998
  };
3973
3999
  /**
3974
4000
  * @internal
3975
- */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
4001
+ */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, keepMeshData) {
3976
4002
  var _loop = function(attribute) {
3977
4003
  var accessor = accessors[attributes[attribute]];
3978
4004
  var promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor).then(function(accessorBuffer) {
@@ -4043,6 +4069,7 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
4043
4069
  });
4044
4070
  promises.push(promise);
4045
4071
  };
4072
+ var _this = this;
4046
4073
  var accessors = gltf.accessors;
4047
4074
  var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
4048
4075
  var engine = mesh.engine;
@@ -4067,61 +4094,68 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
4067
4094
  }
4068
4095
  // BlendShapes
4069
4096
  if (targets) {
4070
- promises.push(exports.GLTFMeshParser._createBlendShape(mesh, meshRestoreInfo, gltfMesh, accessors, targets, getBlendShapeData));
4097
+ promises.push(exports.GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets, _this._getBlendShapeData));
4071
4098
  }
4072
4099
  return Promise.all(promises).then(function() {
4073
4100
  mesh.uploadData(!keepMeshData);
4074
- return Promise.resolve(mesh);
4101
+ return mesh;
4075
4102
  });
4076
4103
  });
4077
4104
  };
4105
+ GLTFMeshParser1._getBlendShapeData = function _getBlendShapeData(context, glTF, accessor) {
4106
+ return GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then(function(bufferInfo) {
4107
+ var buffer = bufferInfo.data;
4108
+ var _accessor_byteOffset;
4109
+ var byteOffset = bufferInfo.interleaved ? ((_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0) % bufferInfo.stride : 0;
4110
+ var count = accessor.count, normalized = accessor.normalized, componentType = accessor.componentType;
4111
+ var vertices = GLTFUtils.bufferToVector3Array(buffer, byteOffset, count, normalized, componentType);
4112
+ var restoreInfo = new BlendShapeDataRestoreInfo(bufferInfo.restoreInfo, byteOffset, count, normalized, componentType);
4113
+ return {
4114
+ vertices: vertices,
4115
+ restoreInfo: restoreInfo
4116
+ };
4117
+ });
4118
+ };
4078
4119
  /**
4079
4120
  * @internal
4080
- */ GLTFMeshParser1._createBlendShape = function _createBlendShape(mesh, meshRestoreInfo, glTFMesh, accessors, glTFTargets, getBlendShapeData) {
4081
- var _loop = function(i, n) {
4121
+ */ GLTFMeshParser1._createBlendShape = function _createBlendShape(context, mesh, meshRestoreInfo, glTFMesh, gltfPrimitive, glTFTargets, getBlendShapeData) {
4122
+ var _loop = function(i) {
4123
+ var blendShapeData = {};
4124
+ blendShapeCollection[i] = blendShapeData;
4082
4125
  var name = blendShapeNames ? blendShapeNames[i] : "blendShape" + i;
4126
+ var targets = gltfPrimitive.targets[i];
4127
+ var normalTarget = targets["NORMAL"];
4128
+ var tangentTarget = targets["TANGENT"];
4129
+ var hasNormal = normalTarget !== undefined;
4130
+ var hasTangent = tangentTarget !== undefined;
4083
4131
  var promise = Promise.all([
4084
- getBlendShapeData("POSITION", i),
4085
- getBlendShapeData("NORMAL", i),
4086
- getBlendShapeData("TANGENT", i)
4087
- ]).then(function(infos) {
4088
- var posBufferInfo = infos[0];
4089
- var norBufferInfo = infos[1];
4090
- var tanBufferInfo = infos[2];
4091
- var target = glTFTargets[i];
4092
- var posAccessor;
4093
- var norAccessor;
4094
- var tanAccessor;
4095
- var positions = null;
4096
- if (posBufferInfo) {
4097
- posAccessor = accessors[target["POSITION"]];
4098
- var _posAccessor_byteOffset;
4099
- positions = GLTFUtils.bufferToVector3Array(posBufferInfo.data, posBufferInfo.stride, (_posAccessor_byteOffset = posAccessor.byteOffset) != null ? _posAccessor_byteOffset : 0, posAccessor.count);
4100
- }
4101
- var normals = null;
4102
- if (norBufferInfo) {
4103
- norAccessor = accessors[target["NORMAL"]];
4104
- var _norAccessor_byteOffset;
4105
- normals = GLTFUtils.bufferToVector3Array(norBufferInfo.data, norBufferInfo.stride, (_norAccessor_byteOffset = norAccessor.byteOffset) != null ? _norAccessor_byteOffset : 0, norAccessor.count);
4106
- }
4107
- var tangents = null;
4108
- if (tanBufferInfo) {
4109
- tanAccessor = accessors[target["NORMAL"]];
4110
- var _tanAccessor_byteOffset;
4111
- tangents = GLTFUtils.bufferToVector3Array(tanBufferInfo.data, tanBufferInfo.stride, (_tanAccessor_byteOffset = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset : 0, tanAccessor.count);
4112
- }
4132
+ getBlendShapeData(context, glTF, accessors[targets["POSITION"]]),
4133
+ hasNormal ? getBlendShapeData(context, glTF, accessors[normalTarget]) : null,
4134
+ hasTangent ? getBlendShapeData(context, glTF, accessors[tangentTarget]) : null
4135
+ ]).then(function(vertices) {
4136
+ var _tangentData;
4137
+ var positionData = vertices[0], normalData = vertices[1], tangentData = vertices[2];
4113
4138
  var blendShape = new miniprogram.BlendShape(name);
4114
- blendShape.addFrame(1.0, positions, normals, tangents);
4115
- mesh.addBlendShape(blendShape);
4116
- var _posAccessor_byteOffset1, _norAccessor_byteOffset1, _tanAccessor_byteOffset1;
4117
- 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));
4139
+ blendShape.addFrame(1.0, positionData.vertices, hasNormal ? normalData.vertices : null, hasTangent ? tangentData.vertices : null);
4140
+ blendShapeData.blendShape = blendShape;
4141
+ blendShapeData.restoreInfo = new BlendShapeRestoreInfo(blendShape, positionData.restoreInfo, hasNormal ? normalData.restoreInfo : null, hasTangent ? (_tangentData = tangentData) == null ? void 0 : _tangentData.restoreInfo : null);
4118
4142
  });
4119
4143
  promises.push(promise);
4120
4144
  };
4145
+ var glTF = context.glTF;
4146
+ var accessors = glTF.accessors;
4121
4147
  var blendShapeNames = glTFMesh.extras ? glTFMesh.extras.targetNames : null;
4122
4148
  var promises = new Array();
4123
- for(var i = 0, n = glTFTargets.length; i < n; i++)_loop(i);
4124
- return Promise.all(promises);
4149
+ var blendShapeCount = glTFTargets.length;
4150
+ var blendShapeCollection = new Array(blendShapeCount);
4151
+ for(var i = 0; i < blendShapeCount; i++)_loop(i);
4152
+ return Promise.all(promises).then(function() {
4153
+ for(var _iterator = _create_for_of_iterator_helper_loose(blendShapeCollection), _step; !(_step = _iterator()).done;){
4154
+ var blendShape = _step.value;
4155
+ mesh.addBlendShape(blendShape.blendShape);
4156
+ meshRestoreInfo.blendShapes.push(blendShape.restoreInfo);
4157
+ }
4158
+ });
4125
4159
  };
4126
4160
  return GLTFMeshParser1;
4127
4161
  }(GLTFParser), function() {
@@ -4502,6 +4536,25 @@ exports.GLTFValidator = __decorate([
4502
4536
  registerGLTFParser(exports.GLTFParserType.Validator)
4503
4537
  ], exports.GLTFValidator);
4504
4538
 
4539
+ exports.GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
4540
+ _inherits(GLTFBufferViewParser, GLTFParser1);
4541
+ function GLTFBufferViewParser() {
4542
+ return GLTFParser1.apply(this, arguments);
4543
+ }
4544
+ var _proto = GLTFBufferViewParser.prototype;
4545
+ _proto.parse = function parse(context, index) {
4546
+ var bufferView = context.glTF.bufferViews[index];
4547
+ var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
4548
+ return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(exports.GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
4549
+ return new Uint8Array(buffer, byteOffset, byteLength);
4550
+ });
4551
+ };
4552
+ return GLTFBufferViewParser;
4553
+ }(GLTFParser);
4554
+ exports.GLTFBufferViewParser = __decorate([
4555
+ registerGLTFParser(exports.GLTFParserType.BufferView)
4556
+ ], exports.GLTFBufferViewParser);
4557
+
4505
4558
  var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4506
4559
  _inherits(GLTFLoader, Loader1);
4507
4560
  function GLTFLoader() {
@@ -4538,23 +4591,48 @@ var HDRLoader = (_HDRLoader = /*#__PURE__*/ function(Loader1) {
4538
4591
  var _this = this;
4539
4592
  return new miniprogram.AssetPromise(function(resolve, reject) {
4540
4593
  var engine = resourceManager.engine;
4541
- _this.request(item.url, {
4594
+ var request = _this.request;
4595
+ _this.request(item.url, _extends({}, item, {
4542
4596
  type: "arraybuffer"
4543
- }).then(function(buffer) {
4544
- var uint8Array = new Uint8Array(buffer);
4545
- var _HDRLoader__parseHeader = HDRLoader._parseHeader(uint8Array), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
4546
- var pixels = HDRLoader._readPixels(uint8Array.subarray(dataPosition), width, height);
4547
- var cubeSize = height >> 1;
4548
- var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
4549
- var texture = new miniprogram.TextureCube(engine, cubeSize);
4550
- for(var faceIndex = 0; faceIndex < 6; faceIndex++){
4551
- texture.setPixelBuffer(miniprogram.TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
4552
- }
4553
- texture.generateMipmaps();
4597
+ })).then(function(buffer) {
4598
+ var texture = HDRLoader._setTextureByBuffer(engine, buffer);
4599
+ engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
4600
+ _inherits(_class, ContentRestorer);
4601
+ function _class() {
4602
+ return ContentRestorer.apply(this, arguments);
4603
+ }
4604
+ var _proto = _class.prototype;
4605
+ _proto.restoreContent = function restoreContent() {
4606
+ return new miniprogram.AssetPromise(function(resolve, reject) {
4607
+ request(item.url, _extends({}, item, {
4608
+ type: "arraybuffer"
4609
+ })).then(function(buffer) {
4610
+ HDRLoader._setTextureByBuffer(engine, buffer, texture);
4611
+ resolve(texture);
4612
+ }).catch(reject);
4613
+ });
4614
+ };
4615
+ return _class;
4616
+ }(miniprogram.ContentRestorer))(texture));
4554
4617
  resolve(texture);
4555
4618
  }).catch(reject);
4556
4619
  });
4557
4620
  };
4621
+ /**
4622
+ * @internal
4623
+ */ HDRLoader1._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
4624
+ var bufferArray = new Uint8Array(buffer);
4625
+ var _HDRLoader__parseHeader = HDRLoader._parseHeader(bufferArray), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
4626
+ var cubeSize = height >> 1;
4627
+ texture || (texture = new miniprogram.TextureCube(engine, cubeSize));
4628
+ var pixels = HDRLoader._readPixels(bufferArray.subarray(dataPosition), width, height);
4629
+ var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
4630
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
4631
+ texture.setPixelBuffer(miniprogram.TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
4632
+ }
4633
+ texture.generateMipmaps();
4634
+ return texture;
4635
+ };
4558
4636
  HDRLoader1._convertToCubemap = function _convertToCubemap(pixels, inputWidth, inputHeight, size) {
4559
4637
  if (!pixels) {
4560
4638
  throw "ConvertPanoramaToCubemap: input cannot be null";
@@ -5092,7 +5170,8 @@ var KTXLoader = /*#__PURE__*/ function(Loader1) {
5092
5170
  _proto.load = function load(item, resourceManager) {
5093
5171
  var _this = this;
5094
5172
  return new miniprogram.AssetPromise(function(resolve, reject) {
5095
- _this.request(item.url, _extends({}, item, {
5173
+ var request = _this.request;
5174
+ request(item.url, _extends({}, item, {
5096
5175
  type: "arraybuffer"
5097
5176
  })).then(function(bin) {
5098
5177
  var parsedData = parseSingleKTX(bin);
@@ -5103,6 +5182,32 @@ var KTXLoader = /*#__PURE__*/ function(Loader1) {
5103
5182
  var _mipmaps_miplevel = mipmaps[miplevel], width1 = _mipmaps_miplevel.width, height1 = _mipmaps_miplevel.height, data = _mipmaps_miplevel.data;
5104
5183
  texture.setPixelBuffer(data, miplevel, 0, 0, width1, height1);
5105
5184
  }
5185
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
5186
+ _inherits(_class, ContentRestorer);
5187
+ function _class() {
5188
+ return ContentRestorer.apply(this, arguments);
5189
+ }
5190
+ var _proto = _class.prototype;
5191
+ _proto.restoreContent = function restoreContent() {
5192
+ var _this = this;
5193
+ return new miniprogram.AssetPromise(function(resolve, reject) {
5194
+ request(item.url, _extends({}, item, {
5195
+ type: "arraybuffer"
5196
+ })).then(function(bin) {
5197
+ var mipmaps = parseSingleKTX(bin).mipmaps;
5198
+ var texture = _this.resource;
5199
+ for(var miplevel = 0; miplevel < mipmaps.length; miplevel++){
5200
+ var _mipmaps_miplevel = mipmaps[miplevel], width = _mipmaps_miplevel.width, height = _mipmaps_miplevel.height, data = _mipmaps_miplevel.data;
5201
+ texture.setPixelBuffer(data, miplevel, 0, 0, width, height);
5202
+ }
5203
+ resolve(texture);
5204
+ }).catch(function(e) {
5205
+ reject(e);
5206
+ });
5207
+ });
5208
+ };
5209
+ return _class;
5210
+ }(miniprogram.ContentRestorer))(texture));
5106
5211
  resolve(texture);
5107
5212
  }).catch(function(e) {
5108
5213
  reject(e);
@@ -5209,11 +5314,32 @@ var MeshLoader = /*#__PURE__*/ function(Loader1) {
5209
5314
  _proto.load = function load(item, resourceManager) {
5210
5315
  var _this = this;
5211
5316
  return new miniprogram.AssetPromise(function(resolve, reject) {
5212
- _this.request(item.url, _extends({}, item, {
5317
+ var request = _this.request;
5318
+ var engine = resourceManager.engine;
5319
+ request(item.url, _extends({}, item, {
5213
5320
  type: "arraybuffer"
5214
5321
  })).then(function(data) {
5215
- return decode(data, resourceManager.engine);
5322
+ return decode(data, engine);
5216
5323
  }).then(function(mesh) {
5324
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
5325
+ _inherits(_class, ContentRestorer);
5326
+ function _class() {
5327
+ return ContentRestorer.apply(this, arguments);
5328
+ }
5329
+ var _proto = _class.prototype;
5330
+ _proto.restoreContent = function restoreContent() {
5331
+ return new miniprogram.AssetPromise(function(resolve, reject) {
5332
+ request(item.url, _extends({}, item, {
5333
+ type: "arraybuffer"
5334
+ })).then(function(data) {
5335
+ return decode(data, engine, mesh);
5336
+ }).then(function(mesh) {
5337
+ resolve(mesh);
5338
+ }).catch(reject);
5339
+ });
5340
+ };
5341
+ return _class;
5342
+ }(miniprogram.ContentRestorer))(mesh));
5217
5343
  resolve(mesh);
5218
5344
  }).catch(reject);
5219
5345
  });
@@ -5749,14 +5875,17 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5749
5875
  var buffer = GLTFUtils.getBufferViewData(bufferViews[bufferViewIndex], buffers);
5750
5876
  return KHR_draco_mesh_compression._decoder.decode(buffer, taskConfig).then(function(decodedGeometry) {
5751
5877
  var mesh = new miniprogram.ModelMesh(engine, glTFMesh.name);
5752
- return _this._parseMeshFromGLTFPrimitiveDraco(mesh, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
5878
+ var meshRestoreInfo = new ModelMeshRestoreInfo();
5879
+ meshRestoreInfo.mesh = mesh;
5880
+ context.contentRestorer.meshes.push(meshRestoreInfo);
5881
+ return _this._parseMeshFromGLTFPrimitiveDraco(context, mesh, meshRestoreInfo, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
5753
5882
  for(var j = 0; j < decodedGeometry.attributes.length; j++){
5754
5883
  if (decodedGeometry.attributes[j].name === attributeSemantic) {
5755
5884
  return decodedGeometry.attributes[j].array;
5756
5885
  }
5757
5886
  }
5758
5887
  return null;
5759
- }, function(attributeSemantic, shapeIndex) {
5888
+ }, function() {
5760
5889
  throw "BlendShape animation is not supported when using draco.";
5761
5890
  }, function() {
5762
5891
  return decodedGeometry.index.array;
@@ -5769,7 +5898,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5769
5898
  KHR_draco_mesh_compression._decoder = new miniprogram$3.DRACODecoder();
5770
5899
  }
5771
5900
  };
5772
- _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(mesh, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
5901
+ _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
5773
5902
  var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
5774
5903
  var vertexCount;
5775
5904
  var accessors = gltf.accessors;
@@ -5865,7 +5994,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5865
5994
  mesh.addSubMesh(0, vertexCount, mode);
5866
5995
  }
5867
5996
  // BlendShapes
5868
- targets && exports.GLTFMeshParser._createBlendShape(mesh, null, gltfMesh, accessors, targets, getBlendShapeData);
5997
+ targets && exports.GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets, getBlendShapeData);
5869
5998
  mesh.uploadData(!keepMeshData);
5870
5999
  return Promise.resolve(mesh);
5871
6000
  };
@@ -6205,6 +6334,7 @@ GALACEAN_animation_event = __decorate([
6205
6334
  registerGLTFExtension("GALACEAN_animation_event", exports.GLTFExtensionMode.AdditiveParse)
6206
6335
  ], GALACEAN_animation_event);
6207
6336
 
6337
+ exports.BufferInfo = BufferInfo;
6208
6338
  exports.ComponentMap = ComponentMap;
6209
6339
  exports.GLTFExtensionParser = GLTFExtensionParser;
6210
6340
  exports.GLTFParser = GLTFParser;