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

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 (34) hide show
  1. package/dist/main.js +853 -463
  2. package/dist/main.js.map +1 -1
  3. package/dist/miniprogram.js +852 -463
  4. package/dist/module.js +841 -452
  5. package/dist/module.js.map +1 -1
  6. package/package.json +4 -5
  7. package/types/GLTFLoader.d.ts +7 -1
  8. package/types/PrimitiveMeshLoader.d.ts +1 -0
  9. package/types/gltf/GLTFSchema.d.ts +1 -1
  10. package/types/gltf/GLTFUtils.d.ts +5 -4
  11. package/types/gltf/extensions/EXT_meshopt_compression.d.ts +13 -0
  12. package/types/gltf/extensions/GLTFExtensionParser.d.ts +1 -1
  13. package/types/gltf/extensions/GLTFExtensionSchema.d.ts +10 -10
  14. package/types/gltf/extensions/MeshoptDecoder.d.ts +8 -0
  15. package/types/gltf/extensions/index.d.ts +1 -1
  16. package/types/gltf/index.d.ts +2 -1
  17. package/types/gltf/parser/GLTFBufferViewParser.d.ts +5 -0
  18. package/types/gltf/parser/GLTFParser.d.ts +1 -1
  19. package/types/gltf/parser/GLTFParserContext.d.ts +7 -6
  20. package/types/gltf/parser/GLTFSchemaParser.d.ts +0 -1
  21. package/types/gltf/parser/index.d.ts +2 -1
  22. package/types/index.d.ts +3 -1
  23. package/types/ktx2/KTX2Loader.d.ts +4 -3
  24. package/types/resource-deserialize/index.d.ts +2 -1
  25. package/types/resource-deserialize/resources/animationClip/AnimationClipDecoder.d.ts +0 -1
  26. package/types/resource-deserialize/resources/parser/HierarchyParser.d.ts +36 -0
  27. package/types/resource-deserialize/resources/parser/ParserContext.d.ts +29 -0
  28. package/types/resource-deserialize/resources/parser/ReflectionParser.d.ts +4 -4
  29. package/types/resource-deserialize/resources/prefab/PrefabParser.d.ts +13 -4
  30. package/types/resource-deserialize/resources/prefab/PrefabParserContext.d.ts +5 -0
  31. package/types/resource-deserialize/resources/scene/SceneParser.d.ts +3 -17
  32. package/types/resource-deserialize/resources/scene/SceneParserContext.d.ts +6 -12
  33. package/types/resource-deserialize/resources/schema/BasicSchema.d.ts +26 -1
  34. package/types/resource-deserialize/resources/schema/SceneSchema.d.ts +1 -0
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
  };
@@ -639,8 +640,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
639
640
  var assetRefId = entityConfig.assetRefId;
640
641
  var engine = this._context.engine;
