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