@galacean/engine-loader 1.4.14 → 1.4.16

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, AnimationClip, AnimationEvent, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ReferResource, Scene, resourceLoader, AssetPromise, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, AmbientLight, DiffuseMode, TextureCube, TextureFilterMode, TextureCubeFace, request, ContentRestorer, Font, Animator, IndexFormat, VertexElementFormat, GLCapabilityType, Logger, TextureFormat, InterpolationType, SkinnedMeshRenderer, PBRMaterial, PBRSpecularMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, AnimatorStateMachine, SystemInfo, Shader, Material, PrimitiveMesh, SpriteAtlas, Sprite, AudioClip, AudioManager, ShaderFactory, ShaderLib, PhysicsMaterial, BackgroundMode, DirectLight, PointLight, SpotLight, UnlitMaterial } from '@galacean/engine-core';
2
- import { Color, Vector4, Vector3, Vector2, Quaternion, SphericalHarmonics3, MathUtil, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
1
+ import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, resourceLoader, ContentRestorer, ReferResource, Scene, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, AmbientLight, DiffuseMode, TextureCube, TextureFilterMode, TextureCubeFace, Font, SystemInfo, Animator, Logger, IndexFormat, VertexElementFormat, GLCapabilityType, TextureFormat, request, InterpolationType, SkinnedMeshRenderer, PBRMaterial, PBRSpecularMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, AnimatorStateMachine, Shader, Material, PrimitiveMesh, SpriteAtlas, Sprite, AudioClip, AudioManager, ShaderFactory, ShaderLib, PhysicsMaterial, BackgroundMode, DirectLight, PointLight, SpotLight, 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
 
5
5
  function _extends() {
@@ -285,11 +285,216 @@ var FileHeader = /*#__PURE__*/ function() {
285
285
  return FileHeader;
286
286
  }();
287
287
 
288
+ var InterpolableValueType = /*#__PURE__*/ function(InterpolableValueType) {
289
+ InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
290
+ InterpolableValueType[InterpolableValueType["FloatArray"] = 1] = "FloatArray";
291
+ InterpolableValueType[InterpolableValueType["Vector2"] = 2] = "Vector2";
292
+ InterpolableValueType[InterpolableValueType["Vector3"] = 3] = "Vector3";
293
+ InterpolableValueType[InterpolableValueType["Vector4"] = 4] = "Vector4";
294
+ InterpolableValueType[InterpolableValueType["Quaternion"] = 5] = "Quaternion";
295
+ InterpolableValueType[InterpolableValueType["Color"] = 6] = "Color";
296
+ InterpolableValueType[InterpolableValueType["Array"] = 7] = "Array";
297
+ InterpolableValueType[InterpolableValueType["Boolean"] = 8] = "Boolean";
298
+ InterpolableValueType[InterpolableValueType["Rect"] = 9] = "Rect";
299
+ InterpolableValueType[InterpolableValueType["ReferResource"] = 10] = "ReferResource";
300
+ return InterpolableValueType;
301
+ }({});
302
+ var AnimationClipDecoder = /*#__PURE__*/ function() {
303
+ function AnimationClipDecoder() {}
304
+ AnimationClipDecoder.decode = function decode(engine, bufferReader) {
305
+ return new AssetPromise(function(resolve) {
306
+ var name = bufferReader.nextStr();
307
+ var clip = new AnimationClip(name);
308
+ var eventsLen = bufferReader.nextUint16();
309
+ for(var i = 0; i < eventsLen; ++i){
310
+ var event = new AnimationEvent();
311
+ event.time = bufferReader.nextFloat32();
312
+ event.functionName = bufferReader.nextStr();
313
+ event.parameter = JSON.parse(bufferReader.nextStr()).val;
314
+ clip.addEvent(event);
315
+ }
316
+ var curveBindingsLen = bufferReader.nextUint16();
317
+ for(var i1 = 0; i1 < curveBindingsLen; ++i1){
318
+ var relativePath = bufferReader.nextStr();
319
+ var componentStr = bufferReader.nextStr();
320
+ var componentType = Loader.getClass(componentStr);
321
+ var property = bufferReader.nextStr();
322
+ var getProperty = bufferReader.nextStr();
323
+ var curve = void 0;
324
+ var interpolation = bufferReader.nextUint8();
325
+ var keysLen = bufferReader.nextUint16();
326
+ var curveType = bufferReader.nextStr();
327
+ switch(curveType){
328
+ case "AnimationFloatCurve":
329
+ {
330
+ curve = new AnimationFloatCurve();
331
+ curve.interpolation = interpolation;
332
+ for(var j = 0; j < keysLen; ++j){
333
+ var keyframe = new Keyframe();
334
+ keyframe.time = bufferReader.nextFloat32();
335
+ keyframe.value = bufferReader.nextFloat32();
336
+ keyframe.inTangent = bufferReader.nextFloat32();
337
+ keyframe.outTangent = bufferReader.nextFloat32();
338
+ curve.addKey(keyframe);
339
+ }
340
+ break;
341
+ }
342
+ case "AnimationArrayCurve":
343
+ {
344
+ curve = new AnimationArrayCurve();
345
+ curve.interpolation = interpolation;
346
+ for(var j1 = 0; j1 < keysLen; ++j1){
347
+ var keyframe1 = new Keyframe();
348
+ keyframe1.time = bufferReader.nextFloat32();
349
+ var len = bufferReader.nextUint16();
350
+ keyframe1.value = Array.from(bufferReader.nextFloat32Array(len));
351
+ keyframe1.inTangent = Array.from(bufferReader.nextFloat32Array(len));
352
+ keyframe1.outTangent = Array.from(bufferReader.nextFloat32Array(len));
353
+ curve.addKey(keyframe1);
354
+ }
355
+ break;
356
+ }
357
+ case "AnimationFloatArrayCurve":
358
+ {
359
+ curve = new AnimationFloatArrayCurve();
360
+ curve.interpolation = interpolation;
361
+ for(var j2 = 0; j2 < keysLen; ++j2){
362
+ var keyframe2 = new Keyframe();
363
+ keyframe2.time = bufferReader.nextFloat32();
364
+ var len1 = bufferReader.nextUint16();
365
+ keyframe2.value = bufferReader.nextFloat32Array(len1);
366
+ keyframe2.inTangent = Array.from(bufferReader.nextFloat32Array(len1));
367
+ keyframe2.outTangent = Array.from(bufferReader.nextFloat32Array(len1));
368
+ curve.addKey(keyframe2);
369
+ }
370
+ break;
371
+ }
372
+ case "AnimationVector2Curve":
373
+ {
374
+ curve = new AnimationVector2Curve();
375
+ curve.interpolation = interpolation;
376
+ for(var j3 = 0; j3 < keysLen; ++j3){
377
+ var keyframe3 = new Keyframe();
378
+ keyframe3.time = bufferReader.nextFloat32();
379
+ keyframe3.value = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
380
+ keyframe3.inTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
381
+ keyframe3.outTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
382
+ curve.addKey(keyframe3);
383
+ }
384
+ break;
385
+ }
386
+ case "AnimationVector3Curve":
387
+ {
388
+ curve = new AnimationVector3Curve();
389
+ curve.interpolation = interpolation;
390
+ for(var j4 = 0; j4 < keysLen; ++j4){
391
+ var keyframe4 = new Keyframe();
392
+ keyframe4.time = bufferReader.nextFloat32();
393
+ keyframe4.value = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
394
+ keyframe4.inTangent = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
395
+ keyframe4.outTangent = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
396
+ curve.addKey(keyframe4);
397
+ }
398
+ break;
399
+ }
400
+ case "AnimationVector4Curve":
401
+ {
402
+ curve = new AnimationVector4Curve();
403
+ curve.interpolation = interpolation;
404
+ var keyframe5 = new Keyframe();
405
+ keyframe5.time = bufferReader.nextFloat32();
406
+ keyframe5.value = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
407
+ keyframe5.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
408
+ keyframe5.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
409
+ curve.addKey(keyframe5);
410
+ break;
411
+ }
412
+ case "AnimationColorCurve":
413
+ {
414
+ curve = new AnimationColorCurve();
415
+ curve.interpolation = interpolation;
416
+ for(var j5 = 0; j5 < keysLen; ++j5){
417
+ var keyframe6 = new Keyframe();
418
+ keyframe6.time = bufferReader.nextFloat32();
419
+ keyframe6.value = new Color(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
420
+ keyframe6.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
421
+ keyframe6.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
422
+ curve.addKey(keyframe6);
423
+ }
424
+ break;
425
+ }
426
+ case "AnimationQuaternionCurve":
427
+ {
428
+ curve = new AnimationQuaternionCurve();
429
+ curve.interpolation = interpolation;
430
+ for(var j6 = 0; j6 < keysLen; ++j6){
431
+ var keyframe7 = new Keyframe();
432
+ keyframe7.time = bufferReader.nextFloat32();
433
+ keyframe7.value = new Quaternion(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
434
+ keyframe7.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
435
+ keyframe7.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
436
+ curve.addKey(keyframe7);
437
+ }
438
+ break;
439
+ }
440
+ case "AnimationRefCurve":
441
+ {
442
+ curve = new AnimationRefCurve();
443
+ curve.interpolation = interpolation;
444
+ for(var j7 = 0; j7 < keysLen; ++j7){
445
+ var keyframe8 = new Keyframe();
446
+ keyframe8.time = bufferReader.nextFloat32();
447
+ var str = bufferReader.nextStr();
448
+ if (str) {
449
+ keyframe8.value = JSON.parse(str);
450
+ } else {
451
+ keyframe8.value = null;
452
+ }
453
+ curve.addKey(keyframe8);
454
+ }
455
+ break;
456
+ }
457
+ case "AnimationBoolCurve":
458
+ {
459
+ curve = new AnimationBoolCurve();
460
+ curve.interpolation = interpolation;
461
+ for(var j8 = 0; j8 < keysLen; ++j8){
462
+ var keyframe9 = new Keyframe();
463
+ keyframe9.time = bufferReader.nextFloat32();
464
+ keyframe9.value = bufferReader.nextUint8() === 1;
465
+ curve.addKey(keyframe9);
466
+ }
467
+ break;
468
+ }
469
+ case "AnimationStringCurve":
470
+ {
471
+ curve = new AnimationStringCurve();
472
+ curve.interpolation = interpolation;
473
+ for(var j9 = 0; j9 < keysLen; ++j9){
474
+ var keyframe10 = new Keyframe();
475
+ keyframe10.time = bufferReader.nextFloat32();
476
+ keyframe10.value = bufferReader.nextStr();
477
+ curve.addKey(keyframe10);
478
+ }
479
+ break;
480
+ }
481
+ }
482
+ clip.addCurveBinding(relativePath, componentType, property, getProperty, curve);
483
+ }
484
+ resolve(clip);
485
+ });
486
+ };
487
+ return AnimationClipDecoder;
488
+ }();
489
+ AnimationClipDecoder = __decorate([
490
+ decoder("AnimationClip")
491
+ ], AnimationClipDecoder);
492
+
288
493
  var MeshDecoder = /*#__PURE__*/ function() {
289
494
  function MeshDecoder() {}
290
- MeshDecoder.decode = function decode(engine, bufferReader) {
291
- return new Promise(function(resolve) {
292
- var modelMesh = new ModelMesh(engine);
495
+ MeshDecoder.decode = function decode(engine, bufferReader, restoredMesh) {
496
+ return new AssetPromise(function(resolve) {
497
+ var modelMesh = restoredMesh || new ModelMesh(engine);
293
498
  var jsonDataString = bufferReader.nextStr();
294
499
  var encodedMeshData = JSON.parse(jsonDataString);
295
500
  // @ts-ignore Vector3 is not compatible with {x: number, y: number, z: number}.
@@ -419,81 +624,6 @@ function float32ArrayToVector2(float32Array, vertexCount) {
419
624
  return array;
420
625
  }
421
626
 
422
- var Texture2DDecoder = /*#__PURE__*/ function() {
423
- function Texture2DDecoder() {}
424
- Texture2DDecoder.decode = function decode(engine, bufferReader) {
425
- return new Promise(function(resolve, reject) {
426
- var objectId = bufferReader.nextStr();
427
- var mipmap = !!bufferReader.nextUint8();
428
- var filterMode = bufferReader.nextUint8();
429
- var anisoLevel = bufferReader.nextUint8();
430
- var wrapModeU = bufferReader.nextUint8();
431
- var wrapModeV = bufferReader.nextUint8();
432
- var format = bufferReader.nextUint8();
433
- var width = bufferReader.nextUint16();
434
- var height = bufferReader.nextUint16();
435
- var isPixelBuffer = bufferReader.nextUint8();
436
- var mipCount = bufferReader.nextUint8();
437
- var imagesData = bufferReader.nextImagesData(mipCount);
438
- var texture2D = new Texture2D(engine, width, height, format, mipmap);
439
- texture2D.filterMode = filterMode;
440
- texture2D.anisoLevel = anisoLevel;
441
- texture2D.wrapModeU = wrapModeU;
442
- texture2D.wrapModeV = wrapModeV;
443
- if (isPixelBuffer) {
444
- var pixelBuffer = imagesData[0];
445
- texture2D.setPixelBuffer(pixelBuffer);
446
- if (mipmap) {
447
- texture2D.generateMipmaps();
448
- for(var i = 1; i < mipCount; i++){
449
- var pixelBuffer1 = imagesData[i];
450
- texture2D.setPixelBuffer(pixelBuffer1, i);
451
- }
452
- }
453
- // @ts-ignore
454
- engine.resourceManager._objectPool[objectId] = texture2D;
455
- resolve(texture2D);
456
- } else {
457
- var blob = new window.Blob([
458
- imagesData[0]
459
- ]);
460
- var img = new Image();
461
- img.onload = function() {
462
- texture2D.setImageSource(img);
463
- var completedCount = 0;
464
- var onComplete = function() {
465
- completedCount++;
466
- if (completedCount >= mipCount) {
467
- resolve(texture2D);
468
- }
469
- };
470
- onComplete();
471
- if (mipmap) {
472
- var _loop = function(i) {
473
- var blob = new window.Blob([
474
- imagesData[i]
475
- ]);
476
- var img = new Image();
477
- img.onload = function() {
478
- texture2D.setImageSource(img, i);
479
- onComplete();
480
- };
481
- img.src = URL.createObjectURL(blob);
482
- };
483
- texture2D.generateMipmaps();
484
- for(var i = 1; i < mipCount; i++)_loop(i);
485
- }
486
- };
487
- img.src = URL.createObjectURL(blob);
488
- }
489
- });
490
- };
491
- return Texture2DDecoder;
492
- }();
493
- Texture2DDecoder = __decorate([
494
- decoder("Texture2D")
495
- ], Texture2DDecoder);
496
-
497
627
  function _is_native_reflect_construct() {
498
628
  // Since Reflect.construct can't be properly polyfilled, some
499
629
  // implementations (e.g. core-js@2) don't set the correct internal slots.
@@ -672,333 +802,232 @@ var ReflectionParser = /*#__PURE__*/ function() {
672
802
  _proto.parseBasicType = function parseBasicType(value, originValue) {
673
803
  var _this = this;
674
804
  if (Array.isArray(value)) {
675
- return Promise.all(value.map(function(item) {
676
- return _this.parseBasicType(item);
677
- }));
678
- } else if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && value != null) {
679
- if (ReflectionParser._isClassType(value)) {
680
- return Promise.resolve(Loader.getClass(value["classType"]));
681
- } else if (ReflectionParser._isClass(value)) {
682
- // class object
683
- return this.parseClassObject(value);
684
- } else if (ReflectionParser._isAssetRef(value)) {
685
- var _this1 = this, context = _this1._context;
686
- // reference object
687
- // @ts-ignore
688
- return context.resourceManager.getResourceByRef(value).then(function(resource) {
689
- if (context.type === ParserType.Prefab) {
690
- // @ts-ignore
691
- context.resource._addDependenceAsset(resource);
692
- }
693
- return resource;
694
- });
695
- } else if (ReflectionParser._isComponentRef(value)) {
696
- return this._context.getComponentByRef(value);
697
- } else if (ReflectionParser._isEntityRef(value)) {
698
- // entity reference
699
- return Promise.resolve(this._context.entityMap.get(value.entityId));
700
- } else if (originValue) {
701
- var _this2, _loop = function(key) {
702
- if (key === "methods") {
703
- var methods = value[key];
704
- for(var methodName in methods){
705
- var methodParams = methods[methodName];
706
- for(var i = 0, count = methodParams.length; i < count; i++){
707
- var params = methodParams[i];
708
- var promise = _this2.parseMethod(originValue, methodName, params);
709
- promises.push(promise);
710
- }
711
- }
712
- } else {
713
- promises.push(_this2.parseBasicType(value[key], originValue[key]).then(function(v) {
714
- return originValue[key] = v;
715
- }));
716
- }
717
- };
718
- var promises = [];
719
- for(var key in value)_this2 = this, _loop(key);
720
- return Promise.all(promises).then(function() {
721
- return originValue;
722
- });
723
- }
724
- }
725
- // primitive type
726
- return Promise.resolve(value);
727
- };
728
- _proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
729
- var _this = this;
730
- // @ts-ignore
731
- var assetRefId = entityConfig.assetRefId;
732
- var engine = this._context.engine;
733
- if (assetRefId) {
734
- return engine.resourceManager// @ts-ignore
735
- .getResourceByRef({
736
- refId: assetRefId,
737
- key: entityConfig.key,
738
- isClone: entityConfig.isClone
739
- }).then(function(entity) {
740
- // @ts-ignore
741
- var resource = engine.resourceManager._objectPool[assetRefId];
742
- if (_this._context.type === ParserType.Prefab) {
743
- // @ts-ignore
744
- _this._context.resource._addDependenceAsset(resource);
745
- }
746
- entity.name = entityConfig.name;
747
- return entity;
748
- });
749
- } else {
750
- var transform = entityConfig.transform;
751
- var entity = new Entity(engine, entityConfig.name, transform ? Loader.getClass(transform.class) : Transform);
752
- return Promise.resolve(entity);
753
- }
754
- };
755
- ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
756
- this.customParseComponentHandles[componentType] = handle;
757
- };
758
- ReflectionParser._isClass = function _isClass(value) {
759
- return value["class"] !== undefined;
760
- };
761
- ReflectionParser._isClassType = function _isClassType(value) {
762
- return value["classType"] !== undefined;
763
- };
764
- ReflectionParser._isAssetRef = function _isAssetRef(value) {
765
- return value["refId"] !== undefined;
766
- };
767
- ReflectionParser._isEntityRef = function _isEntityRef(value) {
768
- return value["entityId"] !== undefined;
769
- };
770
- ReflectionParser._isComponentRef = function _isComponentRef(value) {
771
- return value["ownerId"] !== undefined && value["componentId"] !== undefined;
772
- };
773
- ReflectionParser._isMethodObject = function _isMethodObject(value) {
774
- return Array.isArray(value == null ? void 0 : value.params);
775
- };
776
- return ReflectionParser;
777
- }();
778
- ReflectionParser.customParseComponentHandles = new Map();
779
-
780
- var InterpolableValueType = /*#__PURE__*/ function(InterpolableValueType) {
781
- InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
782
- InterpolableValueType[InterpolableValueType["FloatArray"] = 1] = "FloatArray";
783
- InterpolableValueType[InterpolableValueType["Vector2"] = 2] = "Vector2";
784
- InterpolableValueType[InterpolableValueType["Vector3"] = 3] = "Vector3";
785
- InterpolableValueType[InterpolableValueType["Vector4"] = 4] = "Vector4";
786
- InterpolableValueType[InterpolableValueType["Quaternion"] = 5] = "Quaternion";
787
- InterpolableValueType[InterpolableValueType["Color"] = 6] = "Color";
788
- InterpolableValueType[InterpolableValueType["Array"] = 7] = "Array";
789
- InterpolableValueType[InterpolableValueType["Boolean"] = 8] = "Boolean";
790
- InterpolableValueType[InterpolableValueType["Rect"] = 9] = "Rect";
791
- InterpolableValueType[InterpolableValueType["ReferResource"] = 10] = "ReferResource";
792
- return InterpolableValueType;
793
- }({});
794
- var AnimationClipDecoder = /*#__PURE__*/ function() {
795
- function AnimationClipDecoder() {}
796
- AnimationClipDecoder.decode = function decode(engine, bufferReader) {
797
- return new Promise(function(resolve) {
798
- var name = bufferReader.nextStr();
799
- var clip = new AnimationClip(name);
800
- var eventsLen = bufferReader.nextUint16();
801
- for(var i = 0; i < eventsLen; ++i){
802
- var event = new AnimationEvent();
803
- event.time = bufferReader.nextFloat32();
804
- event.functionName = bufferReader.nextStr();
805
- event.parameter = JSON.parse(bufferReader.nextStr()).val;
806
- clip.addEvent(event);
807
- }
808
- var curveBindingsLen = bufferReader.nextUint16();
809
- for(var i1 = 0; i1 < curveBindingsLen; ++i1){
810
- var relativePath = bufferReader.nextStr();
811
- var componentStr = bufferReader.nextStr();
812
- var componentType = Loader.getClass(componentStr);
813
- var property = bufferReader.nextStr();
814
- var getProperty = bufferReader.nextStr();
815
- var curve = void 0;
816
- var interpolation = bufferReader.nextUint8();
817
- var keysLen = bufferReader.nextUint16();
818
- var curveType = bufferReader.nextStr();
819
- switch(curveType){
820
- case "AnimationFloatCurve":
821
- {
822
- curve = new AnimationFloatCurve();
823
- curve.interpolation = interpolation;
824
- for(var j = 0; j < keysLen; ++j){
825
- var keyframe = new Keyframe();
826
- keyframe.time = bufferReader.nextFloat32();
827
- keyframe.value = bufferReader.nextFloat32();
828
- keyframe.inTangent = bufferReader.nextFloat32();
829
- keyframe.outTangent = bufferReader.nextFloat32();
830
- curve.addKey(keyframe);
831
- }
832
- break;
833
- }
834
- case "AnimationArrayCurve":
835
- {
836
- curve = new AnimationArrayCurve();
837
- curve.interpolation = interpolation;
838
- for(var j1 = 0; j1 < keysLen; ++j1){
839
- var keyframe1 = new Keyframe();
840
- keyframe1.time = bufferReader.nextFloat32();
841
- var len = bufferReader.nextUint16();
842
- keyframe1.value = Array.from(bufferReader.nextFloat32Array(len));
843
- keyframe1.inTangent = Array.from(bufferReader.nextFloat32Array(len));
844
- keyframe1.outTangent = Array.from(bufferReader.nextFloat32Array(len));
845
- curve.addKey(keyframe1);
846
- }
847
- break;
848
- }
849
- case "AnimationFloatArrayCurve":
850
- {
851
- curve = new AnimationFloatArrayCurve();
852
- curve.interpolation = interpolation;
853
- for(var j2 = 0; j2 < keysLen; ++j2){
854
- var keyframe2 = new Keyframe();
855
- keyframe2.time = bufferReader.nextFloat32();
856
- var len1 = bufferReader.nextUint16();
857
- keyframe2.value = bufferReader.nextFloat32Array(len1);
858
- keyframe2.inTangent = Array.from(bufferReader.nextFloat32Array(len1));
859
- keyframe2.outTangent = Array.from(bufferReader.nextFloat32Array(len1));
860
- curve.addKey(keyframe2);
861
- }
862
- break;
863
- }
864
- case "AnimationVector2Curve":
865
- {
866
- curve = new AnimationVector2Curve();
867
- curve.interpolation = interpolation;
868
- for(var j3 = 0; j3 < keysLen; ++j3){
869
- var keyframe3 = new Keyframe();
870
- keyframe3.time = bufferReader.nextFloat32();
871
- keyframe3.value = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
872
- keyframe3.inTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
873
- keyframe3.outTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());
874
- curve.addKey(keyframe3);
875
- }
876
- break;
877
- }
878
- case "AnimationVector3Curve":
879
- {
880
- curve = new AnimationVector3Curve();
881
- curve.interpolation = interpolation;
882
- for(var j4 = 0; j4 < keysLen; ++j4){
883
- var keyframe4 = new Keyframe();
884
- keyframe4.time = bufferReader.nextFloat32();
885
- keyframe4.value = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
886
- keyframe4.inTangent = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
887
- keyframe4.outTangent = new Vector3(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
888
- curve.addKey(keyframe4);
889
- }
890
- break;
891
- }
892
- case "AnimationVector4Curve":
893
- {
894
- curve = new AnimationVector4Curve();
895
- curve.interpolation = interpolation;
896
- var keyframe5 = new Keyframe();
897
- keyframe5.time = bufferReader.nextFloat32();
898
- keyframe5.value = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
899
- keyframe5.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
900
- keyframe5.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
901
- curve.addKey(keyframe5);
902
- break;
903
- }
904
- case "AnimationColorCurve":
905
- {
906
- curve = new AnimationColorCurve();
907
- curve.interpolation = interpolation;
908
- for(var j5 = 0; j5 < keysLen; ++j5){
909
- var keyframe6 = new Keyframe();
910
- keyframe6.time = bufferReader.nextFloat32();
911
- keyframe6.value = new Color(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
912
- keyframe6.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
913
- keyframe6.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
914
- curve.addKey(keyframe6);
915
- }
916
- break;
917
- }
918
- case "AnimationQuaternionCurve":
919
- {
920
- curve = new AnimationQuaternionCurve();
921
- curve.interpolation = interpolation;
922
- for(var j6 = 0; j6 < keysLen; ++j6){
923
- var keyframe7 = new Keyframe();
924
- keyframe7.time = bufferReader.nextFloat32();
925
- keyframe7.value = new Quaternion(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
926
- keyframe7.inTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
927
- keyframe7.outTangent = new Vector4(bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32(), bufferReader.nextFloat32());
928
- curve.addKey(keyframe7);
929
- }
930
- break;
931
- }
932
- case "AnimationRefCurve":
933
- {
934
- curve = new AnimationRefCurve();
935
- curve.interpolation = interpolation;
936
- for(var j7 = 0; j7 < keysLen; ++j7){
937
- var keyframe8 = new Keyframe();
938
- keyframe8.time = bufferReader.nextFloat32();
939
- var str = bufferReader.nextStr();
940
- if (str) {
941
- keyframe8.value = JSON.parse(str);
942
- } else {
943
- keyframe8.value = null;
944
- }
945
- curve.addKey(keyframe8);
946
- }
947
- break;
948
- }
949
- case "AnimationBoolCurve":
950
- {
951
- curve = new AnimationBoolCurve();
952
- curve.interpolation = interpolation;
953
- for(var j8 = 0; j8 < keysLen; ++j8){
954
- var keyframe9 = new Keyframe();
955
- keyframe9.time = bufferReader.nextFloat32();
956
- keyframe9.value = bufferReader.nextUint8() === 1;
957
- curve.addKey(keyframe9);
958
- }
959
- break;
960
- }
961
- case "AnimationStringCurve":
962
- {
963
- curve = new AnimationStringCurve();
964
- curve.interpolation = interpolation;
965
- for(var j9 = 0; j9 < keysLen; ++j9){
966
- var keyframe10 = new Keyframe();
967
- keyframe10.time = bufferReader.nextFloat32();
968
- keyframe10.value = bufferReader.nextStr();
969
- curve.addKey(keyframe10);
805
+ return Promise.all(value.map(function(item) {
806
+ return _this.parseBasicType(item);
807
+ }));
808
+ } else if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && value != null) {
809
+ if (ReflectionParser._isClassType(value)) {
810
+ return Promise.resolve(Loader.getClass(value["classType"]));
811
+ } else if (ReflectionParser._isClass(value)) {
812
+ // class object
813
+ return this.parseClassObject(value);
814
+ } else if (ReflectionParser._isAssetRef(value)) {
815
+ var _this1 = this, context = _this1._context;
816
+ // reference object
817
+ // @ts-ignore
818
+ return context.resourceManager.getResourceByRef(value).then(function(resource) {
819
+ if (context.type === ParserType.Prefab) {
820
+ // @ts-ignore
821
+ context.resource._addDependenceAsset(resource);
822
+ }
823
+ return resource;
824
+ });
825
+ } else if (ReflectionParser._isComponentRef(value)) {
826
+ return this._context.getComponentByRef(value);
827
+ } else if (ReflectionParser._isEntityRef(value)) {
828
+ // entity reference
829
+ return Promise.resolve(this._context.entityMap.get(value.entityId));
830
+ } else if (originValue) {
831
+ var _this2, _loop = function(key) {
832
+ if (key === "methods") {
833
+ var methods = value[key];
834
+ for(var methodName in methods){
835
+ var methodParams = methods[methodName];
836
+ for(var i = 0, count = methodParams.length; i < count; i++){
837
+ var params = methodParams[i];
838
+ var promise = _this2.parseMethod(originValue, methodName, params);
839
+ promises.push(promise);
970
840
  }
971
- break;
972
841
  }
842
+ } else {
843
+ promises.push(_this2.parseBasicType(value[key], originValue[key]).then(function(v) {
844
+ return originValue[key] = v;
845
+ }));
846
+ }
847
+ };
848
+ var promises = [];
849
+ for(var key in value)_this2 = this, _loop(key);
850
+ return Promise.all(promises).then(function() {
851
+ return originValue;
852
+ });
853
+ }
854
+ }
855
+ // primitive type
856
+ return Promise.resolve(value);
857
+ };
858
+ _proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
859
+ var _this = this;
860
+ // @ts-ignore
861
+ var assetRefId = entityConfig.assetRefId;
862
+ var engine = this._context.engine;
863
+ if (assetRefId) {
864
+ return engine.resourceManager// @ts-ignore
865
+ .getResourceByRef({
866
+ refId: assetRefId,
867
+ key: entityConfig.key,
868
+ isClone: entityConfig.isClone
869
+ }).then(function(entity) {
870
+ // @ts-ignore
871
+ var resource = engine.resourceManager._objectPool[assetRefId];
872
+ if (_this._context.type === ParserType.Prefab) {
873
+ // @ts-ignore
874
+ _this._context.resource._addDependenceAsset(resource);
973
875
  }
974
- clip.addCurveBinding(relativePath, componentType, property, getProperty, curve);
876
+ entity.name = entityConfig.name;
877
+ return entity;
878
+ });
879
+ } else {
880
+ var transform = entityConfig.transform;
881
+ var entity = new Entity(engine, entityConfig.name, transform ? Loader.getClass(transform.class) : Transform);
882
+ return Promise.resolve(entity);
883
+ }
884
+ };
885
+ ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
886
+ this.customParseComponentHandles[componentType] = handle;
887
+ };
888
+ ReflectionParser._isClass = function _isClass(value) {
889
+ return value["class"] !== undefined;
890
+ };
891
+ ReflectionParser._isClassType = function _isClassType(value) {
892
+ return value["classType"] !== undefined;
893
+ };
894
+ ReflectionParser._isAssetRef = function _isAssetRef(value) {
895
+ return value["refId"] !== undefined;
896
+ };
897
+ ReflectionParser._isEntityRef = function _isEntityRef(value) {
898
+ return value["entityId"] !== undefined;
899
+ };
900
+ ReflectionParser._isComponentRef = function _isComponentRef(value) {
901
+ return value["ownerId"] !== undefined && value["componentId"] !== undefined;
902
+ };
903
+ ReflectionParser._isMethodObject = function _isMethodObject(value) {
904
+ return Array.isArray(value == null ? void 0 : value.params);
905
+ };
906
+ return ReflectionParser;
907
+ }();
908
+ ReflectionParser.customParseComponentHandles = new Map();
909
+
910
+ var Texture2DDecoder = /*#__PURE__*/ function() {
911
+ function Texture2DDecoder() {}
912
+ Texture2DDecoder.decode = function decode(engine, bufferReader, restoredTexture) {
913
+ return new AssetPromise(function(resolve, reject) {
914
+ var objectId = bufferReader.nextStr();
915
+ var mipmap = !!bufferReader.nextUint8();
916
+ var filterMode = bufferReader.nextUint8();
917
+ var anisoLevel = bufferReader.nextUint8();
918
+ var wrapModeU = bufferReader.nextUint8();
919
+ var wrapModeV = bufferReader.nextUint8();
920
+ var format = bufferReader.nextUint8();
921
+ var width = bufferReader.nextUint16();
922
+ var height = bufferReader.nextUint16();
923
+ var isPixelBuffer = bufferReader.nextUint8();
924
+ var mipCount = bufferReader.nextUint8();
925
+ var imagesData = bufferReader.nextImagesData(mipCount);
926
+ var texture2D = restoredTexture || new Texture2D(engine, width, height, format, mipmap);
927
+ texture2D.filterMode = filterMode;
928
+ texture2D.anisoLevel = anisoLevel;
929
+ texture2D.wrapModeU = wrapModeU;
930
+ texture2D.wrapModeV = wrapModeV;
931
+ if (isPixelBuffer) {
932
+ var pixelBuffer = imagesData[0];
933
+ texture2D.setPixelBuffer(pixelBuffer);
934
+ if (mipmap) {
935
+ texture2D.generateMipmaps();
936
+ for(var i = 1; i < mipCount; i++){
937
+ var pixelBuffer1 = imagesData[i];
938
+ texture2D.setPixelBuffer(pixelBuffer1, i);
939
+ }
940
+ }
941
+ // @ts-ignore
942
+ engine.resourceManager._objectPool[objectId] = texture2D;
943
+ resolve(texture2D);
944
+ } else {
945
+ var blob = new window.Blob([
946
+ imagesData[0]
947
+ ]);
948
+ var img = new Image();
949
+ img.onload = function() {
950
+ texture2D.setImageSource(img);
951
+ var completedCount = 0;
952
+ var onComplete = function() {
953
+ completedCount++;
954
+ if (completedCount >= mipCount) {
955
+ resolve(texture2D);
956
+ }
957
+ };
958
+ onComplete();
959
+ if (mipmap) {
960
+ var _loop = function(i) {
961
+ var blob = new window.Blob([
962
+ imagesData[i]
963
+ ]);
964
+ var img = new Image();
965
+ img.onload = function() {
966
+ texture2D.setImageSource(img, i);
967
+ onComplete();
968
+ };
969
+ img.src = URL.createObjectURL(blob);
970
+ };
971
+ texture2D.generateMipmaps();
972
+ for(var i = 1; i < mipCount; i++)_loop(i);
973
+ }
974
+ };
975
+ img.src = URL.createObjectURL(blob);
975
976
  }
976
- resolve(clip);
977
977
  });
978
978
  };
979
- return AnimationClipDecoder;
979
+ return Texture2DDecoder;
980
980
  }();
981
- AnimationClipDecoder = __decorate([
982
- decoder("AnimationClip")
983
- ], AnimationClipDecoder);
984
-
985
- var MaterialLoaderType = /*#__PURE__*/ function(MaterialLoaderType) {
986
- MaterialLoaderType["Vector2"] = "Vector2";
987
- MaterialLoaderType["Vector3"] = "Vector3";
988
- MaterialLoaderType["Vector4"] = "Vector4";
989
- MaterialLoaderType["Color"] = "Color";
990
- MaterialLoaderType["Float"] = "Float";
991
- MaterialLoaderType["Texture"] = "Texture";
992
- MaterialLoaderType["Boolean"] = "Boolean";
993
- MaterialLoaderType["Integer"] = "Integer";
994
- return MaterialLoaderType;
995
- }({});
981
+ Texture2DDecoder = __decorate([
982
+ decoder("Texture2D")
983
+ ], Texture2DDecoder);
996
984
 
997
- var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
998
- SpecularMode["Sky"] = "Sky";
999
- SpecularMode["Custom"] = "Custom";
1000
- return SpecularMode;
1001
- }({});
985
+ var EditorTextureLoader = /*#__PURE__*/ function(Loader) {
986
+ _inherits(EditorTextureLoader, Loader);
987
+ function EditorTextureLoader() {
988
+ return Loader.apply(this, arguments) || this;
989
+ }
990
+ var _proto = EditorTextureLoader.prototype;
991
+ _proto.load = function load(item, resourceManager) {
992
+ var requestConfig = _extends({}, item, {
993
+ type: "arraybuffer"
994
+ });
995
+ var url = item.url;
996
+ return new AssetPromise(function(resolve, reject) {
997
+ resourceManager// @ts-ignore
998
+ ._request(url, requestConfig).then(function(data) {
999
+ decode(data, resourceManager.engine).then(function(texture) {
1000
+ resourceManager.addContentRestorer(new EditorTexture2DContentRestorer(texture, url, requestConfig));
1001
+ resolve(texture);
1002
+ });
1003
+ }).catch(reject);
1004
+ });
1005
+ };
1006
+ return EditorTextureLoader;
1007
+ }(Loader);
1008
+ EditorTextureLoader = __decorate([
1009
+ resourceLoader("EditorTexture2D", [
1010
+ "prefab"
1011
+ ], true)
1012
+ ], EditorTextureLoader);
1013
+ var EditorTexture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
1014
+ _inherits(EditorTexture2DContentRestorer, ContentRestorer);
1015
+ function EditorTexture2DContentRestorer(resource, url, requestConfig) {
1016
+ var _this;
1017
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
1018
+ return _this;
1019
+ }
1020
+ var _proto = EditorTexture2DContentRestorer.prototype;
1021
+ _proto.restoreContent = function restoreContent() {
1022
+ var texture = this.resource;
1023
+ var engine = texture.engine;
1024
+ return engine.resourceManager// @ts-ignore
1025
+ ._request(this.url, this.requestConfig).then(function(data) {
1026
+ return decode(data, engine, texture);
1027
+ });
1028
+ };
1029
+ return EditorTexture2DContentRestorer;
1030
+ }(ContentRestorer);
1002
1031
 
1003
1032
  function _instanceof(left, right) {
1004
1033
  if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
@@ -1401,43 +1430,35 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1401
1430
  * @param engine - the engine of the parser context
1402
1431
  * @param sceneData - scene data which is exported by editor
1403
1432
  * @returns a promise of scene
1404
- */ SceneParser.parse = function parse(engine, sceneData) {
1405
- var scene = new Scene(engine);
1406
- var context = new ParserContext(engine, ParserType.Scene, scene);
1407
- var parser = new SceneParser(sceneData, context, scene);
1408
- parser.start();
1409
- return parser.promise.then(function() {
1410
- return scene;
1411
- });
1412
- };
1413
- return SceneParser;
1414
- }(HierarchyParser);
1415
-
1416
- var EditorTextureLoader = /*#__PURE__*/ function(Loader) {
1417
- _inherits(EditorTextureLoader, Loader);
1418
- function EditorTextureLoader() {
1419
- return Loader.apply(this, arguments) || this;
1420
- }
1421
- var _proto = EditorTextureLoader.prototype;
1422
- _proto.load = function load(item, resourceManager) {
1423
- return new AssetPromise(function(resolve, reject) {
1424
- resourceManager// @ts-ignore
1425
- ._request(item.url, _extends({}, item, {
1426
- type: "arraybuffer"
1427
- })).then(function(data) {
1428
- decode(data, resourceManager.engine).then(function(texture) {
1429
- resolve(texture);
1430
- });
1431
- }).catch(reject);
1433
+ */ SceneParser.parse = function parse(engine, sceneData) {
1434
+ var scene = new Scene(engine);
1435
+ var context = new ParserContext(engine, ParserType.Scene, scene);
1436
+ var parser = new SceneParser(sceneData, context, scene);
1437
+ parser.start();
1438
+ return parser.promise.then(function() {
1439
+ return scene;
1432
1440
  });
1433
1441
  };
1434
- return EditorTextureLoader;
1435
- }(Loader);
1436
- EditorTextureLoader = __decorate([
1437
- resourceLoader("EditorTexture2D", [
1438
- "prefab"
1439
- ], true)
1440
- ], EditorTextureLoader);
1442
+ return SceneParser;
1443
+ }(HierarchyParser);
1444
+
1445
+ var MaterialLoaderType = /*#__PURE__*/ function(MaterialLoaderType) {
1446
+ MaterialLoaderType["Vector2"] = "Vector2";
1447
+ MaterialLoaderType["Vector3"] = "Vector3";
1448
+ MaterialLoaderType["Vector4"] = "Vector4";
1449
+ MaterialLoaderType["Color"] = "Color";
1450
+ MaterialLoaderType["Float"] = "Float";
1451
+ MaterialLoaderType["Texture"] = "Texture";
1452
+ MaterialLoaderType["Boolean"] = "Boolean";
1453
+ MaterialLoaderType["Integer"] = "Integer";
1454
+ return MaterialLoaderType;
1455
+ }({});
1456
+
1457
+ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1458
+ SpecularMode["Sky"] = "Sky";
1459
+ SpecularMode["Custom"] = "Custom";
1460
+ return SpecularMode;
1461
+ }({});
1441
1462
 
1442
1463
  /**
1443
1464
  * Decode engine binary resource.
@@ -1445,9 +1466,16 @@ EditorTextureLoader = __decorate([
1445
1466
  * @param engine - engine
1446
1467
  * @returns
1447
1468
  */ function decode(arrayBuffer, engine) {
1469
+ for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
1470
+ args[_key - 2] = arguments[_key];
1471
+ }
1472
+ var _decoderMap_header_type;
1448
1473
  var header = FileHeader.decode(arrayBuffer);
1449
1474
  var bufferReader = new BufferReader(new Uint8Array(arrayBuffer), header.headerLength, header.dataLength);
1450
- return decoderMap[header.type].decode(engine, bufferReader).then(function(object) {
1475
+ return (_decoderMap_header_type = decoderMap[header.type]).decode.apply(_decoderMap_header_type, [].concat([
1476
+ engine,
1477
+ bufferReader
1478
+ ], args)).then(function(object) {
1451
1479
  object.name = header.name;
1452
1480
  return object;
1453
1481
  });
@@ -1663,10 +1691,11 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
1663
1691
  type: "arraybuffer"
1664
1692
  });
1665
1693
  var engine = resourceManager.engine;
1694
+ var url = item.url;
1666
1695
  resourceManager// @ts-ignore
1667
- ._request(item.url, requestConfig).then(function(arraybuffer) {
1696
+ ._request(url, requestConfig).then(function(arraybuffer) {
1668
1697
  var texture = EnvLoader._setTextureByBuffer(engine, arraybuffer);
1669
- engine.resourceManager.addContentRestorer(new EnvContentRestorer(texture, item.url, requestConfig));
1698
+ engine.resourceManager.addContentRestorer(new EnvContentRestorer(texture, url, requestConfig));
1670
1699
  var ambientLight = new AmbientLight(engine);
1671
1700
  var sh = new SphericalHarmonics3();
1672
1701
  ambientLight.diffuseMode = DiffuseMode.SphericalHarmonics;
@@ -1721,9 +1750,12 @@ EnvLoader = __decorate([
1721
1750
  _proto.restoreContent = function restoreContent() {
1722
1751
  var _this = this;
1723
1752
  return new AssetPromise(function(resolve, reject) {
1724
- request(_this.url, _this.requestConfig).then(function(buffer) {
1725
- EnvLoader._setTextureByBuffer(_this.resource.engine, buffer, _this.resource);
1726
- resolve(_this.resource);
1753
+ var resource = _this.resource;
1754
+ var engine = resource.engine;
1755
+ engine.resourceManager// @ts-ignore
1756
+ ._request(_this.url, _this.requestConfig).then(function(buffer) {
1757
+ EnvLoader._setTextureByBuffer(engine, buffer, resource);
1758
+ resolve(resource);
1727
1759
  }).catch(reject);
1728
1760
  });
1729
1761
  };
@@ -1790,35 +1822,232 @@ var FontLoader = /*#__PURE__*/ function(Loader) {
1790
1822
  reject(e);
1791
1823
  });
1792
1824
  });
1793
- };
1794
- _proto._registerFont = function _registerFont(fontName, fontUrl) {
1795
- return _async_to_generator(function() {
1796
- var fontFace;
1797
- return __generator(this, function(_state) {
1798
- switch(_state.label){
1799
- case 0:
1800
- fontFace = new FontFace(fontName, "url(" + fontUrl + ")");
1801
- return [
1802
- 4,
1803
- fontFace.load()
1804
- ];
1805
- case 1:
1806
- _state.sent();
1807
- document.fonts.add(fontFace);
1808
- return [
1809
- 2
1810
- ];
1811
- }
1812
- });
1813
- })();
1814
- };
1815
- return FontLoader;
1816
- }(Loader);
1817
- FontLoader = __decorate([
1818
- resourceLoader(AssetType.Font, [
1819
- "font"
1820
- ], false)
1821
- ], FontLoader);
1825
+ };
1826
+ _proto._registerFont = function _registerFont(fontName, fontUrl) {
1827
+ return _async_to_generator(function() {
1828
+ var fontFace;
1829
+ return __generator(this, function(_state) {
1830
+ switch(_state.label){
1831
+ case 0:
1832
+ fontFace = new FontFace(fontName, "url(" + fontUrl + ")");
1833
+ return [
1834
+ 4,
1835
+ fontFace.load()
1836
+ ];
1837
+ case 1:
1838
+ _state.sent();
1839
+ document.fonts.add(fontFace);
1840
+ return [
1841
+ 2
1842
+ ];
1843
+ }
1844
+ });
1845
+ })();
1846
+ };
1847
+ return FontLoader;
1848
+ }(Loader);
1849
+ FontLoader = __decorate([
1850
+ resourceLoader(AssetType.Font, [
1851
+ "font"
1852
+ ], false)
1853
+ ], FontLoader);
1854
+
1855
+ // Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js
1856
+ var ready;
1857
+ function getMeshoptDecoder() {
1858
+ if (ready) return ready;
1859
+ var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb";
1860
+ var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb";
1861
+ var wasmpack = new Uint8Array([
1862
+ 32,
1863
+ 0,
1864
+ 65,
1865
+ 2,
1866
+ 1,
1867
+ 106,
1868
+ 34,
1869
+ 33,
1870
+ 3,
1871
+ 128,
1872
+ 11,
1873
+ 4,
1874
+ 13,
1875
+ 64,
1876
+ 6,
1877
+ 253,
1878
+ 10,
1879
+ 7,
1880
+ 15,
1881
+ 116,
1882
+ 127,
1883
+ 5,
1884
+ 8,
1885
+ 12,
1886
+ 40,
1887
+ 16,
1888
+ 19,
1889
+ 54,
1890
+ 20,
1891
+ 9,
1892
+ 27,
1893
+ 255,
1894
+ 113,
1895
+ 17,
1896
+ 42,
1897
+ 67,
1898
+ 24,
1899
+ 23,
1900
+ 146,
1901
+ 148,
1902
+ 18,
1903
+ 14,
1904
+ 22,
1905
+ 45,
1906
+ 70,
1907
+ 69,
1908
+ 56,
1909
+ 114,
1910
+ 101,
1911
+ 21,
1912
+ 25,
1913
+ 63,
1914
+ 75,
1915
+ 136,
1916
+ 108,
1917
+ 28,
1918
+ 118,
1919
+ 29,
1920
+ 73,
1921
+ 115
1922
+ ]);
1923
+ // @ts-ignore
1924
+ var wasm = SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;
1925
+ var instance;
1926
+ ready = WebAssembly.instantiate(unpack(wasm)).then(function(result) {
1927
+ instance = result.instance;
1928
+ instance.exports.__wasm_call_ctors();
1929
+ }).then(function() {
1930
+ return {
1931
+ workerCount: 4,
1932
+ ready: ready,
1933
+ useWorkers: function useWorkers(workerCount) {
1934
+ this.workerCount = workerCount != null ? workerCount : this.workerCount;
1935
+ initWorkers(this.workerCount);
1936
+ },
1937
+ decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
1938
+ if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
1939
+ if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
1940
+ return ready.then(function() {
1941
+ var target = new Uint8Array(count * stride);
1942
+ decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
1943
+ return target;
1944
+ });
1945
+ },
1946
+ release: function release() {
1947
+ for(var i = 0; i < workers.length; i++){
1948
+ workers[i].object.terminate();
1949
+ }
1950
+ }
1951
+ };
1952
+ });
1953
+ function unpack(data) {
1954
+ var result = new Uint8Array(data.length);
1955
+ for(var i = 0; i < data.length; ++i){
1956
+ var ch = data.charCodeAt(i);
1957
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
1958
+ }
1959
+ var write = 0;
1960
+ for(var i1 = 0; i1 < data.length; ++i1){
1961
+ result[write++] = result[i1] < 60 ? wasmpack[result[i1]] : (result[i1] - 60) * 64 + result[++i1];
1962
+ }
1963
+ return result.buffer.slice(0, write);
1964
+ }
1965
+ function decode(fun, target, count, size, source, filter) {
1966
+ var sbrk = instance.exports.sbrk;
1967
+ var count4 = count + 3 & ~3;
1968
+ var tp = sbrk(count4 * size);
1969
+ var sp = sbrk(source.length);
1970
+ var heap = new Uint8Array(instance.exports.memory.buffer);
1971
+ heap.set(source, sp);
1972
+ var res = fun(tp, count, size, sp, source.length);
1973
+ if (res == 0 && filter) {
1974
+ filter(tp, count4, size);
1975
+ }
1976
+ target.set(heap.subarray(tp, tp + count * size));
1977
+ sbrk(tp - sbrk(0));
1978
+ if (res != 0) {
1979
+ throw new Error("Malformed buffer data: " + res);
1980
+ }
1981
+ }
1982
+ var filters = {
1983
+ NONE: "",
1984
+ OCTAHEDRAL: "meshopt_decodeFilterOct",
1985
+ QUATERNION: "meshopt_decodeFilterQuat",
1986
+ EXPONENTIAL: "meshopt_decodeFilterExp"
1987
+ };
1988
+ var decoders = {
1989
+ ATTRIBUTES: "meshopt_decodeVertexBuffer",
1990
+ TRIANGLES: "meshopt_decodeIndexBuffer",
1991
+ INDICES: "meshopt_decodeIndexSequence"
1992
+ };
1993
+ var workers = [];
1994
+ var requestId = 0;
1995
+ function createWorker(url) {
1996
+ var worker = {
1997
+ object: new Worker(url),
1998
+ pending: 0,
1999
+ requests: {}
2000
+ };
2001
+ worker.object.onmessage = function(event) {
2002
+ var data = event.data;
2003
+ worker.pending -= data.count;
2004
+ worker.requests[data.id][data.action](data.value);
2005
+ delete worker.requests[data.id];
2006
+ };
2007
+ return worker;
2008
+ }
2009
+ function initWorkers(count) {
2010
+ var source = "var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" + ".then(function(result) {instance = result.instance; instance.exports.__wasm_call_ctors();});\n" + "self.onmessage = workerProcess;\n" + 'function decode(fun, target, count, size, source, filter) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error("Malformed buffer data: " + res);\n }\n }\n' + 'function workerProcess(event) {\n ready.then(function () {\n const data = event.data;\n try {\n const target = new Uint8Array(data.count * data.size);\n decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [target.buffer]);\n } catch (error) {\n self.postMessage({\n id: data.id,\n count: data.count,\n action: "reject",\n value: error\n });\n }\n });\n }';
2011
+ var blob = new Blob([
2012
+ source
2013
+ ], {
2014
+ type: "text/javascript"
2015
+ });
2016
+ var url = URL.createObjectURL(blob);
2017
+ for(var i = 0; i < count; ++i){
2018
+ workers[i] = createWorker(url);
2019
+ }
2020
+ URL.revokeObjectURL(url);
2021
+ }
2022
+ function decodeWorker(count, size, source, mode, filter) {
2023
+ var worker = workers[0];
2024
+ for(var i = 1; i < workers.length; ++i){
2025
+ if (workers[i].pending < worker.pending) {
2026
+ worker = workers[i];
2027
+ }
2028
+ }
2029
+ return new Promise(function(resolve, reject) {
2030
+ var data = new Uint8Array(source);
2031
+ var id = requestId++;
2032
+ worker.pending += count;
2033
+ worker.requests[id] = {
2034
+ resolve: resolve,
2035
+ reject: reject
2036
+ };
2037
+ worker.object.postMessage({
2038
+ id: id,
2039
+ count: count,
2040
+ size: size,
2041
+ source: data,
2042
+ mode: mode,
2043
+ filter: filter
2044
+ }, [
2045
+ data.buffer
2046
+ ]);
2047
+ });
2048
+ }
2049
+ return ready;
2050
+ }
1822
2051
 
1823
2052
  /**
1824
2053
  * The glTF resource.
@@ -1846,14 +2075,16 @@ FontLoader = __decorate([
1846
2075
  materials && this._disassociationSuperResource(materials);
1847
2076
  if (meshes) {
1848
2077
  for(var i = 0, n = meshes.length; i < n; i++){
1849
- this._disassociationSuperResource(meshes[i]);
2078
+ var meshArr = meshes[i];
2079
+ meshArr && this._disassociationSuperResource(meshArr);
1850
2080
  }
1851
2081
  }
1852
2082
  };
1853
2083
  _proto._disassociationSuperResource = function _disassociationSuperResource(resources) {
1854
2084
  for(var i = 0, n = resources.length; i < n; i++){
1855
- // @ts-ignore
1856
- resources[i]._disassociationSuperResource(this);
2085
+ var // @ts-ignore
2086
+ _resources_i;
2087
+ (_resources_i = resources[i]) == null ? void 0 : _resources_i._disassociationSuperResource(this);
1857
2088
  }
1858
2089
  };
1859
2090
  _create_class(GLTFResource, [
@@ -2053,6 +2284,7 @@ FontLoader = __decorate([
2053
2284
  this.params = params;
2054
2285
  this.accessorBufferCache = {};
2055
2286
  this.needAnimatorController = false;
2287
+ this./** @internal */ _getPromises = [];
2056
2288
  this._resourceCache = new Map();
2057
2289
  this._progress = {
2058
2290
  taskDetail: {},
@@ -2077,7 +2309,7 @@ FontLoader = __decorate([
2077
2309
  var _this = this;
2078
2310
  var parser = GLTFParserContext._parsers[type];
2079
2311
  if (!parser) {
2080
- return Promise.resolve(null);
2312
+ return AssetPromise.resolve(null);
2081
2313
  }
2082
2314
  var cache = this._resourceCache;
2083
2315
  var cacheKey = index === undefined ? "" + type : type + ":" + index;
@@ -2093,7 +2325,7 @@ FontLoader = __decorate([
2093
2325
  if (index === undefined) {
2094
2326
  resource = type === 8 ? glTFItems.map(function(_, index) {
2095
2327
  return _this.get(type, index);
2096
- }) : Promise.all(glTFItems.map(function(_, index) {
2328
+ }) : AssetPromise.all(glTFItems.map(function(_, index) {
2097
2329
  return _this.get(type, index);
2098
2330
  }));
2099
2331
  } else {
@@ -2101,12 +2333,15 @@ FontLoader = __decorate([
2101
2333
  isSubAsset && this._handleSubAsset(resource, type, index);
2102
2334
  }
2103
2335
  } else {
2104
- resource = Promise.resolve(null);
2336
+ resource = AssetPromise.resolve(null);
2105
2337
  }
2106
2338
  } else {
2107
2339
  resource = parser.parse(this, index);
2108
2340
  isSubAsset && this._handleSubAsset(resource, type, index);
2109
2341
  }
2342
+ if (_instanceof(resource, AssetPromise)) {
2343
+ this._getPromises.push(resource);
2344
+ }
2110
2345
  cache.set(cacheKey, resource);
2111
2346
  return resource;
2112
2347
  };
@@ -2115,7 +2350,7 @@ FontLoader = __decorate([
2115
2350
  var promise = this.get(0).then(function(json) {
2116
2351
  _this.glTF = json;
2117
2352
  _this.needAnimatorController = !!(json.skins || json.animations);
2118
- return Promise.all([
2353
+ return AssetPromise.all([
2119
2354
  _this.get(1),
2120
2355
  _this.get(5),
2121
2356
  _this.get(6),
@@ -2178,6 +2413,8 @@ FontLoader = __decorate([
2178
2413
  _this.resourceManager._onSubAssetSuccess(url, "defaultSceneRoot", item);
2179
2414
  }
2180
2415
  }
2416
+ }).catch(function(e) {
2417
+ Logger.error("GLTFParserContext", "Failed to load " + glTFResourceKey + " " + index + ": " + e);
2181
2418
  });
2182
2419
  }
2183
2420
  };
@@ -2356,13 +2593,15 @@ function registerGLTFParser(pipeline) {
2356
2593
  bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
2357
2594
  }
2358
2595
  return bufferInfo;
2596
+ }).catch(function(e) {
2597
+ Logger.error("GLTFUtil getAccessorBuffer error", e);
2359
2598
  });
2360
2599
  } else {
2361
2600
  var count = accessorCount * dataElementSize;
2362
2601
  var data = new TypedArray(count);
2363
2602
  var bufferInfo = new BufferInfo(data, false, elementStride);
2364
2603
  bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
2365
- promise = Promise.resolve(bufferInfo);
2604
+ promise = AssetPromise.resolve(bufferInfo);
2366
2605
  }
2367
2606
  return accessor.sparse ? promise.then(function(bufferInfo) {
2368
2607
  return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
@@ -2397,7 +2636,7 @@ function registerGLTFParser(pipeline) {
2397
2636
  var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
2398
2637
  var indicesBufferView = bufferViews[indices.bufferView];
2399
2638
  var valuesBufferView = bufferViews[values.bufferView];
2400
- return Promise.all([
2639
+ return AssetPromise.all([
2401
2640
  context.get(GLTFParserType.BufferView, indices.bufferView),
2402
2641
  context.get(GLTFParserType.BufferView, values.bufferView)
2403
2642
  ]).then(function(param) {
@@ -2424,6 +2663,8 @@ function registerGLTFParser(pipeline) {
2424
2663
  }
2425
2664
  }
2426
2665
  bufferInfo.data = data;
2666
+ }).catch(function(e) {
2667
+ Logger.error("GLTFUtil processingSparseData error", e);
2427
2668
  });
2428
2669
  };
2429
2670
  GLTFUtils.getIndexFormat = function getIndexFormat(type) {
@@ -3393,15 +3634,20 @@ var KTX2Loader = /*#__PURE__*/ function(Loader) {
3393
3634
  * @internal
3394
3635
  */ _proto.load = function load(item, resourceManager) {
3395
3636
  return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
3396
- resourceManager// @ts-ignore
3397
- ._request(item.url, {
3637
+ var requestConfig = _extends({}, item, {
3398
3638
  type: "arraybuffer"
3399
- }).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
3639
+ });
3640
+ var url = item.url;
3641
+ resourceManager// @ts-ignore
3642
+ ._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
3400
3643
  return KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params).then(function(param) {
3401
3644
  var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
3402
3645
  return KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
3646
+ }).then(function(texture) {
3647
+ resourceManager.addContentRestorer(new KTX2ContentRestorer(texture, url, requestConfig));
3648
+ resolve(texture);
3403
3649
  });
3404
- }).then(resolve).catch(reject);
3650
+ }).catch(reject);
3405
3651
  });
3406
3652
  };
3407
3653
  /**
@@ -3440,7 +3686,7 @@ var KTX2Loader = /*#__PURE__*/ function(Loader) {
3440
3686
  };
3441
3687
  });
3442
3688
  };
3443
- /** @internal */ KTX2Loader._createTextureByBuffer = function _createTextureByBuffer(engine, transcodeResult, targetFormat, params) {
3689
+ /** @internal */ KTX2Loader._createTextureByBuffer = function _createTextureByBuffer(engine, transcodeResult, targetFormat, params, restoredTexture) {
3444
3690
  var width = transcodeResult.width, height = transcodeResult.height, faces = transcodeResult.faces;
3445
3691
  var faceCount = faces.length;
3446
3692
  var mipmaps = faces[0];
@@ -3448,13 +3694,13 @@ var KTX2Loader = /*#__PURE__*/ function(Loader) {
3448
3694
  var engineFormat = this._getEngineTextureFormat(targetFormat, transcodeResult);
3449
3695
  var texture;
3450
3696
  if (faceCount !== 6) {
3451
- texture = new Texture2D(engine, width, height, engineFormat, mipmap);
3697
+ texture = restoredTexture || new Texture2D(engine, width, height, engineFormat, mipmap);
3452
3698
  for(var mipLevel = 0; mipLevel < mipmaps.length; mipLevel++){
3453
3699
  var data = mipmaps[mipLevel].data;
3454
3700
  texture.setPixelBuffer(data, mipLevel);
3455
3701
  }
3456
3702
  } else {
3457
- texture = new TextureCube(engine, height, engineFormat, mipmap);
3703
+ texture = restoredTexture || new TextureCube(engine, height, engineFormat, mipmap);
3458
3704
  for(var i = 0; i < faces.length; i++){
3459
3705
  var faceData = faces[i];
3460
3706
  for(var mipLevel1 = 0; mipLevel1 < mipmaps.length; mipLevel1++){
@@ -3570,6 +3816,30 @@ KTX2Loader = __decorate([
3570
3816
  "ktx2"
3571
3817
  ])
3572
3818
  ], KTX2Loader);
3819
+ var KTX2ContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
3820
+ _inherits(KTX2ContentRestorer, ContentRestorer);
3821
+ function KTX2ContentRestorer(resource, url, requestConfig) {
3822
+ var _this;
3823
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
3824
+ return _this;
3825
+ }
3826
+ var _proto = KTX2ContentRestorer.prototype;
3827
+ _proto.restoreContent = function restoreContent() {
3828
+ var _this = this;
3829
+ var _this1 = this, resource = _this1.resource, requestConfig = _this1.requestConfig;
3830
+ var engine = resource.engine;
3831
+ return new AssetPromise(function(resolve, reject) {
3832
+ engine.resourceManager// @ts-ignore
3833
+ ._request(_this.url, requestConfig).then(function(buffer) {
3834
+ return KTX2Loader._parseBuffer(new Uint8Array(buffer), engine, requestConfig.params).then(function(param) {
3835
+ var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
3836
+ return KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params, resource);
3837
+ });
3838
+ }).then(resolve).catch(reject);
3839
+ });
3840
+ };
3841
+ return KTX2ContentRestorer;
3842
+ }(ContentRestorer);
3573
3843
  /** Used for initialize KTX2 transcoder. */ var KTX2Transcoder = /*#__PURE__*/ function(KTX2Transcoder) {
3574
3844
  /** BinomialLLC transcoder. */ KTX2Transcoder[KTX2Transcoder["BinomialLLC"] = 0] = "BinomialLLC";
3575
3845
  /** Khronos transcoder. */ KTX2Transcoder[KTX2Transcoder["Khronos"] = 1] = "Khronos";
@@ -3906,16 +4176,14 @@ KTX2Loader = __decorate([
3906
4176
  for(var _len = arguments.length, extra = new Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++){
3907
4177
  extra[_key - 5] = arguments[_key];
3908
4178
  }
4179
+ var _parser;
3909
4180
  var parser = GLTFParser.getExtensionParser(extensionName, GLTFExtensionMode.AdditiveParse);
3910
- if (parser) {
3911
- var _parser;
3912
- (_parser = parser).additiveParse.apply(_parser, [].concat([
3913
- context,
3914
- parseResource,
3915
- extensionSchema,
3916
- ownerSchema
3917
- ], extra));
3918
- }
4181
+ parser == null ? void 0 : (_parser = parser).additiveParse.apply(_parser, [].concat([
4182
+ context,
4183
+ parseResource,
4184
+ extensionSchema,
4185
+ ownerSchema
4186
+ ], extra));
3919
4187
  };
3920
4188
  return GLTFParser;
3921
4189
  }();
@@ -3981,7 +4249,7 @@ var GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
3981
4249
  var animationInfo = context.glTF.animations[index];
3982
4250
  var _animationInfo_name = animationInfo.name, name = _animationInfo_name === void 0 ? "AnimationClip" + index : _animationInfo_name;
3983
4251
  var animationClipPromise = GLTFParser.executeExtensionsCreateAndParse(animationInfo.extensions, context, animationInfo) || GLTFAnimationParser._parseStandardProperty(context, new AnimationClip(name), animationInfo);
3984
- return Promise.resolve(animationClipPromise).then(function(animationClip) {
4252
+ return AssetPromise.resolve(animationClipPromise).then(function(animationClip) {
3985
4253
  GLTFParser.executeExtensionsAdditiveAndParse(animationInfo.extensions, context, animationClip, animationInfo);
3986
4254
  return animationClip;
3987
4255
  });
@@ -3993,7 +4261,7 @@ var GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
3993
4261
  var glTFSampler = samplers[j];
3994
4262
  var inputAccessor = accessors[glTFSampler.input];
3995
4263
  var outputAccessor = accessors[glTFSampler.output];
3996
- var promise = Promise.all([
4264
+ var promise = AssetPromise.all([
3997
4265
  GLTFUtils.getAccessorBuffer(context, bufferViews, inputAccessor),
3998
4266
  GLTFUtils.getAccessorBuffer(context, bufferViews, outputAccessor)
3999
4267
  ]).then(function(bufferInfos) {
@@ -4044,7 +4312,7 @@ var GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
4044
4312
  // parse samplers
4045
4313
  for(var j = 0, m = len; j < m; j++)_loop(j);
4046
4314
  promises.push(context.get(GLTFParserType.Scene));
4047
- return Promise.all(promises).then(function() {
4315
+ return AssetPromise.all(promises).then(function() {
4048
4316
  for(var j = 0, m = channels.length; j < m; j++){
4049
4317
  var glTFChannel = channels[j];
4050
4318
  var target = glTFChannel.target;
@@ -4174,7 +4442,7 @@ var GLTFBufferParser = /*#__PURE__*/ function(GLTFParser) {
4174
4442
  var _proto = GLTFBufferParser.prototype;
4175
4443
  _proto.parse = function parse(context, index) {
4176
4444
  var buffers = context.glTF.buffers;
4177
- return context.buffers ? Promise.resolve(context.buffers[index]) : this._parseSingleBuffer(context, buffers[index]);
4445
+ return context.buffers ? AssetPromise.resolve(context.buffers[index]) : this._parseSingleBuffer(context, buffers[index]);
4178
4446
  };
4179
4447
  _proto._parseSingleBuffer = function _parseSingleBuffer(context, bufferInfo) {
4180
4448
  var glTFResource = context.glTFResource, contentRestorer = context.contentRestorer, resourceManager = context.resourceManager;
@@ -4261,7 +4529,7 @@ var GLTFMaterialParser = /*#__PURE__*/ function(GLTFParser1) {
4261
4529
  material.name = materialInfo.name;
4262
4530
  GLTFMaterialParser._parseStandardProperty(context, material, materialInfo);
4263
4531
  }
4264
- return Promise.resolve(material).then(function(material) {
4532
+ return AssetPromise.resolve(material).then(function(material) {
4265
4533
  // @ts-ignore
4266
4534
  material || (material = engine._basicResources._getBlinnPhongMaterial());
4267
4535
  GLTFParser.executeExtensionsAdditiveAndParse(materialInfo.extensions, context, material, materialInfo);
@@ -4291,6 +4559,8 @@ var GLTFMaterialParser = /*#__PURE__*/ function(GLTFParser1) {
4291
4559
  context.get(GLTFParserType.Texture, baseColorTexture.index).then(function(texture) {
4292
4560
  material.baseTexture = texture;
4293
4561
  GLTFParser.executeExtensionsAdditiveAndParse(baseColorTexture.extensions, context, material, baseColorTexture);
4562
+ }).catch(function(e) {
4563
+ Logger.error("GLTFMaterialParser: baseColorTexture error", e);
4294
4564
  });
4295
4565
  }
4296
4566
  if (material.constructor === PBRMaterial) {
@@ -4300,6 +4570,8 @@ var GLTFMaterialParser = /*#__PURE__*/ function(GLTFParser1) {
4300
4570
  GLTFMaterialParser._checkOtherTextureTransform(metallicRoughnessTexture, "Roughness metallic");
4301
4571
  context.get(GLTFParserType.Texture, metallicRoughnessTexture.index).then(function(texture) {
4302
4572
  material.roughnessMetallicTexture = texture;
4573
+ }).catch(function(e) {
4574
+ Logger.error("GLTFMaterialParser: metallicRoughnessTexture error", e);
4303
4575
  });
4304
4576
  }
4305
4577
  }
@@ -4309,6 +4581,8 @@ var GLTFMaterialParser = /*#__PURE__*/ function(GLTFParser1) {
4309
4581
  GLTFMaterialParser._checkOtherTextureTransform(emissiveTexture, "Emissive");
4310
4582
  context.get(GLTFParserType.Texture, emissiveTexture.index).then(function(texture) {
4311
4583
  material.emissiveTexture = texture;
4584
+ }).catch(function(e) {
4585
+ Logger.error("GLTFMaterialParser: emissiveTexture error", e);
4312
4586
  });
4313
4587
  }
4314
4588
  if (emissiveFactor) {
@@ -4319,6 +4593,8 @@ var GLTFMaterialParser = /*#__PURE__*/ function(GLTFParser1) {
4319
4593
  GLTFMaterialParser._checkOtherTextureTransform(normalTexture, "Normal");
4320
4594
  context.get(GLTFParserType.Texture, index).then(function(texture) {
4321
4595
  material.normalTexture = texture;
4596
+ }).catch(function(e) {
4597
+ Logger.error("GLTFMaterialParser: emissiveTexture error", e);
4322
4598
  });
4323
4599
  if (scale !== undefined) {
4324
4600
  material.normalTextureIntensity = scale;
@@ -4329,6 +4605,8 @@ var GLTFMaterialParser = /*#__PURE__*/ function(GLTFParser1) {
4329
4605
  GLTFMaterialParser._checkOtherTextureTransform(occlusionTexture, "Occlusion");
4330
4606
  context.get(GLTFParserType.Texture, index1).then(function(texture) {
4331
4607
  material.occlusionTexture = texture;
4608
+ }).catch(function(e) {
4609
+ Logger.error("GLTFMaterialParser: occlusionTexture error", e);
4332
4610
  });
4333
4611
  if (strength !== undefined) {
4334
4612
  material.occlusionTextureIntensity = strength;
@@ -4372,7 +4650,7 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
4372
4650
  _proto.parse = function parse(context, index) {
4373
4651
  var _loop = function(i, length) {
4374
4652
  var gltfPrimitive = meshInfo.primitives[i];
4375
- primitivePromises[i] = new Promise(function(resolve) {
4653
+ primitivePromises[i] = new AssetPromise(function(resolve, reject) {
4376
4654
  var mesh = GLTFParser.executeExtensionsCreateAndParse(gltfPrimitive.extensions, context, gltfPrimitive, meshInfo);
4377
4655
  if (mesh) {
4378
4656
  if (_instanceof(mesh, ModelMesh)) {
@@ -4393,7 +4671,7 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
4393
4671
  var meshRestoreInfo = new ModelMeshRestoreInfo();
4394
4672
  meshRestoreInfo.mesh = mesh1;
4395
4673
  context.contentRestorer.meshes.push(meshRestoreInfo);
4396
- GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, context.params.keepMeshData).then(resolve);
4674
+ GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, context.params.keepMeshData).then(resolve, reject);
4397
4675
  }
4398
4676
  });
4399
4677
  };
@@ -4402,7 +4680,7 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
4402
4680
  var engine = glTFResource.engine;
4403
4681
  var primitivePromises = new Array();
4404
4682
  for(var i = 0, length = meshInfo.primitives.length; i < length; i++)_loop(i);
4405
- return Promise.all(primitivePromises);
4683
+ return AssetPromise.all(primitivePromises);
4406
4684
  };
4407
4685
  /**
4408
4686
  * @internal
@@ -4485,7 +4763,7 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
4485
4763
  var bufferBindIndex = 0;
4486
4764
  var promises = new Array();
4487
4765
  for(var attribute in attributes)_loop(attribute);
4488
- return Promise.all(promises).then(function() {
4766
+ return AssetPromise.all(promises).then(function() {
4489
4767
  mesh.setVertexElements(vertexElements);
4490
4768
  // Indices
4491
4769
  if (indices !== undefined) {
@@ -4535,7 +4813,7 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
4535
4813
  var tangentTarget = targets["TANGENT"];
4536
4814
  var hasNormal = normalTarget !== undefined;
4537
4815
  var hasTangent = tangentTarget !== undefined;
4538
- var promise = Promise.all([
4816
+ var promise = AssetPromise.all([
4539
4817
  _this._getBlendShapeData(context, glTF, accessors[targets["POSITION"]]),
4540
4818
  hasNormal ? _this._getBlendShapeData(context, glTF, accessors[normalTarget]) : null,
4541
4819
  hasTangent ? _this._getBlendShapeData(context, glTF, accessors[tangentTarget]) : null
@@ -4555,7 +4833,7 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
4555
4833
  var blendShapeCount = glTFTargets.length;
4556
4834
  var blendShapeCollection = new Array(blendShapeCount);
4557
4835
  for(var i = 0; i < blendShapeCount; i++)_this = this, _loop(i);
4558
- return Promise.all(promises).then(function() {
4836
+ return AssetPromise.all(promises).then(function() {
4559
4837
  for(var _iterator = _create_for_of_iterator_helper_loose(blendShapeCollection), _step; !(_step = _iterator()).done;){
4560
4838
  var blendShape = _step.value;
4561
4839
  mesh.addBlendShape(blendShape.blendShape);
@@ -4602,7 +4880,7 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
4602
4880
  for(var i1 = 0; i1 < sceneNodes.length; i1++){
4603
4881
  promises.push(this._parseEntityComponent(context, sceneNodes[i1]));
4604
4882
  }
4605
- return Promise.all(promises).then(function() {
4883
+ return AssetPromise.all(promises).then(function() {
4606
4884
  GLTFParser.executeExtensionsAdditiveAndParse(sceneExtensions, context, sceneRoot, sceneInfo);
4607
4885
  return sceneRoot;
4608
4886
  });
@@ -4620,7 +4898,7 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
4620
4898
  if (meshID !== undefined) {
4621
4899
  promise = this._createRenderer(context, entityInfo, entity);
4622
4900
  }
4623
- return Promise.resolve(promise).then(function() {
4901
+ return AssetPromise.resolve(promise).then(function() {
4624
4902
  var promises = [];
4625
4903
  var children = entityInfo.children;
4626
4904
  if (children) {
@@ -4628,7 +4906,7 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
4628
4906
  promises.push(_this._parseEntityComponent(context, children[i]));
4629
4907
  }
4630
4908
  }
4631
- return Promise.all(promises);
4909
+ return AssetPromise.all(promises);
4632
4910
  });
4633
4911
  };
4634
4912
  _proto._createCamera = function _createCamera(resource, cameraSchema, entity) {
@@ -4677,10 +4955,10 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
4677
4955
  var _glTFMeshPrimitives_i_material;
4678
4956
  materialPromises[i] = context.get(GLTFParserType.Material, (_glTFMeshPrimitives_i_material = glTFMeshPrimitives[i].material) != null ? _glTFMeshPrimitives_i_material : -1);
4679
4957
  }
4680
- return Promise.all([
4958
+ return AssetPromise.all([
4681
4959
  context.get(GLTFParserType.Mesh, meshID),
4682
4960
  skinID !== undefined && context.get(GLTFParserType.Skin, skinID),
4683
- Promise.all(materialPromises)
4961
+ AssetPromise.all(materialPromises)
4684
4962
  ]).then(function(param) {
4685
4963
  var _loop = function(i) {
4686
4964
  var material = materials[i] || basicResources._getBlinnPhongMaterial();
@@ -4715,6 +4993,8 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
4715
4993
  // @ts-ignore
4716
4994
  var basicResources = context.glTFResource.engine._basicResources;
4717
4995
  for(var i = 0; i < rendererCount; i++)_loop(i);
4996
+ }).catch(function(e) {
4997
+ Logger.error("GLTFSceneParser: create renderer error", e);
4718
4998
  });
4719
4999
  };
4720
5000
  _proto._computeLocalBounds = function _computeLocalBounds(skinnedMeshRenderer, mesh, bones, rootBone, inverseBindMatrices) {
@@ -4799,7 +5079,7 @@ var GLTFSkinParser = /*#__PURE__*/ function(GLTFParser) {
4799
5079
  }
4800
5080
  return skin;
4801
5081
  });
4802
- return Promise.resolve(skinPromise);
5082
+ return AssetPromise.resolve(skinPromise);
4803
5083
  };
4804
5084
  _proto._findSkeletonRootBone = function _findSkeletonRootBone(joints, entities) {
4805
5085
  var paths = {};
@@ -4849,7 +5129,7 @@ var GLTFTextureParser = /*#__PURE__*/ function(GLTFParser1) {
4849
5129
  if (!texture) {
4850
5130
  texture = GLTFTextureParser._parseTexture(context, imageIndex, textureIndex, sampler, textureName);
4851
5131
  }
4852
- return Promise.resolve(texture).then(function(texture) {
5132
+ return AssetPromise.resolve(texture).then(function(texture) {
4853
5133
  GLTFParser.executeExtensionsAdditiveAndParse(extensions, context, texture, textureInfo);
4854
5134
  // @ts-ignore
4855
5135
  texture._associationSuperResource(glTFResource);
@@ -4894,6 +5174,8 @@ var GLTFTextureParser = /*#__PURE__*/ function(GLTFParser1) {
4894
5174
  context.contentRestorer.bufferTextures.push(bufferTextureRestoreInfo);
4895
5175
  return texture;
4896
5176
  });
5177
+ }).catch(function(e) {
5178
+ Logger.error("GLTFTextureParser: image buffer error", e);
4897
5179
  });
4898
5180
  }
4899
5181
  return texture;
@@ -4927,282 +5209,89 @@ var GLTFValidator = /*#__PURE__*/ function(GLTFParser1) {
4927
5209
  }
4928
5210
  }
4929
5211
  }
4930
- if (extensionsRequired) {
4931
- Logger.info("extensionsRequired: " + extensionsRequired);
4932
- for(var i1 = 0; i1 < extensionsRequired.length; i1++){
4933
- var extensionRequired = extensionsRequired[i1];
4934
- if (!GLTFParser.hasExtensionParser(extensionRequired)) {
4935
- Logger.error("GLTF parser has not supported required extension " + extensionRequired + ".");
4936
- }
4937
- }
4938
- }
4939
- return Promise.resolve(null);
4940
- };
4941
- return GLTFValidator;
4942
- }(GLTFParser);
4943
- GLTFValidator = __decorate([
4944
- registerGLTFParser(GLTFParserType.Validator)
4945
- ], GLTFValidator);
4946
-
4947
- var GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
4948
- _inherits(GLTFBufferViewParser, GLTFParser1);
4949
- function GLTFBufferViewParser() {
4950
- return GLTFParser1.apply(this, arguments) || this;
4951
- }
4952
- var _proto = GLTFBufferViewParser.prototype;
4953
- _proto.parse = function parse(context, index) {
4954
- var bufferView = context.glTF.bufferViews[index];
4955
- var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
4956
- return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
4957
- return new Uint8Array(buffer, byteOffset, byteLength);
4958
- });
4959
- };
4960
- return GLTFBufferViewParser;
4961
- }(GLTFParser);
4962
- GLTFBufferViewParser = __decorate([
4963
- registerGLTFParser(GLTFParserType.BufferView)
4964
- ], GLTFBufferViewParser);
4965
-
4966
- var GLTFAnimatorControllerParser = /*#__PURE__*/ function(GLTFParser) {
4967
- _inherits(GLTFAnimatorControllerParser, GLTFParser);
4968
- function GLTFAnimatorControllerParser() {
4969
- return GLTFParser.apply(this, arguments) || this;
4970
- }
4971
- var _proto = GLTFAnimatorControllerParser.prototype;
4972
- _proto.parse = function parse(context) {
4973
- var _this = this;
4974
- if (!context.needAnimatorController) {
4975
- return Promise.resolve(null);
4976
- }
4977
- return context.get(GLTFParserType.Animation).then(function(animations) {
4978
- var animatorController = _this._createAnimatorController(context, animations);
4979
- return Promise.resolve(animatorController);
4980
- });
4981
- };
4982
- _proto._createAnimatorController = function _createAnimatorController(context, animations) {
4983
- var glTFResource = context.glTFResource;
4984
- var engine = glTFResource.engine;
4985
- var animatorController = new AnimatorController(engine);
4986
- var layer = new AnimatorControllerLayer("layer");
4987
- var animatorStateMachine = new AnimatorStateMachine();
4988
- animatorController.addLayer(layer);
4989
- layer.stateMachine = animatorStateMachine;
4990
- if (animations) {
4991
- for(var i = 0; i < animations.length; i++){
4992
- var animationClip = animations[i];
4993
- var name = animationClip.name;
4994
- var uniqueName = animatorStateMachine.makeUniqueStateName(name);
4995
- if (uniqueName !== name) {
4996
- console.warn("AnimatorState name is existed, name: " + name + " reset to " + uniqueName);
4997
- }
4998
- var animatorState = animatorStateMachine.addState(uniqueName);
4999
- animatorState.clip = animationClip;
5000
- }
5001
- }
5002
- return animatorController;
5003
- };
5004
- return GLTFAnimatorControllerParser;
5005
- }(GLTFParser);
5006
- GLTFAnimatorControllerParser = __decorate([
5007
- registerGLTFParser(GLTFParserType.AnimatorController)
5008
- ], GLTFAnimatorControllerParser);
5009
-
5010
- // Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js
5011
- var ready;
5012
- function getMeshoptDecoder() {
5013
- if (ready) return ready;
5014
- var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb";
5015
- var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb";
5016
- var wasmpack = new Uint8Array([
5017
- 32,
5018
- 0,
5019
- 65,
5020
- 2,
5021
- 1,
5022
- 106,
5023
- 34,
5024
- 33,
5025
- 3,
5026
- 128,
5027
- 11,
5028
- 4,
5029
- 13,
5030
- 64,
5031
- 6,
5032
- 253,
5033
- 10,
5034
- 7,
5035
- 15,
5036
- 116,
5037
- 127,
5038
- 5,
5039
- 8,
5040
- 12,
5041
- 40,
5042
- 16,
5043
- 19,
5044
- 54,
5045
- 20,
5046
- 9,
5047
- 27,
5048
- 255,
5049
- 113,
5050
- 17,
5051
- 42,
5052
- 67,
5053
- 24,
5054
- 23,
5055
- 146,
5056
- 148,
5057
- 18,
5058
- 14,
5059
- 22,
5060
- 45,
5061
- 70,
5062
- 69,
5063
- 56,
5064
- 114,
5065
- 101,
5066
- 21,
5067
- 25,
5068
- 63,
5069
- 75,
5070
- 136,
5071
- 108,
5072
- 28,
5073
- 118,
5074
- 29,
5075
- 73,
5076
- 115
5077
- ]);
5078
- // @ts-ignore
5079
- var wasm = SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;
5080
- var instance;
5081
- ready = WebAssembly.instantiate(unpack(wasm)).then(function(result) {
5082
- instance = result.instance;
5083
- instance.exports.__wasm_call_ctors();
5084
- }).then(function() {
5085
- return {
5086
- workerCount: 4,
5087
- ready: ready,
5088
- useWorkers: function useWorkers(workerCount) {
5089
- this.workerCount = workerCount != null ? workerCount : this.workerCount;
5090
- initWorkers(this.workerCount);
5091
- },
5092
- decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
5093
- if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
5094
- if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
5095
- return ready.then(function() {
5096
- var target = new Uint8Array(count * stride);
5097
- decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
5098
- return target;
5099
- });
5100
- },
5101
- release: function release() {
5102
- for(var i = 0; i < workers.length; i++){
5103
- workers[i].object.terminate();
5104
- }
5105
- }
5106
- };
5107
- });
5108
- function unpack(data) {
5109
- var result = new Uint8Array(data.length);
5110
- for(var i = 0; i < data.length; ++i){
5111
- var ch = data.charCodeAt(i);
5112
- result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
5113
- }
5114
- var write = 0;
5115
- for(var i1 = 0; i1 < data.length; ++i1){
5116
- result[write++] = result[i1] < 60 ? wasmpack[result[i1]] : (result[i1] - 60) * 64 + result[++i1];
5117
- }
5118
- return result.buffer.slice(0, write);
5119
- }
5120
- function decode(fun, target, count, size, source, filter) {
5121
- var sbrk = instance.exports.sbrk;
5122
- var count4 = count + 3 & ~3;
5123
- var tp = sbrk(count4 * size);
5124
- var sp = sbrk(source.length);
5125
- var heap = new Uint8Array(instance.exports.memory.buffer);
5126
- heap.set(source, sp);
5127
- var res = fun(tp, count, size, sp, source.length);
5128
- if (res == 0 && filter) {
5129
- filter(tp, count4, size);
5130
- }
5131
- target.set(heap.subarray(tp, tp + count * size));
5132
- sbrk(tp - sbrk(0));
5133
- if (res != 0) {
5134
- throw new Error("Malformed buffer data: " + res);
5212
+ if (extensionsRequired) {
5213
+ Logger.info("extensionsRequired: " + extensionsRequired);
5214
+ for(var i1 = 0; i1 < extensionsRequired.length; i1++){
5215
+ var extensionRequired = extensionsRequired[i1];
5216
+ if (!GLTFParser.hasExtensionParser(extensionRequired)) {
5217
+ Logger.error("GLTF parser has not supported required extension " + extensionRequired + ".");
5218
+ }
5219
+ }
5135
5220
  }
5136
- }
5137
- var filters = {
5138
- NONE: "",
5139
- OCTAHEDRAL: "meshopt_decodeFilterOct",
5140
- QUATERNION: "meshopt_decodeFilterQuat",
5141
- EXPONENTIAL: "meshopt_decodeFilterExp"
5142
- };
5143
- var decoders = {
5144
- ATTRIBUTES: "meshopt_decodeVertexBuffer",
5145
- TRIANGLES: "meshopt_decodeIndexBuffer",
5146
- INDICES: "meshopt_decodeIndexSequence"
5221
+ return AssetPromise.resolve(null);
5147
5222
  };
5148
- var workers = [];
5149
- var requestId = 0;
5150
- function createWorker(url) {
5151
- var worker = {
5152
- object: new Worker(url),
5153
- pending: 0,
5154
- requests: {}
5155
- };
5156
- worker.object.onmessage = function(event) {
5157
- var data = event.data;
5158
- worker.pending -= data.count;
5159
- worker.requests[data.id][data.action](data.value);
5160
- delete worker.requests[data.id];
5161
- };
5162
- return worker;
5223
+ return GLTFValidator;
5224
+ }(GLTFParser);
5225
+ GLTFValidator = __decorate([
5226
+ registerGLTFParser(GLTFParserType.Validator)
5227
+ ], GLTFValidator);
5228
+
5229
+ var GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
5230
+ _inherits(GLTFBufferViewParser, GLTFParser1);
5231
+ function GLTFBufferViewParser() {
5232
+ return GLTFParser1.apply(this, arguments) || this;
5163
5233
  }
5164
- function initWorkers(count) {
5165
- var source = "var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" + ".then(function(result) {instance = result.instance; instance.exports.__wasm_call_ctors();});\n" + "self.onmessage = workerProcess;\n" + 'function decode(fun, target, count, size, source, filter) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error("Malformed buffer data: " + res);\n }\n }\n' + 'function workerProcess(event) {\n ready.then(function () {\n const data = event.data;\n try {\n const target = new Uint8Array(data.count * data.size);\n decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [target.buffer]);\n } catch (error) {\n self.postMessage({\n id: data.id,\n count: data.count,\n action: "reject",\n value: error\n });\n }\n });\n }';
5166
- var blob = new Blob([
5167
- source
5168
- ], {
5169
- type: "text/javascript"
5234
+ var _proto = GLTFBufferViewParser.prototype;
5235
+ _proto.parse = function parse(context, index) {
5236
+ var bufferView = context.glTF.bufferViews[index];
5237
+ var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
5238
+ return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
5239
+ return new Uint8Array(buffer, byteOffset, byteLength);
5240
+ }).catch(function(e) {
5241
+ Logger.error("GLTFBufferViewParser: buffer error", e);
5170
5242
  });
5171
- var url = URL.createObjectURL(blob);
5172
- for(var i = 0; i < count; ++i){
5173
- workers[i] = createWorker(url);
5174
- }
5175
- URL.revokeObjectURL(url);
5243
+ };
5244
+ return GLTFBufferViewParser;
5245
+ }(GLTFParser);
5246
+ GLTFBufferViewParser = __decorate([
5247
+ registerGLTFParser(GLTFParserType.BufferView)
5248
+ ], GLTFBufferViewParser);
5249
+
5250
+ var GLTFAnimatorControllerParser = /*#__PURE__*/ function(GLTFParser) {
5251
+ _inherits(GLTFAnimatorControllerParser, GLTFParser);
5252
+ function GLTFAnimatorControllerParser() {
5253
+ return GLTFParser.apply(this, arguments) || this;
5176
5254
  }
5177
- function decodeWorker(count, size, source, mode, filter) {
5178
- var worker = workers[0];
5179
- for(var i = 1; i < workers.length; ++i){
5180
- if (workers[i].pending < worker.pending) {
5181
- worker = workers[i];
5182
- }
5255
+ var _proto = GLTFAnimatorControllerParser.prototype;
5256
+ _proto.parse = function parse(context) {
5257
+ var _this = this;
5258
+ if (!context.needAnimatorController) {
5259
+ return AssetPromise.resolve(null);
5183
5260
  }
5184
- return new Promise(function(resolve, reject) {
5185
- var data = new Uint8Array(source);
5186
- var id = requestId++;
5187
- worker.pending += count;
5188
- worker.requests[id] = {
5189
- resolve: resolve,
5190
- reject: reject
5191
- };
5192
- worker.object.postMessage({
5193
- id: id,
5194
- count: count,
5195
- size: size,
5196
- source: data,
5197
- mode: mode,
5198
- filter: filter
5199
- }, [
5200
- data.buffer
5201
- ]);
5261
+ return context.get(GLTFParserType.Animation).then(function(animations) {
5262
+ var animatorController = _this._createAnimatorController(context, animations);
5263
+ return AssetPromise.resolve(animatorController);
5264
+ }).catch(function(e) {
5265
+ Logger.error("GLTFAnimatorControllerParser: animator controller error", e);
5202
5266
  });
5203
- }
5204
- return ready;
5205
- }
5267
+ };
5268
+ _proto._createAnimatorController = function _createAnimatorController(context, animations) {
5269
+ var glTFResource = context.glTFResource;
5270
+ var engine = glTFResource.engine;
5271
+ var animatorController = new AnimatorController(engine);
5272
+ var layer = new AnimatorControllerLayer("layer");
5273
+ var animatorStateMachine = new AnimatorStateMachine();
5274
+ animatorController.addLayer(layer);
5275
+ layer.stateMachine = animatorStateMachine;
5276
+ if (animations) {
5277
+ for(var i = 0; i < animations.length; i++){
5278
+ var animationClip = animations[i];
5279
+ var name = animationClip.name;
5280
+ var uniqueName = animatorStateMachine.makeUniqueStateName(name);
5281
+ if (uniqueName !== name) {
5282
+ console.warn("AnimatorState name is existed, name: " + name + " reset to " + uniqueName);
5283
+ }
5284
+ var animatorState = animatorStateMachine.addState(uniqueName);
5285
+ animatorState.clip = animationClip;
5286
+ }
5287
+ }
5288
+ return animatorController;
5289
+ };
5290
+ return GLTFAnimatorControllerParser;
5291
+ }(GLTFParser);
5292
+ GLTFAnimatorControllerParser = __decorate([
5293
+ registerGLTFParser(GLTFParserType.AnimatorController)
5294
+ ], GLTFAnimatorControllerParser);
5206
5295
 
5207
5296
  var GLTFLoader = /*#__PURE__*/ function(Loader) {
5208
5297
  _inherits(GLTFLoader, Loader);
@@ -5227,10 +5316,19 @@ var GLTFLoader = /*#__PURE__*/ function(Loader) {
5227
5316
  var context = new GLTFParserContext(glTFResource, resourceManager, _extends({
5228
5317
  keepMeshData: false
5229
5318
  }, params));
5230
- return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
5319
+ return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress, onTaskCancel) {
5231
5320
  context._setTaskCompleteProgress = setTaskCompleteProgress;
5232
5321
  context._setTaskDetailProgress = setTaskDetailProgress;
5233
- context.parse().then(resolve).catch(reject);
5322
+ onTaskCancel(function() {
5323
+ var getPromises = context._getPromises;
5324
+ for(var i = 0, n = getPromises.length; i < n; i++){
5325
+ getPromises[i].cancel();
5326
+ }
5327
+ });
5328
+ context.parse().then(resolve).catch(function(e) {
5329
+ glTFResource.destroy();
5330
+ reject(e);
5331
+ });
5234
5332
  });
5235
5333
  };
5236
5334
  /**
@@ -5318,10 +5416,11 @@ var HDRLoader = /*#__PURE__*/ function(Loader) {
5318
5416
  var requestConfig = _extends({}, item, {
5319
5417
  type: "arraybuffer"
5320
5418
  });
5419
+ var url = item.url;
5321
5420
  resourceManager// @ts-ignore
5322
- ._request(item.url, requestConfig).then(function(buffer) {
5421
+ ._request(url, requestConfig).then(function(buffer) {
5323
5422
  var texture = HDRLoader._setTextureByBuffer(engine, buffer);
5324
- engine.resourceManager.addContentRestorer(new HDRContentRestorer(texture, item.url, requestConfig));
5423
+ engine.resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
5325
5424
  resolve(texture);
5326
5425
  }).catch(reject);
5327
5426
  });
@@ -5626,9 +5725,12 @@ HDRLoader = __decorate([
5626
5725
  _proto.restoreContent = function restoreContent() {
5627
5726
  var _this = this;
5628
5727
  return new AssetPromise(function(resolve, reject) {
5629
- request(_this.url, _this.requestConfig).then(function(buffer) {
5630
- HDRLoader._setTextureByBuffer(_this.resource.engine, buffer, _this.resource);
5631
- resolve(_this.resource);
5728
+ var resource = _this.resource;
5729
+ var engine = resource.engine;
5730
+ engine.resourceManager// @ts-ignore
5731
+ ._request(_this.url, _this.requestConfig).then(function(buffer) {
5732
+ HDRLoader._setTextureByBuffer(engine, buffer, resource);
5733
+ resolve(resource);
5632
5734
  }).catch(reject);
5633
5735
  });
5634
5736
  };
@@ -5884,11 +5986,12 @@ var KTXLoader = /*#__PURE__*/ function(Loader) {
5884
5986
  }
5885
5987
  var _proto = KTXLoader.prototype;
5886
5988
  _proto.load = function load(item, resourceManager) {
5989
+ var requestConfig = _extends({}, item, {
5990
+ type: "arraybuffer"
5991
+ });
5887
5992
  return new AssetPromise(function(resolve, reject) {
5888
5993
  resourceManager// @ts-ignore
5889
- ._request(item.url, _extends({}, item, {
5890
- type: "arraybuffer"
5891
- })).then(function(bin) {
5994
+ ._request(item.url, requestConfig).then(function(bin) {
5892
5995
  var parsedData = parseSingleKTX(bin);
5893
5996
  var width = parsedData.width, height = parsedData.height, mipmaps = parsedData.mipmaps, engineFormat = parsedData.engineFormat;
5894
5997
  var mipmap = mipmaps.length > 1;
@@ -5897,6 +6000,7 @@ var KTXLoader = /*#__PURE__*/ function(Loader) {
5897
6000
  var _mipmaps_miplevel = mipmaps[miplevel], width1 = _mipmaps_miplevel.width, height1 = _mipmaps_miplevel.height, data = _mipmaps_miplevel.data;
5898
6001
  texture.setPixelBuffer(data, miplevel, 0, 0, width1, height1);
5899
6002
  }
6003
+ resourceManager.addContentRestorer(new KTXContentRestorer(texture, item.url, requestConfig));
5900
6004
  resolve(texture);
5901
6005
  }).catch(function(e) {
5902
6006
  reject(e);
@@ -5910,6 +6014,34 @@ KTXLoader = __decorate([
5910
6014
  "ktx"
5911
6015
  ])
5912
6016
  ], KTXLoader);
6017
+ var KTXContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6018
+ _inherits(KTXContentRestorer, ContentRestorer);
6019
+ function KTXContentRestorer(resource, url, requestConfig) {
6020
+ var _this;
6021
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6022
+ return _this;
6023
+ }
6024
+ var _proto = KTXContentRestorer.prototype;
6025
+ _proto.restoreContent = function restoreContent() {
6026
+ var _this = this;
6027
+ var resource = this.resource;
6028
+ var engine = resource.engine;
6029
+ return new AssetPromise(function(resolve, reject) {
6030
+ engine.resourceManager// @ts-ignore
6031
+ ._request(_this.url, _this.requestConfig).then(function(bin) {
6032
+ var mipmaps = parseSingleKTX(bin).mipmaps;
6033
+ for(var miplevel = 0; miplevel < mipmaps.length; miplevel++){
6034
+ var _mipmaps_miplevel = mipmaps[miplevel], width = _mipmaps_miplevel.width, height = _mipmaps_miplevel.height, data = _mipmaps_miplevel.data;
6035
+ resource.setPixelBuffer(data, miplevel, 0, 0, width, height);
6036
+ }
6037
+ resolve(resource);
6038
+ }).catch(function(e) {
6039
+ reject(e);
6040
+ });
6041
+ });
6042
+ };
6043
+ return KTXContentRestorer;
6044
+ }(ContentRestorer);
5913
6045
 
5914
6046
  function parseProperty(object, key, value) {
5915
6047
  if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object") {
@@ -6014,13 +6146,16 @@ var MeshLoader = /*#__PURE__*/ function(Loader) {
6014
6146
  }
6015
6147
  var _proto = MeshLoader.prototype;
6016
6148
  _proto.load = function load(item, resourceManager) {
6149
+ var requestConfig = _extends({}, item, {
6150
+ type: "arraybuffer"
6151
+ });
6152
+ var url = item.url;
6017
6153
  return new AssetPromise(function(resolve, reject) {
6018
6154
  resourceManager// @ts-ignore
6019
- ._request(item.url, _extends({}, item, {
6020
- type: "arraybuffer"
6021
- })).then(function(data) {
6155
+ ._request(url, requestConfig).then(function(data) {
6022
6156
  return decode(data, resourceManager.engine);
6023
6157
  }).then(function(mesh) {
6158
+ resourceManager.addContentRestorer(new MeshContentRestorer(mesh, url, requestConfig));
6024
6159
  resolve(mesh);
6025
6160
  }).catch(reject);
6026
6161
  });
@@ -6032,6 +6167,29 @@ MeshLoader = __decorate([
6032
6167
  "mesh"
6033
6168
  ])
6034
6169
  ], MeshLoader);
6170
+ var MeshContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6171
+ _inherits(MeshContentRestorer, ContentRestorer);
6172
+ function MeshContentRestorer(resource, url, requestConfig) {
6173
+ var _this;
6174
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6175
+ return _this;
6176
+ }
6177
+ var _proto = MeshContentRestorer.prototype;
6178
+ _proto.restoreContent = function restoreContent() {
6179
+ var _this = this;
6180
+ var resource = this.resource;
6181
+ var engine = resource.engine;
6182
+ return new AssetPromise(function(resolve, reject) {
6183
+ engine.resourceManager// @ts-ignore
6184
+ ._request(_this.url, _this.requestConfig).then(function(data) {
6185
+ return decode(data, engine, resource);
6186
+ }).then(function(mesh) {
6187
+ resolve(mesh);
6188
+ }).catch(reject);
6189
+ });
6190
+ };
6191
+ return MeshContentRestorer;
6192
+ }(ContentRestorer);
6035
6193
 
6036
6194
  var PrimitiveMeshLoader = /*#__PURE__*/ function(Loader) {
6037
6195
  _inherits(PrimitiveMeshLoader, Loader);
@@ -6778,18 +6936,24 @@ var KHR_materials_clearcoat = /*#__PURE__*/ function(GLTFExtensionParser) {
6778
6936
  GLTFMaterialParser._checkOtherTextureTransform(clearcoatTexture, "Clear coat");
6779
6937
  context.get(GLTFParserType.Texture, clearcoatTexture.index).then(function(texture) {
6780
6938
  material.clearCoatTexture = texture;
6939
+ }).catch(function(e) {
6940
+ Logger.error("KHR_materials_clearcoat: clearcoat texture error", e);
6781
6941
  });
6782
6942
  }
6783
6943
  if (clearcoatRoughnessTexture) {
6784
6944
  GLTFMaterialParser._checkOtherTextureTransform(clearcoatRoughnessTexture, "Clear coat roughness");
6785
6945
  context.get(GLTFParserType.Texture, clearcoatRoughnessTexture.index).then(function(texture) {
6786
6946
  material.clearCoatRoughnessTexture = texture;
6947
+ }).catch(function(e) {
6948
+ Logger.error("KHR_materials_clearcoat: clearcoat roughness texture error", e);
6787
6949
  });
6788
6950
  }
6789
6951
  if (clearcoatNormalTexture) {
6790
6952
  GLTFMaterialParser._checkOtherTextureTransform(clearcoatNormalTexture, "Clear coat normal");
6791
6953
  context.get(GLTFParserType.Texture, clearcoatNormalTexture.index).then(function(texture) {
6792
6954
  material.clearCoatNormalTexture = texture;
6955
+ }).catch(function(e) {
6956
+ Logger.error("KHR_materials_clearcoat: clearcoat normal texture error", e);
6793
6957
  });
6794
6958
  }
6795
6959
  };
@@ -6832,6 +6996,8 @@ var KHR_materials_pbrSpecularGlossiness = /*#__PURE__*/ function(GLTFExtensionPa
6832
6996
  context.get(GLTFParserType.Texture, diffuseTexture.index).then(function(texture) {
6833
6997
  material.baseTexture = texture;
6834
6998
  GLTFParser.executeExtensionsAdditiveAndParse(diffuseTexture.extensions, context, material, diffuseTexture);
6999
+ }).catch(function(e) {
7000
+ Logger.error("KHR_materials_pbrSpecularGlossiness: diffuse texture error", e);
6835
7001
  });
6836
7002
  }
6837
7003
  if (specularFactor) {
@@ -6844,6 +7010,8 @@ var KHR_materials_pbrSpecularGlossiness = /*#__PURE__*/ function(GLTFExtensionPa
6844
7010
  GLTFMaterialParser._checkOtherTextureTransform(specularGlossinessTexture, "Specular glossiness");
6845
7011
  context.get(GLTFParserType.Texture, specularGlossinessTexture.index).then(function(texture) {
6846
7012
  material.specularGlossinessTexture = texture;
7013
+ }).catch(function(e) {
7014
+ Logger.error("KHR_materials_pbrSpecularGlossiness: specular glossiness texture error", e);
6847
7015
  });
6848
7016
  }
6849
7017
  material.name = ownerSchema.name;
@@ -6872,12 +7040,16 @@ var KHR_materials_sheen = /*#__PURE__*/ function(GLTFExtensionParser) {
6872
7040
  GLTFMaterialParser._checkOtherTextureTransform(sheenColorTexture, "Sheen texture");
6873
7041
  context.get(GLTFParserType.Texture, sheenColorTexture.index).then(function(texture) {
6874
7042
  material.sheenColorTexture = texture;
7043
+ }).catch(function(e) {
7044
+ Logger.error("KHR_materials_sheen: sheenColorTexture error", e);
6875
7045
  });
6876
7046
  }
6877
7047
  if (sheenRoughnessTexture) {
6878
7048
  GLTFMaterialParser._checkOtherTextureTransform(sheenRoughnessTexture, "SheenRoughness texture");
6879
7049
  context.get(GLTFParserType.Texture, sheenRoughnessTexture.index).then(function(texture) {
6880
7050
  material.sheenRoughnessTexture = texture;
7051
+ }).catch(function(e) {
7052
+ Logger.error("KHR_materials_sheen: sheenRoughnessTexture error", e);
6881
7053
  });
6882
7054
  }
6883
7055
  };
@@ -6900,6 +7072,8 @@ var KHR_materials_transmission = /*#__PURE__*/ function(GLTFExtensionParser) {
6900
7072
  GLTFMaterialParser._checkOtherTextureTransform(transmissionTexture, "Transmission texture");
6901
7073
  context.get(GLTFParserType.Texture, transmissionTexture.index).then(function(texture) {
6902
7074
  material.transmissionTexture = texture;
7075
+ }).catch(function(e) {
7076
+ Logger.error("KHR_materials_transmission: transmission texture error", e);
6903
7077
  });
6904
7078
  }
6905
7079
  };
@@ -6945,6 +7119,8 @@ var KHR_materials_variants = /*#__PURE__*/ function(GLTFExtensionParser) {
6945
7119
  return variantNames[index].name;
6946
7120
  })
6947
7121
  });
7122
+ }).catch(function(e) {
7123
+ Logger.error("KHR_materials_variants: material error", e);
6948
7124
  });
6949
7125
  };
6950
7126
  var _glTFResource;
@@ -6978,6 +7154,8 @@ var KHR_materials_volume = /*#__PURE__*/ function(GLTFExtensionParser) {
6978
7154
  GLTFMaterialParser._checkOtherTextureTransform(thicknessTexture, "Thickness texture");
6979
7155
  context.get(GLTFParserType.Texture, thicknessTexture.index).then(function(texture) {
6980
7156
  material.thicknessTexture = texture;
7157
+ }).catch(function(e) {
7158
+ Logger.error("KHR_materials_volume: thickness texture error", e);
6981
7159
  });
6982
7160
  }
6983
7161
  };
@@ -7005,57 +7183,48 @@ var KHR_texture_basisu = /*#__PURE__*/ function(GLTFExtensionParser) {
7005
7183
  }
7006
7184
  var _proto = KHR_texture_basisu.prototype;
7007
7185
  _proto.createAndParse = function createAndParse(context, schema, textureInfo) {
7008
- return _async_to_generator(function() {
7009
- var glTF, glTFResource, engine, url, sampler, textureName, source, _glTF_images_source, uri, bufferViewIndex, mimeType, imageName, samplerInfo, index, promise, bufferView;
7010
- return __generator(this, function(_state) {
7011
- glTF = context.glTF, glTFResource = context.glTFResource;
7012
- engine = glTFResource.engine, url = glTFResource.url;
7013
- sampler = textureInfo.sampler, textureName = textureInfo.name;
7014
- source = schema.source;
7015
- _glTF_images_source = glTF.images[source], uri = _glTF_images_source.uri, bufferViewIndex = _glTF_images_source.bufferView, mimeType = _glTF_images_source.mimeType, imageName = _glTF_images_source.name;
7016
- samplerInfo = sampler !== undefined && GLTFUtils.getSamplerInfo(glTF.samplers[sampler]);
7017
- if (uri) {
7018
- index = uri.lastIndexOf(".");
7019
- promise = engine.resourceManager.load({
7020
- url: Utils.resolveAbsoluteUrl(url, uri),
7021
- type: AssetType.KTX2
7022
- }).onProgress(undefined, context._onTaskDetail).then(function(texture) {
7023
- if (!texture.name) {
7024
- texture.name = textureName || imageName || "texture_" + index;
7025
- }
7026
- if (sampler !== undefined) {
7027
- GLTFUtils.parseSampler(texture, samplerInfo);
7028
- }
7029
- return texture;
7030
- });
7031
- context._addTaskCompletePromise(promise);
7032
- return [
7033
- 2,
7034
- promise
7035
- ];
7036
- } else {
7037
- bufferView = glTF.bufferViews[bufferViewIndex];
7038
- return [
7039
- 2,
7040
- context.get(GLTFParserType.Buffer, bufferView.buffer).then(function(buffer) {
7041
- var imageBuffer = new Uint8Array(buffer, bufferView.byteOffset, bufferView.byteLength);
7042
- return KTX2Loader._parseBuffer(imageBuffer, engine).then(function(param) {
7043
- var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
7044
- return KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
7045
- }).then(function(texture) {
7046
- texture.name = textureName || imageName || "texture_" + bufferViewIndex;
7047
- if (sampler !== undefined) {
7048
- GLTFUtils.parseSampler(texture, samplerInfo);
7049
- }
7050
- var bufferTextureRestoreInfo = new BufferTextureRestoreInfo(texture, bufferView, mimeType);
7051
- context.contentRestorer.bufferTextures.push(bufferTextureRestoreInfo);
7052
- return texture;
7053
- });
7054
- })
7055
- ];
7186
+ var glTF = context.glTF, glTFResource = context.glTFResource;
7187
+ var engine = glTFResource.engine, url = glTFResource.url;
7188
+ var sampler = textureInfo.sampler, textureName = textureInfo.name;
7189
+ var source = schema.source;
7190
+ var _glTF_images_source = glTF.images[source], uri = _glTF_images_source.uri, bufferViewIndex = _glTF_images_source.bufferView, mimeType = _glTF_images_source.mimeType, imageName = _glTF_images_source.name;
7191
+ var samplerInfo = sampler !== undefined && GLTFUtils.getSamplerInfo(glTF.samplers[sampler]);
7192
+ if (uri) {
7193
+ var index = uri.lastIndexOf(".");
7194
+ var promise = engine.resourceManager.load({
7195
+ url: Utils.resolveAbsoluteUrl(url, uri),
7196
+ type: AssetType.KTX2
7197
+ }).onProgress(undefined, context._onTaskDetail).then(function(texture) {
7198
+ if (!texture.name) {
7199
+ texture.name = textureName || imageName || "texture_" + index;
7200
+ }
7201
+ if (sampler !== undefined) {
7202
+ GLTFUtils.parseSampler(texture, samplerInfo);
7056
7203
  }
7204
+ return texture;
7057
7205
  });
7058
- })();
7206
+ context._addTaskCompletePromise(promise);
7207
+ return promise;
7208
+ } else {
7209
+ var bufferView = glTF.bufferViews[bufferViewIndex];
7210
+ return context.get(GLTFParserType.Buffer, bufferView.buffer).then(function(buffer) {
7211
+ var imageBuffer = new Uint8Array(buffer, bufferView.byteOffset, bufferView.byteLength);
7212
+ return KTX2Loader._parseBuffer(imageBuffer, engine).then(function(param) {
7213
+ var engine = param.engine, result = param.result, targetFormat = param.targetFormat, params = param.params;
7214
+ return KTX2Loader._createTextureByBuffer(engine, result, targetFormat, params);
7215
+ }).then(function(texture) {
7216
+ texture.name = textureName || imageName || "texture_" + bufferViewIndex;
7217
+ if (sampler !== undefined) {
7218
+ GLTFUtils.parseSampler(texture, samplerInfo);
7219
+ }
7220
+ var bufferTextureRestoreInfo = new BufferTextureRestoreInfo(texture, bufferView, mimeType);
7221
+ context.contentRestorer.bufferTextures.push(bufferTextureRestoreInfo);
7222
+ return texture;
7223
+ });
7224
+ }).catch(function(e) {
7225
+ Logger.error("KHR_texture_basisu: buffer error", e);
7226
+ });
7227
+ }
7059
7228
  };
7060
7229
  return KHR_texture_basisu;
7061
7230
  }(GLTFExtensionParser);
@@ -7145,6 +7314,8 @@ var EXT_meshopt_compression = /*#__PURE__*/ function(GLTFExtensionParser) {
7145
7314
  return getMeshoptDecoder().then(function(decoder) {
7146
7315
  return decoder.decodeGltfBuffer(schema.count, schema.byteStride, new Uint8Array(arrayBuffer, schema.byteOffset, schema.byteLength), schema.mode, schema.filter);
7147
7316
  });
7317
+ }).catch(function(e) {
7318
+ Logger.error("EXT_meshopt_compression: buffer error", e);
7148
7319
  });
7149
7320
  };
7150
7321
  return EXT_meshopt_compression;
@@ -7167,6 +7338,8 @@ var KHR_materials_anisotropy = /*#__PURE__*/ function(GLTFExtensionParser) {
7167
7338
  GLTFMaterialParser._checkOtherTextureTransform(anisotropyTexture, "Anisotropy texture");
7168
7339
  context.get(GLTFParserType.Texture, anisotropyTexture.index).then(function(texture) {
7169
7340
  material.anisotropyTexture = texture;
7341
+ }).catch(function(e) {
7342
+ Logger.error("KHR_materials_anisotropy: anisotropy texture error", e);
7170
7343
  });
7171
7344
  }
7172
7345
  };
@@ -7191,12 +7364,16 @@ var KHR_materials_iridescence = /*#__PURE__*/ function(GLTFExtensionParser) {
7191
7364
  GLTFMaterialParser._checkOtherTextureTransform(iridescenceTexture, "Iridescence texture");
7192
7365
  context.get(GLTFParserType.Texture, iridescenceTexture.index).then(function(texture) {
7193
7366
  material.iridescenceTexture = texture;
7367
+ }).catch(function(e) {
7368
+ Logger.error("KHR_materials_iridescence: iridescence texture error", e);
7194
7369
  });
7195
7370
  }
7196
7371
  if (iridescenceThicknessTexture) {
7197
7372
  GLTFMaterialParser._checkOtherTextureTransform(iridescenceThicknessTexture, "IridescenceThickness texture");
7198
7373
  context.get(GLTFParserType.Texture, iridescenceThicknessTexture.index).then(function(texture) {
7199
7374
  material.iridescenceThicknessTexture = texture;
7375
+ }).catch(function(e) {
7376
+ Logger.error("KHR_materials_iridescence: iridescence thickness error", e);
7200
7377
  });
7201
7378
  }
7202
7379
  };
@@ -7223,19 +7400,10 @@ var EXT_texture_webp = /*#__PURE__*/ function(GLTFExtensionParser) {
7223
7400
  }
7224
7401
  var _proto = EXT_texture_webp.prototype;
7225
7402
  _proto.createAndParse = function createAndParse(context, schema, textureInfo, textureIndex) {
7226
- var _this = this;
7227
- return _async_to_generator(function() {
7228
- var webPIndex, sampler, tmp, fallbackIndex, textureName, texture;
7229
- return __generator(this, function(_state) {
7230
- webPIndex = schema.source;
7231
- sampler = textureInfo.sampler, tmp = textureInfo.source, fallbackIndex = tmp === void 0 ? 0 : tmp, textureName = textureInfo.name;
7232
- texture = GLTFTextureParser._parseTexture(context, _this._supportWebP ? webPIndex : fallbackIndex, textureIndex, sampler, textureName);
7233
- return [
7234
- 2,
7235
- texture
7236
- ];
7237
- });
7238
- })();
7403
+ var webPIndex = schema.source;
7404
+ var sampler = textureInfo.sampler, tmp = textureInfo.source, fallbackIndex = tmp === void 0 ? 0 : tmp, textureName = textureInfo.name;
7405
+ var texture = GLTFTextureParser._parseTexture(context, this._supportWebP ? webPIndex : fallbackIndex, textureIndex, sampler, textureName);
7406
+ return texture;
7239
7407
  };
7240
7408
  return EXT_texture_webp;
7241
7409
  }(GLTFExtensionParser);