@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/migration.d.ts +6 -0
- package/dist/fallback/utils.d.ts +3 -2
- package/dist/fallback.js +158 -14
- package/dist/fallback.js.map +1 -1
- package/dist/fallback.mjs +158 -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
|
|
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,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
|
|
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
|
|
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 (
|
|
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
|