@galacean/engine-loader 1.2.0-alpha.0 → 1.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var engineCore = require('@galacean/engine-core');
6
6
  var engineMath = require('@galacean/engine-math');
7
7
  var engineRhiWebgl = require('@galacean/engine-rhi-webgl');
8
- var engineDraco = require('@galacean/engine-draco');
9
8
 
10
9
  function _extends() {
11
10
  _extends = Object.assign || function assign(target) {
@@ -538,6 +537,8 @@ var ReflectionParser = /*#__PURE__*/ function() {
538
537
  if (position) entity.transform.position.copyFrom(position);
539
538
  if (rotation) entity.transform.rotation.copyFrom(rotation);
540
539
  if (scale) entity.transform.scale.copyFrom(scale);
540
+ var _entityConfig_layer;
541
+ entity.layer = (_entityConfig_layer = entityConfig.layer) != null ? _entityConfig_layer : entity.layer;
541
542
  return entity;
542
543
  });
543
544
  };
@@ -1534,7 +1535,7 @@ FontLoader = __decorate([
1534
1535
  * Float
1535
1536
  */ "FLOAT"] = 5126] = "FLOAT";
1536
1537
  })(AccessorComponentType || (AccessorComponentType = {}));
1537
- var AccessorType;
1538
+ exports.AccessorType = void 0;
1538
1539
  (function(AccessorType) {
1539
1540
  AccessorType[/**
1540
1541
  * Scalar
@@ -1557,7 +1558,7 @@ var AccessorType;
1557
1558
  AccessorType[/**
1558
1559
  * Matrix4x4
1559
1560
  */ "MAT4"] = "MAT4";
1560
- })(AccessorType || (AccessorType = {}));
1561
+ })(exports.AccessorType || (exports.AccessorType = {}));
1561
1562
  var AnimationChannelTargetPath;