641
642
  if (assetRefId) {
642
- return engine.resourceManager// @ts-ignore
643
- .getResourceByRef({
643
+ return engine.resourceManager.getResourceByRef({
644
644
  refId: assetRefId,
645
645
  key: entityConfig.key,
646
646
  isClone: entityConfig.isClone
@@ -671,37 +671,372 @@ var ReflectionParser = /*#__PURE__*/ function() {
671
671
  ReflectionParser.customParseComponentHandles = new Map();
672
672
  })();
673
673
 
674
- var PrefabParser = /*#__PURE__*/ function() {
675
- function PrefabParser() {}
676
- PrefabParser.parseChildren = function parseChildren(entitiesConfig, entities, parentId) {
677
- var children = entitiesConfig.get(parentId).children;
674
+ /**
675
+ * Parser context
676
+ * @export
677
+ * @abstract
678
+ * @class ParserContext
679
+ * @template T
680
+ * @template I
681
+ */ var ParserContext = /*#__PURE__*/ function() {
682
+ function ParserContext(originalData, engine, target) {
683
+ this.originalData = originalData;
684
+ this.engine = engine;
685
+ this.target = target;
686
+ this.entityMap = new Map();
687
+ this.components = new Map();
688
+ this.assets = new Map();
689
+ this.entityConfigMap = new Map();
690
+ this.rootIds = [];
691
+ this.strippedIds = [];
692
+ this.resourceManager = engine.resourceManager;
693
+ }
694
+ var _proto = ParserContext.prototype;
695
+ /**
696
+ * Destroy the context.
697
+ * @abstract
698
+ * @memberof ParserContext
699
+ */ _proto.destroy = function destroy() {
700
+ this.entityMap.clear();
701
+ this.components.clear();
702
+ this.assets.clear();
703
+ this.entityConfigMap.clear();
704
+ this.rootIds.length = 0;
705
+ };
706
+ return ParserContext;
707
+ }();
708
+
709
+ var PrefabParserContext = /*#__PURE__*/ function(ParserContext1) {
710
+ _inherits(PrefabParserContext, ParserContext1);
711
+ function PrefabParserContext() {
712
+ return ParserContext1.apply(this, arguments);
713
+ }
714
+ return PrefabParserContext;
715
+ }(ParserContext);
716
+
717
+ function _array_like_to_array(arr, len) {
718
+ if (len == null || len > arr.length) len = arr.length;
719
+
720
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
721
+
722
+ return arr2;
723
+ }
724
+
725
+ function _unsupported_iterable_to_array(o, minLen) {
726
+ if (!o) return;
727
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
728
+
729
+ var n = Object.prototype.toString.call(o).slice(8, -1);
730
+
731
+ if (n === "Object" && o.constructor) n = o.constructor.name;
732
+ if (n === "Map" || n === "Set") return Array.from(n);
733
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
734
+ }
735
+
736
+ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
737
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
738
+
739
+ if (it) return (it = it.call(o)).next.bind(it);
740
+ // Fallback for engines without symbol support
741
+ if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === "number") {
742
+ if (it) o = it;
743
+
744
+ var i = 0;
745
+
746
+ return function() {
747
+ if (i >= o.length) return { done: true };
748
+
749
+ return { done: false, value: o[i++] };
750
+ };
751
+ }
752
+
753
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
754
+ }
755
+
756
+ var HierarchyParser = /*#__PURE__*/ function() {
757
+ function HierarchyParser(context) {
758
+ var _this = this;
759
+ this.context = context;
760
+ this.prefabContextMap = new WeakMap();
761
+ this.prefabPromiseMap = new Map();
762
+ this._engine = this.context.engine;
763
+ this._organizeEntities = this._organizeEntities.bind(this);
764
+ this._parseComponents = this._parseComponents.bind(this);
765
+ this._parsePrefabModification = this._parsePrefabModification.bind(this);
766
+ this._parsePrefabRemovedEntities = this._parsePrefabRemovedEntities.bind(this);
767
+ this._parsePrefabRemovedComponents = this._parsePrefabRemovedComponents.bind(this);
768
+ this._clearAndResolve = this._clearAndResolve.bind(this);
769
+ this.promise = new Promise(function(resolve, reject) {
770
+ _this._reject = reject;
771
+ _this._resolve = resolve;
772
+ });
773
+ this._reflectionParser = new ReflectionParser(context);
774
+ }
775
+ var _proto = HierarchyParser.prototype;
776
+ /** start parse the scene or prefab or others */ _proto.start = function start() {
777
+ this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._parsePrefabModification).then(this._parsePrefabRemovedEntities).then(this._parsePrefabRemovedComponents).then(this._clearAndResolve).then(this._resolve).catch(this._reject);
778
+ };
779
+ _proto._parseEntities = function _parseEntities() {
780
+ var _this = this;
781
+ var entitiesConfig = this.context.originalData.entities;
782
+ var entityConfigMap = this.context.entityConfigMap;
783
+ var entityMap = this.context.entityMap;
784
+ var engine = this._engine;
785
+ var promises = entitiesConfig.map(function(entityConfig) {
786
+ var _entityConfig_strippedId;
787
+ var id = (_entityConfig_strippedId = entityConfig.strippedId) != null ? _entityConfig_strippedId : entityConfig.id;
788
+ entityConfig.id = id;
789
+ entityConfigMap.set(id, entityConfig);
790
+ return _this._getEntityByConfig(entityConfig, engine);
791
+ });
792
+ return Promise.all(promises).then(function(entities) {
793
+ for(var i = 0, l = entities.length; i < l; i++){
794
+ entityMap.set(entitiesConfig[i].id, entities[i]);
795
+ }
796
+ return entities;
797
+ });
798
+ };
799
+ _proto._parseComponents = function _parseComponents() {
800
+ var entitiesConfig = this.context.originalData.entities;
801
+ var entityMap = this.context.entityMap;
802
+ var components = this.context.components;
803
+ var promises = [];
804
+ for(var i = 0, l = entitiesConfig.length; i < l; i++){
805
+ var entityConfig = entitiesConfig[i];
806
+ var entity = entityMap.get(entityConfig.id);
807
+ for(var i1 = 0; i1 < entityConfig.components.length; i1++){
808
+ var componentConfig = entityConfig.components[i1];
809
+ var key = !componentConfig.refId ? componentConfig.class : componentConfig.refId;
810
+ var component = entity.addComponent(engineCore.Loader.getClass(key));
811
+ components.set(componentConfig.id, component);
812
+ var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
813
+ promises.push(promise);
814
+ }
815
+ }
816
+ return Promise.all(promises);
817
+ };
818
+ _proto._parsePrefabModification = function _parsePrefabModification() {
819
+ var _loop = function(i, l) {
820
+ var _modifications;
821
+ var entityConfig = entitiesConfig[i];
822
+ var id = entityConfig.id, modifications = entityConfig.modifications;
823
+ if ((_modifications = modifications) == null ? void 0 : _modifications.length) {
824
+ var _promises;
825
+ var rootEntity = entityMap.get(id);
826
+ (_promises = promises).push.apply(_promises, [].concat(modifications.map(function(modification) {
827
+ var target = modification.target, props = modification.props, methods = modification.methods;
828
+ var entityId = target.entityId, componentId = target.componentId;
829
+ var context = _this.prefabContextMap.get(rootEntity);
830
+ var targetEntity = context.entityMap.get(entityId);
831
+ var targetComponent = context.components.get(componentId);
832
+ if (targetComponent) {
833
+ return _this._reflectionParser.parsePropsAndMethods(targetComponent, {
834
+ props: props,
835
+ methods: methods
836
+ });
837
+ } else if (targetEntity) {
838
+ return Promise.resolve(_this._applyEntityData(targetEntity, props));
839
+ }
840
+ })));
841
+ }
842
+ };
843
+ var _this = this;
844
+ var entitiesConfig = this.context.originalData.entities;
845
+ var entityMap = this.context.entityMap;
846
+ var promises = [];
847
+ for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
848
+ return Promise.all(promises);
849
+ };
850
+ _proto._parsePrefabRemovedEntities = function _parsePrefabRemovedEntities() {
851
+ var _loop = function(i, l) {
852
+ var _removedEntities;
853
+ var entityConfig = entitiesConfig[i];
854
+ var id = entityConfig.id, removedEntities = entityConfig.removedEntities;
855
+ if ((_removedEntities = removedEntities) == null ? void 0 : _removedEntities.length) {
856
+ var _promises;
857
+ var rootEntity = entityMap.get(id);
858
+ (_promises = promises).push.apply(_promises, [].concat(removedEntities.map(function(target) {
859
+ var entityId = target.entityId;
860
+ var context = _this.prefabContextMap.get(rootEntity);
861
+ var targetEntity = context.entityMap.get(entityId);
862
+ if (targetEntity) {
863
+ targetEntity.destroy();
864
+ }
865
+ })));
866
+ }
867
+ };
868
+ var _this = this;
869
+ var entitiesConfig = this.context.originalData.entities;
870
+ var entityMap = this.context.entityMap;
871
+ var promises = [];
872
+ for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
873
+ return Promise.all(promises);
874
+ };
875
+ _proto._parsePrefabRemovedComponents = function _parsePrefabRemovedComponents() {
876
+ var _loop = function(i, l) {
877
+ var _removedComponents;
878
+ var entityConfig = entitiesConfig[i];
879
+ var id = entityConfig.id, removedComponents = entityConfig.removedComponents;
880
+ if ((_removedComponents = removedComponents) == null ? void 0 : _removedComponents.length) {
881
+ var _promises;
882
+ var rootEntity = entityMap.get(id);
883
+ (_promises = promises).concat.apply(_promises, [].concat(removedComponents.map(function(target) {
884
+ var componentId = target.componentId;
885
+ var context = _this.prefabContextMap.get(rootEntity);
886
+ var targetComponent = context.components.get(componentId);
887
+ if (targetComponent) {
888
+ targetComponent.destroy();
889
+ }
890
+ })));
891
+ }
892
+ };
893
+ var _this = this;
894
+ var entitiesConfig = this.context.originalData.entities;
895
+ var entityMap = this.context.entityMap;
896
+ var promises = [];
897
+ for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
898
+ return Promise.all(promises);
899
+ };
900
+ _proto._clearAndResolve = function _clearAndResolve() {
901
+ var target = this.context.target;
902
+ return target;
903
+ };
904
+ _proto._organizeEntities = function _organizeEntities() {
905
+ var _this_context = this.context, rootIds = _this_context.rootIds, strippedIds = _this_context.strippedIds;
906
+ var parentIds = rootIds.concat(strippedIds);
907
+ for(var _iterator = _create_for_of_iterator_helper_loose(parentIds), _step; !(_step = _iterator()).done;){
908
+ var parentId = _step.value;
909
+ this._parseChildren(parentId);
910
+ }
911
+ for(var i = 0; i < rootIds.length; i++){
912
+ this.handleRootEntity(rootIds[i]);
913
+ }
914
+ };
915
+ _proto._getEntityByConfig = function _getEntityByConfig(entityConfig, engine) {
916
+ var _this = this;
917
+ var entityPromise;
918
+ if (entityConfig.assetRefId) {
919
+ entityPromise = this._parseGLTF(entityConfig, engine);
920
+ } else if (entityConfig.strippedId) {
921
+ entityPromise = this._parseStrippedEntity(entityConfig);
922
+ } else {
923
+ entityPromise = this._parseEntity(entityConfig, engine);
924
+ }
925
+ return entityPromise.then(function(entity) {
926
+ return _this._applyEntityData(entity, entityConfig);
927
+ });
928
+ };
929
+ _proto._parseEntity = function _parseEntity(entityConfig, engine) {
930
+ var entity = new engineCore.Entity(engine, entityConfig.name);
931
+ if (!entityConfig.parent) this.context.rootIds.push(entityConfig.id);
932
+ return Promise.resolve(entity);
933
+ };
934
+ _proto._parseGLTF = function _parseGLTF(entityConfig, engine) {
935
+ var _this = this;
936
+ var assetRefId = entityConfig.assetRefId;
937
+ var context = new ParserContext(null, engine);
938
+ return engine.resourceManager// @ts-ignore
939
+ .getResourceByRef({
940
+ refId: assetRefId
941
+ }).then(function(glTFResource) {
942
+ var entity = glTFResource.instantiateSceneRoot();
943
+ if (!entityConfig.parent) _this.context.rootIds.push(entityConfig.id);
944
+ _this._traverseAddEntityToMap(entity, context, "");
945
+ _this.prefabContextMap.set(entity, context);
946
+ var cbArray = _this.prefabPromiseMap.get(entityConfig.id);
947
+ cbArray && cbArray.forEach(function(cb) {
948
+ cb.resolve(context);
949
+ });
950
+ return entity;
951
+ });
952
+ };
953
+ _proto._parseStrippedEntity = function _parseStrippedEntity(entityConfig) {
954
+ var _this = this;
955
+ this.context.strippedIds.push(entityConfig.id);
956
+ return new Promise(function(resolve, reject) {
957
+ var _this_prefabPromiseMap_get;
958
+ var cbArray = (_this_prefabPromiseMap_get = _this.prefabPromiseMap.get(entityConfig.prefabInstanceId)) != null ? _this_prefabPromiseMap_get : [];
959
+ cbArray.push({
960
+ resolve: resolve,
961
+ reject: reject
962
+ });
963
+ _this.prefabPromiseMap.set(entityConfig.prefabInstanceId, cbArray);
964
+ }).then(function(context) {
965
+ var entityId = entityConfig.prefabSource.entityId;
966
+ return context.entityMap.get(entityId);
967
+ });
968
+ };
969
+ _proto._parseChildren = function _parseChildren(parentId) {
970
+ var _this_context = this.context, entityConfigMap = _this_context.entityConfigMap, entityMap = _this_context.entityMap;
971
+ var children = entityConfigMap.get(parentId).children;
678
972
  if (children && children.length > 0) {
679
- var parent = entities.get(parentId);
973
+ var parent = entityMap.get(parentId);
680
974
  for(var i = 0; i < children.length; i++){
681
975
  var childId = children[i];
682
- var entity = entities.get(childId);
976
+ var entity = entityMap.get(childId);
683
977
  parent.addChild(entity);
684
- this.parseChildren(entitiesConfig, entities, childId);
978
+ this._parseChildren(childId);
685
979
  }
686
980
  }
687
981
  };
688
- return PrefabParser;
982
+ _proto._applyEntityData = function _applyEntityData(entity, entityConfig) {
983
+ if (entityConfig === void 0) entityConfig = {};
984
+ var _entityConfig_isActive;
985
+ entity.isActive = (_entityConfig_isActive = entityConfig.isActive) != null ? _entityConfig_isActive : entity.isActive;
986
+ var _entityConfig_name;
987
+ entity.name = (_entityConfig_name = entityConfig.name) != null ? _entityConfig_name : entity.name;
988
+ var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale;
989
+ if (position) entity.transform.position.copyFrom(position);
990
+ if (rotation) entity.transform.rotation.copyFrom(rotation);
991
+ if (scale) entity.transform.scale.copyFrom(scale);
992
+ return entity;
993
+ };
994
+ _proto._traverseAddEntityToMap = function _traverseAddEntityToMap(entity, context, path) {
995
+ var entityMap = context.entityMap, components = context.components;
996
+ var componentsMap = {};
997
+ var componentIndexMap = {};
998
+ entityMap.set(path, entity);
999
+ // @ts-ignore
1000
+ entity._components.forEach(function(component) {
1001
+ // @ts-ignore
1002
+ var name = engineCore.Loader.getClassName(component.constructor);
1003
+ if (!componentsMap[name]) {
1004
+ componentsMap[name] = entity.getComponents(component.constructor, []);
1005
+ componentIndexMap[name] = 0;
1006
+ }
1007
+ components.set(path + ":" + name + "/" + componentIndexMap[name]++, component);
1008
+ });
1009
+ for(var i = 0, n = entity.children.length; i < n; i++){
1010
+ var child = entity.children[i];
1011
+ var childPath = path ? path + "/" + i : "" + i;
1012
+ this._traverseAddEntityToMap(child, context, childPath);
1013
+ }
1014
+ };
1015
+ return HierarchyParser;
689
1016
  }();
690
1017
 
691
- var ComponentMap = {
692
- Transform: engineCore.Transform,
693
- Animator: engineCore.Animator,
694
- DirectLight: engineCore.DirectLight,
695
- Camera: engineCore.Camera,
696
- MeshRenderer: engineCore.MeshRenderer,
697
- ParticleRenderer: engineCore.ParticleRenderer,
698
- PointLight: engineCore.PointLight,
699
- SpotLight: engineCore.SpotLight,
700
- Script: engineCore.Script,
701
- SpriteMask: engineCore.SpriteMask,
702
- SpriteRenderer: engineCore.SpriteRenderer,
703
- TextRenderer: engineCore.TextRenderer
704
- };
1018
+ var PrefabParser = /*#__PURE__*/ function(HierarchyParser1) {
1019
+ _inherits(PrefabParser, HierarchyParser1);
1020
+ function PrefabParser() {
1021
+ return HierarchyParser1.apply(this, arguments);
1022
+ }
1023
+ var _proto = PrefabParser.prototype;
1024
+ _proto.handleRootEntity = function handleRootEntity(id) {
1025
+ this.context.target = this.context.entityMap.get(id);
1026
+ };
1027
+ /**
1028
+ * Parse prefab data.
1029
+ * @param engine - the engine of the parser context
1030
+ * @param prefabData - prefab data which is exported by editor
1031
+ * @returns a promise of prefab
1032
+ */ PrefabParser.parse = function parse(engine, prefabData) {
1033
+ var context = new PrefabParserContext(prefabData, engine);
1034
+ var parser = new PrefabParser(context);
1035
+ parser.start();
1036
+ return parser;
1037
+ };
1038
+ return PrefabParser;
1039
+ }(HierarchyParser);
705
1040
 
706
1041
  exports.InterpolableValueType = void 0;
707
1042
  (function(InterpolableValueType) {
@@ -735,7 +1070,7 @@ exports.AnimationClipDecoder = /*#__PURE__*/ function() {
735
1070
  for(var i1 = 0; i1 < curveBindingsLen; ++i1){
736
1071
  var relativePath = bufferReader.nextStr();
737
1072
  var componentStr = bufferReader.nextStr();
738
- var componentType = ComponentMap[componentStr];
1073
+ var componentType = engineCore.Loader.getClass(componentStr);
739
1074
  var property = bufferReader.nextStr();
740
1075
  var getProperty = bufferReader.nextStr();
741
1076
  var curve = void 0;
@@ -914,145 +1249,28 @@ exports.SpecularMode = void 0;
914
1249
  SpecularMode["Custom"] = "Custom";
915
1250
  })(exports.SpecularMode || (exports.SpecularMode = {}));
916
1251
 
917
- function _array_like_to_array(arr, len) {
918
- if (len == null || len > arr.length) len = arr.length;
919
-
920
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
921
-
922
- return arr2;
923
- }
924
-
925
- function _unsupported_iterable_to_array(o, minLen) {
926
- if (!o) return;
927
- if (typeof o === "string") return _array_like_to_array(o, minLen);
928
-
929
- var n = Object.prototype.toString.call(o).slice(8, -1);
930
-
931
- if (n === "Object" && o.constructor) n = o.constructor.name;
932
- if (n === "Map" || n === "Set") return Array.from(n);
933
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
934
- }
935
-
936
- function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
937
- var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
938
-
939
- if (it) return (it = it.call(o)).next.bind(it);
940
- // Fallback for engines without symbol support
941
- if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === "number") {
942
- if (it) o = it;
943
-
944
- var i = 0;
945
-
946
- return function() {
947
- if (i >= o.length) return { done: true };
948
-
949
- return { done: false, value: o[i++] };
950
- };
951
- }
952
-
953
- throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
954
- }
955
-
956
- var SceneParserContext = /*#__PURE__*/ function() {
957
- function SceneParserContext(originalData, scene) {
958
- this.originalData = originalData;
959
- this.scene = scene;
960
- this.entityMap = new Map();
961
- this.components = new Map();
962
- this.assets = new Map();
963
- this.entityConfigMap = new Map();
964
- this.rootIds = [];
965
- this.engine = scene.engine;
966
- this.resourceManager = scene.engine.resourceManager;
1252
+ var SceneParserContext = /*#__PURE__*/ function(ParserContext1) {
1253
+ _inherits(SceneParserContext, ParserContext1);
1254
+ function SceneParserContext(originalData, engine, scene) {
1255
+ var _this;
1256
+ _this = ParserContext1.call(this, originalData, engine, scene) || this;
1257
+ _this.originalData = originalData;
1258
+ _this.engine = engine;
1259
+ _this.scene = scene;
1260
+ return _this;
967
1261
  }
968
- var _proto = SceneParserContext.prototype;
969
- _proto.destroy = function destroy() {
970
- this.entityMap.clear();
971
- this.components.clear();
972
- this.assets.clear();
973
- this.entityConfigMap.clear();
974
- this.rootIds.length = 0;
975
- };
976
1262
  return SceneParserContext;
977
- }();
1263
+ }(ParserContext);
978
1264
 
979
- /** @Internal */ var SceneParser = /*#__PURE__*/ function() {
980
- function SceneParser(context) {
981
- var _this = this;
982
- this.context = context;
983
- this._engine = context.scene.engine;
984
- this._organizeEntities = this._organizeEntities.bind(this);
985
- this._parseComponents = this._parseComponents.bind(this);
986
- this._clearAndResolveScene = this._clearAndResolveScene.bind(this);
987
- this.promise = new Promise(function(resolve, reject) {
988
- _this._reject = reject;
989
- _this._resolve = resolve;
990
- });
991
- this._reflectionParser = new ReflectionParser(context);
1265
+ /** @Internal */ var SceneParser = /*#__PURE__*/ function(HierarchyParser1) {
1266
+ _inherits(SceneParser, HierarchyParser1);
1267
+ function SceneParser() {
1268
+ return HierarchyParser1.apply(this, arguments);
992
1269
  }
993
1270
  var _proto = SceneParser.prototype;
994
- /** start parse the scene */ _proto.start = function start() {
995
- this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._clearAndResolveScene).then(this._resolve).catch(this._reject);
996
- };
997
- _proto._parseEntities = function _parseEntities() {
998
- var _this = this;
999
- var entitiesConfig = this.context.originalData.entities;
1000
- var entityConfigMap = this.context.entityConfigMap;
1001
- var entitiesMap = this.context.entityMap;
1002
- var rootIds = this.context.rootIds;
1003
- this._engine;
1004
- var promises = entitiesConfig.map(function(entityConfig) {
1005
- entityConfigMap.set(entityConfig.id, entityConfig);
1006
- // record root entities
1007
- if (!entityConfig.parent) rootIds.push(entityConfig.id);
1008
- return _this._reflectionParser.parseEntity(entityConfig);
1009
- });
1010
- return Promise.all(promises).then(function(entities) {
1011
- for(var i = 0, l = entities.length; i < l; i++){
1012
- entitiesMap.set(entitiesConfig[i].id, entities[i]);
1013
- }
1014
- return entities;
1015
- });
1016
- };
1017
- _proto._organizeEntities = function _organizeEntities() {
1018
- var _this_context = this.context, entityConfigMap = _this_context.entityConfigMap, entityMap = _this_context.entityMap, scene = _this_context.scene, rootIds = _this_context.rootIds;
1019
- for(var _iterator = _create_for_of_iterator_helper_loose(rootIds), _step; !(_step = _iterator()).done;){
1020
- var rootId = _step.value;
1021
- PrefabParser.parseChildren(entityConfigMap, entityMap, rootId);
1022
- }
1023
- var rootEntities = rootIds.map(function(id) {
1024
- return entityMap.get(id);
1025
- });
1026
- for(var i = 0; i < rootEntities.length; i++){
1027
- scene.addRootEntity(rootEntities[i]);
1028
- }
1029
- };
1030
- _proto._parseComponents = function _parseComponents() {
1031
- var entitiesConfig = this.context.originalData.entities;
1032
- var entityMap = this.context.entityMap;
1033
- var promises = [];
1034
- for(var i = 0, l = entitiesConfig.length; i < l; i++){
1035
- var entityConfig = entitiesConfig[i];
1036
- var entity = entityMap.get(entityConfig.id);
1037
- for(var i1 = 0; i1 < entityConfig.components.length; i1++){
1038
- var componentConfig = entityConfig.components[i1];
1039
- var key = !componentConfig.refId ? componentConfig.class : componentConfig.refId;
1040
- var component = void 0;
1041
- // TODO: remove hack code when support additional edit
1042
- if (key === "Animator") {
1043
- component = entity.getComponent(engineCore.Loader.getClass(key));
1044
- }
1045
- component = component || entity.addComponent(engineCore.Loader.getClass(key));
1046
- var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
1047
- promises.push(promise);
1048
- }
1049
- }
1050
- return Promise.all(promises);
1051
- };
1052
- _proto._clearAndResolveScene = function _clearAndResolveScene() {
1053
- var scene = this.context.scene;
1054
- this.context.destroy();
1055
- return scene;
1271
+ _proto.handleRootEntity = function handleRootEntity(id) {
1272
+ var _this_context = this.context, target = _this_context.target, entityMap = _this_context.entityMap;
1273
+ target.addRootEntity(entityMap.get(id));
1056
1274
  };
1057
1275
  /**
1058
1276
  * Parse scene data.
@@ -1061,13 +1279,13 @@ var SceneParserContext = /*#__PURE__*/ function() {
1061
1279
  * @returns a promise of scene
1062
1280
  */ SceneParser.parse = function parse(engine, sceneData) {
1063
1281
  var scene = new engineCore.Scene(engine);
1064
- var context = new SceneParserContext(sceneData, scene);
1282
+ var context = new SceneParserContext(sceneData, engine, scene);
1065
1283
  var parser = new SceneParser(context);
1066
1284
  parser.start();
1067
1285
  return parser.promise;
1068
1286
  };
1069
1287
  return SceneParser;
1070
- }();
1288
+ }(HierarchyParser);
1071
1289
 
1072
1290
  exports.MeshLoader = /*#__PURE__*/ function(Loader1) {
1073
1291
  _inherits(MeshLoader, Loader1);
@@ -1172,7 +1390,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader1) {
1172
1390
  resourceManager// @ts-ignore
1173
1391
  .getResourceByRef(value).then(function(asset) {
1174
1392
  keyframe.value = asset;
1175
- resolve(keyframe);
1393
+ resolve(keyframe.value);
1176
1394
  });
1177
1395
  });
1178
1396
  } else {
@@ -1534,7 +1752,7 @@ FontLoader = __decorate([
1534
1752
  * Float
1535
1753
  */ "FLOAT"] = 5126] = "FLOAT";
1536
1754
  })(AccessorComponentType || (AccessorComponentType = {}));
1537
- var AccessorType;
1755
+ exports.AccessorType = void 0;
1538
1756
  (function(AccessorType) {
1539
1757
  AccessorType[/**
1540
1758
  * Scalar
@@ -1557,7 +1775,7 @@ var AccessorType;
1557
1775
  AccessorType[/**
1558
1776
  * Matrix4x4
1559
1777
  */ "MAT4"] = "MAT4";
1560
- })(AccessorType || (AccessorType = {}));
1778
+ })(exports.AccessorType || (exports.AccessorType = {}));
1561
1779
  var AnimationChannelTargetPath;
1562
1780
  (function(AnimationChannelTargetPath) {
1563
1781
  AnimationChannelTargetPath[/**
@@ -1706,7 +1924,7 @@ var TextureWrapMode;
1706
1924
  var glTFItems = this.glTF[glTFSchemaMap[type]];
1707
1925
  if (glTFItems && (index === undefined || glTFItems[index])) {
1708
1926
  if (index === undefined) {
1709
- resource = type === 7 ? glTFItems.map(function(_, index) {
1927
+ resource = type === 8 ? glTFItems.map(function(_, index) {
1710
1928
  return _this.get(type, index);
1711
1929
  }) : Promise.all(glTFItems.map(function(_, index) {
1712
1930
  return _this.get(type, index);
@@ -1728,11 +1946,11 @@ var TextureWrapMode;
1728
1946
  _this.glTF = json;
1729
1947
  return Promise.all([
1730
1948
  _this.get(1),
1731
- _this.get(4),
1732
1949
  _this.get(5),
1733
1950
  _this.get(6),
1734
- _this.get(8),
1951
+ _this.get(7),
1735
1952
  _this.get(9),
1953
+ _this.get(10),
1736
1954
  _this.get(2)
1737
1955
  ]).then(function() {
1738
1956
  var glTFResource = _this.glTFResource;
@@ -1782,7 +2000,7 @@ var TextureWrapMode;
1782
2000
  var _this = this;
1783
2001
  var glTFResourceKey = glTFResourceMap[type];
1784
2002
  if (!glTFResourceKey) return;
1785
- if (type === 7) {
2003
+ if (type === 8) {
1786
2004
  var _this_glTFResource, _glTFResourceKey;
1787
2005
  ((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
1788
2006
  } else {
@@ -1790,7 +2008,7 @@ var TextureWrapMode;
1790
2008
  resource.then(function(item) {
1791
2009
  var _this_glTFResource, _glTFResourceKey;
1792
2010
  ((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
1793
- if (type === 6) {
2011
+ if (type === 7) {
1794
2012
  for(var i = 0, length = item.length; i < length; i++){
1795
2013
  var mesh = item[i];
1796
2014
  // @ts-ignore
@@ -1830,17 +2048,18 @@ exports.GLTFParserType = void 0;
1830
2048
  GLTFParserType[GLTFParserType["Validator"] = 1] = "Validator";
1831
2049
  GLTFParserType[GLTFParserType["Scene"] = 2] = "Scene";
1832
2050
  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";
2051
+ GLTFParserType[GLTFParserType["BufferView"] = 4] = "BufferView";
2052
+ GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
2053
+ GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
2054
+ GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
2055
+ GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
2056
+ GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
2057
+ GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
1839
2058
  })(exports.GLTFParserType || (exports.GLTFParserType = {}));
1840
2059
  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);
2060
+ 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
2061
  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);
2062
+ 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
2063
  function registerGLTFParser(pipeline) {
1845
2064
  return function(Parser) {
1846
2065
  var parser = new Parser();
@@ -1894,19 +2113,19 @@ function registerGLTFParser(pipeline) {
1894
2113
  * Get the number of bytes occupied by accessor type.
1895
2114
  */ GLTFUtils.getAccessorTypeSize = function getAccessorTypeSize(accessorType) {
1896
2115
  switch(accessorType){
1897
- case AccessorType.SCALAR:
2116
+ case exports.AccessorType.SCALAR:
1898
2117
  return 1;
1899
- case AccessorType.VEC2:
2118
+ case exports.AccessorType.VEC2:
1900
2119
  return 2;
1901
- case AccessorType.VEC3:
2120
+ case exports.AccessorType.VEC3:
1902
2121
  return 3;
1903
- case AccessorType.VEC4:
2122
+ case exports.AccessorType.VEC4:
1904
2123
  return 4;
1905
- case AccessorType.MAT2:
2124
+ case exports.AccessorType.MAT2:
1906
2125
  return 4;
1907
- case AccessorType.MAT3:
2126
+ case exports.AccessorType.MAT3:
1908
2127
  return 9;
1909
- case AccessorType.MAT4:
2128
+ case exports.AccessorType.MAT4:
1910
2129
  return 16;
1911
2130
  }
1912
2131
  };
@@ -1946,11 +2165,10 @@ function registerGLTFParser(pipeline) {
1946
2165
  GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
1947
2166
  var componentType = accessor.componentType;
1948
2167
  var bufferView = bufferViews[accessor.bufferView];
1949
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
2168
+ return context.get(exports.GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
1950
2169
  var bufferIndex = bufferView.buffer;
1951
- var buffer = buffers[bufferIndex];
1952
- var _bufferView_byteOffset;
1953
- var bufferByteOffset = (_bufferView_byteOffset = bufferView.byteOffset) != null ? _bufferView_byteOffset : 0;
2170
+ var _bufferViewData_byteOffset;
2171
+ var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
1954
2172
  var _accessor_byteOffset;
1955
2173
  var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1956
2174
  var TypedArray = GLTFUtils.getComponentType(componentType);
@@ -1969,19 +2187,21 @@ function registerGLTFParser(pipeline) {
1969
2187
  if (!bufferInfo) {
1970
2188
  var offset = bufferByteOffset + bufferSlice * bufferStride;
1971
2189
  var count = accessorCount * (bufferStride / dataElementBytes);
1972
- var data = new TypedArray(buffer, offset, count);
2190
+ var data = new TypedArray(bufferViewData.buffer, offset, count);
1973
2191
  accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1974
2192
  bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1975
2193
  }
1976
2194
  } else {
1977
2195
  var offset1 = bufferByteOffset + byteOffset;
1978
2196
  var count1 = accessorCount * dataElementSize;
1979
- var data1 = new TypedArray(buffer, offset1, count1);
2197
+ var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
1980
2198
  bufferInfo = new BufferInfo(data1, false, elementStride);
1981
2199
  bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1982
2200
  }
1983
2201
  if (accessor.sparse) {
1984
- GLTFUtils.processingSparseData(bufferViews, accessor, buffers, bufferInfo);
2202
+ return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
2203
+ return bufferInfo;
2204
+ });
1985
2205
  }
1986
2206
  return bufferInfo;
1987
2207
  });
@@ -2057,40 +2277,43 @@ function registerGLTFParser(pipeline) {
2057
2277
  };
2058
2278
  /**
2059
2279
  * Get accessor data.
2060
- */ GLTFUtils.processingSparseData = function processingSparseData(bufferViews, accessor, buffers, bufferInfo) {
2280
+ */ GLTFUtils.processingSparseData = function processingSparseData(context, accessor, bufferInfo) {
2061
2281
  var restoreInfo = bufferInfo.restoreInfo;
2282
+ var bufferViews = context.glTF.bufferViews;
2062
2283
  var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
2063
2284
  var TypedArray = GLTFUtils.getComponentType(accessor.componentType);
2064
2285
  var data = bufferInfo.data.slice();
2065
2286
  var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
2066
2287
  var indicesBufferView = bufferViews[indices.bufferView];
2067
2288
  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];
2289
+ return Promise.all([
2290
+ context.get(exports.GLTFParserType.BufferView, indices.bufferView),
2291
+ context.get(exports.GLTFParserType.BufferView, values.bufferView)
2292
+ ]).then(function(param) {
2293
+ var indicesUint8Array = param[0], valuesUin8Array = param[1];
2294
+ var _indices_byteOffset, _indicesUint8Array_byteOffset;
2295
+ var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesUint8Array_byteOffset = indicesUint8Array.byteOffset) != null ? _indicesUint8Array_byteOffset : 0);
2296
+ var indicesByteLength = indicesUint8Array.byteLength;
2297
+ var _values_byteOffset, _valuesUin8Array_byteOffset;
2298
+ var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesUin8Array_byteOffset = valuesUin8Array.byteOffset) != null ? _valuesUin8Array_byteOffset : 0);
2299
+ var valuesByteLength = valuesUin8Array.byteLength;
2300
+ restoreInfo.typeSize = accessorTypeSize;
2301
+ restoreInfo.sparseCount = count;
2302
+ var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
2303
+ var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
2304
+ var indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);
2305
+ restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferView.buffer, IndexTypeArray, indicesByteOffset, indexLength);
2306
+ var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
2307
+ var valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);
2308
+ restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferView.buffer, TypedArray, valuesByteOffset, valueLength);
2309
+ for(var i = 0; i < count; i++){
2310
+ var replaceIndex = indicesArray[i];
2311
+ for(var j = 0; j < accessorTypeSize; j++){
2312
+ data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
2313
+ }
2091
2314
  }
