@galacean/engine 1.2.0-beta.5 → 1.2.0-beta.7

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/browser.js CHANGED
@@ -8847,6 +8847,7 @@
8847
8847
  var program = this._glProgram;
8848
8848
  var uniformInfos = this._getUniformInfos();
8849
8849
  var attributeInfos = this._getAttributeInfos();
8850
+ var basicResources = this._engine._basicResources;
8850
8851
  uniformInfos.forEach(function(param) {
8851
8852
  var name1 = param.name, size = param.size, type = param.type;
8852
8853
  var shaderUniform = new ShaderUniform(_this._engine);
@@ -8940,16 +8941,16 @@
8940
8941
  var defaultTexture;
8941
8942
  switch(type){
8942
8943
  case gl.SAMPLER_2D:
8943
- defaultTexture = _this._engine._magentaTexture2D;
8944
+ defaultTexture = basicResources.whiteTexture2D;
8944
8945
  break;
8945
8946
  case gl.SAMPLER_CUBE:
8946
- defaultTexture = _this._engine._magentaTextureCube;
8947
+ defaultTexture = basicResources.whiteTextureCube;
8947
8948
  break;
8948
8949
  case gl.UNSIGNED_INT_SAMPLER_2D:
8949
- defaultTexture = _this._engine._uintMagentaTexture2D;
8950
+ defaultTexture = basicResources.uintWhiteTexture2D;
8950
8951
  break;
8951
8952
  case gl.SAMPLER_2D_ARRAY:
8952
- defaultTexture = _this._engine._magentaTexture2DArray;
8953
+ defaultTexture = basicResources.whiteTexture2DArray;
8953
8954
  break;
8954
8955
  case gl.SAMPLER_2D_SHADOW:
8955
8956
  defaultTexture = _this._engine._depthTexture2D;
@@ -11259,14 +11260,15 @@
11259
11260
  }
11260
11261
  this._endLoop(swapFn);
11261
11262
  };
11262
- _proto.forEachAndClean = function forEachAndClean(callbackFn) {
11263
+ _proto.forEachAndClean = function forEachAndClean(callbackFn, swapFn) {
11263
11264
  this._startLoop();
11265
+ var preEnd = this.length;
11264
11266
  var elements = this._elements;
11265
- for(var i = 0, n = this.length; i < n; i++){
11267
+ for(var i = 0, n = preEnd; i < n; i++){
11266
11268
  var element = elements[i];
11267
11269
  element && callbackFn(element);
11268
11270
  }
11269
- this._endLoopAndClear();
11271
+ this._endLoopAndClean(preEnd, elements, swapFn);
11270
11272
  };
11271
11273
  _proto.sort = function sort(compareFn) {
11272
11274
  Utils._quickSort(this._elements, 0, this.length, compareFn);
@@ -11299,9 +11301,17 @@
11299
11301
  this._blankCount = 0;
11300
11302
  }
11301
11303
  };
11302
- _proto._endLoopAndClear = function _endLoopAndClear() {
11304
+ _proto._endLoopAndClean = function _endLoopAndClean(preEnd, elements, swapFn) {
11305
+ var index = 0;
11306
+ for(var i = preEnd, n = this.length; i < n; i++){
11307
+ var element = elements[i];
11308
+ if (!element) continue;
11309
+ elements[index] = element;
11310
+ swapFn(element, index);
11311
+ index++;
11312
+ }
11303
11313
  this._isLooping = false;
11304
- this.length = 0;
11314
+ this.length = index;
11305
11315
  this._blankCount = 0;
11306
11316
  };
11307
11317
  return DisorderedArray;
@@ -15774,6 +15784,33 @@
15774
15784
  (function() {
15775
15785
  PrimitiveMesh._spherePoleIdx = 0;
15776
15786
  })();
15787
+ function _is_native_reflect_construct$1() {
15788
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
15789
+ if (Reflect.construct.sham) return false;
15790
+ if (typeof Proxy === "function") return true;
15791
+ try {
15792
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
15793
+ return true;
15794
+ } catch (e) {
15795
+ return false;
15796
+ }
15797
+ }
15798
+ function _construct$1(Parent, args, Class) {
15799
+ if (_is_native_reflect_construct$1()) _construct$1 = Reflect.construct;
15800
+ else {
15801
+ _construct$1 = function construct(Parent, args, Class) {
15802
+ var a = [
15803
+ null
15804
+ ];
15805
+ a.push.apply(a, args);
15806
+ var Constructor = Function.bind.apply(Parent, a);
15807
+ var instance = new Constructor();
15808
+ if (Class) _set_prototype_of$2(instance, Class.prototype);
15809
+ return instance;
15810
+ };
15811
+ }
15812
+ return _construct$1.apply(null, arguments);
15813
+ }
15777
15814
  /**
15778
15815
  * Layer, used for bit operations.
15779
15816
  */ exports.Layer = void 0;
@@ -15859,10 +15896,14 @@
15859
15896
  /**
15860
15897
  * Add component based on the component type.
15861
15898
  * @param type - The type of the component
15899
+ * @param args - The arguments of the component
15862
15900
  * @returns The component which has been added
15863
15901
  */ _proto.addComponent = function addComponent(type) {
15902
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
15903
+ args[_key - 1] = arguments[_key];
15904
+ }
15864
15905
  ComponentsDependencies._addCheck(this, type);
15865
- var component = new type(this);
15906
+ var component = _construct$1(type, [].concat(this, args));
15866
15907
  this._components.push(component);
15867
15908
  component._setActive(true, ActiveChangeFlag.All);
15868
15909
  return component;
@@ -16031,7 +16072,7 @@
16031
16072
  * Clone this entity include children and components.
16032
16073
  * @returns Cloned entity
16033
16074
  */ _proto.clone = function clone() {
16034
- var cloneEntity = this._createCloneEntity(this);
16075
+ var cloneEntity = this._createCloneEntity();
16035
16076
  this._parseCloneEntity(this, cloneEntity, this, cloneEntity, new Map());
16036
16077
  return cloneEntity;
16037
16078
  };
@@ -16041,23 +16082,23 @@
16041
16082
  this._isTemplate = true;
16042
16083
  this._templateResource = templateResource;
16043
16084
  };
16044
- _proto._createCloneEntity = function _createCloneEntity(srcEntity) {
16045
- var cloneEntity = new Entity(srcEntity._engine, srcEntity.name);
16085
+ _proto._createCloneEntity = function _createCloneEntity() {
16086
+ var cloneEntity = new Entity(this._engine, this.name);
16046
16087
  var templateResource = this._templateResource;
16047
16088
  if (templateResource) {
16048
16089
  cloneEntity._templateResource = templateResource;
16049
16090
  templateResource._addReferCount(1);
16050
16091
  }
16051
- cloneEntity.layer = srcEntity.layer;
16052
- cloneEntity._isActive = srcEntity._isActive;
16092
+ cloneEntity.layer = this.layer;
16093
+ cloneEntity._isActive = this._isActive;
16053
16094
  var cloneTransform = cloneEntity.transform;
16054
- var srcTransform = srcEntity.transform;
16095
+ var _this = this, srcTransform = _this.transform;
16055
16096
  cloneTransform.position = srcTransform.position;
16056
16097
  cloneTransform.rotation = srcTransform.rotation;
16057
16098
  cloneTransform.scale = srcTransform.scale;
16058
- var children = srcEntity._children;
16059
- for(var i = 0, n = srcEntity._children.length; i < n; i++){
16060
- cloneEntity.addChild(this._createCloneEntity(children[i]));
16099
+ var srcChildren = this._children;
16100
+ for(var i = 0, n = srcChildren.length; i < n; i++){
16101
+ cloneEntity.addChild(srcChildren[i]._createCloneEntity());
16061
16102
  }
16062
16103
  return cloneEntity;
16063
16104
  };
@@ -18258,7 +18299,7 @@
18258
18299
  if (info) {
18259
18300
  return info;
18260
18301
  }
18261
- info = TextUtils._measureFontOrChar(fontString);
18302
+ info = TextUtils._measureFontOrChar(fontString, TextUtils._measureString, false);
18262
18303
  fontSizeInfoCache[fontString] = info;
18263
18304
  return info;
18264
18305
  };
@@ -18279,7 +18320,7 @@
18279
18320
  return str;
18280
18321
  };
18281
18322
  TextUtils.measureChar = function measureChar(char, fontString) {
18282
- return TextUtils._measureFontOrChar(fontString, char);
18323
+ return TextUtils._measureFontOrChar(fontString, char, true);
18283
18324
  };
18284
18325
  TextUtils.measureTextWithWrap = function measureTextWithWrap(renderer) {
18285
18326
  var subFont = renderer._subFont;
@@ -18499,15 +18540,15 @@
18499
18540
  /**
18500
18541
  * @internal
18501
18542
  * Use internal for CanvasRenderer plugin.
18502
- */ TextUtils._measureFontOrChar = function _measureFontOrChar(fontString, char) {
18503
- if (char === void 0) char = "";
18543
+ */ TextUtils._measureFontOrChar = function _measureFontOrChar(fontString, measureString, isChar) {
18504
18544
  var _TextUtils_textContext = TextUtils.textContext(), canvas = _TextUtils_textContext.canvas, context = _TextUtils_textContext.context;
18505
18545
  context.font = fontString;
18506
- var measureString = char || TextUtils._measureString;
18507
18546
  // Safari gets data confusion through getImageData when the canvas width is not an integer.
18508
18547
  // The measure text width of some special invisible characters may be 0, so make sure the width is at least 1.
18509
18548
  // @todo: Text layout may vary from standard and not support emoji.
18510
- var width = Math.max(1, Math.round(context.measureText(measureString).width));
18549
+ var textMetrics = context.measureText(measureString);
18550
+ // In some case (ex: " "), actualBoundingBoxRight and actualBoundingBoxLeft will be 0, so use width.
18551
+ var width = Math.max(1, Math.round(textMetrics.actualBoundingBoxRight - textMetrics.actualBoundingBoxLeft || textMetrics.width));
18511
18552
  var baseline = Math.ceil(context.measureText(TextUtils._measureBaseline).width);
18512
18553
  var height = baseline * TextUtils._heightMultiplier;
18513
18554
  baseline = TextUtils._baselineMultiplier * baseline | 0;
@@ -18552,12 +18593,7 @@
18552
18593
  descent = bottom - baseline + 1;
18553
18594
  size = ascent + descent;
18554
18595
  }
18555
- var sizeInfo = {
18556
- ascent: ascent,
18557
- descent: descent,
18558
- size: size
18559
- };
18560
- if (char) {
18596
+ if (isChar) {
18561
18597
  var data = null;
18562
18598
  if (size > 0) {
18563
18599
  var lineIntegerW = integerW * 4;
@@ -18565,7 +18601,7 @@
18565
18601
  data = new Uint8Array(colorData.buffer, top * lineIntegerW, size * lineIntegerW);
18566
18602
  }
18567
18603
  return {
18568
- char: char,
18604
+ char: measureString,
18569
18605
  x: 0,
18570
18606
  y: 0,
18571
18607
  w: width,
@@ -18585,7 +18621,11 @@
18585
18621
  data: data
18586
18622
  };
18587
18623
  } else {
18588
- return sizeInfo;
18624
+ return {
18625
+ ascent: ascent,
18626
+ descent: descent,
18627
+ size: size
18628
+ };
18589
18629
  }
18590
18630
  };
18591
18631
  /**
@@ -20636,6 +20676,26 @@
20636
20676
  this.blitMesh = this._createBlitMesh(engine, vertices);
20637
20677
  this.flipYBlitMesh = this._createBlitMesh(engine, flipYVertices);
20638
20678
  this.blitMaterial = blitMaterial;
20679
+ // Create white and magenta textures
20680
+ var whitePixel = new Uint8Array([
20681
+ 255,
20682
+ 255,
20683
+ 255,
20684
+ 255
20685
+ ]);
20686
+ this.whiteTexture2D = this._create1x1Texture(engine, 0, exports.TextureFormat.R8G8B8A8, whitePixel);
20687
+ this.whiteTextureCube = this._create1x1Texture(engine, 1, exports.TextureFormat.R8G8B8A8, whitePixel);
20688
+ var isWebGL2 = engine._hardwareRenderer.isWebGL2;
20689
+ if (isWebGL2) {
20690
+ this.whiteTexture2DArray = this._create1x1Texture(engine, 2, exports.TextureFormat.R8G8B8A8, whitePixel);
20691
+ var whitePixel32 = new Uint32Array([
20692
+ 255,
20693
+ 255,
20694
+ 255,
20695
+ 255
20696
+ ]);
20697
+ this.uintWhiteTexture2D = this._create1x1Texture(engine, 0, exports.TextureFormat.R32G32B32A32_UInt, whitePixel32);
20698
+ }
20639
20699
  };
20640
20700
  var _proto = BasicResources.prototype;
20641
20701
  _proto._createBlitMesh = function _createBlitMesh(engine, vertices) {
@@ -20648,8 +20708,63 @@
20648
20708
  mesh.addSubMesh(0, 4, exports.MeshTopology.TriangleStrip);
20649
20709
  return mesh;
20650
20710
  };
20711
+ _proto._create1x1Texture = function _create1x1Texture(engine, type, format, pixel) {
20712
+ var texture;
20713
+ switch(type){
20714
+ case 0:
20715
+ var texture2D = new Texture2D(engine, 1, 1, format, false);
20716
+ texture2D.setPixelBuffer(pixel);
20717
+ texture = texture2D;
20718
+ break;
20719
+ case 2:
20720
+ var texture2DArray = new Texture2DArray(engine, 1, 1, 1, format, false);
20721
+ texture2DArray.setPixelBuffer(0, pixel);
20722
+ texture = texture2DArray;
20723
+ break;
20724
+ case 1:
20725
+ var textureCube = new TextureCube(engine, 1, format, false);
20726
+ for(var i = 0; i < 6; i++){
20727
+ textureCube.setPixelBuffer(exports.TextureCubeFace.PositiveX + i, pixel);
20728
+ }
20729
+ texture = textureCube;
20730
+ break;
20731
+ default:
20732
+ throw "Invalid texture type";
20733
+ }
20734
+ texture.isGCIgnored = true;
20735
+ engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
20736
+ var _class = function _class() {
20737
+ return ContentRestorer.call(this, texture);
20738
+ };
20739
+ _inherits$2(_class, ContentRestorer);
20740
+ var _proto = _class.prototype;
20741
+ _proto.restoreContent = function restoreContent() {
20742
+ switch(type){
20743
+ case 0:
20744
+ this.resource.setPixelBuffer(pixel);
20745
+ break;
20746
+ case 2:
20747
+ this.resource.setPixelBuffer(0, pixel);
20748
+ break;
20749
+ case 1:
20750
+ for(var i = 0; i < 6; i++){
20751
+ this.resource.setPixelBuffer(exports.TextureCubeFace.PositiveX + i, pixel);
20752
+ }
20753
+ break;
20754
+ }
20755
+ };
20756
+ return _class;
20757
+ }(ContentRestorer))());
20758
+ return texture;
20759
+ };
20651
20760
  return BasicResources;
20652
20761
  }();
20762
+ var TextureType;
20763
+ (function(TextureType) {
20764
+ TextureType[TextureType["Texture2D"] = 0] = "Texture2D";
20765
+ TextureType[TextureType["TextureCube"] = 1] = "TextureCube";
20766
+ TextureType[TextureType["Texture2DArray"] = 2] = "Texture2DArray";
20767
+ })(TextureType || (TextureType = {}));
20653
20768
  /**
20654
20769
  * @internal
20655
20770
  * Rendering context.
@@ -21429,17 +21544,33 @@
21429
21544
  };
21430
21545
  /**
21431
21546
  * @internal
21432
- */ _proto._onSubAssetSuccess = function _onSubAssetSuccess(assetURL, value) {
21433
- var _this__subAssetPromiseCallbacks_assetURL;
21434
- (_this__subAssetPromiseCallbacks_assetURL = this._subAssetPromiseCallbacks[assetURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetURL.resolve(value);
21435
- delete this._subAssetPromiseCallbacks[assetURL];
21547
+ */ _proto._onSubAssetSuccess = function _onSubAssetSuccess(assetBaseURL, assetSubPath, value) {
21548
+ var _this__subAssetPromiseCallbacks_assetBaseURL;
21549
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
21550
+ if (subPromiseCallback) {
21551
+ // Already resolved
21552
+ subPromiseCallback.resolve(value);
21553
+ } else {
21554
+ var _this__subAssetPromiseCallbacks, _assetBaseURL;
21555
+ ((_this__subAssetPromiseCallbacks = this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
21556
+ resolve: value
21557
+ };
21558
+ }
21436
21559
  };
21437
21560
  /**
21438
21561
  * @internal
21439
- */ _proto._onSubAssetFail = function _onSubAssetFail(assetURL, value) {
21440
- var _this__subAssetPromiseCallbacks_assetURL;
21441
- (_this__subAssetPromiseCallbacks_assetURL = this._subAssetPromiseCallbacks[assetURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetURL.reject(value);
21442
- delete this._subAssetPromiseCallbacks[assetURL];
21562
+ */ _proto._onSubAssetFail = function _onSubAssetFail(assetBaseURL, assetSubPath, value) {
21563
+ var _this__subAssetPromiseCallbacks_assetBaseURL;
21564
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
21565
+ if (subPromiseCallback) {
21566
+ // Already rejected
21567
+ subPromiseCallback.reject(value);
21568
+ } else {
21569
+ var _this__subAssetPromiseCallbacks, _assetBaseURL;
21570
+ ((_this__subAssetPromiseCallbacks = this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
21571
+ reject: value
21572
+ };
21573
+ }
21443
21574
  };
21444
21575
  /**
21445
21576
  * @internal
@@ -21584,8 +21715,21 @@
21584
21715
  if (!loader) {
21585
21716
  throw "loader not found: " + item.type;
21586
21717
  }
21587
- // Load asset
21718
+ // Check sub asset
21719
+ if (queryPath) {
21720
+ // Check whether load main asset
21721
+ var mainPromise = loadingPromises[assetBaseURL] || this._loadMainAsset(loader, item, assetBaseURL);
21722
+ mainPromise.catch(function(e) {
21723
+ _this._onSubAssetFail(assetBaseURL, queryPath, e);
21724
+ });
21725
+ return this._createSubAssetPromiseCallback(assetBaseURL, assetURL, queryPath);
21726
+ }
21727
+ return this._loadMainAsset(loader, item, assetBaseURL);
21728
+ };
21729
+ _proto._loadMainAsset = function _loadMainAsset(loader, item, assetBaseURL) {
21730
+ var _this = this;
21588
21731
  item.url = assetBaseURL;
21732
+ var loadingPromises = this._loadingPromises;
21589
21733
  var promise = loader.load(item, this);
21590
21734
  loadingPromises[assetBaseURL] = promise;
21591
21735
  promise.then(function(resource) {
@@ -21593,32 +21737,46 @@
21593
21737
  _this._addAsset(assetBaseURL, resource);
21594
21738
  }
21595
21739
  delete loadingPromises[assetBaseURL];
21740
+ _this._releaseSubAssetPromiseCallback(assetBaseURL);
21596
21741
  }, function() {
21597
- return delete loadingPromises[assetBaseURL];
21742
+ delete loadingPromises[assetBaseURL];
21743
+ _this._releaseSubAssetPromiseCallback(assetBaseURL);
21598
21744
  });
21599
- if (queryPath) {
21600
- var subPromise = new AssetPromise(function(resolve, reject) {
21601
- _this._pushSubAssetPromiseCallback(assetURL, resolve, reject);
21602
- });
21603
- loadingPromises[assetURL] = subPromise;
21604
- subPromise.then(function() {
21745
+ return promise;
21746
+ };
21747
+ _proto._createSubAssetPromiseCallback = function _createSubAssetPromiseCallback(assetBaseURL, assetURL, assetSubPath) {
21748
+ var _this = this;
21749
+ var _this__subAssetPromiseCallbacks_assetBaseURL, _subPromiseCallback, _subPromiseCallback1;
21750
+ var loadingPromises = this._loadingPromises;
21751
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
21752
+ var resolvedValue = (_subPromiseCallback = subPromiseCallback) == null ? void 0 : _subPromiseCallback.resolve;
21753
+ var rejectedValue = (_subPromiseCallback1 = subPromiseCallback) == null ? void 0 : _subPromiseCallback1.reject;
21754
+ var promise = new AssetPromise(function(resolve, reject) {
21755
+ if (resolvedValue) {
21756
+ // Already resolved
21757
+ resolve(resolvedValue);
21758
+ } else if (rejectedValue) {
21759
+ // Already rejected
21760
+ reject(rejectedValue);
21761
+ } else {
21762
+ var _this__subAssetPromiseCallbacks, _assetBaseURL;
21763
+ // Pending
21764
+ loadingPromises[assetURL] = promise;
21765
+ ((_this__subAssetPromiseCallbacks = _this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
21766
+ resolve: resolve,
21767
+ reject: reject
21768
+ };
21769
+ }
21770
+ });
21771
+ if (!resolvedValue && !rejectedValue) {
21772
+ promise.then(function() {
21605
21773
  delete loadingPromises[assetURL];
21606
21774
  }, function() {
21607
21775
  return delete loadingPromises[assetURL];
21608
21776
  });
21609
- promise.catch(function(e) {
21610
- _this._onSubAssetFail(assetURL, e);
21611
- });
21612
- return subPromise;
21613
21777
  }
21614
21778
  return promise;
21615
21779
  };
21616
- _proto._pushSubAssetPromiseCallback = function _pushSubAssetPromiseCallback(assetURL, resolve, reject) {
21617
- this._subAssetPromiseCallbacks[assetURL] = {
21618
- resolve: resolve,
21619
- reject: reject
21620
- };
21621
- };
21622
21780
  _proto._gc = function _gc(forceDestroy) {
21623
21781
  var objects = Utils.objectValues(this._referResourcePool);
21624
21782
  for(var i = 0, n = objects.length; i < n; i++){
@@ -21675,6 +21833,9 @@
21675
21833
  });
21676
21834
  return result;
21677
21835
  };
21836
+ _proto._releaseSubAssetPromiseCallback = function _releaseSubAssetPromiseCallback(assetBaseURL) {
21837
+ delete this._subAssetPromiseCallbacks[assetBaseURL];
21838
+ };
21678
21839
  /**
21679
21840
  * @internal
21680
21841
  * @beta Just for internal editor, not recommended for developers.
@@ -25099,7 +25260,6 @@
25099
25260
  _this.xrManager = new XRManager();
25100
25261
  _this.xrManager._initialize(_assert_this_initialized(_this), xrDevice);
25101
25262
  }
25102
- _this._initMagentaTextures(hardwareRenderer);
25103
25263
  if (!hardwareRenderer.canIUse(exports.GLCapabilityType.depthTexture)) {
25104
25264
  _this._macroCollection.enable(Engine._noDepthTextureMacro);
25105
25265
  } else {
@@ -25335,99 +25495,6 @@
25335
25495
  };
25336
25496
  /**
25337
25497
  * @internal
25338
- * Standalone for CanvasRenderer plugin.
25339
- */ _proto._initMagentaTextures = function _initMagentaTextures(hardwareRenderer) {
25340
- var whitePixel = new Uint8Array([
25341
- 255,
25342
- 255,
25343
- 255,
25344
- 255
25345
- ]);
25346
- var whiteTexture2D = new Texture2D(this, 1, 1, exports.TextureFormat.R8G8B8A8, false);
25347
- whiteTexture2D.setPixelBuffer(whitePixel);
25348
- whiteTexture2D.isGCIgnored = true;
25349
- var magentaPixel = new Uint8Array([
25350
- 255,
25351
- 0,
25352
- 255,
25353
- 255
25354
- ]);
25355
- var magentaTexture2D = new Texture2D(this, 1, 1, exports.TextureFormat.R8G8B8A8, false);
25356
- magentaTexture2D.setPixelBuffer(magentaPixel);
25357
- magentaTexture2D.isGCIgnored = true;
25358
- this.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
25359
- var _class = function _class() {
25360
- return ContentRestorer.call(this, magentaTexture2D);
25361
- };
25362
- _inherits$2(_class, ContentRestorer);
25363
- var _proto = _class.prototype;
25364
- _proto.restoreContent = function restoreContent() {
25365
- this.resource.setPixelBuffer(magentaPixel);
25366
- };
25367
- return _class;
25368
- }(ContentRestorer))());
25369
- var magentaTextureCube = new TextureCube(this, 1, exports.TextureFormat.R8G8B8A8, false);
25370
- for(var i = 0; i < 6; i++){
25371
- magentaTextureCube.setPixelBuffer(exports.TextureCubeFace.PositiveX + i, magentaPixel);
25372
- }
25373
- magentaTextureCube.isGCIgnored = true;
25374
- this.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
25375
- var _class = function _class() {
25376
- return ContentRestorer.call(this, magentaTextureCube);
25377
- };
25378
- _inherits$2(_class, ContentRestorer);
25379
- var _proto = _class.prototype;
25380
- _proto.restoreContent = function restoreContent() {
25381
- for(var i = 0; i < 6; i++){
25382
- this.resource.setPixelBuffer(exports.TextureCubeFace.PositiveX + i, magentaPixel);
25383
- }
25384
- };
25385
- return _class;
25386
- }(ContentRestorer))());
25387
- this._whiteTexture2D = whiteTexture2D;
25388
- this._magentaTexture2D = magentaTexture2D;
25389
- this._magentaTextureCube = magentaTextureCube;
25390
- if (hardwareRenderer.isWebGL2) {
25391
- var magentaPixel32 = new Uint32Array([
25392
- 255,
25393
- 0,
25394
- 255,
25395
- 255
25396
- ]);
25397
- var uintMagentaTexture2D = new Texture2D(this, 1, 1, exports.TextureFormat.R32G32B32A32_UInt, false);
25398
- uintMagentaTexture2D.setPixelBuffer(magentaPixel32);
25399
- uintMagentaTexture2D.isGCIgnored = true;
25400
- this.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
25401
- var _class = function _class() {
25402
- return ContentRestorer.call(this, uintMagentaTexture2D);
25403
- };
25404
- _inherits$2(_class, ContentRestorer);
25405
- var _proto = _class.prototype;
25406
- _proto.restoreContent = function restoreContent() {
25407
- this.resource.setPixelBuffer(magentaPixel32);
25408
- };
25409
- return _class;
25410
- }(ContentRestorer))());
25411
- var magentaTexture2DArray = new Texture2DArray(this, 1, 1, 1, exports.TextureFormat.R8G8B8A8, false);
25412
- magentaTexture2DArray.setPixelBuffer(0, magentaPixel);
25413
- magentaTexture2DArray.isGCIgnored = true;
25414
- this.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
25415
- var _class = function _class() {
25416
- return ContentRestorer.call(this, magentaTexture2DArray);
25417
- };
25418
- _inherits$2(_class, ContentRestorer);
25419
- var _proto = _class.prototype;
25420
- _proto.restoreContent = function restoreContent() {
25421
- this.resource.setPixelBuffer(0, magentaPixel);
25422
- };
25423
- return _class;
25424
- }(ContentRestorer))());
25425
- this._uintMagentaTexture2D = uintMagentaTexture2D;
25426
- this._magentaTexture2DArray = magentaTexture2DArray;
25427
- }
25428
- };
25429
- /**
25430
- * @internal
25431
25498
  */ _proto._pendingGC = function _pendingGC() {
25432
25499
  if (this._frameInProcess) {
25433
25500
  this._waitingGC = true;
@@ -26061,6 +26128,8 @@
26061
26128
  script._started = true;
26062
26129
  _this.removeOnStartScript(script);
26063
26130
  script.onStart();
26131
+ }, function(element, index) {
26132
+ element._onStartIndex = index;
26064
26133
  });
