@galacean/effects-specification 1.1.0 → 1.2.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
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,66 @@ 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
+ if (!content) {
1495
+ return;
1496
+ }
1497
+ try {
1498
+ for (var _b = __values(Object.keys(content)), _c = _b.next(); !_c.done; _c = _b.next()) {
1499
+ var key = _c.value;
1500
+ var value = content[key];
1501
+ var isArray = Array.isArray(value);
1502
+ if (isArray && value.length === 2 && Array.isArray(value[1])) {
1503
+ if (key === 'path') {
1504
+ content[key] = ensureFixedVec3(value);
1505
+ }
1506
+ else {
1507
+ content[key] = ensureFixedNumber(value);
1508
+ }
1509
+ }
1510
+ else if (!isArray && typeof value === 'object') {
1511
+ convertParam(value);
1512
+ }
1513
+ }
1514
+ }
1515
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
1516
+ finally {
1517
+ try {
1518
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1519
+ }
1520
+ finally { if (e_2) throw e_2.error; }
1521
+ }
1522
+ }
1385
1523
 
1386
1524
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
1387
1525
  var standardVersion = /^(\d+)\.(\d+)$/;
1388
1526
  var reverseParticle = false;
1389
1527
  function getStandardJSON(json) {
1390
- var _a, _b;
1528
+ var _a;
1391
1529
  if (!json || typeof json !== 'object') {
1392
1530
  throw Error('expect a json object');
1393
1531
  }
@@ -1397,9 +1535,14 @@ function getStandardJSON(json) {
1397
1535
  reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
1398
1536
  return version21Migration(getStandardJSONFromV0(json));
1399
1537
  }
1400
- var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];
1538
+ var vs = standardVersion.exec(json.version) || [];
1539
+ var mainVersion = Number(vs[1]);
1540
+ var minorVersion = Number(vs[2]);
1401
1541
  if (mainVersion) {
1402
- if (Number(mainVersion) < 2) {
1542
+ if (mainVersion < 2 || (mainVersion === 2 && minorVersion < 4)) {
1543
+ version24Migration(json);
1544
+ }
1545
+ if (mainVersion < 2) {
1403
1546
  return version21Migration(json);
1404
1547
  }
1405
1548
  return json;
@@ -1668,5 +1811,5 @@ function getStandardItem(item, opt) {
1668
1811
  }
1669
1812
  }
1670
1813
 
1671
- export { arrAdd, colorToArr, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, quatFromXYZRotation, rotationZYXFromQuat };
1814
+ 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
1815
  //# sourceMappingURL=fallback.mjs.map