2092
- }
2093
- bufferInfo.data = data;
2315
+ bufferInfo.data = data;
2316
+ });
2094
2317
  };
2095
2318
  GLTFUtils.getIndexFormat = function getIndexFormat(type) {
2096
2319
  switch(type){
@@ -2179,7 +2402,7 @@ function registerGLTFParser(pipeline) {
2179
2402
  };
2180
2403
  /**
2181
2404
  * Parse the glb format.
2182
- */ GLTFUtils.parseGLB = function parseGLB(context, glb) {
2405
+ */ GLTFUtils.parseGLB = function parseGLB(context, originBuffer) {
2183
2406
  var UINT32_LENGTH = 4;
2184
2407
  var GLB_HEADER_MAGIC = 0x46546c67; // 'glTF'
2185
2408
  var GLB_HEADER_LENGTH = 12;
@@ -2187,7 +2410,7 @@ function registerGLTFParser(pipeline) {
2187
2410
  JSON: 0x4e4f534a,
2188
2411
  BIN: 0x004e4942
2189
2412
  };
2190
- var dataView = new DataView(glb);
2413
+ var dataView = new DataView(originBuffer);
2191
2414
  // read header
2192
2415
  var header = {
2193
2416
  magic: dataView.getUint32(0, true),
@@ -2195,8 +2418,9 @@ function registerGLTFParser(pipeline) {
2195
2418
  length: dataView.getUint32(2 * UINT32_LENGTH, true)
2196
2419
  };
2197
2420
  if (header.magic !== GLB_HEADER_MAGIC) {
2198
- console.error("Invalid glb magic number. Expected 0x46546C67, found 0x" + header.magic.toString(16));
2199
- return null;
2421
+ return {
2422
+ originBuffer: originBuffer
2423
+ };
2200
2424
  }
2201
2425
  // read main data
2202
2426
  var chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);
@@ -2206,7 +2430,7 @@ function registerGLTFParser(pipeline) {
2206
2430
  console.error("Invalid glb chunk type. Expected 0x4E4F534A, found 0x" + chunkType.toString(16));
2207
2431
  return null;
2208
2432
  }
2209
- var glTFData = new Uint8Array(glb, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2433
+ var glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2210
2434
  var glTF = JSON.parse(engineCore.Utils.decodeText(glTFData));
2211
2435
  // read all buffers
2212
2436
  var buffers = [];
@@ -2220,7 +2444,7 @@ function registerGLTFParser(pipeline) {
2220
2444
  return null;
2221
2445
  }
2222
2446
  var currentOffset = byteOffset + 2 * UINT32_LENGTH;
2223
- var buffer = glb.slice(currentOffset, currentOffset + chunkLength);
2447
+ var buffer = originBuffer.slice(currentOffset, currentOffset + chunkLength);
2224
2448
  buffers.push(buffer);
2225
2449
  restoreGLBBufferSlice.push(new engineMath.Vector2(currentOffset, chunkLength));
2226
2450
  byteOffset += chunkLength + 2 * UINT32_LENGTH;
@@ -3112,8 +3336,9 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
3112
3336
  });
3113
3337
  };
3114
3338
  /**
3115
- * Destroy ktx2 transcoder worker.
3116
- */ KTX2Loader1.destroy = function destroy() {
3339
+ * Release ktx2 transcoder worker.
3340
+ * @remarks If use loader after releasing, we should release again.
3341
+ */ KTX2Loader1.release = function release() {
3117
3342
  if (this._binomialLLCTranscoder) this._binomialLLCTranscoder.destroy();
3118
3343
  if (this._khronosTranscoder) this._khronosTranscoder.destroy();
3119
3344
  this._binomialLLCTranscoder = null;
@@ -3633,23 +3858,20 @@ exports.GLTFSchemaParser = /*#__PURE__*/ function(GLTFParser1) {
3633
3858
  var requestConfig = {
3634
3859
  type: "arraybuffer"
3635
3860
  };
3636
- var isGLB = this._isGLB(url);
3637
- contentRestorer.isGLB = isGLB;
3638
- var promise = isGLB ? engineCore.request(url, requestConfig).onProgress(undefined, context._onTaskDetail).then(function(glb) {
3861
+ return engineCore.request(url, requestConfig).onProgress(undefined, context._onTaskDetail).then(function(buffer) {
3639
3862
  restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3640
- return GLTFUtils.parseGLB(context, glb);
3641
- }).then(function(param) {
3642
- var glTF = param.glTF, buffers = param.buffers;
3643
- context.buffers = buffers;
3644
- return glTF;
3645
- }) : engineCore.request(url, {
3646
- type: "json"
3647
- }).onProgress(undefined, context._onTaskDetail);
3648
- return promise;
3649
- };
3650
- _proto._isGLB = function _isGLB(url) {
3651
- var index = url.lastIndexOf(".");
3652
- return url.substring(index + 1, index + 4) === "glb";
3863
+ return GLTFUtils.parseGLB(context, buffer);
3864
+ }).then(function(result) {
3865
+ var _result;
3866
+ if ((_result = result) == null ? void 0 : _result.glTF) {
3867
+ contentRestorer.isGLB = true;
3868
+ context.buffers = result.buffers;
3869
+ return result.glTF;
3870
+ } else {
3871
+ contentRestorer.isGLB = false;
3872
+ return JSON.parse(engineCore.Utils.decodeText(new Uint8Array(result.originBuffer)));
3873
+ }
3874
+ });
3653
3875
  };
3654
3876
  return GLTFSchemaParser;
3655
3877
  }(GLTFParser);
@@ -4643,12 +4865,256 @@ exports.GLTFValidator = __decorate([
4643
4865
  registerGLTFParser(exports.GLTFParserType.Validator)
4644
4866
  ], exports.GLTFValidator);
4645
4867
 
4646
- var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4868
+ exports.GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
4869
+ _inherits(GLTFBufferViewParser, GLTFParser1);
4870
+ function GLTFBufferViewParser() {
4871
+ return GLTFParser1.apply(this, arguments);
4872
+ }
4873
+ var _proto = GLTFBufferViewParser.prototype;
4874
+ _proto.parse = function parse(context, index) {
4875
+ var bufferView = context.glTF.bufferViews[index];
4876
+ var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
4877
+ return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(exports.GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
4878
+ return new Uint8Array(buffer, byteOffset, byteLength);
4879
+ });
4880
+ };
4881
+ return GLTFBufferViewParser;
4882
+ }(GLTFParser);
4883
+ exports.GLTFBufferViewParser = __decorate([
4884
+ registerGLTFParser(exports.GLTFParserType.BufferView)
4885
+ ], exports.GLTFBufferViewParser);
4886
+
4887
+ // Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js
4888
+ var MeshoptDecoder = function() {
4889
+ var unpack = function unpack(data) {
4890
+ var result = new Uint8Array(data.length);
4891
+ for(var i = 0; i < data.length; ++i){
4892
+ var ch = data.charCodeAt(i);
4893
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
4894
+ }
4895
+ var write = 0;
4896
+ for(var i1 = 0; i1 < data.length; ++i1){
4897
+ result[write++] = result[i1] < 60 ? wasmpack[result[i1]] : (result[i1] - 60) * 64 + result[++i1];
4898
+ }
4899
+ return result.buffer.slice(0, write);
4900
+ };
4901
+ var decode = function decode(fun, target, count, size, source, filter) {
4902
+ var sbrk = instance.exports.sbrk;
4903
+ var count4 = count + 3 & ~3;
4904
+ var tp = sbrk(count4 * size);
4905
+ var sp = sbrk(source.length);
4906
+ var heap = new Uint8Array(instance.exports.memory.buffer);
4907
+ heap.set(source, sp);
4908
+ var res = fun(tp, count, size, sp, source.length);
4909
+ if (res == 0 && filter) {
4910
+ filter(tp, count4, size);
4911
+ }
4912
+ target.set(heap.subarray(tp, tp + count * size));
4913
+ sbrk(tp - sbrk(0));
4914
+ if (res != 0) {
4915
+ throw new Error("Malformed buffer data: " + res);
4916
+ }
4917
+ };
4918
+ var createWorker = function createWorker(url) {
4919
+ var worker = {
4920
+ object: new Worker(url),
4921
+ pending: 0,
4922
+ requests: {}
4923
+ };
4924
+ worker.object.onmessage = function(event) {
4925
+ var data = event.data;
4926
+ worker.pending -= data.count;
4927
+ worker.requests[data.id][data.action](data.value);
4928
+ delete worker.requests[data.id];
4929
+ };
4930
+ return worker;
4931
+ };
4932
+ var initWorkers = function initWorkers(count) {
4933
+ 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();
4934
+ var blob = new Blob([
4935
+ source
4936
+ ], {
4937
+ type: "text/javascript"
4938
+ });
4939
+ var url = URL.createObjectURL(blob);
4940
+ for(var i = 0; i < count; ++i){
4941
+ workers[i] = createWorker(url);
4942
+ }
4943
+ URL.revokeObjectURL(url);
4944
+ };
4945
+ var decodeWorker = function decodeWorker(count, size, source, mode, filter) {
4946
+ var worker = workers[0];
4947
+ for(var i = 1; i < workers.length; ++i){
4948
+ if (workers[i].pending < worker.pending) {
4949
+ worker = workers[i];
4950
+ }
4951
+ }
4952
+ return new Promise(function(resolve, reject) {
4953
+ var data = new Uint8Array(source);
4954
+ var id = requestId++;
4955
+ worker.pending += count;
4956
+ worker.requests[id] = {
4957
+ resolve: resolve,
4958
+ reject: reject
4959
+ };
4960
+ worker.object.postMessage({
4961
+ id: id,
4962
+ count: count,
4963
+ size: size,
4964
+ source: data,
4965
+ mode: mode,
4966
+ filter: filter
4967
+ }, [
4968
+ data.buffer
4969
+ ]);
4970
+ });
4971
+ };
4972
+ var workerProcess = function workerProcess(event) {
4973
+ ready.then(function() {
4974
+ var data = event.data;
4975
+ try {
4976
+ var target = new Uint8Array(data.count * data.size);
4977
+ decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);
4978
+ self.postMessage({
4979
+ id: data.id,
4980
+ count: data.count,
4981
+ action: "resolve",
4982
+ value: target
4983
+ }, [
4984
+ target.buffer
4985
+ ]);
4986
+ } catch (error) {
4987
+ self.postMessage({
4988
+ id: data.id,
4989
+ count: data.count,
4990
+ action: "reject",
4991
+ value: error
4992
+ });
4993
+ }
4994
+ });
4995
+ };
4996
+ 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";
4997
+ 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";
4998
+ var wasmpack = new Uint8Array([
4999
+ 32,
5000
+ 0,
5001
+ 65,
5002
+ 2,
5003
+ 1,
5004
+ 106,
5005
+ 34,
5006
+ 33,
5007
+ 3,
5008
+ 128,
5009
+ 11,
5010
+ 4,
5011
+ 13,
5012
+ 64,
5013
+ 6,
5014
+ 253,
5015
+ 10,
5016
+ 7,
5017
+ 15,
5018
+ 116,
5019
+ 127,
5020
+ 5,
5021
+ 8,
5022
+ 12,
5023
+ 40,
5024
+ 16,
5025
+ 19,
5026
+ 54,
5027
+ 20,
5028
+ 9,
5029
+ 27,
5030
+ 255,
5031
+ 113,
5032
+ 17,
5033
+ 42,
5034
+ 67,
5035
+ 24,
5036
+ 23,
5037
+ 146,
5038
+ 148,
5039
+ 18,
5040
+ 14,
5041
+ 22,
5042
+ 45,
5043
+ 70,
5044
+ 69,
5045
+ 56,
5046
+ 114,
5047
+ 101,
5048
+ 21,
5049
+ 25,
5050
+ 63,
5051
+ 75,
5052
+ 136,
5053
+ 108,
5054
+ 28,
5055
+ 118,
5056
+ 29,
5057
+ 73,
5058
+ 115
5059
+ ]);
5060
+ // @ts-ignore
5061
+ var wasm = engineCore.SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;
5062
+ var instance;
5063
+ var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
5064
+ instance = result.instance;
5065
+ instance.exports.__wasm_call_ctors();
5066
+ });
5067
+ var filters = {
5068
+ NONE: "",
5069
+ OCTAHEDRAL: "meshopt_decodeFilterOct",
5070
+ QUATERNION: "meshopt_decodeFilterQuat",
5071
+ EXPONENTIAL: "meshopt_decodeFilterExp"
5072
+ };
5073
+ var decoders = {
5074
+ ATTRIBUTES: "meshopt_decodeVertexBuffer",
5075
+ TRIANGLES: "meshopt_decodeIndexBuffer",
5076
+ INDICES: "meshopt_decodeIndexSequence"
5077
+ };
5078
+ var workers = [];
5079
+ var requestId = 0;
5080
+ return {
5081
+ workerCount: 4,
5082
+ ready: ready,
5083
+ useWorkers: function useWorkers() {
5084
+ initWorkers(this.workerCount);
5085
+ },
5086
+ decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
5087
+ if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
5088
+ if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
5089
+ return ready.then(function() {
5090
+ var target = new Uint8Array(count * stride);
5091
+ decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
5092
+ return target;
5093
+ });
5094
+ },
5095
+ release: function release() {
5096
+ for(var i = 0; i < workers.length; i++){
5097
+ workers[i].object.terminate();
5098
+ }
5099
+ }
5100
+ };
5101
+ }();
5102
+
5103
+ exports.GLTFLoader = /*#__PURE__*/ function(Loader1) {
4647
5104
  _inherits(GLTFLoader, Loader1);
4648
5105
  function GLTFLoader() {
4649
5106
  return Loader1.apply(this, arguments);
4650
5107
  }
4651
5108
  var _proto = GLTFLoader.prototype;
5109
+ _proto.initialize = function initialize(_, configuration) {
5110
+ var _configuration_glTF;
5111
+ var meshOptOptions = (_configuration_glTF = configuration.glTF) == null ? void 0 : _configuration_glTF.meshOpt;
5112
+ if (meshOptOptions) {
5113
+ MeshoptDecoder.workerCount = meshOptOptions.workerCount;
5114
+ MeshoptDecoder.useWorkers();
5115
+ }
5116
+ return Promise.resolve();
5117
+ };
4652
5118
  _proto.load = function load(item, resourceManager) {
4653
5119
  var url = item.url;
4654
5120
  var params = item.params;
@@ -4662,14 +5128,20 @@ var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4662
5128
  context.parse().then(resolve).catch(reject);
4663
5129
  });