26065
26134
  }
26066
26135
  };
@@ -27636,6 +27705,13 @@
27636
27705
  DepthTextureMode[DepthTextureMode[/* No depth texture. */ "None"] = 0] = "None";
27637
27706
  DepthTextureMode[DepthTextureMode[/* Generate depth texture by pre-pass rendering. */ "PrePass"] = 1] = "PrePass";
27638
27707
  })(exports.DepthTextureMode || (exports.DepthTextureMode = {}));
27708
+ /**
27709
+ * The strategy to use when a shader replacement fails.
27710
+ */ exports.ReplacementFailureStrategy = void 0;
27711
+ (function(ReplacementFailureStrategy) {
27712
+ ReplacementFailureStrategy[ReplacementFailureStrategy[/** Keep the original shader. */ "KeepOriginalShader"] = 0] = "KeepOriginalShader";
27713
+ ReplacementFailureStrategy[ReplacementFailureStrategy[/** Do not render. */ "DoNotRender"] = 1] = "DoNotRender";
27714
+ })(exports.ReplacementFailureStrategy || (exports.ReplacementFailureStrategy = {}));
27639
27715
  /**
27640
27716
  * PipelinePass is a base class for all pipeline passes.
27641
27717
  */ var PipelinePass = function PipelinePass(engine) {
@@ -28974,7 +29050,7 @@
28974
29050
  depthOnlyPass.onConfig(camera);
28975
29051
  depthOnlyPass.onRender(context, cullingResults);
28976
29052
  } else {
28977
- camera.shaderData.setTexture(exports.Camera._cameraDepthTextureProperty, engine._whiteTexture2D);
29053
+ camera.shaderData.setTexture(exports.Camera._cameraDepthTextureProperty, engine._basicResources.whiteTexture2D);
28978
29054
  }
