@galacean/effects-specification 2.0.0-alpha.8 → 2.0.0-alpha.9

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/fallback.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  * Name: @galacean/effects-specification
3
3
  * Description: Galacean Effects JSON Specification
4
4
  * Author: Ant Group CO., Ltd.
5
- * Version: v2.0.0-alpha.8
5
+ * Version: v2.0.0-alpha.9
6
6
  */
7
7
 
8
8
  /******************************************************************************
@@ -922,15 +922,27 @@ function ensureFixedNumber(a) {
922
922
  return [ValueType.CONSTANT, a];
923
923
  }
924
924
  if (a) {
925
- if (a[0] === 'lines') {
925
+ var valueType = a[0];
926
+ var valueData = a[1];
927
+ if (Array.isArray(valueType)) {
928
+ // 没有数据类型的数据
929
+ return;
930
+ }
931
+ if (valueType === 'static' || valueType === ValueType.CONSTANT) {
932
+ return [ValueType.CONSTANT, a[1]];
933
+ }
934
+ if (valueType === 'lines') {
926
935
  return [ValueType.LINE, a[1]];
927
936
  }
928
- if (a[0] === 'curve') {
929
- return [ValueType.CURVE, a[1]];
937
+ if (valueType === ValueType.LINE) {
938
+ // @ts-expect-error
939
+ var keyframes = valueData.map(function (data) { return [BezierKeyframeType.LINE, data]; });
940
+ return [ValueType.BEZIER_CURVE, keyframes];
930
941
  }
931
- if (a[0] === 'static') {
932
- return [ValueType.CONSTANT, a[1]];
942
+ if (valueType === 'curve' || valueType === ValueType.CURVE) {
943
+ return [ValueType.BEZIER_CURVE, getBezierCurveFromHermiteInGE(valueData)];
933
944
  }
945
+ return a;
934
946
  }
935
947
  }
936
948
  function ensureFixedNumberWithRandom(a, p) {
@@ -956,6 +968,7 @@ function ensureColorExpression(a, normalized) {
956
968
  else if (a[0] === 'color') {
957
969
  return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];
958
970
  }
971
+ return a;
959
972
  }
960
973
  }
961
974
  function ensureNumberExpression(a) {
@@ -1023,6 +1036,9 @@ function parsePercent(c) {
1023
1036
  }
1024
1037
  function getGradientColor(color, normalized) {
1025
1038
  if (Array.isArray(color)) {
1039
+ if (color[0] === ValueType.GRADIENT_COLOR) {
1040
+ return color;
1041
+ }
1026
1042
  // @ts-expect-error
1027
1043
  return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);
1028
1044
  }
@@ -1035,12 +1051,36 @@ function ensureFixedVec3(a) {
1035
1051
  if (a.length === 3) {
1036
1052
  return [ValueType.CONSTANT_VEC3, a];
1037
1053
  }
1038
- if (a[0] === 'path') {
1039
- return [ValueType.LINEAR_PATH, a[1]];
1040
- }
1041
- if (a[0] === 'bezier') {
1042
- return [ValueType.BEZIER_PATH, a[1]];
1054
+ var valueType = a[0];
1055
+ if (valueType === 'path' ||
1056
+ valueType === 'bezier' ||
1057
+ valueType === ValueType.BEZIER_PATH ||
1058
+ valueType === ValueType.LINEAR_PATH) {
1059
+ var valueData = a[1];
1060
+ var easing = valueData[0];
1061
+ var points = valueData[1];
1062
+ var controlPoints = valueData[2];
1063
+ var bezierEasing = getBezierCurveFromHermiteInGE(easing);
1064
+ // linear path没有controlPoints
1065
+ if (!controlPoints) {
1066
+ controlPoints = [];
1067
+ for (var keyframeIndex = 0; keyframeIndex < points.length; keyframeIndex++) {
1068
+ var point = points[keyframeIndex].slice();
1069
+ if (keyframeIndex === 0) {
1070
+ controlPoints.push(point);
1071
+ }
1072
+ else if (keyframeIndex < points.length - 1) {
1073
+ controlPoints.push(point);
1074
+ controlPoints.push(point);
1075
+ }
1076
+ else {
1077
+ controlPoints.push(point);
1078
+ }
1079
+ }
1080
+ }
1081
+ return [ValueType.BEZIER_CURVE_PATH, [bezierEasing, points, controlPoints]];
1043
1082
  }
1083
+ return a;
1044
1084
  }
1045
1085
  }
1046
1086
  function objectValueToNumber(o) {
@@ -1158,6 +1198,50 @@ var particleOriginTranslateMap = (_a = {},
1158
1198
  _a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
1159
1199
  _a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
1160
1200
  _a);
1201
+ function getBezierCurveFromHermite(m0, m1, p0, p3) {
1202
+ var xStart = p0[0];
1203
+ var yStart = p0[1];
1204
+ var xEnd = p3[0];
1205
+ var yEnd = p3[1];
1206
+ var dt = xEnd - xStart;
1207
+ m0 = m0 * dt;
1208
+ m1 = m1 * dt;
1209
+ var bezierControlPoints = [[xStart + (xEnd - xStart) / 3, yStart + m0 / 3], [xEnd - (xEnd - xStart) / 3, yEnd - m1 / 3]];
1210
+ return bezierControlPoints;
1211
+ }
1212
+ function getBezierCurveFromHermiteInGE(geHermiteCurves) {
1213
+ var ymax = -1000000;
1214
+ var ymin = 1000000;
1215
+ for (var i = 0; i < geHermiteCurves.length; i++) {
1216
+ ymax = Math.max(ymax, geHermiteCurves[i][1]);
1217
+ ymin = Math.min(ymin, geHermiteCurves[i][1]);
1218
+ }
1219
+ var geBezierCurves = [[geHermiteCurves[0][0], geHermiteCurves[0][1]]];
1220
+ for (var i = 0; i < geHermiteCurves.length - 1; i++) {
1221
+ var m0 = geHermiteCurves[i][3] * (ymax - ymin);
1222
+ var m1 = geHermiteCurves[i + 1][2] * (ymax - ymin);
1223
+ var p0 = [geHermiteCurves[i][0], geHermiteCurves[i][1]];
1224
+ var p3 = [geHermiteCurves[i + 1][0], geHermiteCurves[i + 1][1]];
1225
+ if (p0[0] != p3[0]) {
1226
+ var bezierControlPoints = getBezierCurveFromHermite(m0, m1, p0, p3);
1227
+ var p1 = bezierControlPoints[0];
1228
+ var p2 = bezierControlPoints[1];
1229
+ geBezierCurves[geBezierCurves.length - 1].push(p1[0]);
1230
+ geBezierCurves[geBezierCurves.length - 1].push(p1[1]);
1231
+ geBezierCurves.push([p2[0], p2[1], p3[0], p3[1]]);
1232
+ }
1233
+ else {
1234
+ geBezierCurves[geBezierCurves.length - 1].push(p3[0]);
1235
+ geBezierCurves[geBezierCurves.length - 1].push(p3[1]);
1236
+ }
1237
+ }
1238
+ // 添加关键帧类型
1239
+ return geBezierCurves.map(function (curve, index) {
1240
+ return index === 0 ? [BezierKeyframeType.EASE_OUT, curve]
1241
+ : index === geBezierCurves.length - 1 ? [BezierKeyframeType.EASE_IN, curve]
1242
+ : [BezierKeyframeType.EASE, curve];
1243
+ });
1244
+ }
1161
1245
 
1162
1246
  function getStandardParticleContent(particle) {
1163
1247
  var _a;
@@ -1783,12 +1867,66 @@ function version30Migration(json) {
1783
1867
  result.version = '3.0';
1784
1868
  return result;
1785
1869
  }
1870
+ /**
1871
+ * 2.5 以下版本 赫尔米特数据转换成贝塞尔数据
1872
+ */
1873
+ function version24Migration(json) {
1874
+ // 曲线转换成贝塞尔
1875
+ json.compositions.map(function (comp) {
1876
+ var e_4, _a;
1877
+ try {
1878
+ for (var _b = __values(comp.items), _c = _b.next(); !_c.done; _c = _b.next()) {
1879
+ var item = _c.value;
1880
+ convertParam(item.content);
1881
+ }
1882
+ }
1883
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
1884
+ finally {
1885
+ try {
1886
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1887
+ }
1888
+ finally { if (e_4) throw e_4.error; }
1889
+ }
1890
+ });
1891
+ return json;
1892
+ }
1893
+ function convertParam(content) {
1894
+ var e_5, _a;
1895
+ if (!content) {
1896
+ return;
1897
+ }
1898
+ try {
1899
+ for (var _b = __values(Object.keys(content)), _c = _b.next(); !_c.done; _c = _b.next()) {
1900
+ var key = _c.value;
1901
+ var value = content[key];
1902
+ var isArray = Array.isArray(value);
1903
+ if (isArray && value.length === 2 && Array.isArray(value[1])) {
1904
+ if (key === 'path') {
1905
+ content[key] = ensureFixedVec3(value);
1906
+ }
1907
+ else {
1908
+ content[key] = ensureFixedNumber(value);
1909
+ }
1910
+ }
1911
+ else if (!isArray && typeof value === 'object') {
1912
+ convertParam(value);
1913
+ }
1914
+ }
1915
+ }
1916
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
1917
+ finally {
1918
+ try {
1919
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1920
+ }
1921
+ finally { if (e_5) throw e_5.error; }
1922
+ }
1923
+ }
1786
1924
 