4664
5130
  };
5131
+ /**
5132
+ * Release glTF loader memory(includes meshopt workers).
5133
+ * @remarks If use loader after releasing, we should release again.
5134
+ */ GLTFLoader.release = function release() {
5135
+ MeshoptDecoder.release();
5136
+ };
4665
5137
  return GLTFLoader;
4666
5138
  }(engineCore.Loader);
4667
- GLTFLoader = __decorate([
5139
+ exports.GLTFLoader = __decorate([
4668
5140
  engineCore.resourceLoader(engineCore.AssetType.GLTF, [
4669
5141
  "gltf",
4670
5142
  "glb"
4671
5143
  ])
4672
- ], GLTFLoader);
5144
+ ], exports.GLTFLoader);
4673
5145
 
4674
5146
  var _HDRLoader;
4675
5147
  var PI = Math.PI;
@@ -5371,6 +5843,86 @@ MeshLoader = __decorate([
5371
5843
  ])
5372
5844
  ], MeshLoader);
5373
5845
 
5846
+ var PrimitiveMeshLoader = /*#__PURE__*/ function(Loader1) {
5847
+ _inherits(PrimitiveMeshLoader, Loader1);
5848
+ function PrimitiveMeshLoader() {
5849
+ return Loader1.apply(this, arguments);
5850
+ }
5851
+ var _proto = PrimitiveMeshLoader.prototype;
5852
+ _proto.load = function load(item, param) {
5853
+ var engine = param.engine;
5854
+ return this.request(item.url, _extends({}, item, {
5855
+ type: "json"
5856
+ })).then(function(data) {
5857
+ switch(data.type){
5858
+ case "sphere":
5859
+ return engineCore.PrimitiveMesh.createSubdivisionSurfaceSphere(engine, data.sphereRadius, data.sphereStep);
5860
+ case "capsule":
5861
+ return engineCore.PrimitiveMesh.createCapsule(engine, data.capsuleRadius, data.capsuleHeight, data.capsuleRadialSegments, data.capsuleHeightSegments);
5862
+ case "cone":
5863
+ return engineCore.PrimitiveMesh.createCone(engine, data.coneRadius, data.coneHeight, data.coneRadialSegment, data.coneHeightSegment);
5864
+ case "cuboid":
5865
+ return engineCore.PrimitiveMesh.createCuboid(engine, data.cuboidWidth, data.cuboidHeight, data.cuboidDepth);
5866
+ case "cylinder":
5867
+ return engineCore.PrimitiveMesh.createCylinder(engine, data.cylinderRadiusTop, data.cylinderRadiusBottom, data.cylinderHeight, data.cylinderRadialSegment, data.cylinderHeightSegment);
5868
+ case "plane":
5869
+ return engineCore.PrimitiveMesh.createPlane(engine, data.planeWidth, data.planeHeight, data.planeHorizontalSegments, data.planeVerticalSegments);
5870
+ case "torus":
5871
+ return engineCore.PrimitiveMesh.createTorus(engine, data.torusRadius, data.torusTubeRadius, data.torusRadialSegments, data.torusTubularSegments, data.torusArc);
5872
+ }
5873
+ });
5874
+ };
5875
+ return PrimitiveMeshLoader;
5876
+ }(engineCore.Loader);
5877
+ PrimitiveMeshLoader = __decorate([
5878
+ engineCore.resourceLoader(engineCore.AssetType.PrimitiveMesh, [
5879
+ "mesh"
5880
+ ], false)
5881
+ ], PrimitiveMeshLoader);
5882
+ var /** @internal */ PrimitiveMeshType;
5883
+ (function(PrimitiveMeshType) {
5884
+ PrimitiveMeshType["Sphere"] = "sphere";
5885
+ PrimitiveMeshType["Cuboid"] = "cuboid";
5886
+ PrimitiveMeshType["Plane"] = "plane";
5887
+ PrimitiveMeshType["Cylinder"] = "cylinder";
5888
+ PrimitiveMeshType["Torus"] = "torus";
5889
+ PrimitiveMeshType["Cone"] = "cone";
5890
+ PrimitiveMeshType["Capsule"] = "capsule";
5891
+ })(PrimitiveMeshType || (PrimitiveMeshType = {}));
5892
+
5893
+ var ProjectLoader = /*#__PURE__*/ function(Loader1) {
5894
+ _inherits(ProjectLoader, Loader1);
5895
+ function ProjectLoader() {
5896
+ return Loader1.apply(this, arguments);
5897
+ }
5898
+ var _proto = ProjectLoader.prototype;
5899
+ _proto.load = function load(item, resourceManager) {
5900
+ var _this = this;
5901
+ var engine = resourceManager.engine;
5902
+ return new engineCore.AssetPromise(function(resolve, reject) {
5903
+ _this.request(item.url, {
5904
+ type: "json"
5905
+ }).then(function(data) {
5906
+ // @ts-ignore
5907
+ engine.resourceManager.initVirtualResources(data.files);
5908
+ return resourceManager.load({
5909
+ type: engineCore.AssetType.Scene,
5910
+ url: data.scene
5911
+ }).then(function(scene) {
5912
+ engine.sceneManager.activeScene = scene;
5913
+ resolve();
5914
+ });
5915
+ }).catch(reject);
5916
+ });
5917
+ };
5918
+ return ProjectLoader;
5919
+ }(engineCore.Loader);
5920
+ ProjectLoader = __decorate([
5921
+ engineCore.resourceLoader(engineCore.AssetType.Project, [
5922
+ "proj"
5923
+ ], false)
5924
+ ], ProjectLoader);
5925
+
5374
5926
  var SourceFontLoader = /*#__PURE__*/ function(Loader1) {
5375
5927
  _inherits(SourceFontLoader, Loader1);
5376
5928
  function SourceFontLoader() {
@@ -5491,7 +6043,7 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader1) {
5491
6043
  };
5492
6044
  _proto._makeSprite = function _makeSprite(engine, config, texture) {
5493
6045
  // Generate a SpriteAtlas object.
5494
- var region = config.region, atlasRegionOffset = config.atlasRegionOffset, atlasRegion = config.atlasRegion, pivot = config.pivot, border = config.border;
6046
+ var region = config.region, atlasRegionOffset = config.atlasRegionOffset, atlasRegion = config.atlasRegion, pivot = config.pivot, border = config.border, width = config.width, height = config.height;
5495
6047
  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
6048
  if (texture) {
5497
6049
  var invW = 1 / texture.width;
@@ -5503,6 +6055,8 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader1) {
5503
6055
  }
5504
6056
  config.atlasRotated && (sprite.atlasRotated = true);
5505
6057
  }
6058
+ isNaN(width) || (sprite.width = width);
6059
+ isNaN(height) || (sprite.height = height);
5506
6060
  return sprite;
5507
6061
  };