1562
1563
  (function(AnimationChannelTargetPath) {
1563
1564
  AnimationChannelTargetPath[/**
@@ -1706,7 +1707,7 @@ var TextureWrapMode;
1706
1707
  var glTFItems = this.glTF[glTFSchemaMap[type]];
1707
1708
  if (glTFItems && (index === undefined || glTFItems[index])) {
1708
1709
  if (index === undefined) {
1709
- resource = type === 7 ? glTFItems.map(function(_, index) {
1710
+ resource = type === 8 ? glTFItems.map(function(_, index) {
1710
1711
  return _this.get(type, index);
1711
1712
  }) : Promise.all(glTFItems.map(function(_, index) {
1712
1713
  return _this.get(type, index);
@@ -1728,11 +1729,11 @@ var TextureWrapMode;
1728
1729
  _this.glTF = json;
1729
1730
  return Promise.all([
1730
1731
  _this.get(1),
1731
- _this.get(4),
1732
1732
  _this.get(5),
1733
1733
  _this.get(6),
1734
- _this.get(8),
1734
+ _this.get(7),
1735
1735
  _this.get(9),
1736
+ _this.get(10),
1736
1737
  _this.get(2)
1737
1738
  ]).then(function() {
1738
1739
  var glTFResource = _this.glTFResource;
@@ -1782,7 +1783,7 @@ var TextureWrapMode;
1782
1783
  var _this = this;
1783
1784
  var glTFResourceKey = glTFResourceMap[type];
1784
1785
  if (!glTFResourceKey) return;
1785
- if (type === 7) {
1786
+ if (type === 8) {
1786
1787
  var _this_glTFResource, _glTFResourceKey;
1787
1788
  ((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
1788
1789
  } else {
@@ -1790,7 +1791,7 @@ var TextureWrapMode;
1790
1791
  resource.then(function(item) {
1791
1792
  var _this_glTFResource, _glTFResourceKey;
1792
1793
  ((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
1793
- if (type === 6) {
1794
+ if (type === 7) {
1794
1795
  for(var i = 0, length = item.length; i < length; i++){
1795
1796
  var mesh = item[i];
1796
1797
  // @ts-ignore
@@ -1830,17 +1831,18 @@ exports.GLTFParserType = void 0;
1830
1831
  GLTFParserType[GLTFParserType["Validator"] = 1] = "Validator";
1831
1832
  GLTFParserType[GLTFParserType["Scene"] = 2] = "Scene";
1832
1833
  GLTFParserType[GLTFParserType["Buffer"] = 3] = "Buffer";
1833
- GLTFParserType[GLTFParserType["Texture"] = 4] = "Texture";
1834
- GLTFParserType[GLTFParserType["Material"] = 5] = "Material";
1835
- GLTFParserType[GLTFParserType["Mesh"] = 6] = "Mesh";
1836
- GLTFParserType[GLTFParserType["Entity"] = 7] = "Entity";
1837
- GLTFParserType[GLTFParserType["Skin"] = 8] = "Skin";
1838
- GLTFParserType[GLTFParserType["Animation"] = 9] = "Animation";
1834
+ GLTFParserType[GLTFParserType["BufferView"] = 4] = "BufferView";
1835
+ GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
1836
+ GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
1837
+ GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
1838
+ GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
1839
+ GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
1840
+ GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
1839
1841
  })(exports.GLTFParserType || (exports.GLTFParserType = {}));
1840
1842
  var _obj;
1841
- var glTFSchemaMap = (_obj = {}, _obj[2] = "scenes", _obj[3] = "buffers", _obj[4] = "textures", _obj[5] = "materials", _obj[6] = "meshes", _obj[7] = "nodes", _obj[8] = "skins", _obj[9] = "animations", _obj);
1843
+ var glTFSchemaMap = (_obj = {}, _obj[2] = "scenes", _obj[3] = "buffers", _obj[5] = "textures", _obj[6] = "materials", _obj[7] = "meshes", _obj[8] = "nodes", _obj[9] = "skins", _obj[10] = "animations", _obj[4] = "bufferViews", _obj);
1842
1844
  var _obj1;
1843
- var glTFResourceMap = (_obj1 = {}, _obj1[2] = "_sceneRoots", _obj1[4] = "textures", _obj1[5] = "materials", _obj1[6] = "meshes", _obj1[7] = "entities", _obj1[8] = "skins", _obj1[9] = "animations", _obj1);
1845
+ var glTFResourceMap = (_obj1 = {}, _obj1[2] = "_sceneRoots", _obj1[5] = "textures", _obj1[6] = "materials", _obj1[7] = "meshes", _obj1[8] = "entities", _obj1[9] = "skins", _obj1[10] = "animations", _obj1);
1844
1846
  function registerGLTFParser(pipeline) {
1845
1847
  return function(Parser) {
1846
1848
  var parser = new Parser();
@@ -1894,19 +1896,19 @@ function registerGLTFParser(pipeline) {
1894
1896
  * Get the number of bytes occupied by accessor type.
1895
1897
  */ GLTFUtils.getAccessorTypeSize = function getAccessorTypeSize(accessorType) {
1896
1898
  switch(accessorType){
1897
- case AccessorType.SCALAR:
1899
+ case exports.AccessorType.SCALAR:
1898
1900
  return 1;
1899
- case AccessorType.VEC2:
1901
+ case exports.AccessorType.VEC2:
1900
1902
  return 2;
1901
- case AccessorType.VEC3:
1903
+ case exports.AccessorType.VEC3:
1902
1904
  return 3;
1903
- case AccessorType.VEC4:
1905
+ case exports.AccessorType.VEC4:
1904
1906
  return 4;
1905
- case AccessorType.MAT2:
1907
+ case exports.AccessorType.MAT2:
1906
1908
  return 4;
1907
- case AccessorType.MAT3:
1909
+ case exports.AccessorType.MAT3:
1908
1910
  return 9;
1909
- case AccessorType.MAT4:
1911
+ case exports.AccessorType.MAT4:
1910
1912
  return 16;
1911
1913
  }
1912
1914
  };
@@ -1946,11 +1948,10 @@ function registerGLTFParser(pipeline) {
1946
1948
  GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
1947
1949
  var componentType = accessor.componentType;
1948
1950
  var bufferView = bufferViews[accessor.bufferView];
1949
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
1951
+ return context.get(exports.GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
1950
1952
  var bufferIndex = bufferView.buffer;
1951
- var buffer = buffers[bufferIndex];
1952
- var _bufferView_byteOffset;
1953
- var bufferByteOffset = (_bufferView_byteOffset = bufferView.byteOffset) != null ? _bufferView_byteOffset : 0;
1953
+ var _bufferViewData_byteOffset;
1954
+ var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
1954
1955
  var _accessor_byteOffset;
1955
1956
  var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1956
1957
  var TypedArray = GLTFUtils.getComponentType(componentType);
@@ -1969,19 +1970,21 @@ function registerGLTFParser(pipeline) {
1969
1970
  if (!bufferInfo) {
1970
1971
  var offset = bufferByteOffset + bufferSlice * bufferStride;
1971
1972
  var count = accessorCount * (bufferStride / dataElementBytes);
1972
- var data = new TypedArray(buffer, offset, count);
1973
+ var data = new TypedArray(bufferViewData.buffer, offset, count);
1973
1974
  accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1974
1975
  bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1975
1976
  }
1976
1977
  } else {
1977
1978
  var offset1 = bufferByteOffset + byteOffset;
1978
1979
  var count1 = accessorCount * dataElementSize;
1979
- var data1 = new TypedArray(buffer, offset1, count1);
1980
+ var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
1980
1981
  bufferInfo = new BufferInfo(data1, false, elementStride);
1981
1982
  bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1982
1983
  }
1983
1984
  if (accessor.sparse) {
1984
- GLTFUtils.processingSparseData(bufferViews, accessor, buffers, bufferInfo);
1985
+ return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
1986
+ return bufferInfo;
1987
+ });
1985
1988
  }
1986
1989
  return bufferInfo;
1987
1990
  });
@@ -2057,40 +2060,43 @@ function registerGLTFParser(pipeline) {
2057
2060
  };
2058
2061
  /**
2059
2062
  * Get accessor data.
2060
- */ GLTFUtils.processingSparseData = function processingSparseData(bufferViews, accessor, buffers, bufferInfo) {
2063
+ */ GLTFUtils.processingSparseData = function processingSparseData(context, accessor, bufferInfo) {
2061
2064
  var restoreInfo = bufferInfo.restoreInfo;
2065
+ var bufferViews = context.glTF.bufferViews;
2062
2066
  var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
2063
2067
  var TypedArray = GLTFUtils.getComponentType(accessor.componentType);
2064
2068
  var data = bufferInfo.data.slice();
2065
2069
  var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
2066
2070
  var indicesBufferView = bufferViews[indices.bufferView];
2067
2071
  var valuesBufferView = bufferViews[values.bufferView];
2068
- var indicesBufferIndex = indicesBufferView.buffer;
2069
- var valuesBufferIndex = valuesBufferView.buffer;
2070
- var indicesArrayBuffer = buffers[indicesBufferIndex];
2071
- var valuesArrayBuffer = buffers[valuesBufferIndex];
2072
- var _indices_byteOffset, _indicesBufferView_byteOffset;
2073
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
2074
- var indicesByteLength = indicesBufferView.byteLength;
2075
- var _values_byteOffset, _valuesBufferView_byteOffset;
2076
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
2077
- var valuesByteLength = valuesBufferView.byteLength;
2078
- restoreInfo.typeSize = accessorTypeSize;
2079
- restoreInfo.sparseCount = count;
2080
- var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
2081
- var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
2082
- var indicesArray = new IndexTypeArray(indicesArrayBuffer, indicesByteOffset, indexLength);
2083
- restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferIndex, IndexTypeArray, indicesByteOffset, indexLength);
2084
- var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
2085
- var valuesArray = new TypedArray(valuesArrayBuffer, valuesByteOffset, valueLength);
2086
- restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferIndex, TypedArray, valuesByteOffset, valueLength);
2087
- for(var i = 0; i < count; i++){
2088
- var replaceIndex = indicesArray[i];
2089
- for(var j = 0; j < accessorTypeSize; j++){
2090
- data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
2072
+ return Promise.all([
2073
+ context.get(exports.GLTFParserType.BufferView, indices.bufferView),
2074
+ context.get(exports.GLTFParserType.BufferView, values.bufferView)
2075
+ ]).then(function(param) {
2076
+ var indicesUint8Array = param[0], valuesUin8Array = param[1];
2077
+ var _indices_byteOffset, _indicesUint8Array_byteOffset;
2078
+ var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesUint8Array_byteOffset = indicesUint8Array.byteOffset) != null ? _indicesUint8Array_byteOffset : 0);
2079
+ var indicesByteLength = indicesUint8Array.byteLength;
2080
+ var _values_byteOffset, _valuesUin8Array_byteOffset;
2081
+ var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesUin8Array_byteOffset = valuesUin8Array.byteOffset) != null ? _valuesUin8Array_byteOffset : 0);
2082
+ var valuesByteLength = valuesUin8Array.byteLength;
2083
+ restoreInfo.typeSize = accessorTypeSize;
2084
+ restoreInfo.sparseCount = count;
2085
+ var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
2086
+ var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
2087
+ var indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);
2088
+ restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferView.buffer, IndexTypeArray, indicesByteOffset, indexLength);
2089
+ var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
2090
+ var valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);
2091
+ restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferView.buffer, TypedArray, valuesByteOffset, valueLength);
2092
+ for(var i = 0; i < count; i++){
2093
+ var replaceIndex = indicesArray[i];
2094
+ for(var j = 0; j < accessorTypeSize; j++){
2095
+ data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
2096
+ }
2091
2097
  }
