@galacean/engine-loader 1.1.2 → 1.1.3

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.
Files changed (46) hide show
  1. package/dist/main.js +193 -212
  2. package/dist/main.js.map +1 -1
  3. package/dist/miniprogram.js +193 -212
  4. package/dist/module.js +193 -213
  5. package/dist/module.js.map +1 -1
  6. package/package.json +5 -5
  7. package/types/GLTFContentRestorer.d.ts +7 -6
  8. package/types/gltf/GLTFUtils.d.ts +2 -7
  9. package/types/gltf/parser/GLTFMeshParser.d.ts +11 -6
  10. package/types/gltf/parser/GLTFParser.d.ts +1 -1
  11. package/types/gltf/parser/GLTFParserContext.d.ts +7 -6
  12. package/types/gltf/parser/index.d.ts +2 -1
  13. package/types/PrimitiveMeshLoader.d.ts +0 -1
  14. package/types/gltf/GLTFParser.d.ts +0 -9
  15. package/types/gltf/GLTFPipeline.d.ts +0 -23
  16. package/types/gltf/GLTFUtil.d.ts +0 -53
  17. package/types/gltf/Schema.d.ts +0 -814
  18. package/types/gltf/extensions/EXT_meshopt_compression.d.ts +0 -13
  19. package/types/gltf/extensions/ExtensionParser.d.ts +0 -8
  20. package/types/gltf/extensions/KHR_materials_anisotropy.d.ts +0 -1
  21. package/types/gltf/extensions/MeshoptDecoder.d.ts +0 -8
  22. package/types/gltf/extensions/Schema.d.ts +0 -142
  23. package/types/gltf/parser/AnimationParser.d.ts +0 -7
  24. package/types/gltf/parser/BufferParser.d.ts +0 -7
  25. package/types/gltf/parser/EntityParser.d.ts +0 -9
  26. package/types/gltf/parser/MaterialParser.d.ts +0 -8
  27. package/types/gltf/parser/MeshParser.d.ts +0 -13
  28. package/types/gltf/parser/Parser.d.ts +0 -21
  29. package/types/gltf/parser/ParserContext.d.ts +0 -46
  30. package/types/gltf/parser/SceneParser.d.ts +0 -11
  31. package/types/gltf/parser/SkinParser.d.ts +0 -6
  32. package/types/gltf/parser/TextureParser.d.ts +0 -8
  33. package/types/gltf/parser/Validator.d.ts +0 -5
  34. package/types/ktx2/BinomialLLCTranscoder/BinomialLLCTranscoder.d.ts +0 -13
  35. package/types/ktx2/BinomialLLCTranscoder/TranscodeWorkerCode.d.ts +0 -33
  36. package/types/ktx2/KhronosTranscoder/KhronosTranscoder.d.ts +0 -17
  37. package/types/ktx2/KhronosTranscoder/TranscoderWorkerCode.d.ts +0 -34
  38. package/types/ktx2/TranscodeResult.d.ts +0 -10
  39. package/types/ktx2/constants.d.ts +0 -7
  40. package/types/ktx2/zstddec.d.ts +0 -62
  41. package/types/resource-deserialize/resources/parser/HierarchyParser.d.ts +0 -36
  42. package/types/resource-deserialize/resources/parser/ParserContext.d.ts +0 -29
  43. package/types/resource-deserialize/resources/prefab/PrefabDesign.d.ts +0 -70
  44. package/types/resource-deserialize/resources/prefab/PrefabParser.d.ts +0 -14
  45. package/types/resource-deserialize/resources/prefab/PrefabParserContext.d.ts +0 -5
  46. package/types/resource-deserialize/resources/prefab/ReflectionParser.d.ts +0 -14
package/dist/main.js CHANGED
@@ -1599,7 +1599,7 @@ var TextureWrapMode;
1599
1599
  var glTFItems = this.glTF[glTFSchemaMap[type]];