5508
6062
  return SpriteAtlasLoader;
@@ -5521,26 +6075,39 @@ var SpriteLoader = /*#__PURE__*/ function(Loader1) {
5521
6075
  var _proto = SpriteLoader.prototype;
5522
6076
  _proto.load = function load(item, resourceManager) {
5523
6077
  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);
6078
+ return this.request(item.url, _extends({}, item, {
6079
+ type: "json"
6080
+ })).then(function(data) {
6081
+ return data.belongToAtlas ? _this._loadFromAtlas(resourceManager, data) : _this._loadFromTexture(resourceManager, data);
5542
6082
  });
5543
6083
  };
6084
+ _proto._loadFromAtlas = function _loadFromAtlas(resourceManager, data) {
6085
+ var _this = this;
6086
+ return resourceManager// @ts-ignore
6087
+ .getResourceByRef(data.belongToAtlas).then(function(atlas) {
6088
+ return atlas.getSprite(data.fullPath) || _this._loadFromTexture(resourceManager, data);
6089
+ });
6090
+ };
6091
+ _proto._loadFromTexture = function _loadFromTexture(resourceManager, data) {
6092
+ if (data.texture) {
6093
+ return resourceManager// @ts-ignore
6094
+ .getResourceByRef(data.texture).then(function(texture) {
6095
+ var sprite = new engineCore.Sprite(resourceManager.engine, texture, data.region, data.pivot, data.border);
6096
+ var width = data.width, height = data.height;
6097
+ isNaN(width) || (sprite.width = width);
6098
+ isNaN(height) || (sprite.height = height);
6099
+ return sprite;
6100
+ });
6101
+ } else {
6102
+ return new engineCore.AssetPromise(function(resolve) {
6103
+ var sprite = new engineCore.Sprite(resourceManager.engine, null, data.region, data.pivot, data.border);
6104
+ var width = data.width, height = data.height;
6105
+ isNaN(width) || (sprite.width = width);
6106
+ isNaN(height) || (sprite.height = height);
6107
+ resolve(sprite);
6108
+ });
6109
+ }
6110
+ };
5544
6111
  return SpriteLoader;