2092
- }
2093
- bufferInfo.data = data;
2098
+ bufferInfo.data = data;
2099
+ });
2094
2100
  };
2095
2101
  GLTFUtils.getIndexFormat = function getIndexFormat(type) {
2096
2102
  switch(type){
@@ -3112,8 +3118,9 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
3112
3118
  });
3113
3119
  };
3114
3120
  /**
3115
- * Destroy ktx2 transcoder worker.
3116
- */ KTX2Loader1.destroy = function destroy() {
3121
+ * Release ktx2 transcoder worker.
3122
+ * @remarks If use loader after releasing, we should release again.
3123
+ */ KTX2Loader1.release = function release() {
3117
3124
  if (this._binomialLLCTranscoder) this._binomialLLCTranscoder.destroy();
3118
3125
  if (this._khronosTranscoder) this._khronosTranscoder.destroy();
3119
3126
  this._binomialLLCTranscoder = null;
@@ -4643,12 +4650,256 @@ exports.GLTFValidator = __decorate([
4643
4650
  registerGLTFParser(exports.GLTFParserType.Validator)
4644
4651
  ], exports.GLTFValidator);
4645
4652
 
4646
- var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4653
+ exports.GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
4654
+ _inherits(GLTFBufferViewParser, GLTFParser1);
4655
+ function GLTFBufferViewParser() {
4656
+ return GLTFParser1.apply(this, arguments);
4657
+ }
4658
+ var _proto = GLTFBufferViewParser.prototype;
4659
+ _proto.parse = function parse(context, index) {
4660
+ var bufferView = context.glTF.bufferViews[index];
4661
+ var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
4662
+ return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(exports.GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
4663
+ return new Uint8Array(buffer, byteOffset, byteLength);
4664
+ });
4665
+ };
4666
+ return GLTFBufferViewParser;
4667
+ }(GLTFParser);
4668
+ exports.GLTFBufferViewParser = __decorate([
4669
+ registerGLTFParser(exports.GLTFParserType.BufferView)
4670
+ ], exports.GLTFBufferViewParser);
4671
+
4672
+ // Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js
4673
+ var MeshoptDecoder = function() {
4674
+ var unpack = function unpack(data) {
4675
+ var result = new Uint8Array(data.length);
4676
+ for(var i = 0; i < data.length; ++i){
4677
+ var ch = data.charCodeAt(i);
4678
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
4679
+ }
4680
+ var write = 0;
4681
+ for(var i1 = 0; i1 < data.length; ++i1){
4682
+ result[write++] = result[i1] < 60 ? wasmpack[result[i1]] : (result[i1] - 60) * 64 + result[++i1];
4683
+ }
4684
+ return result.buffer.slice(0, write);
4685
+ };
4686
+ var decode = function decode(fun, target, count, size, source, filter) {
4687
+ var sbrk = instance.exports.sbrk;
4688
+ var count4 = count + 3 & ~3;
4689
+ var tp = sbrk(count4 * size);
4690
+ var sp = sbrk(source.length);
4691
+ var heap = new Uint8Array(instance.exports.memory.buffer);
4692
+ heap.set(source, sp);
4693
+ var res = fun(tp, count, size, sp, source.length);
4694
+ if (res == 0 && filter) {
4695
+ filter(tp, count4, size);
4696
+ }
4697
+ target.set(heap.subarray(tp, tp + count * size));
4698
+ sbrk(tp - sbrk(0));
4699
+ if (res != 0) {
4700
+ throw new Error("Malformed buffer data: " + res);
4701
+ }
4702
+ };
4703
+ var createWorker = function createWorker(url) {
4704
+ var worker = {
4705
+ object: new Worker(url),
4706
+ pending: 0,
4707
+ requests: {}
4708
+ };
4709
+ worker.object.onmessage = function(event) {
4710
+ var data = event.data;
4711
+ worker.pending -= data.count;
4712
+ worker.requests[data.id][data.action](data.value);
4713
+ delete worker.requests[data.id];
4714
+ };
4715
+ return worker;
4716
+ };
4717
+ var initWorkers = function initWorkers(count) {
4718
+ 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();});" + "self.onmessage = workerProcess;" + decode.toString() + workerProcess.toString();
4719
+ var blob = new Blob([
4720
+ source
4721
+ ], {
4722
+ type: "text/javascript"
4723
+ });
4724
+ var url = URL.createObjectURL(blob);
4725
+ for(var i = 0; i < count; ++i){
4726
+ workers[i] = createWorker(url);
4727
+ }
4728
+ URL.revokeObjectURL(url);
4729
+ };
4730
+ var decodeWorker = function decodeWorker(count, size, source, mode, filter) {
4731
+ var worker = workers[0];
4732
+ for(var i = 1; i < workers.length; ++i){
4733
+ if (workers[i].pending < worker.pending) {
4734
+ worker = workers[i];
4735
+ }
4736
+ }
4737
+ return new Promise(function(resolve, reject) {
4738
+ var data = new Uint8Array(source);
4739
+ var id = requestId++;
4740
+ worker.pending += count;
4741
+ worker.requests[id] = {
4742
+ resolve: resolve,
4743
+ reject: reject
4744
+ };
4745
+ worker.object.postMessage({
4746
+ id: id,
4747
+ count: count,
4748
+ size: size,
4749
+ source: data,
4750
+ mode: mode,
4751
+ filter: filter
4752
+ }, [
4753
+ data.buffer
4754
+ ]);
4755
+ });
4756
+ };
4757
+ var workerProcess = function workerProcess(event) {
4758
+ ready.then(function() {
4759
+ var data = event.data;
4760
+ try {
4761
+ var target = new Uint8Array(data.count * data.size);
4762
+ decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);
4763
+ self.postMessage({
4764
+ id: data.id,
4765
+ count: data.count,
4766
+ action: "resolve",
4767
+ value: target
4768
+ }, [
4769
+ target.buffer
4770
+ ]);
4771
+ } catch (error) {
4772
+ self.postMessage({
4773
+ id: data.id,
4774
+ count: data.count,
4775
+ action: "reject",
4776
+ value: error
4777
+ });
4778
+ }
4779
+ });
4780
+ };
4781
+ 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";
4782
+ 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";
4783
+ var wasmpack = new Uint8Array([
4784
+ 32,
4785
+ 0,
4786
+ 65,
4787
+ 2,
4788
+ 1,
4789
+ 106,
4790
+ 34,
4791
+ 33,
4792
+ 3,
4793
+ 128,
4794
+ 11,
4795
+ 4,
4796
+ 13,
4797
+ 64,
4798
+ 6,
4799
+ 253,
4800
+ 10,
4801
+ 7,
4802
+ 15,
4803
+ 116,
4804
+ 127,
4805
+ 5,
4806
+ 8,
4807
+ 12,
4808
+ 40,
4809
+ 16,
4810
+ 19,
4811
+ 54,
4812
+ 20,
4813
+ 9,
4814
+ 27,
4815
+ 255,
4816
+ 113,
4817
+ 17,
4818
+ 42,
4819
+ 67,
4820
+ 24,
4821
+ 23,
4822
+ 146,
4823
+ 148,
4824
+ 18,
4825
+ 14,
4826
+ 22,
4827
+ 45,
4828
+ 70,
4829
+ 69,
4830
+ 56,
4831
+ 114,
4832
+ 101,
4833
+ 21,
4834
+ 25,
4835
+ 63,
4836
+ 75,
4837
+ 136,
4838
+ 108,
4839
+ 28,
4840
+ 118,
4841
+ 29,
4842
+ 73,
4843
+ 115
4844
+ ]);
4845
+ // @ts-ignore
4846
+ var wasm = engineCore.SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;
4847
+ var instance;
4848
+ var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
4849
+ instance = result.instance;
4850
+ instance.exports.__wasm_call_ctors();
4851
+ });
4852
+ var filters = {
4853
+ NONE: "",
4854
+ OCTAHEDRAL: "meshopt_decodeFilterOct",
4855
+ QUATERNION: "meshopt_decodeFilterQuat",
4856
+ EXPONENTIAL: "meshopt_decodeFilterExp"
4857
+ };
4858
+ var decoders = {
4859
+ ATTRIBUTES: "meshopt_decodeVertexBuffer",
4860
+ TRIANGLES: "meshopt_decodeIndexBuffer",
4861
+ INDICES: "meshopt_decodeIndexSequence"
4862
+ };
4863
+ var workers = [];
4864
+ var requestId = 0;
4865
+ return {
4866
+ workerCount: 4,
4867
+ ready: ready,
4868
+ useWorkers: function useWorkers() {
4869
+ initWorkers(this.workerCount);
4870
+ },
4871
+ decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
4872
+ if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
4873
+ if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
4874
+ return ready.then(function() {
4875
+ var target = new Uint8Array(count * stride);
4876
+ decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
4877
+ return target;
4878
+ });
4879
+ },
4880
+ release: function release() {
4881
+ for(var i = 0; i < workers.length; i++){
4882
+ workers[i].object.terminate();
4883
+ }
4884
+ }
4885
+ };
4886
+ }();
4887
+
4888
+ exports.GLTFLoader = /*#__PURE__*/ function(Loader1) {
4647
4889
  _inherits(GLTFLoader, Loader1);
4648
4890
  function GLTFLoader() {
4649
4891
  return Loader1.apply(this, arguments);
4650
4892
  }
4651
4893
  var _proto = GLTFLoader.prototype;
4894
+ _proto.initialize = function initialize(_, configuration) {
4895
+ var _configuration_glTF;
4896
+ var meshOptOptions = (_configuration_glTF = configuration.glTF) == null ? void 0 : _configuration_glTF.meshOpt;
4897
+ if (meshOptOptions) {
4898
+ MeshoptDecoder.workerCount = meshOptOptions.workerCount;
4899
+ MeshoptDecoder.useWorkers();
4900
+ }
4901
+ return Promise.resolve();
4902
+ };
4652
4903
  _proto.load = function load(item, resourceManager) {
4653
4904
  var url = item.url;
4654
4905
  var params = item.params;
@@ -4662,14 +4913,20 @@ var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4662
4913
  context.parse().then(resolve).catch(reject);
4663
4914
  });