1600
1600
  if (glTFItems && (index === undefined || glTFItems[index])) {
1601
1601
  if (index === undefined) {
1602
- resource = type === 7 ? glTFItems.map(function(_, index) {
1602
+ resource = type === 8 ? glTFItems.map(function(_, index) {
1603
1603
  return _this.get(type, index);
1604
1604
  }) : Promise.all(glTFItems.map(function(_, index) {
1605
1605
  return _this.get(type, index);
@@ -1621,11 +1621,11 @@ var TextureWrapMode;
1621
1621
  _this.glTF = json;
1622
1622
  return Promise.all([
1623
1623
  _this.get(1),
1624
- _this.get(4),
1625
1624
  _this.get(5),
1626
1625
  _this.get(6),
1627
- _this.get(8),
1626
+ _this.get(7),
1628
1627
  _this.get(9),
1628
+ _this.get(10),
1629
1629
  _this.get(2)
1630
1630
  ]).then(function() {
1631
1631
  var glTFResource = _this.glTFResource;
@@ -1663,7 +1663,7 @@ var TextureWrapMode;
1663
1663
  var _this = this;
1664
1664
  var glTFResourceKey = glTFResourceMap[type];
1665
1665
  if (!glTFResourceKey) return;
1666
- if (type === 7) {
1666
+ if (type === 8) {
1667
1667
  var _this_glTFResource, _glTFResourceKey;
1668
1668
  ((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
1669
1669
  } else {
@@ -1671,7 +1671,7 @@ var TextureWrapMode;
1671
1671
  resource.then(function(item) {
1672
1672
  var _this_glTFResource, _glTFResourceKey;
1673
1673
  ((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
1674
- if (type === 6) {
1674
+ if (type === 7) {
1675
1675
  for(var i = 0, length = item.length; i < length; i++){
1676
1676
  var mesh = item[i];
1677
1677
  // @ts-ignore
@@ -1711,17 +1711,18 @@ exports.GLTFParserType = void 0;
1711
1711
  GLTFParserType[GLTFParserType["Validator"] = 1] = "Validator";
1712
1712
  GLTFParserType[GLTFParserType["Scene"] = 2] = "Scene";
1713
1713
  GLTFParserType[GLTFParserType["Buffer"] = 3] = "Buffer";
1714
- GLTFParserType[GLTFParserType["Texture"] = 4] = "Texture";
1715
- GLTFParserType[GLTFParserType["Material"] = 5] = "Material";
1716
- GLTFParserType[GLTFParserType["Mesh"] = 6] = "Mesh";
1717
- GLTFParserType[GLTFParserType["Entity"] = 7] = "Entity";
1718
- GLTFParserType[GLTFParserType["Skin"] = 8] = "Skin";
1719
- GLTFParserType[GLTFParserType["Animation"] = 9] = "Animation";
1714
+ GLTFParserType[GLTFParserType["BufferView"] = 4] = "BufferView";
1715
+ GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
1716
+ GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
1717
+ GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
1718
+ GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
1719
+ GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
1720
+ GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
1720
1721
  })(exports.GLTFParserType || (exports.GLTFParserType = {}));
1721
1722
  var _obj;
1722
- 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);
1723
+ 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);
1723
1724
  var _obj1;
1724
- 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);
1725
+ 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);
1725
1726
  function registerGLTFParser(pipeline) {
1726
1727
  return function(Parser) {
1727
1728
  var parser = new Parser();
@@ -1826,113 +1827,68 @@ function registerGLTFParser(pipeline) {
1826
1827
  };
1827
1828
  GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
1828
1829
  var componentType = accessor.componentType;
1829
- var _accessor_bufferView;
1830
- var bufferViewIndex = (_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0;
1831
- var bufferView = bufferViews[bufferViewIndex];
1832
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
1833
- var bufferIndex = bufferView.buffer;
1834
- var buffer = buffers[bufferIndex];
1835
- var _bufferView_byteOffset;
1836
- var bufferByteOffset = (_bufferView_byteOffset = bufferView.byteOffset) != null ? _bufferView_byteOffset : 0;
1837
- var _accessor_byteOffset;
1838
- var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1839
- var TypedArray = GLTFUtils.getComponentType(componentType);
1840
- var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1841
- var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
1842
- var elementStride = dataElementSize * dataElementBytes;
1843
- var accessorCount = accessor.count;
1844
- var bufferStride = bufferView.byteStride;
1845
- var bufferInfo;
1846
- // According to the glTF official documentation only byteStride not undefined is allowed
1847
- if (bufferStride !== undefined && bufferStride !== elementStride) {
1848
- var bufferSlice = Math.floor(byteOffset / bufferStride);
1849
- var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
1850
- var accessorBufferCache = context.accessorBufferCache;
1851
- bufferInfo = accessorBufferCache[bufferCacheKey];
1852
- if (!bufferInfo) {
1853
- var offset = bufferByteOffset + bufferSlice * bufferStride;
1854
- var count = accessorCount * (bufferStride / dataElementBytes);
1855
- var data = new TypedArray(buffer, offset, count);
1856
- accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1857
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1830
+ var TypedArray = GLTFUtils.getComponentType(componentType);
1831
+ var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1832
+ var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
1833
+ var elementStride = dataElementSize * dataElementBytes;
1834
+ var accessorCount = accessor.count;
1835
+ var promise;
1836
+ if (accessor.bufferView !== undefined) {
1837
+ var bufferViewIndex = accessor.bufferView;
1838
+ var bufferView = bufferViews[bufferViewIndex];
1839
+ promise = context.get(exports.GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
1840
+ var bufferIndex = bufferView.buffer;
1841
+ var _bufferViewData_byteOffset;
1842
+ var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
1843
+ var _accessor_byteOffset;
1844
+ var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1845
+ var bufferStride = bufferView.byteStride;
1846
+ var bufferInfo;
1847
+ // According to the glTF official documentation only byteStride not undefined is allowed
1848
+ if (bufferStride !== undefined && bufferStride !== elementStride) {
1849
+ var bufferSlice = Math.floor(byteOffset / bufferStride);
1850
+ var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
1851
+ var accessorBufferCache = context.accessorBufferCache;
1852
+ bufferInfo = accessorBufferCache[bufferCacheKey];
1853
+ if (!bufferInfo) {
1854
+ var offset = bufferByteOffset + bufferSlice * bufferStride;
1855
+ var count = accessorCount * (bufferStride / dataElementBytes);
1856
+ var data = new TypedArray(bufferViewData.buffer, offset, count);
1857
+ accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1858
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1859
+ }
1860
+ } else {
1861
+ var offset1 = bufferByteOffset + byteOffset;
1862
+ var count1 = accessorCount * dataElementSize;
1863
+ var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
1864
+ bufferInfo = new BufferInfo(data1, false, elementStride);
1865
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1858
1866
  }
1859
- } else {
1860
- var offset1 = bufferByteOffset + byteOffset;
1861
- var count1 = accessorCount * dataElementSize;
1862
- var data1 = new TypedArray(buffer, offset1, count1);
1863
- bufferInfo = new BufferInfo(data1, false, elementStride);
1864
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1865
- }
1866
- if (accessor.sparse) {
1867
- GLTFUtils.processingSparseData(bufferViews, accessor, buffers, bufferInfo);
1868
- }
1869
- return bufferInfo;
1870
- });
1867
+ return bufferInfo;
1868
+ });
1869
+ } else {
1870
+ var count = accessorCount * dataElementSize;
1871
+ var data = new TypedArray(count);
1872
+ var bufferInfo = new BufferInfo(data, false, elementStride);
1873
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
1874
+ promise = Promise.resolve(bufferInfo);
1875
+ }
1876
+ return accessor.sparse ? promise.then(function(bufferInfo) {
1877
+ return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
1878
+ return bufferInfo;
1879
+ });
1880
+ }) : promise;
1871
1881
  };
1872
- GLTFUtils.bufferToVector3Array = function bufferToVector3Array(data, byteStride, accessorByteOffset, count) {
1873
- var bytesPerElement = data.BYTES_PER_ELEMENT;
1874
- var offset = accessorByteOffset % byteStride / bytesPerElement;
1875
- var stride = byteStride / bytesPerElement;
1876
- var vector3s = new Array(count);
1882
+ GLTFUtils.bufferToVector3Array = function bufferToVector3Array(buffer, byteOffset, count, normalized, componentType) {
1883
+ var baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;
1884
+ var stride = buffer.length / count;
1885
+ var vertices = new Array(count);
1886
+ var factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;
1877
1887
  for(var i = 0; i < count; i++){
1878
- var index = offset + i * stride;
1879
- vector3s[i] = new engineMath.Vector3(data[index], data[index + 1], data[index + 2]);
1888
+ var index = baseOffset + i * stride;
1889
+ vertices[i] = new engineMath.Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);
1880
1890
  }
1881
- return vector3s;
1882
- };
1883
- /**
1884
- * @deprecated
1885
- * Get accessor data.
1886
- */ GLTFUtils.getAccessorData = function getAccessorData(glTF, accessor, buffers) {
1887
- var bufferViews = glTF.bufferViews;
1888
- var _accessor_bufferView;
1889
- var bufferView = bufferViews[(_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0];
1890
- var arrayBuffer = buffers[bufferView.buffer];
1891
- var accessorByteOffset = accessor.hasOwnProperty("byteOffset") ? accessor.byteOffset : 0;
1892
- var bufferViewByteOffset = bufferView.hasOwnProperty("byteOffset") ? bufferView.byteOffset : 0;
1893
- var byteOffset = accessorByteOffset + bufferViewByteOffset;
1894
- var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1895
- var length = accessorTypeSize * accessor.count;
1896
- var _bufferView_byteStride;
1897
- var byteStride = (_bufferView_byteStride = bufferView.byteStride) != null ? _bufferView_byteStride : 0;
1898
- var arrayType = GLTFUtils.getComponentType(accessor.componentType);
1899
- var uint8Array;
1900
- if (byteStride) {
1901
- var accessorByteSize = accessorTypeSize * arrayType.BYTES_PER_ELEMENT;
1902
- uint8Array = new Uint8Array(accessor.count * accessorByteSize);
1903
- var originalBufferView = new Uint8Array(arrayBuffer, bufferViewByteOffset, bufferView.byteLength);
1904
- for(var i = 0; i < accessor.count; i++){
1905
- for(var j = 0; j < accessorByteSize; j++){
1906
- uint8Array[i * accessorByteSize + j] = originalBufferView[i * byteStride + accessorByteOffset + j];
1907
- }
1908
- }
1909
- } else {
1910
- uint8Array = new Uint8Array(arrayBuffer.slice(byteOffset, byteOffset + length * arrayType.BYTES_PER_ELEMENT));
1911
- }
1912
- var typedArray = new arrayType(uint8Array.buffer);
1913
- if (accessor.sparse) {
1914
- var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
1915
- var indicesBufferView = bufferViews[indices.bufferView];
1916
- var valuesBufferView = bufferViews[values.bufferView];
1917
- var indicesArrayBuffer = buffers[indicesBufferView.buffer];
1918
- var valuesArrayBuffer = buffers[valuesBufferView.buffer];
1919
- var _indices_byteOffset, _indicesBufferView_byteOffset;
1920
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
1921
- var indicesByteLength = indicesBufferView.byteLength;
1922
- var _values_byteOffset, _valuesBufferView_byteOffset;
1923
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
1924
- var valuesByteLength = valuesBufferView.byteLength;
1925
- var indicesType = GLTFUtils.getComponentType(indices.componentType);
1926
- var indicesArray = new indicesType(indicesArrayBuffer, indicesByteOffset, indicesByteLength / indicesType.BYTES_PER_ELEMENT);
1927
- var valuesArray = new arrayType(valuesArrayBuffer, valuesByteOffset, valuesByteLength / arrayType.BYTES_PER_ELEMENT);
1928
- for(var i1 = 0; i1 < count; i1++){
1929
- var replaceIndex = indicesArray[i1];
1930
- for(var j1 = 0; j1 < accessorTypeSize; j1++){
1931
- typedArray[replaceIndex * accessorTypeSize + j1] = valuesArray[i1 * accessorTypeSize + j1];
1932
- }
1933
- }
1934
- }
1935
- return typedArray;
1891
+ return vertices;
1936
1892
  };
1937
1893
  GLTFUtils.getBufferViewData = function getBufferViewData(bufferView, buffers) {
1938
1894
  var _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset;
@@ -1941,40 +1897,43 @@ function registerGLTFParser(pipeline) {
1941
1897
  };
1942
1898
  /**
1943
1899
  * Get accessor data.
1944
- */ GLTFUtils.processingSparseData = function processingSparseData(bufferViews, accessor, buffers, bufferInfo) {
1900
+ */ GLTFUtils.processingSparseData = function processingSparseData(context, accessor, bufferInfo) {
1945
1901
  var restoreInfo = bufferInfo.restoreInfo;
1902
+ var bufferViews = context.glTF.bufferViews;
1946
1903
  var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1947
1904
  var TypedArray = GLTFUtils.getComponentType(accessor.componentType);
1948
1905
  var data = bufferInfo.data.slice();
1949
1906
  var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
1950
1907
  var indicesBufferView = bufferViews[indices.bufferView];
1951
1908
  var valuesBufferView = bufferViews[values.bufferView];
1952
- var indicesBufferIndex = indicesBufferView.buffer;
1953
- var valuesBufferIndex = valuesBufferView.buffer;
1954
- var indicesArrayBuffer = buffers[indicesBufferIndex];
1955
- var valuesArrayBuffer = buffers[valuesBufferIndex];
1956
- var _indices_byteOffset, _indicesBufferView_byteOffset;
1957
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
1958
- var indicesByteLength = indicesBufferView.byteLength;
1959
- var _values_byteOffset, _valuesBufferView_byteOffset;
1960
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
1961
- var valuesByteLength = valuesBufferView.byteLength;
1962
- restoreInfo.typeSize = accessorTypeSize;
1963
- restoreInfo.sparseCount = count;
1964
- var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
1965
- var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
1966
- var indicesArray = new IndexTypeArray(indicesArrayBuffer, indicesByteOffset, indexLength);
1967
- restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferIndex, IndexTypeArray, indicesByteOffset, indexLength);
1968
- var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
1969
- var valuesArray = new TypedArray(valuesArrayBuffer, valuesByteOffset, valueLength);
1970
- restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferIndex, TypedArray, valuesByteOffset, valueLength);
1971
- for(var i = 0; i < count; i++){
1972
- var replaceIndex = indicesArray[i];
1973
- for(var j = 0; j < accessorTypeSize; j++){
1974
- data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
1909
+ return Promise.all([
1910
+ context.get(exports.GLTFParserType.BufferView, indices.bufferView),
1911
+ context.get(exports.GLTFParserType.BufferView, values.bufferView)
1912
+ ]).then(function(param) {
1913
+ var indicesUint8Array = param[0], valuesUin8Array = param[1];
1914
+ var _indices_byteOffset, _indicesUint8Array_byteOffset;
1915
+ var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesUint8Array_byteOffset = indicesUint8Array.byteOffset) != null ? _indicesUint8Array_byteOffset : 0);
1916
+ var indicesByteLength = indicesUint8Array.byteLength;
1917
+ var _values_byteOffset, _valuesUin8Array_byteOffset;
1918
+ var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesUin8Array_byteOffset = valuesUin8Array.byteOffset) != null ? _valuesUin8Array_byteOffset : 0);
1919
+ var valuesByteLength = valuesUin8Array.byteLength;
1920
+ restoreInfo.typeSize = accessorTypeSize;
1921
+ restoreInfo.sparseCount = count;
1922
+ var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
1923
+ var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
1924
+ var indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);
1925
+ restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferView.buffer, IndexTypeArray, indicesByteOffset, indexLength);
1926
+ var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
1927
+ var valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);
1928
+ restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferView.buffer, TypedArray, valuesByteOffset, valueLength);
1929
+ for(var i = 0; i < count; i++){
1930
+ var replaceIndex = indicesArray[i];
1931
+ for(var j = 0; j < accessorTypeSize; j++){
1932
+ data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
1933
+ }
1975
1934
  }
1976
- }
1977
- bufferInfo.data = data;
1935
+ bufferInfo.data = data;
1936
+ });
1978
1937
  };
1979
1938
  GLTFUtils.getIndexFormat = function getIndexFormat(type) {
1980
1939
  switch(type){
@@ -3240,16 +3199,16 @@ exports.KTX2Transcoder = void 0;
3240
3199
  var frame = restoreInfo.blendShape.frames[0];
3241
3200
  var position = restoreInfo.position;
3242
3201
  var positionData = _this._getBufferData(buffers, position.buffer);
3243
- frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.stride, position.byteOffset, position.count);
3202
+ frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.byteOffset, position.count, position.normalized, position.componentType);
3244
3203
  if (restoreInfo.normal) {
3245
3204
  var normal = restoreInfo.normal;
3246
3205
  var normalData = _this._getBufferData(buffers, normal.buffer);
3247
- frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.stride, normal.byteOffset, normal.count);
3206
+ frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.byteOffset, normal.count, normal.normalized, normal.componentType);
3248
3207
  }
3249
3208
  if (restoreInfo.tangent) {
3250
3209
  var tangent = restoreInfo.tangent;
3251
3210
  var tangentData = _this._getBufferData(buffers, tangent.buffer);
3252
- frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.stride, tangent.byteOffset, tangent.count);
3211
+ frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.byteOffset, tangent.count, tangent.normalized, tangent.componentType);
3253
3212
  }
3254
3213
  }
3255
3214
  mesh.uploadData(true);
@@ -3261,8 +3220,13 @@ exports.KTX2Transcoder = void 0;
3261
3220
  };