1787
1925
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
1788
1926
  var standardVersion = /^(\d+)\.(\d+)$/;
1789
1927
  var reverseParticle = false;
1790
1928
  function getStandardJSON(json) {
1791
- var _a, _b;
1929
+ var _a;
1792
1930
  if (!json || typeof json !== 'object') {
1793
1931
  throw Error('expect a json object');
1794
1932
  }
@@ -1798,9 +1936,14 @@ function getStandardJSON(json) {
1798
1936
  reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
1799
1937
  return version30Migration(version21Migration(getStandardJSONFromV0(json)));
1800
1938
  }
1801
- var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];
1939
+ var vs = standardVersion.exec(json.version) || [];
1940
+ var mainVersion = Number(vs[1]);
1941
+ var minorVersion = Number(vs[2]);
1802
1942
  if (mainVersion) {
1803
- if (Number(mainVersion) < 3) {
1943
+ if (mainVersion < 2 || (mainVersion === 2 && minorVersion < 4)) {
1944
+ json = version24Migration(json);
1945
+ }
1946
+ if (mainVersion < 3) {
1804
1947
  return version30Migration(version21Migration(json));
1805
1948
  }
1806
1949
  return json;
@@ -2061,5 +2204,5 @@ function getStandardItem(item, opt) {
2061
2204
  }
2062
2205
  }
2063
2206
 
2064
- export { arrAdd, colorToArr, convertAnchor, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, generateGUID, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, particleOriginTranslateMap, quatFromXYZRotation, rotationZYXFromQuat };
2207
+ export { arrAdd, colorToArr, convertAnchor, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, generateGUID, getBezierCurveFromHermiteInGE, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, particleOriginTranslateMap, quatFromXYZRotation, rotationZYXFromQuat };
2065
2208
  //# sourceMappingURL=fallback.mjs.map