@galacean/effects-plugin-downgrade 2.0.0-alpha.28 → 2.0.0-alpha.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@
3
3
  * Description: Galacean Effects player downgrade plugin
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 飂兮
6
- * Version: v2.0.0-alpha.28
6
+ * Version: v2.0.0-alpha.30
7
7
  */
8
8
 
9
9
  import * as EFFECTS from '@galacean/effects';
@@ -158,17 +158,6 @@ typeof SuppressedError === "function" ? SuppressedError : function _SuppressedEr
158
158
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
159
159
  };
160
160
 
161
- function _extends() {
162
- _extends = Object.assign || function assign(target) {
163
- for(var i = 1; i < arguments.length; i++){
164
- var source = arguments[i];
165
- for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
166
- }
167
- return target;
168
- };
169
- return _extends.apply(this, arguments);
170
- }
171
-
172
161
  function _array_like_to_array(arr, len) {
173
162
  if (len == null || len > arr.length) len = arr.length;
174
163
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -204,7 +193,9 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
204
193
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
205
194
  }
206
195
 
207
- var infoList = {
196
+ /**
197
+ * 部分手机厂商和 iPhone 机型列表
198
+ */ var infoList = {
208
199
  vender: [
209
200
  "SAMSUNG"
210
201
  ],
@@ -463,7 +454,9 @@ var infoList = {
463
454
  }
464
455
  ]
465
456
  };