3262
3221
  _proto._getBufferData = function _getBufferData(buffers, restoreInfo) {
3263
3222
  var main = restoreInfo.main;
3264
- var buffer = buffers[main.bufferIndex];
3265
- var data = new main.TypedArray(buffer, main.byteOffset, main.length);
3223
+ var data;
3224
+ if (main) {
3225
+ var buffer = buffers[main.bufferIndex];
3226
+ data = new main.TypedArray(buffer, main.byteOffset, main.length);
3227
+ } else {
3228
+ data = new main.TypedArray(main.length);
3229
+ }
3266
3230
  var sparseCount = restoreInfo.sparseCount;
3267
3231
  if (sparseCount) {
3268
3232
  var sparseIndex = restoreInfo.sparseIndices;
@@ -3335,11 +3299,12 @@ exports.KTX2Transcoder = void 0;
3335
3299
  };
3336
3300
  /**
3337
3301
  * @internal
3338
- */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, stride, byteOffset, count) {
3302
+ */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, byteOffset, count, normalized, componentType) {
3339
3303
  this.buffer = buffer;
3340
- this.stride = stride;
3341
3304
  this.byteOffset = byteOffset;
3342
3305
  this.count = count;
3306
+ this.normalized = normalized;
3307
+ this.componentType = componentType;
3343
3308
  };
