@galacean/effects-specification 1.1.0 → 1.2.0-beta.0

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: v1.1.0
5
+ * Version: v1.2.0-beta.0
6
6
  */
7
7
 
8
8
  /*********************************************/
@@ -763,15 +763,27 @@ function ensureFixedNumber(a) {
763
763
  return [ValueType.CONSTANT, a];
764
764
  }
765
765
  if (a) {
766
- if (a[0] === 'lines') {
766
+ var valueType = a[0];
767
+ var valueData = a[1];
768
+ if (Array.isArray(valueType)) {
769
+ // 没有数据类型的数据
770
+ return;
771
+ }
772
+ if (valueType === 'static' || valueType === ValueType.CONSTANT) {
773
+ return [ValueType.CONSTANT, a[1]];
774
+ }
775
+ if (valueType === 'lines') {
767
776
  return [ValueType.LINE, a[1]];
768
777
  }
769
- if (a[0] === 'curve') {
770
- return [ValueType.CURVE, a[1]];
778
+ if (valueType === ValueType.LINE) {
779
+ // @ts-expect-error
780
+ var keyframes = valueData.map(function (data) { return [BezierKeyframeType.LINE, data]; });
781
+ return [ValueType.BEZIER_CURVE, keyframes];
771
782
  }
772
- if (a[0] === 'static') {
773
- return [ValueType.CONSTANT, a[1]];
783
+ if (valueType === 'curve' || valueType === ValueType.CURVE) {
784
+ return [ValueType.BEZIER_CURVE, getBezierCurveFromHermiteInGE(valueData)];
774
785
  }
786
+ return a;
775
787
  }
776
788
  }
777
789
  function ensureFixedNumberWithRandom(a, p) {
@@ -797,6 +809,7 @@ function ensureColorExpression(a, normalized) {
797
809
  else if (a[0] === 'color') {
798
810
  return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];
799
811
  }
812
+ return a;
800
813
  }
801
814
  }
802
815
  function ensureNumberExpression(a) {
@@ -864,6 +877,9 @@ function parsePercent(c) {
864
877
  }
865
878
  function getGradientColor(color, normalized) {
866
879
  if (Array.isArray(color)) {
880
+ if (color[0] === ValueType.GRADIENT_COLOR) {
881
+ return color;
882
+ }
867
883
  // @ts-expect-error
868
884
  return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);
869
885
  }
@@ -876,12 +892,36 @@ function ensureFixedVec3(a) {
876
892
  if (a.length === 3) {
877
893
  return [ValueType.CONSTANT_VEC3, a];
878
894
  }
879
- if (a[0] === 'path') {
880
- return [ValueType.LINEAR_PATH, a[1]];
881
- }
882
- if (a[0] === 'bezier') {
883
- return [ValueType.BEZIER_PATH, a[1]];
895
+ var valueType = a[0];
896
+ if (valueType === 'path' ||
897
+ valueType === 'bezier' ||
898
+ valueType === ValueType.BEZIER_PATH ||
899
+ valueType === ValueType.LINEAR_PATH) {
900
+ var valueData = a[1];
901
+ var easing = valueData[0];
902
+ var points = valueData[1];
903
+ var controlPoints = valueData[2];
904
+ var bezierEasing = getBezierCurveFromHermiteInGE(easing);
905
+ // linear path没有controlPoints
906
+ if (!controlPoints) {
907
+ controlPoints = [];
908
+ for (var keyframeIndex = 0; keyframeIndex < points.length; keyframeIndex++) {
909
+ var point = points[keyframeIndex].slice();
910
+ if (keyframeIndex === 0) {
911
+ controlPoints.push(point);
912
+ }
913
+ else if (keyframeIndex < points.length - 1) {
914
+ controlPoints.push(point);
915
+ controlPoints.push(point);
916
+ }
917
+ else {
918
+ controlPoints.push(point);
919
+ }
920
+ }
921
+ }
922
+ return [ValueType.BEZIER_CURVE_PATH, [bezierEasing, points, controlPoints]];
884
923
  }
924
+ return a;
885
925
  }
886
926
  }
887
927
  function objectValueToNumber(o) {
@@ -971,6 +1011,50 @@ function rotationZYXFromQuat(out, quat) {
971
1011
  }
972
1012
  return out;
973
1013
  }
1014
+ function getBezierCurveFromHermite(m0, m1, p0, p3) {
1015
+ var xStart = p0[0];
1016
+ var yStart = p0[1];
1017
+ var xEnd = p3[0];
1018
+ var yEnd = p3[1];
1019
+ var dt = xEnd - xStart;
1020
+ m0 = m0 * dt;
1021
+ m1 = m1 * dt;
1022
+ var bezierControlPoints = [[xStart + (xEnd - xStart) / 3, yStart + m0 / 3], [xEnd - (xEnd - xStart) / 3, yEnd - m1 / 3]];
1023
+ return bezierControlPoints;
1024
+ }
1025
+ function getBezierCurveFromHermiteInGE(geHermiteCurves) {
1026
+ var ymax = -1000000;
1027
+ var ymin = 1000000;
1028
+ for (var i = 0; i < geHermiteCurves.length; i++) {
1029
+ ymax = Math.max(ymax, geHermiteCurves[i][1]);
1030
+ ymin = Math.min(ymin, geHermiteCurves[i][1]);
1031
+ }
1032
+ var geBezierCurves = [[geHermiteCurves[0][0], geHermiteCurves[0][1]]];
1033
+ for (var i = 0; i < geHermiteCurves.length - 1; i++) {
1034
+ var m0 = geHermiteCurves[i][3] * (ymax - ymin);
1035
+ var m1 = geHermiteCurves[i + 1][2] * (ymax - ymin);
1036
+ var p0 = [geHermiteCurves[i][0], geHermiteCurves[i][1]];
1037
+ var p3 = [geHermiteCurves[i + 1][0], geHermiteCurves[i + 1][1]];
1038
+ if (p0[0] != p3[0]) {
1039
+ var bezierControlPoints = getBezierCurveFromHermite(m0, m1, p0, p3);
1040
+ var p1 = bezierControlPoints[0];
1041
+ var p2 = bezierControlPoints[1];
1042
+ geBezierCurves[geBezierCurves.length - 1].push(p1[0]);
1043
+ geBezierCurves[geBezierCurves.length - 1].push(p1[1]);
1044
+ geBezierCurves.push([p2[0], p2[1], p3[0], p3[1]]);
1045
+ }
1046
+ else {
1047
+ geBezierCurves[geBezierCurves.length - 1].push(p3[0]);
1048
+ geBezierCurves[geBezierCurves.length - 1].push(p3[1]);
1049
+ }
1050
+ }
1051
+ // 添加关键帧类型
1052
+ return geBezierCurves.map(function (curve, index) {
1053
+ return index === 0 ? [BezierKeyframeType.EASE_OUT, curve]
1054
+ : index === geBezierCurves.length - 1 ? [BezierKeyframeType.EASE_IN, curve]
1055
+ : [BezierKeyframeType.EASE, curve];
1056
+ });
1057
+ }
974
1058
 
975
1059
  function getStandardParticleContent(particle) {
976
1060
  var _a;
@@ -1382,12 +1466,63 @@ function version22Migration(json) {
1382
1466
  });
1383
1467
  return json;
1384
1468
  }
1469
+ /**
1470
+ * 2.5 以下版本 赫尔米特数据转换成贝塞尔数据
1471
+ */
1472
+ function version24Migration(json) {
1473
+ // 曲线转换成贝塞尔
1474
+ json.compositions.map(function (comp) {
1475
+ var e_1, _a;
1476
+ try {
1477
+ for (var _b = __values(comp.items), _c = _b.next(); !_c.done; _c = _b.next()) {
1478
+ var item = _c.value;
1479
+ convertParam(item.content);
1480
+ }
1481
+ }
1482
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
1483
+ finally {
1484
+ try {
1485
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1486
+ }
1487
+ finally { if (e_1) throw e_1.error; }
1488
+ }
1489
+ });
1490
+ return json;
1491
+ }
1492
+ function convertParam(content) {
1493
+ var e_2, _a;
1494
+ try {
1495
+ for (var _b = __values(Object.keys(content)), _c = _b.next(); !_c.done; _c = _b.next()) {
1496
+ var key = _c.value;
1497
+ var value = content[key];
1498
+ var isArray = Array.isArray(value);
1499
+ if (isArray && value.length === 2 && Array.isArray(value[1])) {
1500
+ if (key === 'path') {
1501
+ content[key] = ensureFixedVec3(value);
1502
+ }
1503
+ else {
1504
+ content[key] = ensureFixedNumber(value);
1505
+ }
1506
+ }
1507
+ else if (!isArray && typeof value === 'object') {
1508
+ convertParam(value);
1509
+ }
1510
+ }
1511
+ }
1512
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
1513
+ finally {
1514
+ try {
1515
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1516
+ }
1517
+ finally { if (e_2) throw e_2.error; }
1518
+ }
1519
+ }
1385
1520
 
1386
1521
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
1387
1522
  var standardVersion = /^(\d+)\.(\d+)$/;
1388
1523
  var reverseParticle = false;
1389
1524
  function getStandardJSON(json) {
1390
- var _a, _b;
1525
+ var _a;
1391
1526
  if (!json || typeof json !== 'object') {
1392
1527
  throw Error('expect a json object');
1393
1528
  }
@@ -1397,9 +1532,14 @@ function getStandardJSON(json) {
1397
1532
  reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
1398
1533
  return version21Migration(getStandardJSONFromV0(json));
1399
1534
  }
1400
- var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];
1535
+ var vs = standardVersion.exec(json.version) || [];
1536
+ var mainVersion = Number(vs[1]);
1537
+ var minorVersion = Number(vs[2]);
1401
1538
  if (mainVersion) {
1402
- if (Number(mainVersion) < 2) {
1539
+ if (mainVersion < 2 || (mainVersion === 2 && minorVersion < 4)) {
1540
+ version24Migration(json);
1541
+ }
1542
+ if (mainVersion < 2) {
1403
1543
  return version21Migration(json);
1404
1544
  }
1405
1545
  return json;
@@ -1668,5 +1808,5 @@ function getStandardItem(item, opt) {
1668
1808
  }
1669
1809
  }
1670
1810
 
1671
- export { arrAdd, colorToArr, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, quatFromXYZRotation, rotationZYXFromQuat };
1811
+ export { arrAdd, colorToArr, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, getBezierCurveFromHermiteInGE, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, quatFromXYZRotation, rotationZYXFromQuat };
1672
1812
  //# sourceMappingURL=fallback.mjs.map