466
- var downgradeModels = {
457
+ /**
458
+ * 被降级的硬件机型列表
459
+ */ var downgradeModels = {
467
460
  android: [
468
461
  "OPPO R9s Plus",
469
462
  "GM1910",
@@ -511,7 +504,9 @@ var downgradeModels = {
511
504
  "iPhone1,1"
512
505
  ]
513
506
  };
514
- var downgradeVersions = {
507
+ /**
508
+ * 被降级的系统版本列表
509
+ */ var downgradeVersions = {
515
510
  android: [],
516
511
  iOS: [
517
512
  "16.7",
@@ -523,7 +518,9 @@ var downgradeVersions = {
523
518
  "16.7.6"
524
519
  ]
525
520
  };
526
- var devtoolNameMap = {
521
+ /**
522
+ * 微信开发环境机型名称替换表
523
+ */ var devtoolNameMap = {
527
524
  wechat: {
528
525
  "iPhone 6/7/8": "iPhone 8",
529
526
  "iPhone 6/7/8 Plus": "iPhone 8 Plus",
@@ -541,7 +538,11 @@ var DeviceLevel;
541
538
  DeviceLevel["Unknown"] = "unknown";
542
539
  })(DeviceLevel || (DeviceLevel = {}));
543
540
 
544
- var UADecoder = /*#__PURE__*/ function() {
541
+ /**
542
+ * UserAgent 解析类
543
+ *
544
+ * 从 UserAgent 中解析出设备相关的信息,但是能获取的信息有限。
545
+ */ var UADecoder = /*#__PURE__*/ function() {
545
546
  function UADecoder(userAgent) {
546
547
  this.device = {};
547
548
  this.parse(userAgent != null ? userAgent : navigator.userAgent);
@@ -754,7 +755,11 @@ var UADecoder = /*#__PURE__*/ function() {
754
755
  return UADecoder;
755
756
  }();
756
757
 
757
- var AlipayMiniprogramParser = /*#__PURE__*/ function() {
758
+ /**
759
+ * 支付宝小程序系统信息解析类
760
+ *
761
+ * 负责解析支付宝小程序 JSAPI 返回的系统信息
762
+ */ var AlipayMiniprogramParser = /*#__PURE__*/ function() {
758
763
  function AlipayMiniprogramParser(info) {
759
764
  this.device = {};
760
765
  this.parse(info);
@@ -802,7 +807,11 @@ var AlipayMiniprogramParser = /*#__PURE__*/ function() {
802
807
  return AlipayMiniprogramParser;
803
808
  }();
804
809
 
805
- var WechatMiniprogramParser = /*#__PURE__*/ function() {
810
+ /**
811
+ * 微信小程序设备信息解析类
812
+ *
813
+ * 负责解析微信小程序 JSAPI 返回的设备信息
814
+ */ var WechatMiniprogramParser = /*#__PURE__*/ function() {
806
815
  function WechatMiniprogramParser(info) {
807
816
  this.device = {};
808
817
  this.parse(info);
@@ -857,14 +866,23 @@ var WechatMiniprogramParser = /*#__PURE__*/ function() {
857
866
  return WechatMiniprogramParser;
858
867
  }();
859
868
 
860
- var DowngradeJudge = /*#__PURE__*/ function() {
869
+ /**
870
+ * 降级判断类
871
+ *
872
+ * 通过设备信息和降级选项判断设备是否需要降级
873
+ */ var DowngradeJudge = /*#__PURE__*/ function() {
861
874
  function DowngradeJudge(options, device) {
862
875
  this.options = options;
863
876
  this.device = device;
864
877
  this.isIOS = false;
865
878
  }
866
879
  var _proto = DowngradeJudge.prototype;
867
- _proto.getDowngradeResult = function getDowngradeResult() {
880
+ /**
881
+ * 根据输入的设备信息和降级选项,以及内置的硬件机型和系统版本降级列表
882
+ * 返回当前设备降级相关的结果
883
+ *
884
+ * @returns 降级结果
885
+ */ _proto.getDowngradeResult = function getDowngradeResult() {
868
886
  var _this = this;
869
887
  var downgradeCallback = this.options.downgradeCallback;
870
888
  if (downgradeCallback) {
@@ -918,6 +936,9 @@ var DowngradeJudge = /*#__PURE__*/ function() {
918
936
  };
919
937
  };
920
938
  _proto.getRenderLevel = function getRenderLevel() {
939
+ if (this.options.level) {
940
+ return this.options.level;
941
+ }
921
942
  if (this.device.level) {
922
943
  if (this.device.level === DeviceLevel.High) {
923
944
  return spec.RenderLevel.S;
@@ -927,15 +948,6 @@ var DowngradeJudge = /*#__PURE__*/ function() {
927
948
  return spec.RenderLevel.B;
928
949
  }
929
950
  }
930
- if (this.device.memoryMB) {
931
- if (this.device.memoryMB < 4000) {
932
- return spec.RenderLevel.B;
933
- } else if (this.device.memoryMB < 6000) {
934
- return spec.RenderLevel.A;
935
- } else {
936
- return spec.RenderLevel.S;
937
- }
938
- }
939
951
  if (this.isIOS && this.device.model) {
940
952
  if (/iPhone(\d+),/.test(this.device.model)) {
941
953
  var gen = +RegExp.$1;
@@ -948,6 +960,15 @@ var DowngradeJudge = /*#__PURE__*/ function() {
948
960
  }
949
961
  }
950
962
  }
963
+ if (this.device.memoryMB) {
964
+ if (this.device.memoryMB < 4000) {
965
+ return spec.RenderLevel.B;
966
+ } else if (this.device.memoryMB < 6000) {
967
+ return spec.RenderLevel.A;
968
+ } else {
969
+ return spec.RenderLevel.S;
970
+ }
971
+ }
951
972
  return this.isIOS ? spec.RenderLevel.S : spec.RenderLevel.B;
952
973
  };
953
974
  return DowngradeJudge;
@@ -955,17 +976,26 @@ var DowngradeJudge = /*#__PURE__*/ function() {
955
976
 
956
977
  var internalPaused = Symbol("@@_inter_pause");
957
978
  var hasRegisterEvent = false;
958
- function getDowngradeResult(options) {
979
+ /**
980
+ * 获取 GE 降级结果,不需要创建 Canvas 和 WebGL 环境。
981
+ * 如果是小程序环境下,要确保 JSAPI 可调用
982
+ *
983
+ * @param options - 降级选项
984
+ * @returns 降级结果
985
+ */ function getDowngradeResult(options) {
959
986
  if (options === void 0) options = {};
960
987
  if (!hasRegisterEvent) {
961
988
  registerEvent(options);
962
989
  hasRegisterEvent = true;
963
990
  }
964
- var mock = options.mock;
965
- if (mock) {
966
- return _extends({}, mock, {
991
+ var mockDowngrade = options.mockDowngrade;
992
+ if (mockDowngrade !== undefined) {
993
+ var _options_level;
994
+ return {
995
+ downgrade: mockDowngrade,
996
+ level: (_options_level = options.level) != null ? _options_level : spec.RenderLevel.S,
967
997
  reason: "mock"
968
- });
998
+ };
969
999
  }
970
1000
  var device = getDeviceInfo(options);
971
1001
  var judge = new DowngradeJudge(options, device);
@@ -1018,7 +1048,11 @@ function getDeviceInfo(options) {
1018
1048
  }
1019
1049
  return new UADecoder().getDeviceInfo();
1020
1050
  }
1021
- function getDefaultRenderLevel() {
1051
+ /**
1052
+ * 获取默认渲染等级
1053
+ *
1054
+ * @returns 渲染等级
1055
+ */ function getDefaultRenderLevel() {
1022
1056
  return isIOS() ? spec.RenderLevel.S : spec.RenderLevel.B;
1023
1057
  }
1024
1058
  function pauseAllActivePlayers(e) {
@@ -1051,7 +1085,15 @@ function resumePausedPlayers(e) {
1051
1085
  }
1052
1086
  }
1053
1087
 
1054
- var DowngradePlugin = /*#__PURE__*/ function(AbstractPlugin) {
1088
+ /**
1089
+ * 降级插件类
1090
+ *
1091
+ * 根据 SceneLoadOptions 中传入的 downgrade 数据,判断是否降级。
1092
+ * 如果设备被降级,会在 processRawJSON 时抛出降级相关的异常和原因。
1093
+ *
1094
+ * 如果 SceneLoadOptions 中 renderLevel 没有设置,那么会根据 downgrade 数据
1095
+ * 和默认的渲染等级规则设置其中的 renderLevel 。
1096
+ */ var DowngradePlugin = /*#__PURE__*/ function(AbstractPlugin) {
1055
1097
  _inherits(DowngradePlugin, AbstractPlugin);
1056
1098
  function DowngradePlugin() {
1057
1099
  return AbstractPlugin.apply(this, arguments);
@@ -1059,18 +1101,18 @@ var DowngradePlugin = /*#__PURE__*/ function(AbstractPlugin) {
1059
1101
  DowngradePlugin.processRawJSON = function processRawJSON(json, options) {
1060
1102
  if (options === void 0) options = {};
1061
1103
  return _async_to_generator(function() {
1062
- var _options_pluginData, downgradeResult, _downgradeResult_renderLevel;
1104
+ var _options_pluginData, downgradeResult, _downgradeResult_level;
1063
1105
  return __generator(this, function(_state) {
1064
1106
  downgradeResult = (_options_pluginData = options.pluginData) == null ? void 0 : _options_pluginData["downgrade"];
1065
1107
  if (downgradeResult) {
1066
1108
  if (downgradeResult.downgrade) {
1067
- throw new Error("Downgraded, reason: " + downgradeResult.reason + ".");
1109
+ throw new Error("Downgraded, reason: " + downgradeResult.reason);
1068
1110
  }
1069
1111
  } else {
1070
1112
  logger.warn("No downgrade result in pluginData of SceneLoadOptions.");
1071
1113
  }
1072
1114
  if (!options.renderLevel) {
1073
- options.renderLevel = (_downgradeResult_renderLevel = downgradeResult == null ? void 0 : downgradeResult.renderLevel) != null ? _downgradeResult_renderLevel : getDefaultRenderLevel();
1115
+ options.renderLevel = (_downgradeResult_level = downgradeResult == null ? void 0 : downgradeResult.level) != null ? _downgradeResult_level : getDefaultRenderLevel();
1074
1116
  }
1075
1117
  return [
1076
1118
  2
@@ -1081,7 +1123,7 @@ var DowngradePlugin = /*#__PURE__*/ function(AbstractPlugin) {
1081
1123
  return DowngradePlugin;
1082
1124
  }(AbstractPlugin);
1083
1125
 
1084
- var version = "2.0.0-alpha.28";
1126
+ var version = "2.0.0-alpha.30";
1085
1127
  registerPlugin("downgrade", DowngradePlugin, VFXItem, true);
1086
1128
  logger.info("Plugin downgrade version: " + version + ".");
1087
1129
  if (version !== EFFECTS.version) {