4664
4915
  };
4916
+ /**
4917
+ * Release glTF loader memory(includes meshopt workers).
4918
+ * @remarks If use loader after releasing, we should release again.
4919
+ */ GLTFLoader.release = function release() {
4920
+ MeshoptDecoder.release();
4921
+ };
4665
4922
  return GLTFLoader;
4666
4923
  }(engineCore.Loader);
4667
- GLTFLoader = __decorate([
4924
+ exports.GLTFLoader = __decorate([
4668
4925
  engineCore.resourceLoader(engineCore.AssetType.GLTF, [
4669
4926
  "gltf",
4670
4927
  "glb"
4671
4928
  ])
4672
- ], GLTFLoader);
4929
+ ], exports.GLTFLoader);
4673
4930
 
4674
4931
  var _HDRLoader;
4675
4932
  var PI = Math.PI;
@@ -5491,7 +5748,7 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader1) {
5491
5748
  };
5492
5749
  _proto._makeSprite = function _makeSprite(engine, config, texture) {
5493
5750
  // Generate a SpriteAtlas object.
5494
- var region = config.region, atlasRegionOffset = config.atlasRegionOffset, atlasRegion = config.atlasRegion, pivot = config.pivot, border = config.border;
5751
+ var region = config.region, atlasRegionOffset = config.atlasRegionOffset, atlasRegion = config.atlasRegion, pivot = config.pivot, border = config.border, width = config.width, height = config.height;
5495
5752
  var sprite = new engineCore.Sprite(engine, texture, region ? this._tempRect.set(region.x, region.y, region.w, region.h) : undefined, pivot ? this._tempVec2.set(pivot.x, pivot.y) : undefined, border ? this._tempVec4.set(border.x, border.y, border.z, border.w) : undefined, config.name);
5496
5753
  if (texture) {
5497
5754
  var invW = 1 / texture.width;
@@ -5503,6 +5760,8 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader1) {
5503
5760
  }
5504
5761
  config.atlasRotated && (sprite.atlasRotated = true);
5505
5762
  }
