@galacean/engine-loader 1.1.3 → 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.
package/dist/main.js CHANGED
@@ -284,11 +284,201 @@ var FileHeader = /*#__PURE__*/ function() {
284
284
  return FileHeader;
285
285
  }();
286
286
 
287
+ var ComponentMap = {
288
+ Transform: engineCore.Transform,
289
+ Animator: engineCore.Animator,
290
+ DirectLight: engineCore.DirectLight,
291
+ Camera: engineCore.Camera,
292
+ MeshRenderer: engineCore.MeshRenderer,
293
+ ParticleRenderer: engineCore.ParticleRenderer,
294
+ PointLight: engineCore.PointLight,
295
+ SpotLight: engineCore.SpotLight,
296
+ Script: engineCore.Script,
297
+ SpriteMask: engineCore.SpriteMask,
298
+ SpriteRenderer: engineCore.SpriteRenderer,
299
+ TextRenderer: engineCore.TextRenderer
300
+ };
301
+
302
+ exports.InterpolableValueType = void 0;
303
+ (function(InterpolableValueType) {
304
+ InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
305
+ InterpolableValueType[InterpolableValueType["FloatArray"] = 1] = "FloatArray";
306
+ InterpolableValueType[InterpolableValueType["Vector2"] = 2] = "Vector2";
307
+ InterpolableValueType[InterpolableValueType["Vector3"] = 3] = "Vector3";
308
+ InterpolableValueType[InterpolableValueType["Vector4"] = 4] = "Vector4";
309
+ InterpolableValueType[InterpolableValueType["Quaternion"] = 5] = "Quaternion";
310
+ InterpolableValueType[InterpolableValueType["Color"] = 6] = "Color";
311
+ InterpolableValueType[InterpolableValueType["Array"] = 7] = "Array";
312
+ InterpolableValueType[InterpolableValueType["Boolean"] = 8] = "Boolean";
313
+ InterpolableValueType[InterpolableValueType["Rect"] = 9] = "Rect";
314
+ InterpolableValueType[InterpolableValueType["ReferResource"] = 10] = "ReferResource";
315
+ })(exports.InterpolableValueType || (exports.InterpolableValueType = {}));
316
+ exports.AnimationClipDecoder = /*#__PURE__*/ function() {
317
+ function AnimationClipDecoder() {}
318
+ AnimationClipDecoder.decode = function decode(engine, bufferReader) {
319
+ return new Promise(function(resolve) {
320
+ var name = bufferReader.nextStr();
321
+ var clip = new engineCore.AnimationClip(name);
322
+ var eventsLen = bufferReader.nextUint16();
323
+ for(var i = 0; i < eventsLen; ++i){
324
+ var event = new engineCore.AnimationEvent();
325
+ event.time = bufferReader.nextFloat32();
326
+ event.functionName = bufferReader.nextStr();
327
+ event.parameter = JSON.parse(bufferReader.nextStr()).val;
328
+ clip.addEvent(event);
329
+ }
330
+ var curveBindingsLen = bufferReader.nextUint16();
331
+ for(var i1 = 0; i1 < curveBindingsLen; ++i1){
332
+ var relativePath = bufferReader.nextStr();
333
+ var componentStr = bufferReader.nextStr();
334
+ var componentType = ComponentMap[componentStr];
335
+ var property = bufferReader.nextStr();
336
+ var curve = void 0;
337
+ var interpolation = bufferReader.nextUint8();
338
+ var keysLen = bufferReader.nextUint16();
339
+ var curveType = bufferReader.nextStr();
340
+ switch(curveType){
341
+ case "AnimationFloatCurve":
342
+ {
343
+ curve = new engineCore.AnimationFloatCurve();
344
+ curve.interpolation = interpolation;
345
+ for(var j = 0; j < keysLen; ++j){
346
+ var keyframe = new engineCore.Keyframe();
347
+ keyframe.time = bufferReader.nextFloat32();
348
+ keyframe.value = bufferReader.nextFloat32();
349
+ keyframe.inTangent = bufferReader.nextFloat32();
350
+ keyframe.outTangent = bufferReader.nextFloat32();
351
+ curve.addKey(keyframe);
352
+ }
353
+ break;
354
+ }
355
+ case "AnimationArrayCurve":
356
+ {
357
+ curve = new engineCore.AnimationArrayCurve();
358
+ curve.interpolation = interpolation;
359
+ for(var j1 = 0; j1 < keysLen; ++j1){
360
+ var keyframe1 = new engineCore.Keyframe();
361
+ keyframe1.time = bufferReader.nextFloat32();
362
+ var len = bufferReader.nextUint16();
363
+ keyframe1.value = Array.from(bufferReader.nextFloat32Array(len));
364
+ keyframe1.inTangent = Array.from(bufferReader.nextFloat32Array(len));
365
+ keyframe1.outTangent = Array.from(bufferReader.nextFloat32Array(len));
366
+ curve.addKey(keyframe1);
367
+ }
368
+ break;
369
+ }
370
+ case "AnimationFloatArrayCurve":
371
+ {
372
+ curve = new engineCore.AnimationFloatArrayCurve();
373
+ curve.interpolation = interpolation;
374
+ for(var j2 = 0; j2 < keysLen; ++j2){
375
+ var keyframe2 = new engineCore.Keyframe();
376
+ keyframe2.time = bufferReader.nextFloat32();
377
+ var len1 = bufferReader.nextUint16();
378
+ keyframe2.value = bufferReader.nextFloat32Array(len1);
379
+ keyframe2.inTangent = Array.from(bufferReader.nextFloat32Array(len1));
380
+ keyframe2.outTangent = Array.from(bufferReader.nextFloat32Array(len1));
381
+ curve.addKey(keyframe2);
382
+ }
383
+ break;
384
+ }
385
+ case "AnimationVector2Curve":
386
+ {
387
+ curve = new engineCore.AnimationVector2Curve();
388
+ curve.interpolation = interpolation;
389
+ for(var j3 = 0; j3 < keysLen; ++j3){
390
+ var keyframe3 = new engineCore.Keyframe();
391
+ keyframe3.time = bufferReader.nextFloat32();
392
+ keyframe3.value = new engineMath.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
393
+ keyframe3.inTangent = new engineMath.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
394
+ keyframe3.outTangent = new engineMath.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
395
+ curve.addKey(keyframe3);
396
+ }
397
+ break;
398
+ }
399
+ case "AnimationVector3Curve":
400
+ {
401
+ curve = new engineCore.AnimationVector3Curve();
402
+ curve.interpolation = interpolation;
403
+ for(var j4 = 0; j4 < keysLen; ++j4){
404
+ var keyframe4 = new engineCore.Keyframe();
405
+ keyframe4.time = bufferReader.nextFloat32();
406
+ keyframe4.value = new engineMath.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
407
+ keyframe4.inTangent = new engineMath.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
408
+ keyframe4.outTangent = new engineMath.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
409
+ curve.addKey(keyframe4);
410
+ }
411
+ break;
412
+ }
413
+ case "AnimationVector4Curve":
414
+ {
415
+ curve = new engineCore.AnimationVector4Curve();
416
+ curve.interpolation = interpolation;
417
+ var keyframe5 = new engineCore.Keyframe();
418
+ keyframe5.time = bufferReader.nextFloat32();
419
+ keyframe5.value = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
420
+ keyframe5.inTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
421
+ keyframe5.outTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
422
+ curve.addKey(keyframe5);
423
+ break;
424
+ }
425
+ case "AnimationColorCurve":
426
+ {
427
+ curve = new engineCore.AnimationColorCurve();
428
+ curve.interpolation = interpolation;
429
+ for(var j5 = 0; j5 < keysLen; ++j5){
430
+ var keyframe6 = new engineCore.Keyframe();
431
+ keyframe6.time = bufferReader.nextFloat32();
432
+ keyframe6.value = new engineMath.Color(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
433
+ keyframe6.inTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
434
+ keyframe6.outTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
435
+ curve.addKey(keyframe6);
436
+ }
437
+ break;
438
+ }
439
+ case "AnimationQuaternionCurve":
440
+ {
441
+ curve = new engineCore.AnimationQuaternionCurve();
442
+ curve.interpolation = interpolation;
443
+ for(var j6 = 0; j6 < keysLen; ++j6){
444
+ var keyframe7 = new engineCore.Keyframe();
445
+ keyframe7.time = bufferReader.nextFloat32();
446
+ keyframe7.value = new engineMath.Quaternion(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
447
+ keyframe7.inTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
448
+ keyframe7.outTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
449
+ curve.addKey(keyframe7);
450
+ }
451
+ break;
452
+ }
453
+ case "AnimationRefCurve":
454
+ {
455
+ curve = new engineCore.AnimationRefCurve();
456
+ curve.interpolation = interpolation;
457
+ for(var j7 = 0; j7 < keysLen; ++j7){
458
+ var keyframe8 = new engineCore.Keyframe();
459
+ keyframe8.time = bufferReader.nextFloat32();
460
+ keyframe8.value = JSON.parse(bufferReader.nextStr());
461
+ curve.addKey(keyframe8);
462
+ }
463
+ break;
464
+ }
465
+ }
466
+ clip.addCurveBinding(relativePath, componentType, property, curve);
467
+ }
468
+ resolve(clip);
469
+ });
470
+ };
471
+ return AnimationClipDecoder;
472
+ }();
473
+ exports.AnimationClipDecoder = __decorate([
474
+ decoder("AnimationClip")
475
+ ], exports.AnimationClipDecoder);
476
+
287
477
  exports.MeshDecoder = /*#__PURE__*/ function() {
288
478
  function MeshDecoder() {}
289
- MeshDecoder.decode = function decode(engine, bufferReader) {
479
+ MeshDecoder.decode = function decode(engine, bufferReader, restoredMesh) {
290
480
  return new Promise(function(resolve) {
291
- var modelMesh = new engineCore.ModelMesh(engine);
481
+ var modelMesh = restoredMesh || new engineCore.ModelMesh(engine);
292
482
  var jsonDataString = bufferReader.nextStr();
293
483
  var encodedMeshData = JSON.parse(jsonDataString);
294
484
  // @ts-ignore Vector3 is not compatible with {x: number, y: number, z: number}.
@@ -418,80 +608,22 @@ function float32ArrayToVector2(float32Array, vertexCount) {
418
608
  return array;
419
609
  }
420
610
 
421
- exports.Texture2DDecoder = /*#__PURE__*/ function() {
422
- function Texture2DDecoder() {}
423
- Texture2DDecoder.decode = function decode(engine, bufferReader) {
424
- return new Promise(function(resolve, reject) {
425
- var objectId = bufferReader.nextStr();
426
- var mipmap = !!bufferReader.nextUint8();
427
- var filterMode = bufferReader.nextUint8();
428
- var anisoLevel = bufferReader.nextUint8();
429
- var wrapModeU = bufferReader.nextUint8();
430
- var wrapModeV = bufferReader.nextUint8();
431
- var format = bufferReader.nextUint8();
432
- var width = bufferReader.nextUint16();
433
- var height = bufferReader.nextUint16();
434
- var isPixelBuffer = bufferReader.nextUint8();
435
- var mipCount = bufferReader.nextUint8();
436
- var imagesData = bufferReader.nextImagesData(mipCount);
437
- var texture2D = new engineCore.Texture2D(engine, width, height, format, mipmap);
438
- texture2D.filterMode = filterMode;
439
- texture2D.anisoLevel = anisoLevel;
440
- texture2D.wrapModeU = wrapModeU;
441
- texture2D.wrapModeV = wrapModeV;
442
- if (isPixelBuffer) {
443
- var pixelBuffer = imagesData[0];
444
- texture2D.setPixelBuffer(pixelBuffer);
445
- if (mipmap) {
446
- texture2D.generateMipmaps();
447
- for(var i = 1; i < mipCount; i++){
448
- var pixelBuffer1 = imagesData[i];
449
- texture2D.setPixelBuffer(pixelBuffer1, i);
450
- }
451
- }
452
- // @ts-ignore
453
- engine.resourceManager._objectPool[objectId] = texture2D;
454
- resolve(texture2D);
455
- } else {
456
- var blob = new window.Blob([
457
- imagesData[0]
458
- ]);
459
- var img = new Image();
460
- img.onload = function() {
461
- texture2D.setImageSource(img);
462
- var completedCount = 0;
463
- var onComplete = function() {
464
- completedCount++;
465
- if (completedCount >= mipCount) {
466
- resolve(texture2D);
467
- }
468
- };
469
- onComplete();
470
- if (mipmap) {
471
- var _loop = function(i) {
472
- var blob = new window.Blob([
473
- imagesData[i]
474
- ]);
475
- var img = new Image();
476
- img.onload = function() {
477
- texture2D.setImageSource(img, i);
478
- onComplete();
479
- };
480
- img.src = URL.createObjectURL(blob);
481
- };
482
- texture2D.generateMipmaps();
483
- for(var i = 1; i < mipCount; i++)_loop(i);
484
- }
485
- };
486
- img.src = URL.createObjectURL(blob);
611
+ var PrefabParser = /*#__PURE__*/ function() {
612
+ function PrefabParser() {}
613
+ PrefabParser.parseChildren = function parseChildren(entitiesConfig, entities, parentId) {
614
+ var children = entitiesConfig.get(parentId).children;
615
+ if (children && children.length > 0) {
616
+ var parent = entities.get(parentId);
617
+ for(var i = 0; i < children.length; i++){
618
+ var childId = children[i];
619
+ var entity = entities.get(childId);
620
+ parent.addChild(entity);
621
+ this.parseChildren(entitiesConfig, entities, childId);
487
622
  }
488
- });
623
+ }
489
624
  };
490
- return Texture2DDecoder;
625
+ return PrefabParser;
491
626
  }();
492
- exports.Texture2DDecoder = __decorate([
493
- decoder("Texture2D")
494
- ], exports.Texture2DDecoder);
495
627
 
496
628
  function _is_native_reflect_construct() {
497
629
  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
@@ -655,236 +787,166 @@ var ReflectionParser = /*#__PURE__*/ function() {
655
787
  return Promise.resolve(entity);
656
788
  }
657
789
  };
658
- ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
659
- this.customParseComponentHandles[componentType] = handle;
660
- };
661
- ReflectionParser._isClass = function _isClass(value) {
662
- return value["class"] != undefined;
663
- };
664
- ReflectionParser._isAssetRef = function _isAssetRef(value) {
665
- return value["refId"] != undefined;
666
- };
667
- ReflectionParser._isEntityRef = function _isEntityRef(value) {
668
- return value["entityId"] != undefined;
669
- };
670
- return ReflectionParser;
671
- }();
672
- (function() {
673
- ReflectionParser.customParseComponentHandles = new Map();
674
- })();
675
-
676
- var PrefabParser = /*#__PURE__*/ function() {
677
- function PrefabParser() {}
678
- PrefabParser.parseChildren = function parseChildren(entitiesConfig, entities, parentId) {
679
- var children = entitiesConfig.get(parentId).children;
680
- if (children && children.length > 0) {
681
- var parent = entities.get(parentId);
682
- for(var i = 0; i < children.length; i++){
683
- var childId = children[i];
684
- var entity = entities.get(childId);
685
- parent.addChild(entity);
686
- this.parseChildren(entitiesConfig, entities, childId);
687
- }
688
- }
689
- };
690
- return PrefabParser;
691
- }();
692
-
693
- var ComponentMap = {
694
- Transform: engineCore.Transform,
695
- Animator: engineCore.Animator,
696
- DirectLight: engineCore.DirectLight,
697
- Camera: engineCore.Camera,
698
- MeshRenderer: engineCore.MeshRenderer,
699
- ParticleRenderer: engineCore.ParticleRenderer,
700
- PointLight: engineCore.PointLight,
701
- SpotLight: engineCore.SpotLight,
702
- Script: engineCore.Script,
703
- SpriteMask: engineCore.SpriteMask,
704
- SpriteRenderer: engineCore.SpriteRenderer,
705
- TextRenderer: engineCore.TextRenderer
706
- };
707
-
708
- exports.InterpolableValueType = void 0;
709
- (function(InterpolableValueType) {
710
- InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
711
- InterpolableValueType[InterpolableValueType["FloatArray"] = 1] = "FloatArray";
712
- InterpolableValueType[InterpolableValueType["Vector2"] = 2] = "Vector2";
713
- InterpolableValueType[InterpolableValueType["Vector3"] = 3] = "Vector3";
714
- InterpolableValueType[InterpolableValueType["Vector4"] = 4] = "Vector4";
715
- InterpolableValueType[InterpolableValueType["Quaternion"] = 5] = "Quaternion";
716
- InterpolableValueType[InterpolableValueType["Color"] = 6] = "Color";
717
- InterpolableValueType[InterpolableValueType["Array"] = 7] = "Array";
718
- InterpolableValueType[InterpolableValueType["Boolean"] = 8] = "Boolean";
719
- InterpolableValueType[InterpolableValueType["Rect"] = 9] = "Rect";
720
- InterpolableValueType[InterpolableValueType["ReferResource"] = 10] = "ReferResource";
721
- })(exports.InterpolableValueType || (exports.InterpolableValueType = {}));
722
- exports.AnimationClipDecoder = /*#__PURE__*/ function() {
723
- function AnimationClipDecoder() {}
724
- AnimationClipDecoder.decode = function decode(engine, bufferReader) {
725
- return new Promise(function(resolve) {
726
- var name = bufferReader.nextStr();
727
- var clip = new engineCore.AnimationClip(name);
728
- var eventsLen = bufferReader.nextUint16();
729
- for(var i = 0; i < eventsLen; ++i){
730
- var event = new engineCore.AnimationEvent();
731
- event.time = bufferReader.nextFloat32();
732
- event.functionName = bufferReader.nextStr();
733
- event.parameter = JSON.parse(bufferReader.nextStr()).val;
734
- clip.addEvent(event);
735
- }
736
- var curveBindingsLen = bufferReader.nextUint16();
737
- for(var i1 = 0; i1 < curveBindingsLen; ++i1){
738
- var relativePath = bufferReader.nextStr();
739
- var componentStr = bufferReader.nextStr();
740
- var componentType = ComponentMap[componentStr];
741
- var property = bufferReader.nextStr();
742
- var curve = void 0;
743
- var interpolation = bufferReader.nextUint8();
744
- var keysLen = bufferReader.nextUint16();
745
- var curveType = bufferReader.nextStr();
746
- switch(curveType){
747
- case "AnimationFloatCurve":
748
- {
749
- curve = new engineCore.AnimationFloatCurve();
750
- curve.interpolation = interpolation;
751
- for(var j = 0; j < keysLen; ++j){
752
- var keyframe = new engineCore.Keyframe();
753
- keyframe.time = bufferReader.nextFloat32();
754
- keyframe.value = bufferReader.nextFloat32();
755
- keyframe.inTangent = bufferReader.nextFloat32();
756
- keyframe.outTangent = bufferReader.nextFloat32();
757
- curve.addKey(keyframe);
758
- }
759
- break;
760
- }
761
- case "AnimationArrayCurve":
762
- {
763
- curve = new engineCore.AnimationArrayCurve();
764
- curve.interpolation = interpolation;
765
- for(var j1 = 0; j1 < keysLen; ++j1){
766
- var keyframe1 = new engineCore.Keyframe();
767
- keyframe1.time = bufferReader.nextFloat32();
768
- var len = bufferReader.nextUint16();
769
- keyframe1.value = Array.from(bufferReader.nextFloat32Array(len));
770
- keyframe1.inTangent = Array.from(bufferReader.nextFloat32Array(len));
771
- keyframe1.outTangent = Array.from(bufferReader.nextFloat32Array(len));
772
- curve.addKey(keyframe1);
773
- }
774
- break;
775
- }
776
- case "AnimationFloatArrayCurve":
777
- {
778
- curve = new engineCore.AnimationFloatArrayCurve();
779
- curve.interpolation = interpolation;
780
- for(var j2 = 0; j2 < keysLen; ++j2){
781
- var keyframe2 = new engineCore.Keyframe();
782
- keyframe2.time = bufferReader.nextFloat32();
783
- var len1 = bufferReader.nextUint16();
784
- keyframe2.value = bufferReader.nextFloat32Array(len1);
785
- keyframe2.inTangent = Array.from(bufferReader.nextFloat32Array(len1));
786
- keyframe2.outTangent = Array.from(bufferReader.nextFloat32Array(len1));
787
- curve.addKey(keyframe2);
788
- }
789
- break;
790
- }
791
- case "AnimationVector2Curve":
792
- {
793
- curve = new engineCore.AnimationVector2Curve();
794
- curve.interpolation = interpolation;
795
- for(var j3 = 0; j3 < keysLen; ++j3){
796
- var keyframe3 = new engineCore.Keyframe();
797
- keyframe3.time = bufferReader.nextFloat32();
798
- keyframe3.value = new engineMath.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
799
- keyframe3.inTangent = new engineMath.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
800
- keyframe3.outTangent = new engineMath.Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
801
- curve.addKey(keyframe3);
802
- }
803
- break;
804
- }
805
- case "AnimationVector3Curve":
806
- {
807
- curve = new engineCore.AnimationVector3Curve();
808
- curve.interpolation = interpolation;
809
- for(var j4 = 0; j4 < keysLen; ++j4){
810
- var keyframe4 = new engineCore.Keyframe();
811
- keyframe4.time = bufferReader.nextFloat32();
812
- keyframe4.value = new engineMath.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
813
- keyframe4.inTangent = new engineMath.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
814
- keyframe4.outTangent = new engineMath.Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
815
- curve.addKey(keyframe4);
816
- }
817
- break;
818
- }
819
- case "AnimationVector4Curve":
820
- {
821
- curve = new engineCore.AnimationVector4Curve();
822
- curve.interpolation = interpolation;
823
- var keyframe5 = new engineCore.Keyframe();
824
- keyframe5.time = bufferReader.nextFloat32();
825
- keyframe5.value = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
826
- keyframe5.inTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
827
- keyframe5.outTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
828
- curve.addKey(keyframe5);
829
- break;
830
- }
831
- case "AnimationColorCurve":
832
- {
833
- curve = new engineCore.AnimationColorCurve();
834
- curve.interpolation = interpolation;
835
- for(var j5 = 0; j5 < keysLen; ++j5){
836
- var keyframe6 = new engineCore.Keyframe();
837
- keyframe6.time = bufferReader.nextFloat32();
838
- keyframe6.value = new engineMath.Color(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
839
- keyframe6.inTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
840
- keyframe6.outTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
841
- curve.addKey(keyframe6);
842
- }
843
- break;
844
- }
845
- case "AnimationQuaternionCurve":
846
- {
847
- curve = new engineCore.AnimationQuaternionCurve();
848
- curve.interpolation = interpolation;
849
- for(var j6 = 0; j6 < keysLen; ++j6){
850
- var keyframe7 = new engineCore.Keyframe();
851
- keyframe7.time = bufferReader.nextFloat32();
852
- keyframe7.value = new engineMath.Quaternion(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
853
- keyframe7.inTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
854
- keyframe7.outTangent = new engineMath.Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
855
- curve.addKey(keyframe7);
856
- }
857
- break;
858
- }
859
- case "AnimationRefCurve":
860
- {
861
- curve = new engineCore.AnimationRefCurve();
862
- curve.interpolation = interpolation;
863
- for(var j7 = 0; j7 < keysLen; ++j7){
864
- var keyframe8 = new engineCore.Keyframe();
865
- keyframe8.time = bufferReader.nextFloat32();
866
- keyframe8.value = JSON.parse(bufferReader.nextStr());
867
- curve.addKey(keyframe8);
868
- }
869
- break;
870
- }
790
+ ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
791
+ this.customParseComponentHandles[componentType] = handle;
792
+ };
793
+ ReflectionParser._isClass = function _isClass(value) {
794
+ return value["class"] != undefined;
795
+ };
796
+ ReflectionParser._isAssetRef = function _isAssetRef(value) {
797
+ return value["refId"] != undefined;
798
+ };
799
+ ReflectionParser._isEntityRef = function _isEntityRef(value) {
800
+ return value["entityId"] != undefined;
801
+ };
802
+ return ReflectionParser;
803
+ }();
804
+ (function() {
805
+ ReflectionParser.customParseComponentHandles = new Map();
806
+ })();
807
+
808
+ exports.Texture2DDecoder = /*#__PURE__*/ function() {
809
+ function Texture2DDecoder() {}
810
+ Texture2DDecoder.decode = function decode(engine, bufferReader, restoredTexture) {
811
+ return new Promise(function(resolve, reject) {
812
+ var objectId = bufferReader.nextStr();
813
+ var mipmap = !!bufferReader.nextUint8();
814
+ var filterMode = bufferReader.nextUint8();
815
+ var anisoLevel = bufferReader.nextUint8();
816
+ var wrapModeU = bufferReader.nextUint8();
817
+ var wrapModeV = bufferReader.nextUint8();
818
+ var format = bufferReader.nextUint8();
819
+ var width = bufferReader.nextUint16();
820
+ var height = bufferReader.nextUint16();
821
+ var isPixelBuffer = bufferReader.nextUint8();
822
+ var mipCount = bufferReader.nextUint8();
823
+ var imagesData = bufferReader.nextImagesData(mipCount);
824
+ var texture2D = restoredTexture || new engineCore.Texture2D(engine, width, height, format, mipmap);
825
+ texture2D.filterMode = filterMode;
826
+ texture2D.anisoLevel = anisoLevel;
827
+ texture2D.wrapModeU = wrapModeU;
828
+ texture2D.wrapModeV = wrapModeV;
829
+ if (isPixelBuffer) {
830
+ var pixelBuffer = imagesData[0];
831
+ texture2D.setPixelBuffer(pixelBuffer);
832
+ if (mipmap) {
833
+ texture2D.generateMipmaps();
834
+ for(var i = 1; i < mipCount; i++){
835
+ var pixelBuffer1 = imagesData[i];
836
+ texture2D.setPixelBuffer(pixelBuffer1, i);
837
+ }
871
838
  }
872
- clip.addCurveBinding(relativePath, componentType, property, curve);
839
+ // @ts-ignore
840
+ engine.resourceManager._objectPool[objectId] = texture2D;
841
+ resolve(texture2D);
842
+ } else {
843
+ var blob = new window.Blob([
844
+ imagesData[0]
845
+ ]);
846
+ var img = new Image();
847
+ img.onload = function() {
848
+ texture2D.setImageSource(img);
849
+ var completedCount = 0;
850
+ var onComplete = function() {
851
+ completedCount++;
852
+ if (completedCount >= mipCount) {
853
+ resolve(texture2D);
854
+ }
855
+ };
856
+ onComplete();
857
+ if (mipmap) {
858
+ var _loop = function(i) {
859
+ var blob = new window.Blob([
860
+ imagesData[i]
861
+ ]);
862
+ var img = new Image();
863
+ img.onload = function() {
864
+ texture2D.setImageSource(img, i);
865
+ onComplete();
866
+ };
867
+ img.src = URL.createObjectURL(blob);
868
+ };
869
+ texture2D.generateMipmaps();
870
+ for(var i = 1; i < mipCount; i++)_loop(i);
871
+ }
872
+ };
873
+ img.src = URL.createObjectURL(blob);
873
874
  }
874
- resolve(clip);
875
875
  });
876
876
  };
877
- return AnimationClipDecoder;
877
+ return Texture2DDecoder;
878
878
  }();
879
- exports.AnimationClipDecoder = __decorate([
880
- decoder("AnimationClip")
881
- ], exports.AnimationClipDecoder);
879
+ exports.Texture2DDecoder = __decorate([
880
+ decoder("Texture2D")
881
+ ], exports.Texture2DDecoder);
882
882
 
883
- exports.SpecularMode = void 0;
884
- (function(SpecularMode) {
885
- SpecularMode["Sky"] = "Sky";
886
- SpecularMode["Custom"] = "Custom";
887
- })(exports.SpecularMode || (exports.SpecularMode = {}));
883
+ exports.EditorTextureLoader = /*#__PURE__*/ function(Loader1) {
884
+ _inherits(EditorTextureLoader, Loader1);
885
+ function EditorTextureLoader() {
886
+ return Loader1.apply(this, arguments);
887
+ }
888
+ var _proto = EditorTextureLoader.prototype;
889
+ _proto.load = function load(item, resourceManager) {
890
+ var _this = this;
891
+ return new engineCore.AssetPromise(function(resolve, reject) {
892
+ var request = _this.request;
893
+ request(item.url, _extends({}, item, {
894
+ type: "arraybuffer"
895
+ })).then(function(data) {
896
+ decode(data, resourceManager.engine).then(function(texture) {
897
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
898
+ _inherits(_class, ContentRestorer);
899
+ function _class() {
900
+ return ContentRestorer.apply(this, arguments);
901
+ }
902
+ var _proto = _class.prototype;
903
+ _proto.restoreContent = function restoreContent() {
904
+ return request(item.url, _extends({}, item, {
905
+ type: "arraybuffer"
906
+ })).then(function(data) {
907
+ return decode(data, resourceManager.engine, texture);
908
+ });
909
+ };
910
+ return _class;
911
+ }(engineCore.ContentRestorer))(texture));
912
+ resolve(texture);
913
+ });
914
+ }).catch(reject);
915
+ });
916
+ };
917
+ return EditorTextureLoader;
918
+ }(engineCore.Loader);
919
+ exports.EditorTextureLoader = __decorate([
920
+ engineCore.resourceLoader("EditorTexture2D", [
921
+ "prefab"
922
+ ], true)
923
+ ], exports.EditorTextureLoader);
924
+
925
+ exports.MeshLoader = /*#__PURE__*/ function(Loader1) {
926
+ _inherits(MeshLoader, Loader1);
927
+ function MeshLoader() {
928
+ return Loader1.apply(this, arguments);
929
+ }
930
+ var _proto = MeshLoader.prototype;
931
+ _proto.load = function load(item, resourceManager) {
932
+ var _this = this;
933
+ return new engineCore.AssetPromise(function(resolve, reject) {
934
+ _this.request(item.url, {
935
+ type: "arraybuffer"
936
+ }).then(function(data) {
937
+ decode(data, resourceManager.engine).then(function(mesh) {
938
+ resolve(mesh);
939
+ });
940
+ }).catch(reject);
941
+ });
942
+ };
943
+ return MeshLoader;
944
+ }(engineCore.Loader);
945
+ exports.MeshLoader = __decorate([
946
+ engineCore.resourceLoader("Mesh", [
947
+ "prefab"
948
+ ], true)
949
+ ], exports.MeshLoader);
888
950
 
889
951
  function _array_like_to_array(arr, len) {
890
952
  if (len == null || len > arr.length) len = arr.length;
@@ -1041,57 +1103,11 @@ var SceneParserContext = /*#__PURE__*/ function() {
1041
1103
  return SceneParser;
1042
1104
  }();
1043
1105
 
1044
- exports.MeshLoader = /*#__PURE__*/ function(Loader1) {
1045
- _inherits(MeshLoader, Loader1);
1046
- function MeshLoader() {
1047
- return Loader1.apply(this, arguments);
1048
- }
1049
- var _proto = MeshLoader.prototype;
1050
- _proto.load = function load(item, resourceManager) {
1051
- var _this = this;
1052
- return new engineCore.AssetPromise(function(resolve, reject) {
1053
- _this.request(item.url, {
1054
- type: "arraybuffer"
1055
- }).then(function(data) {
1056
- decode(data, resourceManager.engine).then(function(mesh) {
1057
- resolve(mesh);
1058
- });
1059
- }).catch(reject);
1060
- });
1061
- };
1062
- return MeshLoader;
1063
- }(engineCore.Loader);
1064
- exports.MeshLoader = __decorate([
1065
- engineCore.resourceLoader("Mesh", [
1066
- "prefab"
1067
- ], true)
1068
- ], exports.MeshLoader);
1069
-
1070
- exports.EditorTextureLoader = /*#__PURE__*/ function(Loader1) {
1071
- _inherits(EditorTextureLoader, Loader1);
1072
- function EditorTextureLoader() {
1073
- return Loader1.apply(this, arguments);
1074
- }
1075
- var _proto = EditorTextureLoader.prototype;
1076
- _proto.load = function load(item, resourceManager) {
1077
- var _this = this;
1078
- return new engineCore.AssetPromise(function(resolve, reject) {
1079
- _this.request(item.url, {
1080
- type: "arraybuffer"
1081
- }).then(function(data) {
1082
- decode(data, resourceManager.engine).then(function(texture) {
1083
- resolve(texture);
1084
- });
1085
- }).catch(reject);
1086
- });
1087
- };
1088
- return EditorTextureLoader;
1089
- }(engineCore.Loader);
1090
- exports.EditorTextureLoader = __decorate([
1091
- engineCore.resourceLoader("EditorTexture2D", [
1092
- "prefab"
1093
- ], true)
1094
- ], exports.EditorTextureLoader);
1106
+ exports.SpecularMode = void 0;
1107
+ (function(SpecularMode) {
1108
+ SpecularMode["Sky"] = "Sky";
1109
+ SpecularMode["Custom"] = "Custom";
1110
+ })(exports.SpecularMode || (exports.SpecularMode = {}));
1095
1111
 
1096
1112
  /**
1097
1113
  * Decode engine binary resource.
@@ -1099,9 +1115,13 @@ exports.EditorTextureLoader = __decorate([
1099
1115
  * @param engine - engine
1100
1116
  * @returns
1101
1117
  */ function decode(arrayBuffer, engine) {
1118
+ for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
1119
+ args[_key - 2] = arguments[_key];
1120
+ }
1121
+ var _decoderMap_header_type;
1102
1122
  var header = FileHeader.decode(arrayBuffer);
1103
1123
  var bufferReader = new BufferReader(new Uint8Array(arrayBuffer), header.headerLength, header.dataLength);
1104
- return decoderMap[header.type].decode(engine, bufferReader).then(function(object) {
1124
+ return (_decoderMap_header_type = decoderMap[header.type]).decode.apply(_decoderMap_header_type, [].concat(engine, bufferReader, args)).then(function(object) {
1105
1125
  object.name = header.name;
1106
1126
  return object;
1107
1127
  });
@@ -1269,39 +1289,42 @@ BufferLoader = __decorate([
1269
1289
  ], BufferLoader);
1270
1290
 
1271
1291
  var EnvLoader = /*#__PURE__*/ function(Loader1) {
1272
- _inherits(EnvLoader, Loader1);
1273
- function EnvLoader() {
1292
+ _inherits(EnvLoader1, Loader1);
1293
+ function EnvLoader1() {
1274
1294
  return Loader1.apply(this, arguments);
1275
1295
  }
1276
- var _proto = EnvLoader.prototype;
1296
+ var _proto = EnvLoader1.prototype;
1277
1297
  _proto.load = function load(item, resourceManager) {
1278
1298
  var _this = this;
1279
1299
  return new engineCore.AssetPromise(function(resolve, reject) {
1280
- _this.request(item.url, {
1300
+ var engine = resourceManager.engine;
1301
+ var request = _this.request;
1302
+ request(item.url, _extends({}, item, {
1281
1303
  type: "arraybuffer"
1282
- }).then(function(arraybuffer) {
1283
- var _this;
1284
- var shArray = new Float32Array(arraybuffer, 0, 27);
1285
- var shByteLength = 27 * 4;
1286
- var size = (_this = new Uint16Array(arraybuffer, shByteLength, 1)) == null ? void 0 : _this[0];
1287
- var engine = resourceManager.engine;
1288
- var texture = new engineCore.TextureCube(engine, size);
1289
- texture.filterMode = engineCore.TextureFilterMode.Trilinear;
1290
- var mipmapCount = texture.mipmapCount;
1291
- var offset = shByteLength + 2;
1292
- for(var mipLevel = 0; mipLevel < mipmapCount; mipLevel++){
1293
- var mipSize = size >> mipLevel;
1294
- for(var face = 0; face < 6; face++){
1295
- var dataSize = mipSize * mipSize * 4;
1296
- var data = new Uint8Array(arraybuffer, offset, dataSize);
1297
- offset += dataSize;
1298
- texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + face, data, mipLevel);
1304
+ })).then(function(arraybuffer) {
1305
+ var texture = EnvLoader._setTextureByBuffer(engine, arraybuffer);
1306
+ engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
1307
+ _inherits(_class, ContentRestorer);
1308
+ function _class() {
1309
+ return ContentRestorer.apply(this, arguments);
1299
1310
  }
1300
- }
1311
+ var _proto = _class.prototype;
1312
+ _proto.restoreContent = function restoreContent() {
1313
+ return new engineCore.AssetPromise(function(resolve, reject) {
1314
+ request(item.url, _extends({}, item, {
1315
+ type: "arraybuffer"
1316
+ })).then(function(buffer) {
1317
+ EnvLoader._setTextureByBuffer(engine, buffer, texture);
1318
+ resolve(texture);
1319
+ }).catch(reject);
1320
+ });
1321
+ };
1322
+ return _class;
1323
+ }(engineCore.ContentRestorer))(texture));
1301
1324
  var ambientLight = new engineCore.AmbientLight(engine);
1302
1325
  var sh = new engineMath.SphericalHarmonics3();
1303
1326
  ambientLight.diffuseMode = engineCore.DiffuseMode.SphericalHarmonics;
1304
- sh.copyFromArray(shArray);
1327
+ sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));
1305
1328
  ambientLight.diffuseSphericalHarmonics = sh;
1306
1329
  ambientLight.specularTexture = texture;
1307
1330
  ambientLight.specularTextureDecodeRGBM = true;
@@ -1311,7 +1334,28 @@ var EnvLoader = /*#__PURE__*/ function(Loader1) {
1311
1334
  });
1312
1335
  });
1313
1336
  };
1314
- return EnvLoader;
1337
+ /**
1338
+ * @internal
1339
+ */ EnvLoader1._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
1340
+ var _this;
1341
+ var shByteLength = 27 * 4;
1342
+ var size = (_this = new Uint16Array(buffer, shByteLength, 1)) == null ? void 0 : _this[0];
1343
+ texture || (texture = new engineCore.TextureCube(engine, size));
1344
+ texture.filterMode = engineCore.TextureFilterMode.Trilinear;
1345
+ var mipmapCount = texture.mipmapCount;
1346
+ var offset = shByteLength + 2;
1347
+ for(var mipLevel = 0; mipLevel < mipmapCount; mipLevel++){
1348
+ var mipSize = size >> mipLevel;
1349
+ for(var face = 0; face < 6; face++){
1350
+ var dataSize = mipSize * mipSize * 4;
1351
+ var data = new Uint8Array(buffer, offset, dataSize);
1352
+ offset += dataSize;
1353
+ texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + face, data, mipLevel);
1354
+ }
1355
+ }
1356
+ return texture;
1357
+ };
1358
+ return EnvLoader1;
1315
1359
  }(engineCore.Loader);
1316
1360
  EnvLoader = __decorate([
1317
1361
  engineCore.resourceLoader(engineCore.AssetType.Env, [
@@ -2031,28 +2075,29 @@ function registerGLTFParser(pipeline) {
2031
2075
  BIN: 0x004e4942
2032
2076
  };
2033
2077
  var dataView = new DataView(originBuffer);
2034
- // read header
2078
+ // Read header
2035
2079
  var header = {
2036
2080
  magic: dataView.getUint32(0, true),
2037
2081
  version: dataView.getUint32(UINT32_LENGTH, true),
2038
2082
  length: dataView.getUint32(2 * UINT32_LENGTH, true)
2039
2083
  };
2084
+ // Return the original buffer if it is not a glb
2040
2085
  if (header.magic !== GLB_HEADER_MAGIC) {
2041
2086
  return {
2042
2087
  originBuffer: originBuffer
2043
2088
  };
2044
2089
  }
2045
- // read main data
2090
+ // Read main data
2046
2091
  var chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);
2047
2092
  var chunkType = dataView.getUint32(GLB_HEADER_LENGTH + UINT32_LENGTH, true);
2048
- // read glTF json
2093
+ // Read glTF json
2049
2094
  if (chunkType !== GLB_CHUNK_TYPES.JSON) {
2050
2095
  console.error("Invalid glb chunk type. Expected 0x4E4F534A, found 0x" + chunkType.toString(16));
2051
2096
  return null;
2052
2097
  }
2053
2098
  var glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2054
2099
  var glTF = JSON.parse(engineCore.Utils.decodeText(glTFData));
2055
- // read all buffers
2100
+ // Read all buffers
2056
2101
  var buffers = [];
2057
2102
  var byteOffset = GLB_HEADER_LENGTH + 2 * UINT32_LENGTH + chunkLength;
2058
2103
  var restoreGLBBufferSlice = context.contentRestorer.glbBufferSlices;
@@ -2943,13 +2988,39 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2943
2988
  /**
2944
2989
  * @internal
2945
2990
  */ _proto.load = function load(item, resourceManager) {
2946
- return this.request(item.url, {
2947
- type: "arraybuffer"
2948
- }).then(function(buffer) {
2949
- return exports.KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
2950
- var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
2951
- return exports.KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
2952
- });
2991
+ var _this = this;
2992
+ return new engineCore.AssetPromise(function(resolve, reject) {
2993
+ var request = _this.request;
2994
+ request(item.url, _extends({}, item, {
2995
+ type: "arraybuffer"
2996
+ })).then(function(buffer) {
2997
+ return exports.KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
2998
+ var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
2999
+ return exports.KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
3000
+ }).then(function(texture) {
3001
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
3002
+ _inherits(_class, ContentRestorer);
3003
+ function _class() {
3004
+ return ContentRestorer.apply(this, arguments);
3005
+ }
3006
+ var _proto = _class.prototype;
3007
+ _proto.restoreContent = function restoreContent() {
3008
+ return new engineCore.AssetPromise(function(resolve, reject) {
3009
+ request(item.url, _extends({}, item, {
3010
+ type: "arraybuffer"
3011
+ })).then(function(buffer) {
3012
+ return exports.KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
3013
+ var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
3014
+ return exports.KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params, texture);
3015
+ });
3016
+ }).then(resolve).catch(reject);
3017
+ });
3018
+ };
3019
+ return _class;
3020
+ }(engineCore.ContentRestorer))(texture));
3021
+ resolve(texture);
3022
+ });
3023
+ }).catch(reject);
2953
3024
  });
2954
3025
  };
2955
3026
  /**
@@ -2988,7 +3059,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2988
3059
  };
2989
3060
  });
2990
3061
  };
2991
- /** @internal */ KTX2Loader1._createTextureByBuffer = function _createTextureByBuffer(engine, transcodeResult, targetFormat, params) {
3062
+ /** @internal */ KTX2Loader1._createTextureByBuffer = function _createTextureByBuffer(engine, transcodeResult, targetFormat, params, restoredTexture) {
2992
3063
  var width = transcodeResult.width, height = transcodeResult.height, faces = transcodeResult.faces;
2993
3064
  var faceCount = faces.length;
2994
3065
  var mipmaps = faces[0];
@@ -2996,13 +3067,13 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2996
3067
  var engineFormat = this._getEngineTextureFormat(targetFormat, transcodeResult);
2997
3068
  var texture;
2998
3069
  if (faceCount !== 6) {
2999
- texture = new engineCore.Texture2D(engine, width, height, engineFormat, mipmap);
3070
+ texture = restoredTexture || new engineCore.Texture2D(engine, width, height, engineFormat, mipmap);
3000
3071
  for(var mipLevel = 0; mipLevel < mipmaps.length; mipLevel++){
3001
3072
  var data = mipmaps[mipLevel].data;
3002
3073
  texture.setPixelBuffer(data, mipLevel);
3003
3074
  }
3004
3075
  } else {
3005
- texture = new engineCore.TextureCube(engine, height, engineFormat, mipmap);
3076
+ texture = restoredTexture || new engineCore.TextureCube(engine, height, engineFormat, mipmap);
3006
3077
  for(var i = 0; i < faces.length; i++){
3007
3078
  var faceData = faces[i];
3008
3079
  for(var mipLevel1 = 0; mipLevel1 < mipmaps.length; mipLevel1++){
@@ -3481,8 +3552,13 @@ exports.GLTFSchemaParser = /*#__PURE__*/ function(GLTFParser1) {
3481
3552
  type: "arraybuffer"
3482
3553
  };
3483
3554
  return engineCore.request(url, requestConfig).then(function(buffer) {
3484
- restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3485
- return GLTFUtils.parseGLB(context, buffer);
3555
+ var _parseResult;
3556
+ var parseResult = GLTFUtils.parseGLB(context, buffer);
3557
+ // If the buffer is a GLB file, we need to restore the buffer data
3558
+ if ((_parseResult = parseResult) == null ? void 0 : _parseResult.glTF) {
3559
+ restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3560
+ }
3561
+ return parseResult;
3486
3562
  }).then(function(result) {
3487
3563
  var _result;
3488
3564
  if ((_result = result) == null ? void 0 : _result.glTF) {
@@ -4514,23 +4590,48 @@ var HDRLoader = (_HDRLoader = /*#__PURE__*/ function(Loader1) {
4514
4590
  var _this = this;
4515
4591
  return new engineCore.AssetPromise(function(resolve, reject) {
4516
4592
  var engine = resourceManager.engine;
4517
- _this.request(item.url, {
4593
+ var request = _this.request;
4594
+ _this.request(item.url, _extends({}, item, {
4518
4595
  type: "arraybuffer"
4519
- }).then(function(buffer) {
4520
- var uint8Array = new Uint8Array(buffer);
4521
- var _HDRLoader__parseHeader = HDRLoader._parseHeader(uint8Array), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
4522
- var pixels = HDRLoader._readPixels(uint8Array.subarray(dataPosition), width, height);
4523
- var cubeSize = height >> 1;
4524
- var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
4525
- var texture = new engineCore.TextureCube(engine, cubeSize);
4526
- for(var faceIndex = 0; faceIndex < 6; faceIndex++){
4527
- texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
4528
- }
4529
- texture.generateMipmaps();
4596
+ })).then(function(buffer) {
4597
+ var texture = HDRLoader._setTextureByBuffer(engine, buffer);
4598
+ engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
4599
+ _inherits(_class, ContentRestorer);
4600
+ function _class() {
4601
+ return ContentRestorer.apply(this, arguments);
4602
+ }
4603
+ var _proto = _class.prototype;
4604
+ _proto.restoreContent = function restoreContent() {
4605
+ return new engineCore.AssetPromise(function(resolve, reject) {
4606
+ request(item.url, _extends({}, item, {
4607
+ type: "arraybuffer"
4608
+ })).then(function(buffer) {
4609
+ HDRLoader._setTextureByBuffer(engine, buffer, texture);
4610
+ resolve(texture);
4611
+ }).catch(reject);
4612
+ });
4613
+ };
4614
+ return _class;
4615
+ }(engineCore.ContentRestorer))(texture));
4530
4616
  resolve(texture);
4531
4617
  }).catch(reject);
4532
4618
  });
4533
4619
  };
4620
+ /**
4621
+ * @internal
4622
+ */ HDRLoader1._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
4623
+ var bufferArray = new Uint8Array(buffer);
4624
+ var _HDRLoader__parseHeader = HDRLoader._parseHeader(bufferArray), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
4625
+ var cubeSize = height >> 1;
4626
+ texture || (texture = new engineCore.TextureCube(engine, cubeSize));
4627
+ var pixels = HDRLoader._readPixels(bufferArray.subarray(dataPosition), width, height);
4628
+ var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
4629
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
4630
+ texture.setPixelBuffer(engineCore.TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
4631
+ }
4632
+ texture.generateMipmaps();
4633
+ return texture;
4634
+ };
4534
4635
  HDRLoader1._convertToCubemap = function _convertToCubemap(pixels, inputWidth, inputHeight, size) {
4535
4636
  if (!pixels) {
4536
4637
  throw "ConvertPanoramaToCubemap: input cannot be null";
@@ -5068,7 +5169,8 @@ var KTXLoader = /*#__PURE__*/ function(Loader1) {
5068
5169
  _proto.load = function load(item, resourceManager) {
5069
5170
  var _this = this;
5070
5171
  return new engineCore.AssetPromise(function(resolve, reject) {
5071
- _this.request(item.url, _extends({}, item, {
5172
+ var request = _this.request;
5173
+ request(item.url, _extends({}, item, {
5072
5174
  type: "arraybuffer"
5073
5175
  })).then(function(bin) {
5074
5176
  var parsedData = parseSingleKTX(bin);
@@ -5079,6 +5181,32 @@ var KTXLoader = /*#__PURE__*/ function(Loader1) {
5079
5181
  var _mipmaps_miplevel = mipmaps[miplevel], width1 = _mipmaps_miplevel.width, height1 = _mipmaps_miplevel.height, data = _mipmaps_miplevel.data;
5080
5182
  texture.setPixelBuffer(data, miplevel, 0, 0, width1, height1);
5081
5183
  }
5184
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
5185
+ _inherits(_class, ContentRestorer);
5186
+ function _class() {
5187
+ return ContentRestorer.apply(this, arguments);
5188
+ }
5189
+ var _proto = _class.prototype;
5190
+ _proto.restoreContent = function restoreContent() {
5191
+ var _this = this;
5192
+ return new engineCore.AssetPromise(function(resolve, reject) {
5193
+ request(item.url, _extends({}, item, {
5194
+ type: "arraybuffer"
5195
+ })).then(function(bin) {
5196
+ var mipmaps = parseSingleKTX(bin).mipmaps;
5197
+ var texture = _this.resource;
5198
+ for(var miplevel = 0; miplevel < mipmaps.length; miplevel++){
5199
+ var _mipmaps_miplevel = mipmaps[miplevel], width = _mipmaps_miplevel.width, height = _mipmaps_miplevel.height, data = _mipmaps_miplevel.data;
5200
+ texture.setPixelBuffer(data, miplevel, 0, 0, width, height);
5201
+ }
5202
+ resolve(texture);
5203
+ }).catch(function(e) {
5204
+ reject(e);
5205
+ });
5206
+ });
5207
+ };
5208
+ return _class;
5209
+ }(engineCore.ContentRestorer))(texture));
5082
5210
  resolve(texture);
5083
5211
  }).catch(function(e) {
5084
5212
  reject(e);
@@ -5185,11 +5313,32 @@ var MeshLoader = /*#__PURE__*/ function(Loader1) {
5185
5313
  _proto.load = function load(item, resourceManager) {
5186
5314
  var _this = this;
5187
5315
  return new engineCore.AssetPromise(function(resolve, reject) {
5188
- _this.request(item.url, _extends({}, item, {
5316
+ var request = _this.request;
5317
+ var engine = resourceManager.engine;
5318
+ request(item.url, _extends({}, item, {
5189
5319
  type: "arraybuffer"
5190
5320
  })).then(function(data) {
5191
- return decode(data, resourceManager.engine);
5321
+ return decode(data, engine);
5192
5322
  }).then(function(mesh) {
5323
+ resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
5324
+ _inherits(_class, ContentRestorer);
5325
+ function _class() {
5326
+ return ContentRestorer.apply(this, arguments);
5327
+ }
5328
+ var _proto = _class.prototype;
5329
+ _proto.restoreContent = function restoreContent() {
5330
+ return new engineCore.AssetPromise(function(resolve, reject) {
5331
+ request(item.url, _extends({}, item, {
5332
+ type: "arraybuffer"
5333
+ })).then(function(data) {
5334
+ return decode(data, engine, mesh);
5335
+ }).then(function(mesh) {
5336
+ resolve(mesh);
5337
+ }).catch(reject);
5338
+ });
5339
+ };
5340
+ return _class;
5341
+ }(engineCore.ContentRestorer))(mesh));
5193
5342
  resolve(mesh);
5194
5343
  }).catch(reject);
5195
5344
  });