28979
29055
  // Check if need to create internal color texture
28980
29056
  var independentCanvasEnabled = camera.independentCanvasEnabled;
@@ -29060,13 +29136,15 @@
29060
29136
  var replacementSubShaders = replacementShader.subShaders;
29061
29137
  var replacementTag = context.replacementTag;
29062
29138
  if (replacementTag) {
29139
+ var materialSubShaderTagValue = materialSubShader.getTagValue(replacementTag);
29063
29140
  for(var i = 0, n = replacementSubShaders.length; i < n; i++){
29064
29141
  var subShader = replacementSubShaders[i];
29065
- if (subShader.getTagValue(replacementTag) === materialSubShader.getTagValue(replacementTag)) {
29142
+ if (subShader.getTagValue(replacementTag) === materialSubShaderTagValue) {
29066
29143
  this.pushRenderDataWithShader(context, data, subShader.passes, renderStates);
29067
- break;
29144
+ return;
29068
29145
  }
29069
29146
  }
29147
+ context.replacementFailureStrategy === exports.ReplacementFailureStrategy.KeepOriginalShader && this.pushRenderDataWithShader(context, data, materialSubShader.passes, renderStates);
29070
29148
  } else {
29071
29149
  this.pushRenderDataWithShader(context, data, replacementSubShaders[0].passes, renderStates);
29072
29150
  }
@@ -29222,6 +29300,7 @@
29222
29300
  /** @internal */ _this._virtualCamera = new VirtualCamera();
29223
29301
  /** @internal */ _this._replacementShader = null;
29224
29302
  /** @internal */ _this._replacementSubShaderTag = null;
29303
+ /** @internal */ _this._replacementFailureStrategy = null;
29225
29304
  /** @internal */ _this._cameraIndex = -1;
29226
29305
  _this._priority = 0;
29227
29306
  _this._shaderData = new ShaderData(ShaderDataGroup.Camera);
@@ -29400,6 +29479,7 @@
29400
29479
  context.virtualCamera = virtualCamera;
29401
29480
  context.replacementShader = this._replacementShader;
29402
29481
  context.replacementTag = this._replacementSubShaderTag;
29482
+ context.replacementFailureStrategy = this._replacementFailureStrategy;
29403
29483
  // compute cull frustum.
29404
29484
  if (this.enableFrustumCulling && this._frustumChangeFlag.flag) {
29405
29485
  this._frustum.calculateFromMatrix(virtualCamera.viewProjectionMatrix);
@@ -29419,15 +29499,18 @@
29419
29499
  this._renderPipeline.render(context, cubeFace, mipLevel, clearMask);
29420
29500
  this._engine._renderCount++;
29421
29501
  };
29422
- _proto.setReplacementShader = function setReplacementShader(shader, replacementTag) {
29502
+ _proto.setReplacementShader = function setReplacementShader(shader, replacementTag, failureStrategy) {
29503
+ if (failureStrategy === void 0) failureStrategy = exports.ReplacementFailureStrategy.KeepOriginalShader;
29423
29504
  this._replacementShader = shader;
29424
29505
  this._replacementSubShaderTag = typeof replacementTag === "string" ? ShaderTagKey.getByName(replacementTag) : replacementTag;
29506
+ this._replacementFailureStrategy = failureStrategy;
29425
29507
  };
29426
29508
  /**
29427
29509
  * Reset and clear the replacement shader.
29428
29510
  */ _proto.resetReplacementShader = function resetReplacementShader() {
29429
29511
  this._replacementShader = null;
29430
29512
  this._replacementSubShaderTag = null;
29513
+ this._replacementFailureStrategy = null;
29431
29514
  };
29432
29515
  /**
29433
29516
  * @inheritdoc
@@ -36317,6 +36400,7 @@
36317
36400
  RenderTarget: RenderTarget,
36318
36401
  RenderTargetBlendState: RenderTargetBlendState,
36319
36402
  get Renderer () { return exports.Renderer; },
36403
+ get ReplacementFailureStrategy () { return exports.ReplacementFailureStrategy; },
36320
36404
  ResourceManager: ResourceManager,
36321
36405
  RotationOverLifetimeModule: RotationOverLifetimeModule,
36322
36406
  Scene: Scene,
@@ -40428,15 +40512,15 @@
40428
40512
  for(var i = 0, length = item.length; i < length; i++){
40429
40513
  var mesh = item[i];
40430
40514
  // @ts-ignore
40431
- _this.resourceManager._onSubAssetSuccess(url + "?q=" + glTFResourceKey + "[" + index + "][" + i + "]", mesh);
40515
+ _this.resourceManager._onSubAssetSuccess(url, glTFResourceKey + "[" + index + "][" + i + "]", mesh);
40432
40516
  }
40433
40517
  } else {
40434
40518
  // @ts-ignore
40435
- _this.resourceManager._onSubAssetSuccess(url + "?q=" + glTFResourceKey + "[" + index + "]", item);
40519
+ _this.resourceManager._onSubAssetSuccess(url, "" + glTFResourceKey + (index === undefined ? "" : "[" + index + "]"), item);
40436
40520
  var _this_glTF_scene;
40437
40521
  if (type === 2 && ((_this_glTF_scene = _this.glTF.scene) != null ? _this_glTF_scene : 0) === index) {
40438
40522
  // @ts-ignore
40439
- _this.resourceManager._onSubAssetSuccess("" + url + "?q=defaultSceneRoot", item);
40523
+ _this.resourceManager._onSubAssetSuccess(url, "defaultSceneRoot", item);
40440
40524
  }
40441
40525
  }
40442
40526
  });
@@ -42857,7 +42941,7 @@
42857
42941
  var sceneExtensions = sceneInfo.extensions;
42858
42942
  var engine = glTFResource.engine;
42859
42943
  var isDefaultScene = scene === index;
42860
- var sceneNodes = sceneInfo.nodes;
42944
+ var sceneNodes = sceneInfo.nodes || [];
42861
42945
  var sceneRoot;
42862
42946
  if (sceneNodes.length === 1) {
42863
42947
  sceneRoot = context.get(exports.GLTFParserType.Entity, sceneNodes[0]);
@@ -42947,7 +43031,8 @@
42947
43031
  var blendShapeWeights = entityInfo.weights || glTFMesh.weights;
42948
43032
  var materialPromises = new Array(rendererCount);
42949
43033
  for(var i = 0; i < rendererCount; i++){
42950
- materialPromises[i] = context.get(exports.GLTFParserType.Material, glTFMeshPrimitives[i].material);
43034
+ var _glTFMeshPrimitives_i_material;
43035
+ materialPromises[i] = context.get(exports.GLTFParserType.Material, (_glTFMeshPrimitives_i_material = glTFMeshPrimitives[i].material) != null ? _glTFMeshPrimitives_i_material : -1);
42951
43036
  }
42952
43037
  return Promise.all([
42953
43038
  context.get(exports.GLTFParserType.Mesh, meshID),
@@ -43269,7 +43354,8 @@
43269
43354
  registerGLTFParser(exports.GLTFParserType.AnimatorController)
43270
43355
  ], exports.GLTFAnimatorControllerParser);
43271
43356
  // Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js
43272
- var MeshoptDecoder = function() {
43357
+ var ready;
43358
+ function getMeshoptDecoder() {
43273
43359
  var unpack = function unpack(data) {
43274
43360
  var result = new Uint8Array(data.length);
43275
43361
  for(var i = 0; i < data.length; ++i){
@@ -43314,7 +43400,7 @@
43314
43400
  return worker;
43315
43401
  };
43316
43402
  var initWorkers = function initWorkers(count) {
43317
- 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 }';
43403
+ 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 }';
43318
43404
  var blob = new Blob([
43319
43405
  source
43320
43406
  ], {
@@ -43353,6 +43439,7 @@
43353
43439
  ]);
43354
43440
  });
43355
43441
  };
43442
+ if (ready) return ready;
43356
43443
  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";
43357
43444
  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";
43358
43445
  var wasmpack = new Uint8Array([
@@ -43420,9 +43507,32 @@
43420
43507
  // @ts-ignore
43421
43508
  var wasm = SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;
43422
43509
  var instance;
43423
- var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
43510
+ ready = WebAssembly.instantiate(unpack(wasm)).then(function(result) {
43424
43511
  instance = result.instance;
43425
43512
  instance.exports.__wasm_call_ctors();
43513
+ }).then(function() {
43514
+ return {
43515
+ workerCount: 4,
43516
+ ready: ready,
43517
+ useWorkers: function useWorkers(workerCount) {
43518
+ this.workerCount = workerCount != null ? workerCount : this.workerCount;
43519
+ initWorkers(this.workerCount);
43520
+ },
43521
+ decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
43522
+ if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
43523
+ if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
43524
+ return ready.then(function() {
43525
+ var target = new Uint8Array(count * stride);
43526
+ decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
43527
+ return target;
43528
+ });
43529
+ },
43530
+ release: function release() {
43531
+ for(var i = 0; i < workers.length; i++){
43532
+ workers[i].object.terminate();
43533
+ }
43534
+ }
43535
+ };
43426
43536
  });
43427
43537
  var filters = {
43428
43538
  NONE: "",
@@ -43437,28 +43547,8 @@
43437
43547
  };
43438
43548
  var workers = [];
43439
43549
  var requestId = 0;
43440
- return {
43441
- workerCount: 4,
43442
- ready: ready,
43443
- useWorkers: function useWorkers() {
43444
- initWorkers(this.workerCount);
43445
- },
43446
- decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
43447
- if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
43448
- if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
43449
- return ready.then(function() {
43450
- var target = new Uint8Array(count * stride);
43451
- decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
43452
- return target;
43453
- });
43454
- },
43455
- release: function release() {
43456
- for(var i = 0; i < workers.length; i++){
43457
- workers[i].object.terminate();
43458
- }
43459
- }
43460
- };
43461
- }();
43550
+ return ready;
43551
+ }
43462
43552
  exports.GLTFLoader = /*#__PURE__*/ function(Loader1) {
43463
43553
  var GLTFLoader = function GLTFLoader() {
43464
43554
  return Loader1.apply(this, arguments);
@@ -43466,11 +43556,13 @@
43466
43556
  _inherits(GLTFLoader, Loader1);
43467
43557
  var _proto = GLTFLoader.prototype;
43468
43558
  _proto.initialize = function initialize(_, configuration) {
43469
- var _configuration_glTF;
43470
- var meshOptOptions = (_configuration_glTF = configuration.glTF) == null ? void 0 : _configuration_glTF.meshOpt;
43559
+ var _configuration_glTFLoader, _configuration_glTF;
43560
+ var _configuration_glTFLoader_meshOpt;
43561
+ var meshOptOptions = (_configuration_glTFLoader_meshOpt = (_configuration_glTFLoader = configuration.glTFLoader) == null ? void 0 : _configuration_glTFLoader.meshOpt) != null ? _configuration_glTFLoader_meshOpt : (_configuration_glTF = configuration.glTF) == null ? void 0 : _configuration_glTF.meshOpt;
43471
43562
  if (meshOptOptions) {
43472
- MeshoptDecoder.workerCount = meshOptOptions.workerCount;
43473
- MeshoptDecoder.useWorkers();
43563
+ return getMeshoptDecoder().then(function(meshoptDecoder) {
43564
+ meshoptDecoder.useWorkers(meshOptOptions.workerCount);
43565
+ });
43474
43566
  }
43475
43567
  return Promise.resolve();
43476
43568
  };
@@ -43491,7 +43583,11 @@
43491
43583
  * Release glTF loader memory(includes meshopt workers).
43492
43584
  * @remarks If use loader after releasing, we should release again.
43493
43585
  */ GLTFLoader.release = function release() {
43494
- MeshoptDecoder.release();
43586
+ if (ready) {
43587
+ getMeshoptDecoder().then(function(meshoptDecoder) {
43588
+ meshoptDecoder.release();
43589
+ });
43590
+ }
43495
43591
  };
43496
43592
  return GLTFLoader;
43497
43593
  }(Loader);
@@ -44678,6 +44774,8 @@
44678
44774
  scene.background.texture = texture;
44679
44775
  });
44680
44776
  promises.push(backgroundPromise);
44777
+ var _background_textureFillMode;
44778
+ scene.background.textureFillMode = (_background_textureFillMode = background.textureFillMode) != null ? _background_textureFillMode : scene.background.textureFillMode;
44681
44779
  }