5545
6112
  }(engineCore.Loader);
5546
6113
  SpriteLoader = __decorate([
@@ -5691,39 +6258,6 @@ TextureCubeLoader = __decorate([
5691
6258
  ])
5692
6259
  ], TextureCubeLoader);
5693
6260
 
5694
- var ProjectLoader = /*#__PURE__*/ function(Loader1) {
5695
- _inherits(ProjectLoader, Loader1);
5696
- function ProjectLoader() {
5697
- return Loader1.apply(this, arguments);
5698
- }
5699
- var _proto = ProjectLoader.prototype;
5700
- _proto.load = function load(item, resourceManager) {
5701
- var _this = this;
5702
- var engine = resourceManager.engine;
5703
- return new engineCore.AssetPromise(function(resolve, reject) {
5704
- _this.request(item.url, {
5705
- type: "json"
5706
- }).then(function(data) {
5707
- // @ts-ignore
5708
- engine.resourceManager.initVirtualResources(data.files);
5709
- return resourceManager.load({
5710
- type: engineCore.AssetType.Scene,
5711
- url: data.scene
5712
- }).then(function(scene) {
5713
- engine.sceneManager.activeScene = scene;
5714
- resolve();
5715
- });
5716
- }).catch(reject);
5717
- });
5718
- };
5719
- return ProjectLoader;
5720
- }(engineCore.Loader);
5721
- ProjectLoader = __decorate([
5722
- engineCore.resourceLoader(engineCore.AssetType.Project, [
5723
- "proj"
5724
- ], false)
5725
- ], ProjectLoader);
5726
-
5727
6261
  var SceneLoader = /*#__PURE__*/ function(Loader1) {
5728
6262
  _inherits(SceneLoader, Loader1);
5729
6263
  function SceneLoader() {
@@ -5742,7 +6276,7 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
5742
6276
  // parse ambient light
5743
6277
  var ambient = data.scene.ambient;
5744
6278
  if (ambient) {
5745
- var useCustomAmbient = ambient.specularMode === "Custom";
6279
+ var useCustomAmbient = ambient.specularMode === exports.SpecularMode.Custom;
5746
6280
  var useSH = ambient.diffuseMode === engineCore.DiffuseMode.SphericalHarmonics;
5747
6281
  scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
5748
6282
  scene.ambientLight.specularIntensity = ambient.specularIntensity;
@@ -5813,6 +6347,8 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
5813
6347
  var _shadow_shadowTwoCascadeSplits;
5814
6348
  scene.shadowTwoCascadeSplits = (_shadow_shadowTwoCascadeSplits = shadow.shadowTwoCascadeSplits) != null ? _shadow_shadowTwoCascadeSplits : scene.shadowTwoCascadeSplits;
5815
6349
  shadow.shadowFourCascadeSplits && scene.shadowFourCascadeSplits.copyFrom(shadow.shadowFourCascadeSplits);
6350
+ var _shadow_shadowFadeBorder;
6351
+ scene.shadowFadeBorder = (_shadow_shadowFadeBorder = shadow.shadowFadeBorder) != null ? _shadow_shadowFadeBorder : scene.shadowFadeBorder;
5816
6352
  }
5817
6353
  return Promise.all(promises).then(function() {
5818
6354
  resolve(scene);
@@ -5843,170 +6379,6 @@ ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _asy
5843
6379
  });
5844
6380
  }));