5763
+ isNaN(width) || (sprite.width = width);
5764
+ isNaN(height) || (sprite.height = height);
5506
5765
  return sprite;
5507
5766
  };
5508
5767
  return SpriteAtlasLoader;
@@ -5521,26 +5780,39 @@ var SpriteLoader = /*#__PURE__*/ function(Loader1) {
5521
5780
  var _proto = SpriteLoader.prototype;
5522
5781
  _proto.load = function load(item, resourceManager) {
5523
5782
  var _this = this;
5524
- return new engineCore.AssetPromise(function(resolve, reject) {
5525
- _this.request(item.url, _extends({}, item, {
5526
- type: "json"
5527
- })).then(function(data) {
5528
- if (data.belongToAtlas) {
5529
- resourceManager// @ts-ignore
5530
- .getResourceByRef(data.belongToAtlas).then(function(atlas) {
5531
- resolve(atlas.getSprite(data.fullPath));
5532
- }).catch(reject);
5533
- } else if (data.texture) {
5534
- resourceManager// @ts-ignore
5535
- .getResourceByRef(data.texture).then(function(texture) {
5536
- resolve(new engineCore.Sprite(resourceManager.engine, texture, data.region, data.pivot, data.border));
5537
- }).catch(reject);
5538
- } else {
5539
- resolve(new engineCore.Sprite(resourceManager.engine, null, data.region, data.pivot, data.border));
5540
- }
5541
- }).catch(reject);
5783
+ return this.request(item.url, _extends({}, item, {
5784
+ type: "json"
5785
+ })).then(function(data) {
5786
+ return data.belongToAtlas ? _this._loadFromAtlas(resourceManager, data) : _this._loadFromTexture(resourceManager, data);
5787
+ });
5788
+ };
5789
+ _proto._loadFromAtlas = function _loadFromAtlas(resourceManager, data) {
5790
+ var _this = this;
5791
+ return resourceManager// @ts-ignore
5792
+ .getResourceByRef(data.belongToAtlas).then(function(atlas) {
5793
+ return atlas.getSprite(data.fullPath) || _this._loadFromTexture(resourceManager, data);
5542
5794
  });
5543
5795
  };
5796
+ _proto._loadFromTexture = function _loadFromTexture(resourceManager, data) {
5797
+ if (data.texture) {
5798
+ return resourceManager// @ts-ignore
5799
+ .getResourceByRef(data.texture).then(function(texture) {
5800
+ var sprite = new engineCore.Sprite(resourceManager.engine, texture, data.region, data.pivot, data.border);
5801
+ var width = data.width, height = data.height;
5802
+ isNaN(width) || (sprite.width = width);
5803
+ isNaN(height) || (sprite.height = height);
5804
+ return sprite;
5805
+ });
5806
+ } else {
5807
+ return new engineCore.AssetPromise(function(resolve) {
5808
+ var sprite = new engineCore.Sprite(resourceManager.engine, null, data.region, data.pivot, data.border);
5809
+ var width = data.width, height = data.height;
5810
+ isNaN(width) || (sprite.width = width);
5811
+ isNaN(height) || (sprite.height = height);
5812
+ resolve(sprite);
5813
+ });
5814
+ }
5815
+ };
5544
5816
  return SpriteLoader;
5545
5817
  }(engineCore.Loader);
5546
5818
  SpriteLoader = __decorate([
@@ -5843,170 +6115,6 @@ ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _asy
5843
6115
  });
5844
6116
  }));