44682
44780
  break;
44683
44781
  }
@@ -45060,7 +45158,9 @@
45060
45158
  var _proto = EXT_meshopt_compression.prototype;
45061
45159
  _proto.createAndParse = function createAndParse(context, schema) {
45062
45160
  return context.get(exports.GLTFParserType.Buffer, schema.buffer).then(function(arrayBuffer) {
45063
- return MeshoptDecoder.decodeGltfBuffer(schema.count, schema.byteStride, new Uint8Array(arrayBuffer, schema.byteOffset, schema.byteLength), schema.mode, schema.filter);
45161
+ return getMeshoptDecoder().then(function(decoder) {
45162
+ return decoder.decodeGltfBuffer(schema.count, schema.byteStride, new Uint8Array(arrayBuffer, schema.byteOffset, schema.byteLength), schema.mode, schema.filter);
45163
+ });
45064
45164
  });
45065
45165
  };
45066
45166
  return EXT_meshopt_compression;
@@ -45092,7 +45192,7 @@
45092
45192
  ], KHR_materials_anisotropy);
45093
45193
 
45094
45194
  //@ts-ignore
45095
- var version = "1.2.0-beta.5";
45195
+ var version = "1.2.0-beta.7";
45096
45196
  console.log("Galacean engine version: " + version);
45097
45197
  for(var key in CoreObjects){
45098
45198
  Loader.registerClass(key, CoreObjects[key]);