5845
6381
 
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
6382
  var KHR_lights_punctual = /*#__PURE__*/ function(GLTFExtensionParser1) {
6011
6383
  _inherits(KHR_lights_punctual, GLTFExtensionParser1);
6012
6384
  function KHR_lights_punctual() {
@@ -6339,6 +6711,23 @@ GALACEAN_animation_event = __decorate([
6339
6711
  registerGLTFExtension("GALACEAN_animation_event", exports.GLTFExtensionMode.AdditiveParse)
6340
6712
  ], GALACEAN_animation_event);
6341
6713
 
6714
+ var EXT_meshopt_compression = /*#__PURE__*/ function(GLTFExtensionParser1) {
6715
+ _inherits(EXT_meshopt_compression, GLTFExtensionParser1);
6716
+ function EXT_meshopt_compression() {
6717
+ return GLTFExtensionParser1.apply(this, arguments);
6718
+ }
6719
+ var _proto = EXT_meshopt_compression.prototype;
6720
+ _proto.createAndParse = function createAndParse(context, schema) {
6721
+ return context.get(exports.GLTFParserType.Buffer, schema.buffer).then(function(arrayBuffer) {
6722
+ return MeshoptDecoder.decodeGltfBuffer(schema.count, schema.byteStride, new Uint8Array(arrayBuffer, schema.byteOffset, schema.byteLength), schema.mode, schema.filter);
6723
+ });
6724
+ };
6725
+ return EXT_meshopt_compression;
6726
+ }(GLTFExtensionParser);
6727
+ EXT_meshopt_compression = __decorate([
6728
+ registerGLTFExtension("EXT_meshopt_compression", exports.GLTFExtensionMode.CreateAndParse)
6729
+ ], EXT_meshopt_compression);
6730
+
6342
6731
  var KHR_materials_anisotropy = /*#__PURE__*/ function(GLTFExtensionParser1) {
6343
6732
  _inherits(KHR_materials_anisotropy, GLTFExtensionParser1);
6344
6733
  function KHR_materials_anisotropy() {
@@ -6362,12 +6751,13 @@ KHR_materials_anisotropy = __decorate([
6362
6751
  registerGLTFExtension("KHR_materials_anisotropy", exports.GLTFExtensionMode.AdditiveParse)
6363
6752
  ], KHR_materials_anisotropy);
6364
6753
 
6365
- exports.ComponentMap = ComponentMap;
6754
+ exports.BufferInfo = BufferInfo;
6366
6755
  exports.GLTFExtensionParser = GLTFExtensionParser;
6367
6756
  exports.GLTFParser = GLTFParser;
6368
6757
  exports.GLTFParserContext = GLTFParserContext;
6369
6758
  exports.GLTFResource = GLTFResource;
6370
6759
  exports.GLTFUtils = GLTFUtils;
6760
+ exports.ParserContext = ParserContext;
6371
6761
  exports.PrefabParser = PrefabParser;
6372
6762
  exports.ReflectionParser = ReflectionParser;
6373
6763
  exports.SceneParser = SceneParser;