5845
6117
 
5846
- var _KHR_draco_mesh_compression;
5847
- var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ function(GLTFExtensionParser1) {
5848
- _inherits(KHR_draco_mesh_compression1, GLTFExtensionParser1);
5849
- function KHR_draco_mesh_compression1() {
5850
- return GLTFExtensionParser1.apply(this, arguments);
5851
- }
5852
- var _proto = KHR_draco_mesh_compression1.prototype;
5853
- _proto.createAndParse = function createAndParse(context, schema, glTFPrimitive, glTFMesh) {
5854
- var _this = this;
5855
- this._initialize();
5856
- var glTF = context.glTF, engine = context.glTFResource.engine;
5857
- var bufferViews = glTF.bufferViews, accessors = glTF.accessors;
5858
- var bufferViewIndex = schema.bufferView, gltfAttributeMap = schema.attributes;
5859
- var attributeMap = {};
5860
- var attributeTypeMap = {};
5861
- for(var attributeName in gltfAttributeMap){
5862
- attributeMap[attributeName] = gltfAttributeMap[attributeName];
5863
- }
5864
- for(var attributeName1 in glTFPrimitive.attributes){
5865
- if (gltfAttributeMap[attributeName1] !== undefined) {
5866
- var accessorDef = accessors[glTFPrimitive.attributes[attributeName1]];
5867
- attributeTypeMap[attributeName1] = GLTFUtils.getComponentType(accessorDef.componentType).name;
5868
- }
5869
- }
5870
- var indexAccessor = accessors[glTFPrimitive.indices];
5871
- var indexType = GLTFUtils.getComponentType(indexAccessor.componentType).name;
5872
- var taskConfig = {
5873
- attributeIDs: attributeMap,
5874
- attributeTypes: attributeTypeMap,
5875
- useUniqueIDs: true,
5876
- indexType: indexType
5877
- };
5878
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
5879
- var buffer = GLTFUtils.getBufferViewData(bufferViews[bufferViewIndex], buffers);
5880
- return KHR_draco_mesh_compression._decoder.decode(buffer, taskConfig).then(function(decodedGeometry) {
5881
- var mesh = new engineCore.ModelMesh(engine, glTFMesh.name);
5882
- return _this._parseMeshFromGLTFPrimitiveDraco(mesh, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
5883
- for(var j = 0; j < decodedGeometry.attributes.length; j++){
5884
- if (decodedGeometry.attributes[j].name === attributeSemantic) {
5885
- return decodedGeometry.attributes[j].array;
5886
- }
5887
- }
5888
- return null;
5889
- }, function(attributeSemantic, shapeIndex) {
5890
- throw "BlendShape animation is not supported when using draco.";
5891
- }, function() {
5892
- return decodedGeometry.index.array;
5893
- }, context.params.keepMeshData);
5894
- });
5895
- });
5896
- };
5897
- _proto._initialize = function _initialize() {
5898
- if (!KHR_draco_mesh_compression._decoder) {
5899
- KHR_draco_mesh_compression._decoder = new engineDraco.DRACODecoder();
5900
- }
5901
- };
5902
- _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(mesh, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
5903
- var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
5904
- var vertexCount;
5905
- var accessors = gltf.accessors;
5906
- var accessor = accessors[attributes["POSITION"]];
5907
- var positionBuffer = getVertexBufferData("POSITION");
5908
- var positions = GLTFUtils.floatBufferToVector3Array(positionBuffer);
5909
- mesh.setPositions(positions);
5910
- var bounds = mesh.bounds;
5911
- vertexCount = accessor.count;
5912
- if (accessor.min && accessor.max) {
5913
- bounds.min.copyFromArray(accessor.min);
5914
- bounds.max.copyFromArray(accessor.max);
5915
- } else {
5916
- var position = KHR_draco_mesh_compression._tempVector3;
5917
- var min = bounds.min, max = bounds.max;
5918
- min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
5919
- max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
5920
- var stride = positionBuffer.length / vertexCount;
5921
- for(var j = 0; j < vertexCount; j++){
5922
- var offset = j * stride;
5923
- position.copyFromArray(positionBuffer, offset);
5924
- engineMath.Vector3.min(min, position, min);
5925
- engineMath.Vector3.max(max, position, max);
5926
- }
5927
- }
5928
- for(var attributeSemantic in attributes){
5929
- if (attributeSemantic === "POSITION") {
5930
- continue;
5931
- }
5932
- var bufferData = getVertexBufferData(attributeSemantic);
5933
- switch(attributeSemantic){
5934
- case "NORMAL":
5935
- var normals = GLTFUtils.floatBufferToVector3Array(bufferData);
5936
- mesh.setNormals(normals);
5937
- break;
5938
- case "TEXCOORD_0":
5939
- var texturecoords = GLTFUtils.floatBufferToVector2Array(bufferData);
5940
- mesh.setUVs(texturecoords, 0);
5941
- break;
5942
- case "TEXCOORD_1":
5943
- var texturecoords1 = GLTFUtils.floatBufferToVector2Array(bufferData);
5944
- mesh.setUVs(texturecoords1, 1);
5945
- break;
5946
- case "TEXCOORD_2":
5947
- var texturecoords2 = GLTFUtils.floatBufferToVector2Array(bufferData);
5948
- mesh.setUVs(texturecoords2, 2);
5949
- break;
5950
- case "TEXCOORD_3":
5951
- var texturecoords3 = GLTFUtils.floatBufferToVector2Array(bufferData);
5952
- mesh.setUVs(texturecoords3, 3);
5953
- break;
5954
- case "TEXCOORD_4":
5955
- var texturecoords4 = GLTFUtils.floatBufferToVector2Array(bufferData);
5956
- mesh.setUVs(texturecoords4, 4);
5957
- break;
5958
- case "TEXCOORD_5":
5959
- var texturecoords5 = GLTFUtils.floatBufferToVector2Array(bufferData);
5960
- mesh.setUVs(texturecoords5, 5);
5961
- break;
5962
- case "TEXCOORD_6":
5963
- var texturecoords6 = GLTFUtils.floatBufferToVector2Array(bufferData);
5964
- mesh.setUVs(texturecoords6, 6);
5965
- break;
5966
- case "TEXCOORD_7":
5967
- var texturecoords7 = GLTFUtils.floatBufferToVector2Array(bufferData);
5968
- mesh.setUVs(texturecoords7, 7);
5969
- break;
5970
- case "COLOR_0":
5971
- var colors = GLTFUtils.floatBufferToColorArray(bufferData, accessors[attributes["COLOR_0"]].type === AccessorType.VEC3);
5972
- mesh.setColors(colors);
5973
- break;
5974
- case "TANGENT":
5975
- var tangents = GLTFUtils.floatBufferToVector4Array(bufferData);
5976
- mesh.setTangents(tangents);
5977
- break;
5978
- case "JOINTS_0":
5979
- var joints = GLTFUtils.floatBufferToVector4Array(bufferData);
5980
- mesh.setBoneIndices(joints);
5981
- break;
5982
- case "WEIGHTS_0":
5983
- var weights = GLTFUtils.floatBufferToVector4Array(bufferData);
5984
- mesh.setBoneWeights(weights);
5985
- break;
5986
- }
5987
- }
5988
- // Indices
5989
- if (indices !== undefined) {
5990
- var indexAccessor = gltf.accessors[indices];
5991
- var indexData = getIndexBufferData();
5992
- mesh.setIndices(indexData);
5993
- mesh.addSubMesh(0, indexAccessor.count, mode);
5994
- } else {
5995
- mesh.addSubMesh(0, vertexCount, mode);
5996
- }
5997
- // BlendShapes
5998
- targets && exports.GLTFMeshParser._createBlendShape(mesh, null, gltfMesh, accessors, targets, getBlendShapeData);
5999
- mesh.uploadData(!keepMeshData);
6000
- return Promise.resolve(mesh);
6001
- };
6002
- return KHR_draco_mesh_compression1;
6003
- }(GLTFExtensionParser), function() {
6004
- _KHR_draco_mesh_compression._tempVector3 = new engineMath.Vector3();
6005
- }(), _KHR_draco_mesh_compression);
6006
- KHR_draco_mesh_compression = __decorate([
6007
- registerGLTFExtension("KHR_draco_mesh_compression", exports.GLTFExtensionMode.CreateAndParse)
6008
- ], KHR_draco_mesh_compression);
6009
-
6010
6118
  var KHR_lights_punctual = /*#__PURE__*/ function(GLTFExtensionParser1) {
6011
6119
  _inherits(KHR_lights_punctual, GLTFExtensionParser1);
6012
6120
  function KHR_lights_punctual() {
@@ -6339,6 +6447,23 @@ GALACEAN_animation_event = __decorate([
6339
6447
  registerGLTFExtension("GALACEAN_animation_event", exports.GLTFExtensionMode.AdditiveParse)
6340
6448
  ], GALACEAN_animation_event);
6341
6449
 
6450
+ var EXT_meshopt_compression = /*#__PURE__*/ function(GLTFExtensionParser1) {
6451
+ _inherits(EXT_meshopt_compression, GLTFExtensionParser1);
6452
+ function EXT_meshopt_compression() {
6453
+ return GLTFExtensionParser1.apply(this, arguments);
6454
+ }
6455
+ var _proto = EXT_meshopt_compression.prototype;
6456
+ _proto.createAndParse = function createAndParse(context, schema) {
6457
+ return context.get(exports.GLTFParserType.Buffer, schema.buffer).then(function(arrayBuffer) {
6458
+ return MeshoptDecoder.decodeGltfBuffer(schema.count, schema.byteStride, new Uint8Array(arrayBuffer, schema.byteOffset, schema.byteLength), schema.mode, schema.filter);
6459
+ });
6460
+ };
6461
+ return EXT_meshopt_compression;
6462
+ }(GLTFExtensionParser);
6463
+ EXT_meshopt_compression = __decorate([
6464
+ registerGLTFExtension("EXT_meshopt_compression", exports.GLTFExtensionMode.CreateAndParse)
6465
+ ], EXT_meshopt_compression);
6466
+
6342
6467
  var KHR_materials_anisotropy = /*#__PURE__*/ function(GLTFExtensionParser1) {
6343
6468
  _inherits(KHR_materials_anisotropy, GLTFExtensionParser1);
6344
6469
  function KHR_materials_anisotropy() {
@@ -6362,6 +6487,7 @@ KHR_materials_anisotropy = __decorate([
6362
6487
  registerGLTFExtension("KHR_materials_anisotropy", exports.GLTFExtensionMode.AdditiveParse)
6363
6488
  ], KHR_materials_anisotropy);
6364
6489
 
6490
+ exports.BufferInfo = BufferInfo;
6365
6491
  exports.ComponentMap = ComponentMap;
6366
6492
  exports.GLTFExtensionParser = GLTFExtensionParser;
6367
6493
  exports.GLTFParser = GLTFParser;