3344
3309
 
3345
3310
  /**
@@ -3935,7 +3900,7 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
3935
3900
  resolve(mesh);
3936
3901
  } else {
3937
3902
  mesh.then(function(mesh) {
3938
- return resolve(mesh);
3903
+ resolve(mesh);
3939
3904
  });
3940
3905
  }
3941
3906
  } else {
@@ -3943,35 +3908,20 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
3943
3908
  var meshRestoreInfo = new ModelMeshRestoreInfo();
3944
3909
  meshRestoreInfo.mesh = mesh1;
3945
3910
  context.contentRestorer.meshes.push(meshRestoreInfo);
3946
- exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, function(attributeSemantic) {
3947
- return null;
3948
- }, function(attributeName, shapeIndex) {
3949
- var shapeAccessorIdx = gltfPrimitive.targets[shapeIndex];
3950
- var attributeAccessorIdx = shapeAccessorIdx[attributeName];
3951
- if (attributeAccessorIdx) {
3952
- var accessor = glTF.accessors[attributeAccessorIdx];
3953
- return GLTFUtils.getAccessorBuffer(context, context.glTF.bufferViews, accessor);
3954
- } else {
3955
- return null;
3956
- }
3957
- }, function() {
3958
- var indexAccessor = glTF.accessors[gltfPrimitive.indices];
3959
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
3960
- return GLTFUtils.getAccessorData(glTF, indexAccessor, buffers);
3961
- });
3962
- }, context.params.keepMeshData).then(resolve);
3911
+ exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, context.params.keepMeshData).then(resolve);
3963
3912
  }
3964
3913
  });
3965
3914
  };
3966
3915
  var meshInfo = context.glTF.meshes[index];
3967
- var glTF = context.glTF, engine = context.glTFResource.engine;
3916
+ var glTF = context.glTF, glTFResource = context.glTFResource;
3917
+ var engine = glTFResource.engine;
3968
3918
  var primitivePromises = new Array();
3969
3919
  for(var i = 0, length = meshInfo.primitives.length; i < length; i++)_loop(i);
3970
3920
  return Promise.all(primitivePromises);
3971
3921
  };
3972
3922
  /**
3973
3923
  * @internal
3974
- */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
3924
+ */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, keepMeshData) {
3975
3925
  var _loop = function(attribute) {
3976
3926
  var accessor = accessors[attributes[attribute]];
3977
3927
  var promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor).then(function(accessorBuffer) {
@@ -4042,6 +3992,7 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
4042
3992
  });
4043
3993
  promises.push(promise);
4044
3994
  };
