@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/module.js CHANGED
@@ -1,7 +1,6 @@
1
- import { Utils, ModelMesh, BlendShape, Texture2D, Loader, Entity, Transform, Animator, DirectLight, Camera, MeshRenderer, ParticleRenderer, PointLight, SpotLight, Script, SpriteMask, SpriteRenderer, TextRenderer, AnimationClip, AnimationEvent, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, Scene, resourceLoader, AssetPromise, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateMachine, AnimatorStateTransition, TextureCube, TextureFilterMode, TextureCubeFace, AmbientLight, DiffuseMode, Font, ReferResource, IndexFormat, VertexElementFormat, GLCapabilityType, Logger, TextureFormat, request, ContentRestorer, InterpolationType, SkinnedMeshRenderer, PBRMaterial, BlinnPhongMaterial, PBRSpecularMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Skin, TextureWrapMode as TextureWrapMode$1, Material, Shader, SpriteAtlas, Sprite, BackgroundMode, UnlitMaterial } from '@galacean/engine-core';
1
+ import { Utils, ModelMesh, BlendShape, Texture2D, Loader, Entity, AnimationClip, AnimationEvent, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, Scene, resourceLoader, AssetPromise, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateMachine, AnimatorStateTransition, TextureCube, TextureFilterMode, TextureCubeFace, AmbientLight, DiffuseMode, Font, ReferResource, Animator, IndexFormat, VertexElementFormat, GLCapabilityType, Logger, TextureFormat, request, ContentRestorer, InterpolationType, SkinnedMeshRenderer, Transform, PBRMaterial, BlinnPhongMaterial, PBRSpecularMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, SystemInfo, Material, Shader, PrimitiveMesh, SpriteAtlas, Sprite, BackgroundMode, DirectLight, PointLight, SpotLight, UnlitMaterial } from '@galacean/engine-core';
2
2
  import { Color, Vector4, Vector3, Vector2, Quaternion, SphericalHarmonics3, MathUtil, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
3
3
  import { GLCompressedTextureInternalFormat } from '@galacean/engine-rhi-webgl';
4
- import { DRACODecoder } from '@galacean/engine-draco';
5
4
 
6
5
  function _extends() {
7
6
  _extends = Object.assign || function assign(target) {
@@ -534,6 +533,8 @@ var ReflectionParser = /*#__PURE__*/ function() {
534
533
  if (position) entity.transform.position.copyFrom(position);
535
534
  if (rotation) entity.transform.rotation.copyFrom(rotation);
536
535
  if (scale) entity.transform.scale.copyFrom(scale);
536
+ var _entityConfig_layer;
537
+ entity.layer = (_entityConfig_layer = entityConfig.layer) != null ? _entityConfig_layer : entity.layer;
537
538
  return entity;
538
539
  });
539
540
  };
@@ -635,8 +636,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
635
636
  var assetRefId = entityConfig.assetRefId;
636
637
  var engine = this._context.engine;
637
638
  if (assetRefId) {
638
- return engine.resourceManager// @ts-ignore
639
- .getResourceByRef({
639
+ return engine.resourceManager.getResourceByRef({
640
640
  refId: assetRefId,
641
641
  key: entityConfig.key,
642
642
  isClone: entityConfig.isClone
@@ -667,37 +667,372 @@ var ReflectionParser = /*#__PURE__*/ function() {
667
667
  ReflectionParser.customParseComponentHandles = new Map();
668
668
  })();
669
669
 
670
- var PrefabParser = /*#__PURE__*/ function() {
671
- function PrefabParser() {}
672
- PrefabParser.parseChildren = function parseChildren(entitiesConfig, entities, parentId) {
673
- var children = entitiesConfig.get(parentId).children;
670
+ /**
671
+ * Parser context
672
+ * @export
673
+ * @abstract
674
+ * @class ParserContext
675
+ * @template T
676
+ * @template I
677
+ */ var ParserContext = /*#__PURE__*/ function() {
678
+ function ParserContext(originalData, engine, target) {
679
+ this.originalData = originalData;
680
+ this.engine = engine;
681
+ this.target = target;
682
+ this.entityMap = new Map();
683
+ this.components = new Map();
684
+ this.assets = new Map();
685
+ this.entityConfigMap = new Map();
686
+ this.rootIds = [];
687
+ this.strippedIds = [];
688
+ this.resourceManager = engine.resourceManager;
689
+ }
690
+ var _proto = ParserContext.prototype;
691
+ /**
692
+ * Destroy the context.
693
+ * @abstract
694
+ * @memberof ParserContext
695
+ */ _proto.destroy = function destroy() {
696
+ this.entityMap.clear();
697
+ this.components.clear();
698
+ this.assets.clear();
699
+ this.entityConfigMap.clear();
700
+ this.rootIds.length = 0;
701
+ };
702
+ return ParserContext;
703
+ }();
704
+
705
+ var PrefabParserContext = /*#__PURE__*/ function(ParserContext1) {
706
+ _inherits(PrefabParserContext, ParserContext1);
707
+ function PrefabParserContext() {
708
+ return ParserContext1.apply(this, arguments);
709
+ }
710
+ return PrefabParserContext;
711
+ }(ParserContext);
712
+
713
+ function _array_like_to_array(arr, len) {
714
+ if (len == null || len > arr.length) len = arr.length;
715
+
716
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
717
+
718
+ return arr2;
719
+ }
720
+
721
+ function _unsupported_iterable_to_array(o, minLen) {
722
+ if (!o) return;
723
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
724
+
725
+ var n = Object.prototype.toString.call(o).slice(8, -1);
726
+
727
+ if (n === "Object" && o.constructor) n = o.constructor.name;
728
+ if (n === "Map" || n === "Set") return Array.from(n);
729
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
730
+ }
731
+
732
+ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
733
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
734
+
735
+ if (it) return (it = it.call(o)).next.bind(it);
736
+ // Fallback for engines without symbol support
737
+ if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === "number") {
738
+ if (it) o = it;
739
+
740
+ var i = 0;
741
+
742
+ return function() {
743
+ if (i >= o.length) return { done: true };
744
+
745
+ return { done: false, value: o[i++] };
746
+ };
747
+ }
748
+
749
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
750
+ }
751
+
752
+ var HierarchyParser = /*#__PURE__*/ function() {
753
+ function HierarchyParser(context) {
754
+ var _this = this;
755
+ this.context = context;
756
+ this.prefabContextMap = new WeakMap();
757
+ this.prefabPromiseMap = new Map();
758
+ this._engine = this.context.engine;
759
+ this._organizeEntities = this._organizeEntities.bind(this);
760
+ this._parseComponents = this._parseComponents.bind(this);
761
+ this._parsePrefabModification = this._parsePrefabModification.bind(this);
762
+ this._parsePrefabRemovedEntities = this._parsePrefabRemovedEntities.bind(this);
763
+ this._parsePrefabRemovedComponents = this._parsePrefabRemovedComponents.bind(this);
764
+ this._clearAndResolve = this._clearAndResolve.bind(this);
765
+ this.promise = new Promise(function(resolve, reject) {
766
+ _this._reject = reject;
767
+ _this._resolve = resolve;
768
+ });
769
+ this._reflectionParser = new ReflectionParser(context);
770
+ }
771
+ var _proto = HierarchyParser.prototype;
772
+ /** start parse the scene or prefab or others */ _proto.start = function start() {
773
+ 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);
774
+ };
775
+ _proto._parseEntities = function _parseEntities() {
776
+ var _this = this;
777
+ var entitiesConfig = this.context.originalData.entities;
778
+ var entityConfigMap = this.context.entityConfigMap;
779
+ var entityMap = this.context.entityMap;
780
+ var engine = this._engine;
781
+ var promises = entitiesConfig.map(function(entityConfig) {
782
+ var _entityConfig_strippedId;
783
+ var id = (_entityConfig_strippedId = entityConfig.strippedId) != null ? _entityConfig_strippedId : entityConfig.id;
784
+ entityConfig.id = id;
785
+ entityConfigMap.set(id, entityConfig);
786
+ return _this._getEntityByConfig(entityConfig, engine);
787
+ });
788
+ return Promise.all(promises).then(function(entities) {
789
+ for(var i = 0, l = entities.length; i < l; i++){
790
+ entityMap.set(entitiesConfig[i].id, entities[i]);
791
+ }
792
+ return entities;
793
+ });
794
+ };
795
+ _proto._parseComponents = function _parseComponents() {
796
+ var entitiesConfig = this.context.originalData.entities;
797
+ var entityMap = this.context.entityMap;
798
+ var components = this.context.components;
799
+ var promises = [];
800
+ for(var i = 0, l = entitiesConfig.length; i < l; i++){
801
+ var entityConfig = entitiesConfig[i];
802
+ var entity = entityMap.get(entityConfig.id);
803
+ for(var i1 = 0; i1 < entityConfig.components.length; i1++){
804
+ var componentConfig = entityConfig.components[i1];
805
+ var key = !componentConfig.refId ? componentConfig.class : componentConfig.refId;
806
+ var component = entity.addComponent(Loader.getClass(key));
807
+ components.set(componentConfig.id, component);
808
+ var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
809
+ promises.push(promise);
810
+ }
811
+ }
812
+ return Promise.all(promises);
813
+ };
814
+ _proto._parsePrefabModification = function _parsePrefabModification() {
815
+ var _loop = function(i, l) {
816
+ var _modifications;
817
+ var entityConfig = entitiesConfig[i];
818
+ var id = entityConfig.id, modifications = entityConfig.modifications;
819
+ if ((_modifications = modifications) == null ? void 0 : _modifications.length) {
820
+ var _promises;
821
+ var rootEntity = entityMap.get(id);
822
+ (_promises = promises).push.apply(_promises, [].concat(modifications.map(function(modification) {
823
+ var target = modification.target, props = modification.props, methods = modification.methods;
824
+ var entityId = target.entityId, componentId = target.componentId;
825
+ var context = _this.prefabContextMap.get(rootEntity);
826
+ var targetEntity = context.entityMap.get(entityId);
827
+ var targetComponent = context.components.get(componentId);
828
+ if (targetComponent) {
829
+ return _this._reflectionParser.parsePropsAndMethods(targetComponent, {
830
+ props: props,
831
+ methods: methods
832
+ });
833
+ } else if (targetEntity) {
834
+ return Promise.resolve(_this._applyEntityData(targetEntity, props));
835
+ }
836
+ })));
837
+ }
838
+ };
839
+ var _this = this;
840
+ var entitiesConfig = this.context.originalData.entities;
841
+ var entityMap = this.context.entityMap;
842
+ var promises = [];
843
+ for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
844
+ return Promise.all(promises);
845
+ };
846
+ _proto._parsePrefabRemovedEntities = function _parsePrefabRemovedEntities() {
847
+ var _loop = function(i, l) {
848
+ var _removedEntities;
849
+ var entityConfig = entitiesConfig[i];
850
+ var id = entityConfig.id, removedEntities = entityConfig.removedEntities;
851
+ if ((_removedEntities = removedEntities) == null ? void 0 : _removedEntities.length) {
852
+ var _promises;
853
+ var rootEntity = entityMap.get(id);
854
+ (_promises = promises).push.apply(_promises, [].concat(removedEntities.map(function(target) {
855
+ var entityId = target.entityId;
856
+ var context = _this.prefabContextMap.get(rootEntity);
857
+ var targetEntity = context.entityMap.get(entityId);
858
+ if (targetEntity) {
859
+ targetEntity.destroy();
860
+ }
861
+ })));
862
+ }
863
+ };
864
+ var _this = this;
865
+ var entitiesConfig = this.context.originalData.entities;
866
+ var entityMap = this.context.entityMap;
867
+ var promises = [];
868
+ for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
869
+ return Promise.all(promises);
870
+ };
871
+ _proto._parsePrefabRemovedComponents = function _parsePrefabRemovedComponents() {
872
+ var _loop = function(i, l) {
873
+ var _removedComponents;
874
+ var entityConfig = entitiesConfig[i];
875
+ var id = entityConfig.id, removedComponents = entityConfig.removedComponents;
876
+ if ((_removedComponents = removedComponents) == null ? void 0 : _removedComponents.length) {
877
+ var _promises;
878
+ var rootEntity = entityMap.get(id);
879
+ (_promises = promises).concat.apply(_promises, [].concat(removedComponents.map(function(target) {
880
+ var componentId = target.componentId;
881
+ var context = _this.prefabContextMap.get(rootEntity);
882
+ var targetComponent = context.components.get(componentId);
883
+ if (targetComponent) {
884
+ targetComponent.destroy();
885
+ }
886
+ })));
887
+ }
888
+ };
889
+ var _this = this;
890
+ var entitiesConfig = this.context.originalData.entities;
891
+ var entityMap = this.context.entityMap;
892
+ var promises = [];
893
+ for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
894
+ return Promise.all(promises);
895
+ };
896
+ _proto._clearAndResolve = function _clearAndResolve() {
897
+ var target = this.context.target;
898
+ return target;
899
+ };
900
+ _proto._organizeEntities = function _organizeEntities() {
901
+ var _this_context = this.context, rootIds = _this_context.rootIds, strippedIds = _this_context.strippedIds;
902
+ var parentIds = rootIds.concat(strippedIds);
903
+ for(var _iterator = _create_for_of_iterator_helper_loose(parentIds), _step; !(_step = _iterator()).done;){
904
+ var parentId = _step.value;
905
+ this._parseChildren(parentId);
906
+ }
907
+ for(var i = 0; i < rootIds.length; i++){
908
+ this.handleRootEntity(rootIds[i]);
909
+ }
910
+ };
911
+ _proto._getEntityByConfig = function _getEntityByConfig(entityConfig, engine) {
912
+ var _this = this;
913
+ var entityPromise;
914
+ if (entityConfig.assetRefId) {
915
+ entityPromise = this._parseGLTF(entityConfig, engine);
916
+ } else if (entityConfig.strippedId) {
917
+ entityPromise = this._parseStrippedEntity(entityConfig);
918
+ } else {
919
+ entityPromise = this._parseEntity(entityConfig, engine);
920
+ }
921
+ return entityPromise.then(function(entity) {
922
+ return _this._applyEntityData(entity, entityConfig);
923
+ });
924
+ };
925
+ _proto._parseEntity = function _parseEntity(entityConfig, engine) {
926
+ var entity = new Entity(engine, entityConfig.name);
927
+ if (!entityConfig.parent) this.context.rootIds.push(entityConfig.id);
928
+ return Promise.resolve(entity);
929
+ };
930
+ _proto._parseGLTF = function _parseGLTF(entityConfig, engine) {
931
+ var _this = this;
932
+ var assetRefId = entityConfig.assetRefId;
933
+ var context = new ParserContext(null, engine);
934
+ return engine.resourceManager// @ts-ignore
935
+ .getResourceByRef({
936
+ refId: assetRefId
937
+ }).then(function(glTFResource) {
938
+ var entity = glTFResource.instantiateSceneRoot();
939
+ if (!entityConfig.parent) _this.context.rootIds.push(entityConfig.id);
940
+ _this._traverseAddEntityToMap(entity, context, "");
941
+ _this.prefabContextMap.set(entity, context);
942
+ var cbArray = _this.prefabPromiseMap.get(entityConfig.id);
943
+ cbArray && cbArray.forEach(function(cb) {
944
+ cb.resolve(context);
945
+ });
946
+ return entity;
947
+ });
948
+ };
949
+ _proto._parseStrippedEntity = function _parseStrippedEntity(entityConfig) {
950
+ var _this = this;
951
+ this.context.strippedIds.push(entityConfig.id);
952
+ return new Promise(function(resolve, reject) {
953
+ var _this_prefabPromiseMap_get;
954
+ var cbArray = (_this_prefabPromiseMap_get = _this.prefabPromiseMap.get(entityConfig.prefabInstanceId)) != null ? _this_prefabPromiseMap_get : [];
955
+ cbArray.push({
956
+ resolve: resolve,
957
+ reject: reject
958
+ });
959
+ _this.prefabPromiseMap.set(entityConfig.prefabInstanceId, cbArray);
960
+ }).then(function(context) {
961
+ var entityId = entityConfig.prefabSource.entityId;
962
+ return context.entityMap.get(entityId);
963
+ });
964
+ };
965
+ _proto._parseChildren = function _parseChildren(parentId) {
966
+ var _this_context = this.context, entityConfigMap = _this_context.entityConfigMap, entityMap = _this_context.entityMap;
967
+ var children = entityConfigMap.get(parentId).children;
674
968
  if (children && children.length > 0) {
675
- var parent = entities.get(parentId);
969
+ var parent = entityMap.get(parentId);
676
970
  for(var i = 0; i < children.length; i++){
677
971
  var childId = children[i];
678
- var entity = entities.get(childId);
972
+ var entity = entityMap.get(childId);
679
973
  parent.addChild(entity);
680
- this.parseChildren(entitiesConfig, entities, childId);
974
+ this._parseChildren(childId);
681
975
  }
682
976
  }
683
977
  };
684
- return PrefabParser;
978
+ _proto._applyEntityData = function _applyEntityData(entity, entityConfig) {
979
+ if (entityConfig === void 0) entityConfig = {};
980
+ var _entityConfig_isActive;
981
+ entity.isActive = (_entityConfig_isActive = entityConfig.isActive) != null ? _entityConfig_isActive : entity.isActive;
982
+ var _entityConfig_name;
983
+ entity.name = (_entityConfig_name = entityConfig.name) != null ? _entityConfig_name : entity.name;
984
+ var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale;
985
+ if (position) entity.transform.position.copyFrom(position);
986
+ if (rotation) entity.transform.rotation.copyFrom(rotation);
987
+ if (scale) entity.transform.scale.copyFrom(scale);
988
+ return entity;
989
+ };
990
+ _proto._traverseAddEntityToMap = function _traverseAddEntityToMap(entity, context, path) {
991
+ var entityMap = context.entityMap, components = context.components;
992
+ var componentsMap = {};
993
+ var componentIndexMap = {};
994
+ entityMap.set(path, entity);
995
+ // @ts-ignore
996
+ entity._components.forEach(function(component) {
997
+ // @ts-ignore
998
+ var name = Loader.getClassName(component.constructor);
999
+ if (!componentsMap[name]) {
1000
+ componentsMap[name] = entity.getComponents(component.constructor, []);
1001
+ componentIndexMap[name] = 0;
1002
+ }
1003
+ components.set(path + ":" + name + "/" + componentIndexMap[name]++, component);
1004
+ });
1005
+ for(var i = 0, n = entity.children.length; i < n; i++){
1006
+ var child = entity.children[i];
1007
+ var childPath = path ? path + "/" + i : "" + i;
1008
+ this._traverseAddEntityToMap(child, context, childPath);
1009
+ }
1010
+ };
1011
+ return HierarchyParser;
685
1012
  }();
686
1013
 
687
- var ComponentMap = {
688
- Transform: Transform,
689
- Animator: Animator,
690
- DirectLight: DirectLight,
691
- Camera: Camera,
692
- MeshRenderer: MeshRenderer,
693
- ParticleRenderer: ParticleRenderer,
694
- PointLight: PointLight,
695
- SpotLight: SpotLight,
696
- Script: Script,
697
- SpriteMask: SpriteMask,
698
- SpriteRenderer: SpriteRenderer,
699
- TextRenderer: TextRenderer
700
- };
1014
+ var PrefabParser = /*#__PURE__*/ function(HierarchyParser1) {
1015
+ _inherits(PrefabParser, HierarchyParser1);
1016
+ function PrefabParser() {
1017
+ return HierarchyParser1.apply(this, arguments);
1018
+ }
1019
+ var _proto = PrefabParser.prototype;
1020
+ _proto.handleRootEntity = function handleRootEntity(id) {
1021
+ this.context.target = this.context.entityMap.get(id);
1022
+ };
1023
+ /**
1024
+ * Parse prefab data.
1025
+ * @param engine - the engine of the parser context
1026
+ * @param prefabData - prefab data which is exported by editor
1027
+ * @returns a promise of prefab
1028
+ */ PrefabParser.parse = function parse(engine, prefabData) {
1029
+ var context = new PrefabParserContext(prefabData, engine);
1030
+ var parser = new PrefabParser(context);
1031
+ parser.start();
1032
+ return parser;
1033
+ };
1034
+ return PrefabParser;
1035
+ }(HierarchyParser);
701
1036
 
702
1037
  var InterpolableValueType;
703
1038
  (function(InterpolableValueType) {
@@ -731,7 +1066,7 @@ var AnimationClipDecoder = /*#__PURE__*/ function() {
731
1066
  for(var i1 = 0; i1 < curveBindingsLen; ++i1){
732
1067
  var relativePath = bufferReader.nextStr();
733
1068
  var componentStr = bufferReader.nextStr();
734
- var componentType = ComponentMap[componentStr];
1069
+ var componentType = Loader.getClass(componentStr);
735
1070
  var property = bufferReader.nextStr();
736
1071
  var getProperty = bufferReader.nextStr();
737
1072
  var curve = void 0;
@@ -910,145 +1245,28 @@ var SpecularMode;
910
1245
  SpecularMode["Custom"] = "Custom";
911
1246
  })(SpecularMode || (SpecularMode = {}));
912
1247
 
913
- function _array_like_to_array(arr, len) {
914
- if (len == null || len > arr.length) len = arr.length;
915
-
916
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
917
-
918
- return arr2;
919
- }
920
-
921
- function _unsupported_iterable_to_array(o, minLen) {
922
- if (!o) return;
923
- if (typeof o === "string") return _array_like_to_array(o, minLen);
924
-
925
- var n = Object.prototype.toString.call(o).slice(8, -1);
926
-
927
- if (n === "Object" && o.constructor) n = o.constructor.name;
928
- if (n === "Map" || n === "Set") return Array.from(n);
929
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
930
- }
931
-
932
- function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
933
- var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
934
-
935
- if (it) return (it = it.call(o)).next.bind(it);
936
- // Fallback for engines without symbol support
937
- if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === "number") {
938
- if (it) o = it;
939
-
940
- var i = 0;
941
-
942
- return function() {
943
- if (i >= o.length) return { done: true };
944
-
945
- return { done: false, value: o[i++] };
946
- };
947
- }
948
-
949
- throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
950
- }
951
-
952
- var SceneParserContext = /*#__PURE__*/ function() {
953
- function SceneParserContext(originalData, scene) {
954
- this.originalData = originalData;
955
- this.scene = scene;
956
- this.entityMap = new Map();
957
- this.components = new Map();
958
- this.assets = new Map();
959
- this.entityConfigMap = new Map();
960
- this.rootIds = [];
961
- this.engine = scene.engine;
962
- this.resourceManager = scene.engine.resourceManager;
1248
+ var SceneParserContext = /*#__PURE__*/ function(ParserContext1) {
1249
+ _inherits(SceneParserContext, ParserContext1);
1250
+ function SceneParserContext(originalData, engine, scene) {
1251
+ var _this;
1252
+ _this = ParserContext1.call(this, originalData, engine, scene) || this;
1253
+ _this.originalData = originalData;
1254
+ _this.engine = engine;
1255
+ _this.scene = scene;
1256
+ return _this;
963
1257
  }
964
- var _proto = SceneParserContext.prototype;
965
- _proto.destroy = function destroy() {
966
- this.entityMap.clear();
967
- this.components.clear();
968
- this.assets.clear();
969
- this.entityConfigMap.clear();
970
- this.rootIds.length = 0;
971
- };
972
1258
  return SceneParserContext;
973
- }();
1259
+ }(ParserContext);
974
1260
 
975
- /** @Internal */ var SceneParser = /*#__PURE__*/ function() {
976
- function SceneParser(context) {
977
- var _this = this;
978
- this.context = context;
979
- this._engine = context.scene.engine;
980
- this._organizeEntities = this._organizeEntities.bind(this);
981
- this._parseComponents = this._parseComponents.bind(this);
982
- this._clearAndResolveScene = this._clearAndResolveScene.bind(this);
983
- this.promise = new Promise(function(resolve, reject) {
984
- _this._reject = reject;
985
- _this._resolve = resolve;
986
- });
987
- this._reflectionParser = new ReflectionParser(context);
1261
+ /** @Internal */ var SceneParser = /*#__PURE__*/ function(HierarchyParser1) {
1262
+ _inherits(SceneParser, HierarchyParser1);
1263
+ function SceneParser() {
1264
+ return HierarchyParser1.apply(this, arguments);
988
1265
  }
989
1266
  var _proto = SceneParser.prototype;
990
- /** start parse the scene */ _proto.start = function start() {
991
- this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._clearAndResolveScene).then(this._resolve).catch(this._reject);
992
- };
993
- _proto._parseEntities = function _parseEntities() {
994
- var _this = this;
995
- var entitiesConfig = this.context.originalData.entities;
996
- var entityConfigMap = this.context.entityConfigMap;
997
- var entitiesMap = this.context.entityMap;
998
- var rootIds = this.context.rootIds;
999
- this._engine;
1000
- var promises = entitiesConfig.map(function(entityConfig) {
1001
- entityConfigMap.set(entityConfig.id, entityConfig);
1002
- // record root entities
1003
- if (!entityConfig.parent) rootIds.push(entityConfig.id);
1004
- return _this._reflectionParser.parseEntity(entityConfig);
1005
- });
1006
- return Promise.all(promises).then(function(entities) {
1007
- for(var i = 0, l = entities.length; i < l; i++){
1008
- entitiesMap.set(entitiesConfig[i].id, entities[i]);
1009
- }
1010
- return entities;
1011
- });
1012
- };
1013
- _proto._organizeEntities = function _organizeEntities() {
1014
- var _this_context = this.context, entityConfigMap = _this_context.entityConfigMap, entityMap = _this_context.entityMap, scene = _this_context.scene, rootIds = _this_context.rootIds;
1015
- for(var _iterator = _create_for_of_iterator_helper_loose(rootIds), _step; !(_step = _iterator()).done;){
1016
- var rootId = _step.value;
1017
- PrefabParser.parseChildren(entityConfigMap, entityMap, rootId);
1018
- }
1019
- var rootEntities = rootIds.map(function(id) {
1020
- return entityMap.get(id);
1021
- });
1022
- for(var i = 0; i < rootEntities.length; i++){
1023
- scene.addRootEntity(rootEntities[i]);
1024
- }
1025
- };
1026
- _proto._parseComponents = function _parseComponents() {
1027
- var entitiesConfig = this.context.originalData.entities;
1028
- var entityMap = this.context.entityMap;
1029
- var promises = [];
1030
- for(var i = 0, l = entitiesConfig.length; i < l; i++){
1031
- var entityConfig = entitiesConfig[i];
1032
- var entity = entityMap.get(entityConfig.id);
1033
- for(var i1 = 0; i1 < entityConfig.components.length; i1++){
1034
- var componentConfig = entityConfig.components[i1];
1035
- var key = !componentConfig.refId ? componentConfig.class : componentConfig.refId;
1036
- var component = void 0;
1037
- // TODO: remove hack code when support additional edit
1038
- if (key === "Animator") {
1039
- component = entity.getComponent(Loader.getClass(key));
1040
- }
1041
- component = component || entity.addComponent(Loader.getClass(key));
1042
- var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
1043
- promises.push(promise);
1044
- }
1045
- }
1046
- return Promise.all(promises);
1047
- };
1048
- _proto._clearAndResolveScene = function _clearAndResolveScene() {
1049
- var scene = this.context.scene;
1050
- this.context.destroy();
1051
- return scene;
1267
+ _proto.handleRootEntity = function handleRootEntity(id) {
1268
+ var _this_context = this.context, target = _this_context.target, entityMap = _this_context.entityMap;
1269
+ target.addRootEntity(entityMap.get(id));
1052
1270
  };
1053
1271
  /**
1054
1272
  * Parse scene data.
@@ -1057,13 +1275,13 @@ var SceneParserContext = /*#__PURE__*/ function() {
1057
1275
  * @returns a promise of scene
1058
1276
  */ SceneParser.parse = function parse(engine, sceneData) {
1059
1277
  var scene = new Scene(engine);
1060
- var context = new SceneParserContext(sceneData, scene);
1278
+ var context = new SceneParserContext(sceneData, engine, scene);
1061
1279
  var parser = new SceneParser(context);
1062
1280
  parser.start();
1063
1281
  return parser.promise;
1064
1282
  };
1065
1283
  return SceneParser;
1066
- }();
1284
+ }(HierarchyParser);
1067
1285
 
1068
1286
  var MeshLoader$1 = /*#__PURE__*/ function(Loader1) {
1069
1287
  _inherits(MeshLoader, Loader1);
@@ -1168,7 +1386,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader1) {
1168
1386
  resourceManager// @ts-ignore
1169
1387
  .getResourceByRef(value).then(function(asset) {
1170
1388
  keyframe.value = asset;
1171
- resolve(keyframe);
1389
+ resolve(keyframe.value);
1172
1390
  });
1173
1391
  });
1174
1392
  } else {
@@ -1702,7 +1920,7 @@ var TextureWrapMode;
1702
1920
  var glTFItems = this.glTF[glTFSchemaMap[type]];
1703
1921
  if (glTFItems && (index === undefined || glTFItems[index])) {
1704
1922
  if (index === undefined) {
1705
- resource = type === 7 ? glTFItems.map(function(_, index) {
1923
+ resource = type === 8 ? glTFItems.map(function(_, index) {
1706
1924
  return _this.get(type, index);
1707
1925
  }) : Promise.all(glTFItems.map(function(_, index) {
1708
1926
  return _this.get(type, index);
@@ -1724,11 +1942,11 @@ var TextureWrapMode;
1724
1942
  _this.glTF = json;
1725
1943
  return Promise.all([
1726
1944
  _this.get(1),
1727
- _this.get(4),
1728
1945
  _this.get(5),
1729
1946
  _this.get(6),
1730
- _this.get(8),
1947
+ _this.get(7),
1731
1948
  _this.get(9),
1949
+ _this.get(10),
1732
1950
  _this.get(2)
1733
1951
  ]).then(function() {
1734
1952
  var glTFResource = _this.glTFResource;
@@ -1778,7 +1996,7 @@ var TextureWrapMode;
1778
1996
  var _this = this;
1779
1997
  var glTFResourceKey = glTFResourceMap[type];
1780
1998
  if (!glTFResourceKey) return;
1781
- if (type === 7) {
1999
+ if (type === 8) {
1782
2000
  var _this_glTFResource, _glTFResourceKey;
1783
2001
  ((_this_glTFResource = this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = resource;
1784
2002
  } else {
@@ -1786,7 +2004,7 @@ var TextureWrapMode;
1786
2004
  resource.then(function(item) {
1787
2005
  var _this_glTFResource, _glTFResourceKey;
1788
2006
  ((_this_glTFResource = _this.glTFResource)[_glTFResourceKey = glTFResourceKey] || (_this_glTFResource[_glTFResourceKey] = []))[index] = item;
1789
- if (type === 6) {
2007
+ if (type === 7) {
1790
2008
  for(var i = 0, length = item.length; i < length; i++){
1791
2009
  var mesh = item[i];
1792
2010
  // @ts-ignore
@@ -1826,17 +2044,18 @@ var GLTFParserType;
1826
2044
  GLTFParserType[GLTFParserType["Validator"] = 1] = "Validator";
1827
2045
  GLTFParserType[GLTFParserType["Scene"] = 2] = "Scene";
1828
2046
  GLTFParserType[GLTFParserType["Buffer"] = 3] = "Buffer";
1829
- GLTFParserType[GLTFParserType["Texture"] = 4] = "Texture";
1830
- GLTFParserType[GLTFParserType["Material"] = 5] = "Material";
1831
- GLTFParserType[GLTFParserType["Mesh"] = 6] = "Mesh";
1832
- GLTFParserType[GLTFParserType["Entity"] = 7] = "Entity";
1833
- GLTFParserType[GLTFParserType["Skin"] = 8] = "Skin";
1834
- GLTFParserType[GLTFParserType["Animation"] = 9] = "Animation";
2047
+ GLTFParserType[GLTFParserType["BufferView"] = 4] = "BufferView";
2048
+ GLTFParserType[GLTFParserType["Texture"] = 5] = "Texture";
2049
+ GLTFParserType[GLTFParserType["Material"] = 6] = "Material";
2050
+ GLTFParserType[GLTFParserType["Mesh"] = 7] = "Mesh";
2051
+ GLTFParserType[GLTFParserType["Entity"] = 8] = "Entity";
2052
+ GLTFParserType[GLTFParserType["Skin"] = 9] = "Skin";
2053
+ GLTFParserType[GLTFParserType["Animation"] = 10] = "Animation";
1835
2054
  })(GLTFParserType || (GLTFParserType = {}));
1836
2055
  var _obj;
1837
- 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);
2056
+ 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);
1838
2057
  var _obj1;
1839
- 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);
2058
+ 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);
1840
2059
  function registerGLTFParser(pipeline) {
1841
2060
  return function(Parser) {
1842
2061
  var parser = new Parser();
@@ -1942,11 +2161,10 @@ function registerGLTFParser(pipeline) {
1942
2161
  GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
1943
2162
  var componentType = accessor.componentType;
1944
2163
  var bufferView = bufferViews[accessor.bufferView];
1945
- return context.get(GLTFParserType.Buffer).then(function(buffers) {
2164
+ return context.get(GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
1946
2165
  var bufferIndex = bufferView.buffer;
1947
- var buffer = buffers[bufferIndex];
1948
- var _bufferView_byteOffset;
1949
- var bufferByteOffset = (_bufferView_byteOffset = bufferView.byteOffset) != null ? _bufferView_byteOffset : 0;
2166
+ var _bufferViewData_byteOffset;
2167
+ var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
1950
2168
  var _accessor_byteOffset;
1951
2169
  var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
1952
2170
  var TypedArray = GLTFUtils.getComponentType(componentType);
@@ -1965,19 +2183,21 @@ function registerGLTFParser(pipeline) {
1965
2183
  if (!bufferInfo) {
1966
2184
  var offset = bufferByteOffset + bufferSlice * bufferStride;
1967
2185
  var count = accessorCount * (bufferStride / dataElementBytes);
1968
- var data = new TypedArray(buffer, offset, count);
2186
+ var data = new TypedArray(bufferViewData.buffer, offset, count);
1969
2187
  accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
1970
2188
  bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
1971
2189
  }
1972
2190
  } else {
1973
2191
  var offset1 = bufferByteOffset + byteOffset;
1974
2192
  var count1 = accessorCount * dataElementSize;
1975
- var data1 = new TypedArray(buffer, offset1, count1);
2193
+ var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
1976
2194
  bufferInfo = new BufferInfo(data1, false, elementStride);
1977
2195
  bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
1978
2196
  }
1979
2197
  if (accessor.sparse) {
1980
- GLTFUtils.processingSparseData(bufferViews, accessor, buffers, bufferInfo);
2198
+ return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
2199
+ return bufferInfo;
2200
+ });
1981
2201
  }
1982
2202
  return bufferInfo;
1983
2203
  });
@@ -2053,40 +2273,43 @@ function registerGLTFParser(pipeline) {
2053
2273
  };
2054
2274
  /**
2055
2275
  * Get accessor data.
2056
- */ GLTFUtils.processingSparseData = function processingSparseData(bufferViews, accessor, buffers, bufferInfo) {
2276
+ */ GLTFUtils.processingSparseData = function processingSparseData(context, accessor, bufferInfo) {
2057
2277
  var restoreInfo = bufferInfo.restoreInfo;
2278
+ var bufferViews = context.glTF.bufferViews;
2058
2279
  var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
2059
2280
  var TypedArray = GLTFUtils.getComponentType(accessor.componentType);
2060
2281
  var data = bufferInfo.data.slice();
2061
2282
  var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
2062
2283
  var indicesBufferView = bufferViews[indices.bufferView];
2063
2284
  var valuesBufferView = bufferViews[values.bufferView];
2064
- var indicesBufferIndex = indicesBufferView.buffer;
2065
- var valuesBufferIndex = valuesBufferView.buffer;
2066
- var indicesArrayBuffer = buffers[indicesBufferIndex];
2067
- var valuesArrayBuffer = buffers[valuesBufferIndex];
2068
- var _indices_byteOffset, _indicesBufferView_byteOffset;
2069
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
2070
- var indicesByteLength = indicesBufferView.byteLength;
2071
- var _values_byteOffset, _valuesBufferView_byteOffset;
2072
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
2073
- var valuesByteLength = valuesBufferView.byteLength;
2074
- restoreInfo.typeSize = accessorTypeSize;
2075
- restoreInfo.sparseCount = count;
2076
- var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
2077
- var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
2078
- var indicesArray = new IndexTypeArray(indicesArrayBuffer, indicesByteOffset, indexLength);
2079
- restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferIndex, IndexTypeArray, indicesByteOffset, indexLength);
2080
- var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
2081
- var valuesArray = new TypedArray(valuesArrayBuffer, valuesByteOffset, valueLength);
2082
- restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferIndex, TypedArray, valuesByteOffset, valueLength);
2083
- for(var i = 0; i < count; i++){
2084
- var replaceIndex = indicesArray[i];
2085
- for(var j = 0; j < accessorTypeSize; j++){
2086
- data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
2285
+ return Promise.all([
2286
+ context.get(GLTFParserType.BufferView, indices.bufferView),
2287
+ context.get(GLTFParserType.BufferView, values.bufferView)
2288
+ ]).then(function(param) {
2289
+ var indicesUint8Array = param[0], valuesUin8Array = param[1];
2290
+ var _indices_byteOffset, _indicesUint8Array_byteOffset;
2291
+ var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesUint8Array_byteOffset = indicesUint8Array.byteOffset) != null ? _indicesUint8Array_byteOffset : 0);
2292
+ var indicesByteLength = indicesUint8Array.byteLength;
2293
+ var _values_byteOffset, _valuesUin8Array_byteOffset;
2294
+ var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesUin8Array_byteOffset = valuesUin8Array.byteOffset) != null ? _valuesUin8Array_byteOffset : 0);
2295
+ var valuesByteLength = valuesUin8Array.byteLength;
2296
+ restoreInfo.typeSize = accessorTypeSize;
2297
+ restoreInfo.sparseCount = count;
2298
+ var IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);
2299
+ var indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;
2300
+ var indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);
2301
+ restoreInfo.sparseIndices = new RestoreDataAccessor(indicesBufferView.buffer, IndexTypeArray, indicesByteOffset, indexLength);
2302
+ var valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;
2303
+ var valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);
2304
+ restoreInfo.sparseValues = new RestoreDataAccessor(valuesBufferView.buffer, TypedArray, valuesByteOffset, valueLength);
2305
+ for(var i = 0; i < count; i++){
2306
+ var replaceIndex = indicesArray[i];
2307
+ for(var j = 0; j < accessorTypeSize; j++){
2308
+ data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];
2309
+ }
2087
2310
  }
2088
- }
2089
- bufferInfo.data = data;
2311
+ bufferInfo.data = data;
2312
+ });
2090
2313
  };
2091
2314
  GLTFUtils.getIndexFormat = function getIndexFormat(type) {
2092
2315
  switch(type){
@@ -2175,7 +2398,7 @@ function registerGLTFParser(pipeline) {
2175
2398
  };
2176
2399
  /**
2177
2400
  * Parse the glb format.
2178
- */ GLTFUtils.parseGLB = function parseGLB(context, glb) {
2401
+ */ GLTFUtils.parseGLB = function parseGLB(context, originBuffer) {
2179
2402
  var UINT32_LENGTH = 4;
2180
2403
  var GLB_HEADER_MAGIC = 0x46546c67; // 'glTF'
2181
2404
  var GLB_HEADER_LENGTH = 12;
@@ -2183,7 +2406,7 @@ function registerGLTFParser(pipeline) {
2183
2406
  JSON: 0x4e4f534a,
2184
2407
  BIN: 0x004e4942
2185
2408
  };
2186
- var dataView = new DataView(glb);
2409
+ var dataView = new DataView(originBuffer);
2187
2410
  // read header
2188
2411
  var header = {
2189
2412
  magic: dataView.getUint32(0, true),
@@ -2191,8 +2414,9 @@ function registerGLTFParser(pipeline) {
2191
2414
  length: dataView.getUint32(2 * UINT32_LENGTH, true)
2192
2415
  };
2193
2416
  if (header.magic !== GLB_HEADER_MAGIC) {
2194
- console.error("Invalid glb magic number. Expected 0x46546C67, found 0x" + header.magic.toString(16));
2195
- return null;
2417
+ return {
2418
+ originBuffer: originBuffer
2419
+ };
2196
2420
  }
2197
2421
  // read main data
2198
2422
  var chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);
@@ -2202,7 +2426,7 @@ function registerGLTFParser(pipeline) {
2202
2426
  console.error("Invalid glb chunk type. Expected 0x4E4F534A, found 0x" + chunkType.toString(16));
2203
2427
  return null;
2204
2428
  }
2205
- var glTFData = new Uint8Array(glb, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2429
+ var glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2206
2430
  var glTF = JSON.parse(Utils.decodeText(glTFData));
2207
2431
  // read all buffers
2208
2432
  var buffers = [];
@@ -2216,7 +2440,7 @@ function registerGLTFParser(pipeline) {
2216
2440
  return null;
2217
2441
  }
2218
2442
  var currentOffset = byteOffset + 2 * UINT32_LENGTH;
2219
- var buffer = glb.slice(currentOffset, currentOffset + chunkLength);
2443
+ var buffer = originBuffer.slice(currentOffset, currentOffset + chunkLength);
2220
2444
  buffers.push(buffer);
2221
2445
  restoreGLBBufferSlice.push(new Vector2(currentOffset, chunkLength));
2222
2446
  byteOffset += chunkLength + 2 * UINT32_LENGTH;
@@ -3108,8 +3332,9 @@ var KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
3108
3332
  });
3109
3333
  };
3110
3334
  /**
3111
- * Destroy ktx2 transcoder worker.
3112
- */ KTX2Loader1.destroy = function destroy() {
3335
+ * Release ktx2 transcoder worker.
3336
+ * @remarks If use loader after releasing, we should release again.
3337
+ */ KTX2Loader1.release = function release() {
3113
3338
  if (this._binomialLLCTranscoder) this._binomialLLCTranscoder.destroy();
3114
3339
  if (this._khronosTranscoder) this._khronosTranscoder.destroy();
3115
3340
  this._binomialLLCTranscoder = null;
@@ -3629,23 +3854,20 @@ var GLTFSchemaParser = /*#__PURE__*/ function(GLTFParser1) {
3629
3854
  var requestConfig = {
3630
3855
  type: "arraybuffer"
3631
3856
  };
3632
- var isGLB = this._isGLB(url);
3633
- contentRestorer.isGLB = isGLB;
3634
- var promise = isGLB ? request(url, requestConfig).onProgress(undefined, context._onTaskDetail).then(function(glb) {
3857
+ return request(url, requestConfig).onProgress(undefined, context._onTaskDetail).then(function(buffer) {
3635
3858
  restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3636
- return GLTFUtils.parseGLB(context, glb);
3637
- }).then(function(param) {
3638
- var glTF = param.glTF, buffers = param.buffers;
3639
- context.buffers = buffers;
3640
- return glTF;
3641
- }) : request(url, {
3642
- type: "json"
3643
- }).onProgress(undefined, context._onTaskDetail);
3644
- return promise;
3645
- };
3646
- _proto._isGLB = function _isGLB(url) {
3647
- var index = url.lastIndexOf(".");
3648
- return url.substring(index + 1, index + 4) === "glb";
3859
+ return GLTFUtils.parseGLB(context, buffer);
3860
+ }).then(function(result) {
3861
+ var _result;
3862
+ if ((_result = result) == null ? void 0 : _result.glTF) {
3863
+ contentRestorer.isGLB = true;
3864
+ context.buffers = result.buffers;
3865
+ return result.glTF;
3866
+ } else {
3867
+ contentRestorer.isGLB = false;
3868
+ return JSON.parse(Utils.decodeText(new Uint8Array(result.originBuffer)));
3869
+ }
3870
+ });
3649
3871
  };
3650
3872
  return GLTFSchemaParser;
3651
3873
  }(GLTFParser);
@@ -4639,12 +4861,256 @@ GLTFValidator = __decorate([
4639
4861
  registerGLTFParser(GLTFParserType.Validator)
4640
4862
  ], GLTFValidator);
4641
4863
 
4864
+ var GLTFBufferViewParser = /*#__PURE__*/ function(GLTFParser1) {
4865
+ _inherits(GLTFBufferViewParser, GLTFParser1);
4866
+ function GLTFBufferViewParser() {
4867
+ return GLTFParser1.apply(this, arguments);
4868
+ }
4869
+ var _proto = GLTFBufferViewParser.prototype;
4870
+ _proto.parse = function parse(context, index) {
4871
+ var bufferView = context.glTF.bufferViews[index];
4872
+ var extensions = bufferView.extensions, _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset, byteLength = bufferView.byteLength, bufferIndex = bufferView.buffer;
4873
+ return extensions ? GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView) : context.get(GLTFParserType.Buffer, bufferIndex).then(function(buffer) {
4874
+ return new Uint8Array(buffer, byteOffset, byteLength);
4875
+ });
4876
+ };
4877
+ return GLTFBufferViewParser;
4878
+ }(GLTFParser);
4879
+ GLTFBufferViewParser = __decorate([
4880
+ registerGLTFParser(GLTFParserType.BufferView)
4881
+ ], GLTFBufferViewParser);
4882
+
4883
+ // Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js
4884
+ var MeshoptDecoder = function() {
4885
+ var unpack = function unpack(data) {
4886
+ var result = new Uint8Array(data.length);
4887
+ for(var i = 0; i < data.length; ++i){
4888
+ var ch = data.charCodeAt(i);
4889
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
4890
+ }
4891
+ var write = 0;
4892
+ for(var i1 = 0; i1 < data.length; ++i1){
4893
+ result[write++] = result[i1] < 60 ? wasmpack[result[i1]] : (result[i1] - 60) * 64 + result[++i1];
4894
+ }
4895
+ return result.buffer.slice(0, write);
4896
+ };
4897
+ var decode = function decode(fun, target, count, size, source, filter) {
4898
+ var sbrk = instance.exports.sbrk;
4899
+ var count4 = count + 3 & ~3;
4900
+ var tp = sbrk(count4 * size);
4901
+ var sp = sbrk(source.length);
4902
+ var heap = new Uint8Array(instance.exports.memory.buffer);
4903
+ heap.set(source, sp);
4904
+ var res = fun(tp, count, size, sp, source.length);
4905
+ if (res == 0 && filter) {
4906
+ filter(tp, count4, size);
4907
+ }
4908
+ target.set(heap.subarray(tp, tp + count * size));
4909
+ sbrk(tp - sbrk(0));
4910
+ if (res != 0) {
4911
+ throw new Error("Malformed buffer data: " + res);
4912
+ }
4913
+ };
4914
+ var createWorker = function createWorker(url) {
4915
+ var worker = {
4916
+ object: new Worker(url),
4917
+ pending: 0,
4918
+ requests: {}
4919
+ };
4920
+ worker.object.onmessage = function(event) {
4921
+ var data = event.data;
4922
+ worker.pending -= data.count;
4923
+ worker.requests[data.id][data.action](data.value);
4924
+ delete worker.requests[data.id];
4925
+ };
4926
+ return worker;
4927
+ };
4928
+ var initWorkers = function initWorkers(count) {
4929
+ 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();
4930
+ var blob = new Blob([
4931
+ source
4932
+ ], {
4933
+ type: "text/javascript"
4934
+ });
4935
+ var url = URL.createObjectURL(blob);
4936
+ for(var i = 0; i < count; ++i){
4937
+ workers[i] = createWorker(url);
4938
+ }
4939
+ URL.revokeObjectURL(url);
4940
+ };
4941
+ var decodeWorker = function decodeWorker(count, size, source, mode, filter) {
4942
+ var worker = workers[0];
4943
+ for(var i = 1; i < workers.length; ++i){
4944
+ if (workers[i].pending < worker.pending) {
4945
+ worker = workers[i];
4946
+ }
4947
+ }
4948
+ return new Promise(function(resolve, reject) {
4949
+ var data = new Uint8Array(source);
4950
+ var id = requestId++;
4951
+ worker.pending += count;
4952
+ worker.requests[id] = {
4953
+ resolve: resolve,
4954
+ reject: reject
4955
+ };
4956
+ worker.object.postMessage({
4957
+ id: id,
4958
+ count: count,
4959
+ size: size,
4960
+ source: data,
4961
+ mode: mode,
4962
+ filter: filter
4963
+ }, [
4964
+ data.buffer
4965
+ ]);
4966
+ });
4967
+ };
4968
+ var workerProcess = function workerProcess(event) {
4969
+ ready.then(function() {
4970
+ var data = event.data;
4971
+ try {
4972
+ var target = new Uint8Array(data.count * data.size);
4973
+ decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);
4974
+ self.postMessage({
4975
+ id: data.id,
4976
+ count: data.count,
4977
+ action: "resolve",
4978
+ value: target
4979
+ }, [
4980
+ target.buffer
4981
+ ]);
4982
+ } catch (error) {
4983
+ self.postMessage({
4984
+ id: data.id,
4985
+ count: data.count,
4986
+ action: "reject",
4987
+ value: error
4988
+ });
4989
+ }
4990
+ });
4991
+ };
4992
+ 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";
4993
+ 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";
4994
+ var wasmpack = new Uint8Array([
4995
+ 32,
4996
+ 0,
4997
+ 65,
4998
+ 2,
4999
+ 1,
5000
+ 106,
5001
+ 34,
5002
+ 33,
5003
+ 3,
5004
+ 128,
5005
+ 11,
5006
+ 4,
5007
+ 13,
5008
+ 64,
5009
+ 6,
5010
+ 253,
5011
+ 10,
5012
+ 7,
5013
+ 15,
5014
+ 116,
5015
+ 127,
5016
+ 5,
5017
+ 8,
5018
+ 12,
5019
+ 40,
5020
+ 16,
5021
+ 19,
5022
+ 54,
5023
+ 20,
5024
+ 9,
5025
+ 27,
5026
+ 255,
5027
+ 113,
5028
+ 17,
5029
+ 42,
5030
+ 67,
5031
+ 24,
5032
+ 23,
5033
+ 146,
5034
+ 148,
5035
+ 18,
5036
+ 14,
5037
+ 22,
5038
+ 45,
5039
+ 70,
5040
+ 69,
5041
+ 56,
5042
+ 114,
5043
+ 101,
5044
+ 21,
5045
+ 25,
5046
+ 63,
5047
+ 75,
5048
+ 136,
5049
+ 108,
5050
+ 28,
5051
+ 118,
5052
+ 29,
5053
+ 73,
5054
+ 115
5055
+ ]);
5056
+ // @ts-ignore
5057
+ var wasm = SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;
5058
+ var instance;
5059
+ var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
5060
+ instance = result.instance;
5061
+ instance.exports.__wasm_call_ctors();
5062
+ });
5063
+ var filters = {
5064
+ NONE: "",
5065
+ OCTAHEDRAL: "meshopt_decodeFilterOct",
5066
+ QUATERNION: "meshopt_decodeFilterQuat",
5067
+ EXPONENTIAL: "meshopt_decodeFilterExp"
5068
+ };
5069
+ var decoders = {
5070
+ ATTRIBUTES: "meshopt_decodeVertexBuffer",
5071
+ TRIANGLES: "meshopt_decodeIndexBuffer",
5072
+ INDICES: "meshopt_decodeIndexSequence"
5073
+ };
5074
+ var workers = [];
5075
+ var requestId = 0;
5076
+ return {
5077
+ workerCount: 4,
5078
+ ready: ready,
5079
+ useWorkers: function useWorkers() {
5080
+ initWorkers(this.workerCount);
5081
+ },
5082
+ decodeGltfBuffer: function decodeGltfBuffer(count, stride, source, mode, filter) {
5083
+ if (this.workerCount > 0 && workers.length === 0) this.useWorkers();
5084
+ if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);
5085
+ return ready.then(function() {
5086
+ var target = new Uint8Array(count * stride);
5087
+ decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);
5088
+ return target;
5089
+ });
5090
+ },
5091
+ release: function release() {
5092
+ for(var i = 0; i < workers.length; i++){
5093
+ workers[i].object.terminate();
5094
+ }
5095
+ }
5096
+ };
5097
+ }();
5098
+
4642
5099
  var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4643
5100
  _inherits(GLTFLoader, Loader1);
4644
5101
  function GLTFLoader() {
4645
5102
  return Loader1.apply(this, arguments);
4646
5103
  }
4647
5104
  var _proto = GLTFLoader.prototype;
5105
+ _proto.initialize = function initialize(_, configuration) {
5106
+ var _configuration_glTF;
5107
+ var meshOptOptions = (_configuration_glTF = configuration.glTF) == null ? void 0 : _configuration_glTF.meshOpt;
5108
+ if (meshOptOptions) {
5109
+ MeshoptDecoder.workerCount = meshOptOptions.workerCount;
5110
+ MeshoptDecoder.useWorkers();
5111
+ }
5112
+ return Promise.resolve();
5113
+ };
4648
5114
  _proto.load = function load(item, resourceManager) {
4649
5115
  var url = item.url;
4650
5116
  var params = item.params;
@@ -4658,6 +5124,12 @@ var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4658
5124
  context.parse().then(resolve).catch(reject);
4659
5125
  });
4660
5126
  };
5127
+ /**
5128
+ * Release glTF loader memory(includes meshopt workers).
5129
+ * @remarks If use loader after releasing, we should release again.
5130
+ */ GLTFLoader.release = function release() {
5131
+ MeshoptDecoder.release();
5132
+ };
4661
5133
  return GLTFLoader;
4662
5134
  }(Loader);
4663
5135
  GLTFLoader = __decorate([
@@ -5367,6 +5839,86 @@ MeshLoader = __decorate([
5367
5839
  ])
5368
5840
  ], MeshLoader);
5369
5841
 
5842
+ var PrimitiveMeshLoader = /*#__PURE__*/ function(Loader1) {
5843
+ _inherits(PrimitiveMeshLoader, Loader1);
5844
+ function PrimitiveMeshLoader() {
5845
+ return Loader1.apply(this, arguments);
5846
+ }
5847
+ var _proto = PrimitiveMeshLoader.prototype;
5848
+ _proto.load = function load(item, param) {
5849
+ var engine = param.engine;
5850
+ return this.request(item.url, _extends({}, item, {
5851
+ type: "json"
5852
+ })).then(function(data) {
5853
+ switch(data.type){
5854
+ case "sphere":
5855
+ return PrimitiveMesh.createSubdivisionSurfaceSphere(engine, data.sphereRadius, data.sphereStep);
5856
+ case "capsule":
5857
+ return PrimitiveMesh.createCapsule(engine, data.capsuleRadius, data.capsuleHeight, data.capsuleRadialSegments, data.capsuleHeightSegments);
5858
+ case "cone":
5859
+ return PrimitiveMesh.createCone(engine, data.coneRadius, data.coneHeight, data.coneRadialSegment, data.coneHeightSegment);
5860
+ case "cuboid":
5861
+ return PrimitiveMesh.createCuboid(engine, data.cuboidWidth, data.cuboidHeight, data.cuboidDepth);
5862
+ case "cylinder":
5863
+ return PrimitiveMesh.createCylinder(engine, data.cylinderRadiusTop, data.cylinderRadiusBottom, data.cylinderHeight, data.cylinderRadialSegment, data.cylinderHeightSegment);
5864
+ case "plane":
5865
+ return PrimitiveMesh.createPlane(engine, data.planeWidth, data.planeHeight, data.planeHorizontalSegments, data.planeVerticalSegments);
5866
+ case "torus":
5867
+ return PrimitiveMesh.createTorus(engine, data.torusRadius, data.torusTubeRadius, data.torusRadialSegments, data.torusTubularSegments, data.torusArc);
5868
+ }
5869
+ });
5870
+ };
5871
+ return PrimitiveMeshLoader;
5872
+ }(Loader);
5873
+ PrimitiveMeshLoader = __decorate([
5874
+ resourceLoader(AssetType.PrimitiveMesh, [
5875
+ "mesh"
5876
+ ], false)
5877
+ ], PrimitiveMeshLoader);
5878
+ var /** @internal */ PrimitiveMeshType;
5879
+ (function(PrimitiveMeshType) {
5880
+ PrimitiveMeshType["Sphere"] = "sphere";
5881
+ PrimitiveMeshType["Cuboid"] = "cuboid";
5882
+ PrimitiveMeshType["Plane"] = "plane";
5883
+ PrimitiveMeshType["Cylinder"] = "cylinder";
5884
+ PrimitiveMeshType["Torus"] = "torus";
5885
+ PrimitiveMeshType["Cone"] = "cone";
5886
+ PrimitiveMeshType["Capsule"] = "capsule";
5887
+ })(PrimitiveMeshType || (PrimitiveMeshType = {}));
5888
+
5889
+ var ProjectLoader = /*#__PURE__*/ function(Loader1) {
5890
+ _inherits(ProjectLoader, Loader1);
5891
+ function ProjectLoader() {
5892
+ return Loader1.apply(this, arguments);
5893
+ }
5894
+ var _proto = ProjectLoader.prototype;
5895
+ _proto.load = function load(item, resourceManager) {
5896
+ var _this = this;
5897
+ var engine = resourceManager.engine;
5898
+ return new AssetPromise(function(resolve, reject) {
5899
+ _this.request(item.url, {
5900
+ type: "json"
5901
+ }).then(function(data) {
5902
+ // @ts-ignore
5903
+ engine.resourceManager.initVirtualResources(data.files);
5904
+ return resourceManager.load({
5905
+ type: AssetType.Scene,
5906
+ url: data.scene
5907
+ }).then(function(scene) {
5908
+ engine.sceneManager.activeScene = scene;
5909
+ resolve();
5910
+ });
5911
+ }).catch(reject);
5912
+ });
5913
+ };
5914
+ return ProjectLoader;
5915
+ }(Loader);
5916
+ ProjectLoader = __decorate([
5917
+ resourceLoader(AssetType.Project, [
5918
+ "proj"
5919
+ ], false)
5920
+ ], ProjectLoader);
5921
+
5370
5922
  var SourceFontLoader = /*#__PURE__*/ function(Loader1) {
5371
5923
  _inherits(SourceFontLoader, Loader1);
5372
5924
  function SourceFontLoader() {
@@ -5487,7 +6039,7 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader1) {
5487
6039
  };
5488
6040
  _proto._makeSprite = function _makeSprite(engine, config, texture) {
5489
6041
  // Generate a SpriteAtlas object.
5490
- var region = config.region, atlasRegionOffset = config.atlasRegionOffset, atlasRegion = config.atlasRegion, pivot = config.pivot, border = config.border;
6042
+ var region = config.region, atlasRegionOffset = config.atlasRegionOffset, atlasRegion = config.atlasRegion, pivot = config.pivot, border = config.border, width = config.width, height = config.height;
5491
6043
  var sprite = new 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);
5492
6044
  if (texture) {
5493
6045
  var invW = 1 / texture.width;
@@ -5499,6 +6051,8 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader1) {
5499
6051
  }
5500
6052
  config.atlasRotated && (sprite.atlasRotated = true);
5501
6053
  }
6054
+ isNaN(width) || (sprite.width = width);
6055
+ isNaN(height) || (sprite.height = height);
5502
6056
  return sprite;
5503
6057
  };
5504
6058
  return SpriteAtlasLoader;
@@ -5517,26 +6071,39 @@ var SpriteLoader = /*#__PURE__*/ function(Loader1) {
5517
6071
  var _proto = SpriteLoader.prototype;
5518
6072
  _proto.load = function load(item, resourceManager) {
5519
6073
  var _this = this;
5520
- return new AssetPromise(function(resolve, reject) {
5521
- _this.request(item.url, _extends({}, item, {
5522
- type: "json"
5523
- })).then(function(data) {
5524
- if (data.belongToAtlas) {
5525
- resourceManager// @ts-ignore
5526
- .getResourceByRef(data.belongToAtlas).then(function(atlas) {
5527
- resolve(atlas.getSprite(data.fullPath));
5528
- }).catch(reject);
5529
- } else if (data.texture) {
5530
- resourceManager// @ts-ignore
5531
- .getResourceByRef(data.texture).then(function(texture) {
5532
- resolve(new Sprite(resourceManager.engine, texture, data.region, data.pivot, data.border));
5533
- }).catch(reject);
5534
- } else {
5535
- resolve(new Sprite(resourceManager.engine, null, data.region, data.pivot, data.border));
5536
- }
5537
- }).catch(reject);
6074
+ return this.request(item.url, _extends({}, item, {
6075
+ type: "json"
6076
+ })).then(function(data) {
6077
+ return data.belongToAtlas ? _this._loadFromAtlas(resourceManager, data) : _this._loadFromTexture(resourceManager, data);
6078
+ });
6079
+ };
6080
+ _proto._loadFromAtlas = function _loadFromAtlas(resourceManager, data) {
6081
+ var _this = this;
6082
+ return resourceManager// @ts-ignore
6083
+ .getResourceByRef(data.belongToAtlas).then(function(atlas) {
6084
+ return atlas.getSprite(data.fullPath) || _this._loadFromTexture(resourceManager, data);
5538
6085
  });
5539
6086
  };
6087
+ _proto._loadFromTexture = function _loadFromTexture(resourceManager, data) {
6088
+ if (data.texture) {
6089
+ return resourceManager// @ts-ignore
6090
+ .getResourceByRef(data.texture).then(function(texture) {
6091
+ var sprite = new Sprite(resourceManager.engine, texture, data.region, data.pivot, data.border);
6092
+ var width = data.width, height = data.height;
6093
+ isNaN(width) || (sprite.width = width);
6094
+ isNaN(height) || (sprite.height = height);
6095
+ return sprite;
6096
+ });
6097
+ } else {
6098
+ return new AssetPromise(function(resolve) {
6099
+ var sprite = new Sprite(resourceManager.engine, null, data.region, data.pivot, data.border);
6100
+ var width = data.width, height = data.height;
6101
+ isNaN(width) || (sprite.width = width);
6102
+ isNaN(height) || (sprite.height = height);
6103
+ resolve(sprite);
6104
+ });
6105
+ }
6106
+ };
5540
6107
  return SpriteLoader;
5541
6108
  }(Loader);
5542
6109
  SpriteLoader = __decorate([
@@ -5687,39 +6254,6 @@ TextureCubeLoader = __decorate([
5687
6254
  ])
5688
6255
  ], TextureCubeLoader);
5689
6256
 
5690
- var ProjectLoader = /*#__PURE__*/ function(Loader1) {
5691
- _inherits(ProjectLoader, Loader1);
5692
- function ProjectLoader() {
5693
- return Loader1.apply(this, arguments);
5694
- }
5695
- var _proto = ProjectLoader.prototype;
5696
- _proto.load = function load(item, resourceManager) {
5697
- var _this = this;
5698
- var engine = resourceManager.engine;
5699
- return new AssetPromise(function(resolve, reject) {
5700
- _this.request(item.url, {
5701
- type: "json"
5702
- }).then(function(data) {
5703
- // @ts-ignore
5704
- engine.resourceManager.initVirtualResources(data.files);
5705
- return resourceManager.load({
5706
- type: AssetType.Scene,
5707
- url: data.scene
5708
- }).then(function(scene) {
5709
- engine.sceneManager.activeScene = scene;
5710
- resolve();
5711
- });
5712
- }).catch(reject);
5713
- });
5714
- };
5715
- return ProjectLoader;
5716
- }(Loader);
5717
- ProjectLoader = __decorate([
5718
- resourceLoader(AssetType.Project, [
5719
- "proj"
5720
- ], false)
5721
- ], ProjectLoader);
5722
-
5723
6257
  var SceneLoader = /*#__PURE__*/ function(Loader1) {
5724
6258
  _inherits(SceneLoader, Loader1);
5725
6259
  function SceneLoader() {
@@ -5738,7 +6272,7 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
5738
6272
  // parse ambient light
5739
6273
  var ambient = data.scene.ambient;
5740
6274
  if (ambient) {
5741
- var useCustomAmbient = ambient.specularMode === "Custom";
6275
+ var useCustomAmbient = ambient.specularMode === SpecularMode.Custom;
5742
6276
  var useSH = ambient.diffuseMode === DiffuseMode.SphericalHarmonics;
5743
6277
  scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
5744
6278
  scene.ambientLight.specularIntensity = ambient.specularIntensity;
@@ -5809,6 +6343,8 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
5809
6343
  var _shadow_shadowTwoCascadeSplits;
5810
6344
  scene.shadowTwoCascadeSplits = (_shadow_shadowTwoCascadeSplits = shadow.shadowTwoCascadeSplits) != null ? _shadow_shadowTwoCascadeSplits : scene.shadowTwoCascadeSplits;
5811
6345
  shadow.shadowFourCascadeSplits && scene.shadowFourCascadeSplits.copyFrom(shadow.shadowFourCascadeSplits);
6346
+ var _shadow_shadowFadeBorder;
6347
+ scene.shadowFadeBorder = (_shadow_shadowFadeBorder = shadow.shadowFadeBorder) != null ? _shadow_shadowFadeBorder : scene.shadowFadeBorder;
5812
6348
  }
5813
6349
  return Promise.all(promises).then(function() {
5814
6350
  resolve(scene);
@@ -5839,170 +6375,6 @@ ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _asy
5839
6375
  });
5840
6376
  }));
5841
6377
 
5842
- var _KHR_draco_mesh_compression;
5843
- var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ function(GLTFExtensionParser1) {
5844
- _inherits(KHR_draco_mesh_compression1, GLTFExtensionParser1);
5845
- function KHR_draco_mesh_compression1() {
5846
- return GLTFExtensionParser1.apply(this, arguments);
5847
- }
5848
- var _proto = KHR_draco_mesh_compression1.prototype;
5849
- _proto.createAndParse = function createAndParse(context, schema, glTFPrimitive, glTFMesh) {
5850
- var _this = this;
5851
- this._initialize();
5852
- var glTF = context.glTF, engine = context.glTFResource.engine;
5853
- var bufferViews = glTF.bufferViews, accessors = glTF.accessors;
5854
- var bufferViewIndex = schema.bufferView, gltfAttributeMap = schema.attributes;
5855
- var attributeMap = {};
5856
- var attributeTypeMap = {};
5857
- for(var attributeName in gltfAttributeMap){
5858
- attributeMap[attributeName] = gltfAttributeMap[attributeName];
5859
- }
5860
- for(var attributeName1 in glTFPrimitive.attributes){
5861
- if (gltfAttributeMap[attributeName1] !== undefined) {
5862
- var accessorDef = accessors[glTFPrimitive.attributes[attributeName1]];
5863
- attributeTypeMap[attributeName1] = GLTFUtils.getComponentType(accessorDef.componentType).name;
5864
- }
5865
- }
5866
- var indexAccessor = accessors[glTFPrimitive.indices];
5867
- var indexType = GLTFUtils.getComponentType(indexAccessor.componentType).name;
5868
- var taskConfig = {
5869
- attributeIDs: attributeMap,
5870
- attributeTypes: attributeTypeMap,
5871
- useUniqueIDs: true,
5872
- indexType: indexType
5873
- };
5874
- return context.get(GLTFParserType.Buffer).then(function(buffers) {
5875
- var buffer = GLTFUtils.getBufferViewData(bufferViews[bufferViewIndex], buffers);
5876
- return KHR_draco_mesh_compression._decoder.decode(buffer, taskConfig).then(function(decodedGeometry) {
5877
- var mesh = new ModelMesh(engine, glTFMesh.name);
5878
- return _this._parseMeshFromGLTFPrimitiveDraco(mesh, glTFMesh, glTFPrimitive, glTF, function(attributeSemantic) {
5879
- for(var j = 0; j < decodedGeometry.attributes.length; j++){
5880
- if (decodedGeometry.attributes[j].name === attributeSemantic) {
5881
- return decodedGeometry.attributes[j].array;
5882
- }
5883
- }
5884
- return null;
5885
- }, function(attributeSemantic, shapeIndex) {
5886
- throw "BlendShape animation is not supported when using draco.";
5887
- }, function() {
5888
- return decodedGeometry.index.array;
5889
- }, context.params.keepMeshData);
5890
- });
5891
- });
5892
- };
5893
- _proto._initialize = function _initialize() {
5894
- if (!KHR_draco_mesh_compression._decoder) {
5895
- KHR_draco_mesh_compression._decoder = new DRACODecoder();
5896
- }
5897
- };
5898
- _proto._parseMeshFromGLTFPrimitiveDraco = function _parseMeshFromGLTFPrimitiveDraco(mesh, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
5899
- var attributes = gltfPrimitive.attributes, targets = gltfPrimitive.targets, indices = gltfPrimitive.indices, mode = gltfPrimitive.mode;
5900
- var vertexCount;
5901
- var accessors = gltf.accessors;
5902
- var accessor = accessors[attributes["POSITION"]];
5903
- var positionBuffer = getVertexBufferData("POSITION");
5904
- var positions = GLTFUtils.floatBufferToVector3Array(positionBuffer);
5905
- mesh.setPositions(positions);
5906
- var bounds = mesh.bounds;
5907
- vertexCount = accessor.count;
5908
- if (accessor.min && accessor.max) {
5909
- bounds.min.copyFromArray(accessor.min);
5910
- bounds.max.copyFromArray(accessor.max);
5911
- } else {
5912
- var position = KHR_draco_mesh_compression._tempVector3;
5913
- var min = bounds.min, max = bounds.max;
5914
- min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
5915
- max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
5916
- var stride = positionBuffer.length / vertexCount;
5917
- for(var j = 0; j < vertexCount; j++){
5918
- var offset = j * stride;
5919
- position.copyFromArray(positionBuffer, offset);
5920
- Vector3.min(min, position, min);
5921
- Vector3.max(max, position, max);
5922
- }
5923
- }
5924
- for(var attributeSemantic in attributes){
5925
- if (attributeSemantic === "POSITION") {
5926
- continue;
5927
- }
5928
- var bufferData = getVertexBufferData(attributeSemantic);
5929
- switch(attributeSemantic){
5930
- case "NORMAL":
5931
- var normals = GLTFUtils.floatBufferToVector3Array(bufferData);
5932
- mesh.setNormals(normals);
5933
- break;
5934
- case "TEXCOORD_0":
5935
- var texturecoords = GLTFUtils.floatBufferToVector2Array(bufferData);
5936
- mesh.setUVs(texturecoords, 0);
5937
- break;
5938
- case "TEXCOORD_1":
5939
- var texturecoords1 = GLTFUtils.floatBufferToVector2Array(bufferData);
5940
- mesh.setUVs(texturecoords1, 1);
5941
- break;
5942
- case "TEXCOORD_2":
5943
- var texturecoords2 = GLTFUtils.floatBufferToVector2Array(bufferData);
5944
- mesh.setUVs(texturecoords2, 2);
5945
- break;
5946
- case "TEXCOORD_3":
5947
- var texturecoords3 = GLTFUtils.floatBufferToVector2Array(bufferData);
5948
- mesh.setUVs(texturecoords3, 3);
5949
- break;
5950
- case "TEXCOORD_4":
5951
- var texturecoords4 = GLTFUtils.floatBufferToVector2Array(bufferData);
5952
- mesh.setUVs(texturecoords4, 4);
5953
- break;
5954
- case "TEXCOORD_5":
5955
- var texturecoords5 = GLTFUtils.floatBufferToVector2Array(bufferData);
5956
- mesh.setUVs(texturecoords5, 5);
5957
- break;
5958
- case "TEXCOORD_6":
5959
- var texturecoords6 = GLTFUtils.floatBufferToVector2Array(bufferData);
5960
- mesh.setUVs(texturecoords6, 6);
5961
- break;
5962
- case "TEXCOORD_7":
5963
- var texturecoords7 = GLTFUtils.floatBufferToVector2Array(bufferData);
5964
- mesh.setUVs(texturecoords7, 7);
5965
- break;
5966
- case "COLOR_0":
5967
- var colors = GLTFUtils.floatBufferToColorArray(bufferData, accessors[attributes["COLOR_0"]].type === AccessorType.VEC3);
5968
- mesh.setColors(colors);
5969
- break;
5970
- case "TANGENT":
5971
- var tangents = GLTFUtils.floatBufferToVector4Array(bufferData);
5972
- mesh.setTangents(tangents);
5973
- break;
5974
- case "JOINTS_0":
5975
- var joints = GLTFUtils.floatBufferToVector4Array(bufferData);
5976
- mesh.setBoneIndices(joints);
5977
- break;
5978
- case "WEIGHTS_0":
5979
- var weights = GLTFUtils.floatBufferToVector4Array(bufferData);
5980
- mesh.setBoneWeights(weights);
5981
- break;
5982
- }
5983
- }
5984
- // Indices
5985
- if (indices !== undefined) {
5986
- var indexAccessor = gltf.accessors[indices];
5987
- var indexData = getIndexBufferData();
5988
- mesh.setIndices(indexData);
5989
- mesh.addSubMesh(0, indexAccessor.count, mode);
5990
- } else {
5991
- mesh.addSubMesh(0, vertexCount, mode);
5992
- }
5993
- // BlendShapes
5994
- targets && GLTFMeshParser._createBlendShape(mesh, null, gltfMesh, accessors, targets, getBlendShapeData);
5995
- mesh.uploadData(!keepMeshData);
5996
- return Promise.resolve(mesh);
5997
- };
5998
- return KHR_draco_mesh_compression1;
5999
- }(GLTFExtensionParser), function() {
6000
- _KHR_draco_mesh_compression._tempVector3 = new Vector3();
6001
- }(), _KHR_draco_mesh_compression);
6002
- KHR_draco_mesh_compression = __decorate([
6003
- registerGLTFExtension("KHR_draco_mesh_compression", GLTFExtensionMode.CreateAndParse)
6004
- ], KHR_draco_mesh_compression);
6005
-
6006
6378
  var KHR_lights_punctual = /*#__PURE__*/ function(GLTFExtensionParser1) {
6007
6379
  _inherits(KHR_lights_punctual, GLTFExtensionParser1);
6008
6380
  function KHR_lights_punctual() {
@@ -6335,6 +6707,23 @@ GALACEAN_animation_event = __decorate([
6335
6707
  registerGLTFExtension("GALACEAN_animation_event", GLTFExtensionMode.AdditiveParse)
6336
6708
  ], GALACEAN_animation_event);
6337
6709
 
6710
+ var EXT_meshopt_compression = /*#__PURE__*/ function(GLTFExtensionParser1) {
6711
+ _inherits(EXT_meshopt_compression, GLTFExtensionParser1);
6712
+ function EXT_meshopt_compression() {
6713
+ return GLTFExtensionParser1.apply(this, arguments);
6714
+ }
6715
+ var _proto = EXT_meshopt_compression.prototype;
6716
+ _proto.createAndParse = function createAndParse(context, schema) {
6717
+ return context.get(GLTFParserType.Buffer, schema.buffer).then(function(arrayBuffer) {
6718
+ return MeshoptDecoder.decodeGltfBuffer(schema.count, schema.byteStride, new Uint8Array(arrayBuffer, schema.byteOffset, schema.byteLength), schema.mode, schema.filter);
6719
+ });
6720
+ };
6721
+ return EXT_meshopt_compression;
6722
+ }(GLTFExtensionParser);
6723
+ EXT_meshopt_compression = __decorate([
6724
+ registerGLTFExtension("EXT_meshopt_compression", GLTFExtensionMode.CreateAndParse)
6725
+ ], EXT_meshopt_compression);
6726
+
6338
6727
  var KHR_materials_anisotropy = /*#__PURE__*/ function(GLTFExtensionParser1) {
6339
6728
  _inherits(KHR_materials_anisotropy, GLTFExtensionParser1);
6340
6729
  function KHR_materials_anisotropy() {
@@ -6358,5 +6747,5 @@ KHR_materials_anisotropy = __decorate([
6358
6747
  registerGLTFExtension("KHR_materials_anisotropy", GLTFExtensionMode.AdditiveParse)
6359
6748
  ], KHR_materials_anisotropy);
6360
6749
 
6361
- export { AnimationClipDecoder, ComponentMap, EditorTextureLoader, GLTFAnimationParser, GLTFBufferParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, InterpolableValueType, KTX2Loader, KTX2TargetFormat, KTX2Transcoder, MeshDecoder, MeshLoader$1 as MeshLoader, PrefabParser, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
6750
+ export { AccessorType, AnimationClipDecoder, BufferInfo, EditorTextureLoader, GLTFAnimationParser, GLTFBufferParser, GLTFBufferViewParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFLoader, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, InterpolableValueType, KTX2Loader, KTX2TargetFormat, KTX2Transcoder, MeshDecoder, MeshLoader$1 as MeshLoader, ParserContext, PrefabParser, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
6362
6751
  //# sourceMappingURL=module.js.map