@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/migration.d.ts +6 -0
- package/dist/fallback/utils.d.ts +3 -2
- package/dist/fallback.js +155 -14
- package/dist/fallback.js.map +1 -1
- package/dist/fallback.mjs +155 -15
- package/dist/fallback.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/src/scene.d.ts +2 -1
- package/package.json +1 -1
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.
|
|
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
|
-
|
|
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 (
|
|
770
|
-
|
|
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 (
|
|
773
|
-
return [ValueType.
|
|
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
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
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
|
|
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
|
|
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 (
|
|
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
|