3995
+ var _this = this;
4045
3996
  var accessors = gltf.accessors;
4046
3997
  var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
4047
3998
  var engine = mesh.engine;
@@ -4066,61 +4017,68 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
4066
4017
  }
4067
4018
  // BlendShapes
4068
4019
  if (targets) {
4069
- promises.push(exports.GLTFMeshParser._createBlendShape(mesh, meshRestoreInfo, gltfMesh, accessors, targets, getBlendShapeData));
4020
+ promises.push(exports.GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets, _this._getBlendShapeData));
4070
4021
  }
4071
4022
  return Promise.all(promises).then(function() {
4072
4023
  mesh.uploadData(!keepMeshData);
4073
- return Promise.resolve(mesh);
4024
+ return mesh;
4074
4025
  });
4075
4026
  });
4076
4027
  };
4028
+ GLTFMeshParser1._getBlendShapeData = function _getBlendShapeData(context, glTF, accessor) {
4029
+ return GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then(function(bufferInfo) {
4030
+ var buffer = bufferInfo.data;
4031
+ var _accessor_byteOffset;
4032
+ var byteOffset = bufferInfo.interleaved ? ((_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0) % bufferInfo.stride : 0;
4033
+ var count = accessor.count, normalized = accessor.normalized, componentType = accessor.componentType;
4034
+ var vertices = GLTFUtils.bufferToVector3Array(buffer, byteOffset, count, normalized, componentType);
4035
+ var restoreInfo = new BlendShapeDataRestoreInfo(bufferInfo.restoreInfo, byteOffset, count, normalized, componentType);
4036
+ return {
4037
+ vertices: vertices,
4038
+ restoreInfo: restoreInfo
4039
+ };
4040
+ });
4041
+ };
4077
4042
  /**
4078
4043
  * @internal
4079
- */ GLTFMeshParser1._createBlendShape = function _createBlendShape(mesh, meshRestoreInfo, glTFMesh, accessors, glTFTargets, getBlendShapeData) {
4080
- var _loop = function(i, n) {
4044
+ */ GLTFMeshParser1._createBlendShape = function _createBlendShape(context, mesh, meshRestoreInfo, glTFMesh, gltfPrimitive, glTFTargets, getBlendShapeData) {
4045
+ var _loop = function(i) {
4046
+ var blendShapeData = {};
4047
+ blendShapeCollection[i] = blendShapeData;
4081
4048
  var name = blendShapeNames ? blendShapeNames[i] : "blendShape" + i;
4049
+ var targets = gltfPrimitive.targets[i];
4050
+ var normalTarget = targets["NORMAL"];
4051
+ var tangentTarget = targets["TANGENT"];
4052
+ var hasNormal = normalTarget !== undefined;
4053
+ var hasTangent = tangentTarget !== undefined;
4082
4054
  var promise = Promise.all([
4083
- getBlendShapeData("POSITION", i),
4084
- getBlendShapeData("NORMAL", i),
4085
- getBlendShapeData("TANGENT", i)
4086
- ]).then(function(infos) {
4087
- var posBufferInfo = infos[0];
4088
- var norBufferInfo = infos[1];
4089
- var tanBufferInfo = infos[2];
4090
- var target = glTFTargets[i];
4091
- var posAccessor;
4092
- var norAccessor;
4093
- var tanAccessor;
4094
- var positions = null;
4095
- if (posBufferInfo) {
4096
- posAccessor = accessors[target["POSITION"]];
4097
- var _posAccessor_byteOffset;
4098
- positions = GLTFUtils.bufferToVector3Array(posBufferInfo.data, posBufferInfo.stride, (_posAccessor_byteOffset = posAccessor.byteOffset) != null ? _posAccessor_byteOffset : 0, posAccessor.count);
4099
- }
4100
- var normals = null;
4101
- if (norBufferInfo) {
4102
- norAccessor = accessors[target["NORMAL"]];
4103
- var _norAccessor_byteOffset;
4104
- normals = GLTFUtils.bufferToVector3Array(norBufferInfo.data, norBufferInfo.stride, (_norAccessor_byteOffset = norAccessor.byteOffset) != null ? _norAccessor_byteOffset : 0, norAccessor.count);
4105
- }
4106
- var tangents = null;
4107
- if (tanBufferInfo) {
4108
- tanAccessor = accessors[target["NORMAL"]];
4109
- var _tanAccessor_byteOffset;
4110
- tangents = GLTFUtils.bufferToVector3Array(tanBufferInfo.data, tanBufferInfo.stride, (_tanAccessor_byteOffset = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset : 0, tanAccessor.count);
4111
- }
4055
+ getBlendShapeData(context, glTF, accessors[targets["POSITION"]]),
4056
+ hasNormal ? getBlendShapeData(context, glTF, accessors[normalTarget]) : null,
4057
+ hasTangent ? getBlendShapeData(context, glTF, accessors[tangentTarget]) : null
4058
+ ]).then(function(vertices) {
4059
+ var _tangentData;
4060
+ var positionData = vertices[0], normalData = vertices[1], tangentData = vertices[2];
4112
4061
  var blendShape = new engineCore.BlendShape(name);
4113
- blendShape.addFrame(1.0, positions, normals, tangents);
4114
- mesh.addBlendShape(blendShape);
4115
- var _posAccessor_byteOffset1, _norAccessor_byteOffset1, _tanAccessor_byteOffset1;
4116
- meshRestoreInfo.blendShapes.push(new BlendShapeRestoreInfo(blendShape, new BlendShapeDataRestoreInfo(posBufferInfo.restoreInfo, posBufferInfo.stride, (_posAccessor_byteOffset1 = posAccessor.byteOffset) != null ? _posAccessor_byteOffset1 : 0, posAccessor.count), norBufferInfo ? new BlendShapeDataRestoreInfo(norBufferInfo.restoreInfo, norBufferInfo.stride, (_norAccessor_byteOffset1 = norAccessor.byteOffset) != null ? _norAccessor_byteOffset1 : 0, norAccessor.count) : null, tanBufferInfo ? new BlendShapeDataRestoreInfo(tanBufferInfo.restoreInfo, tanBufferInfo.stride, (_tanAccessor_byteOffset1 = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset1 : 0, tanAccessor.count) : null));
4062
+ blendShape.addFrame(1.0, positionData.vertices, hasNormal ? normalData.vertices : null, hasTangent ? tangentData.vertices : null);
4063
+ blendShapeData.blendShape = blendShape;
4064
+ blendShapeData.restoreInfo = new BlendShapeRestoreInfo(blendShape, positionData.restoreInfo, hasNormal ? normalData.restoreInfo : null, hasTangent ? (_tangentData = tangentData) == null ? void 0 : _tangentData.restoreInfo : null);
4117
4065
  });
4118
4066
  promises.push(promise);
4119
4067
  };
4068
+ var glTF = context.glTF;
4069
+ var accessors = glTF.accessors;
4120
4070
  var blendShapeNames = glTFMesh.extras ? glTFMesh.extras.targetNames : null;
4121
4071
  var promises = new Array();
4122
- for(var i = 0, n = glTFTargets.length; i < n; i++)_loop(i);
4123
- return Promise.all(promises);
4072
+ var blendShapeCount = glTFTargets.length;
4073
+ var blendShapeCollection = new Array(blendShapeCount);
4074
+ for(var i = 0; i < blendShapeCount; i++)_loop(i);
4075
+ return Promise.all(promises).then(function() {
4076
+ for(var _iterator = _create_for_of_iterator_helper_loose(blendShapeCollection), _step; !(_step = _iterator()).done;){
4077
+ var blendShape = _step.value;
4078
+ mesh.addBlendShape(blendShape.blendShape);
4079
+ meshRestoreInfo.blendShapes.push(blendShape.restoreInfo);
4080
+ }
4081
+ });
4124
4082
  };
4125
4083
  return GLTFMeshParser1;
4126
4084
  }(GLTFParser), function() {
@@ -4501,6 +4459,25 @@ exports.GLTFValidator = __decorate([
4501
4459
  registerGLTFParser(exports.GLTFParserType.Validator)
4502
4460
  ], exports.GLTFValidator);
4503
4461
 
4462
+ exports.GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
4463
+ _inherits(GLTFBufferViewParser, GLTFParser1);
4464
+ function GLTFBufferViewParser() {
4465
+ return GLTFParser1.apply(this, arguments);
4466
+ }
4467
+ var _proto = GLTFBufferViewParser.prototype;
4468
+ _proto.parse = function parse(context, index) {
4469
+ var bufferView = context.glTF.bufferViews[index];
4470
+ var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
4471
+ return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(exports.GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
4472
+ return new Uint8Array(buffer, byteOffset, byteLength);
4473
+ });
4474
+ };
4475
+ return GLTFBufferViewParser;
4476
+ }(GLTFParser);
4477
+ exports.GLTFBufferViewParser = __decorate([
4478
+ registerGLTFParser(exports.GLTFParserType.BufferView)
4479
+ ], exports.GLTFBufferViewParser);
4480
+
4504
4481
  var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4505
4482
  _inherits(GLTFLoader, Loader1);
4506
4483
  function GLTFLoader() {
@@ -5748,14 +5725,17 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5748
5725
  var buffer = GLTFUtils.getBufferViewData(bufferViews[bufferViewIndex], buffers);
5749
5726
  return KHR_draco_mesh_compression._decoder.decode(buffer, taskConfig).then(function(decodedGeometry) {
5750
5727
  var mesh = new engineCore.ModelMesh(engine, glTFMesh.name);
5751
- return _this._parseMeshFromGLTFPrimitiveDraco(mesh, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
5728
+ var meshRestoreInfo = new ModelMeshRestoreInfo();
5729
+ meshRestoreInfo.mesh = mesh;
5730
+ context.contentRestorer.meshes.push(meshRestoreInfo);
5731
+ return _this._parseMeshFromGLTFPrimitiveDraco(context, mesh, meshRestoreInfo, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
5752
5732
  for(var j = 0; j < decodedGeometry.attributes.length; j++){
5753
5733
  if (decodedGeometry.attributes[j].name === attributeSemantic) {
5754
5734
  return decodedGeometry.attributes[j].array;
5755
5735
  }
5756
5736
  }
5757
5737
  return null;
5758
- }, function(attributeSemantic, shapeIndex) {
5738
+ }, function() {
5759
5739
  throw "BlendShape animation is not supported when using draco.";
5760
5740
  }, function() {
5761
5741
  return decodedGeometry.index.array;
@@ -5768,7 +5748,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5768
5748
  KHR_draco_mesh_compression._decoder = new engineDraco.DRACODecoder();
5769
5749
  }
5770
5750
  };
5771
- _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(mesh, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
5751
+ _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
5772
5752
  var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
5773
5753
  var vertexCount;
5774
5754
  var accessors = gltf.accessors;
@@ -5864,7 +5844,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5864
5844
  mesh.addSubMesh(0, vertexCount, mode);
5865
5845
  }
5866
5846
  // BlendShapes
5867
- targets && exports.GLTFMeshParser._createBlendShape(mesh, null, gltfMesh, accessors, targets, getBlendShapeData);
5847
+ targets && exports.GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets, getBlendShapeData);
5868
5848
  mesh.uploadData(!keepMeshData);
5869
5849
  return Promise.resolve(mesh);
5870
5850
  };
@@ -6204,6 +6184,7 @@ GALACEAN_animation_event = __decorate([
6204
6184
  registerGLTFExtension("GALACEAN_animation_event", exports.GLTFExtensionMode.AdditiveParse)
6205
6185
  ], GALACEAN_animation_event);
6206
6186
 
6187
+ exports.BufferInfo = BufferInfo;
6207
6188
  exports.ComponentMap = ComponentMap;
6208
6189
  exports.GLTFExtensionParser = GLTFExtensionParser;
6209
6190
  exports.GLTFParser = GLTFParser;