@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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { JSONScene } from '../src/scene';
|
|
2
|
+
import type { BaseContent } from '../src';
|
|
2
3
|
/**
|
|
3
4
|
* 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)
|
|
4
5
|
*/
|
|
@@ -7,3 +8,8 @@ export declare function version21Migration(json: JSONScene): JSONScene;
|
|
|
7
8
|
* 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)
|
|
8
9
|
*/
|
|
9
10
|
export declare function version22Migration(json: JSONScene): JSONScene;
|
|
11
|
+
/**
|
|
12
|
+
* 2.5 以下版本 赫尔米特数据转换成贝塞尔数据
|
|
13
|
+
*/
|
|
14
|
+
export declare function version24Migration(json: JSONScene): JSONScene;
|
|
15
|
+
export declare function convertParam(content: BaseContent | undefined | null): void;
|
package/dist/fallback/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FixedNumberExpression, RGBAColorValue, ColorExpression, NumberExpression, GradientColor, FixedVec3Expression, vec4, vec3 } from '../src';
|
|
1
|
+
import type { FixedNumberExpression, RGBAColorValue, ColorExpression, NumberExpression, GradientColor, FixedVec3Expression, vec4, vec3, BezierKeyframeValue } from '../src';
|
|
2
2
|
export declare function arrAdd<T>(arr: T[], item: T): boolean | undefined;
|
|
3
3
|
/**
|
|
4
4
|
* @deprecated 请直接使用 Array.prototype.forEach 或 for...of
|
|
@@ -21,9 +21,10 @@ export declare function ensureGradient(a: any, normalized?: boolean): GradientCo
|
|
|
21
21
|
export declare function colorToArr(hex: string | number[], normalized?: boolean): vec4;
|
|
22
22
|
export declare function normalizeColor(a: number[]): number[] | undefined;
|
|
23
23
|
export declare function parsePercent(c: string): number;
|
|
24
|
-
export declare function getGradientColor(color: string | Array<string | number[]
|
|
24
|
+
export declare function getGradientColor(color: string | Array<string | number[]> | GradientColor, normalized?: boolean): GradientColor | undefined;
|
|
25
25
|
export declare function ensureFixedVec3(a: any): FixedVec3Expression | undefined;
|
|
26
26
|
export declare function objectValueToNumber(o: Record<string, any>): object;
|
|
27
27
|
export declare function deleteEmptyValue(o: Record<string, any>): object;
|
|
28
28
|
export declare function quatFromXYZRotation(out: vec4 | number[], x: number, y: number, z: number): vec4;
|
|
29
29
|
export declare function rotationZYXFromQuat(out: vec3 | number[], quat: vec4): vec3;
|
|
30
|
+
export declare function getBezierCurveFromHermiteInGE(geHermiteCurves: number[][]): BezierKeyframeValue[];
|
package/dist/fallback.js
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
|
'use strict';
|
|
@@ -767,15 +767,27 @@ function ensureFixedNumber(a) {
|
|
|
767
767
|
return [ValueType.CONSTANT, a];
|
|
768
768
|
}
|
|
769
769
|
if (a) {
|
|
770
|
-
|
|
770
|
+
var valueType = a[0];
|
|
771
|
+
var valueData = a[1];
|
|
772
|
+
if (Array.isArray(valueType)) {
|
|
773
|
+
// 没有数据类型的数据
|
|
774
|
+
return;
|
|
775
|
+
}
|
|
776
|
+
if (valueType === 'static' || valueType === ValueType.CONSTANT) {
|
|
777
|
+
return [ValueType.CONSTANT, a[1]];
|
|
778
|
+
}
|
|
779
|
+
if (valueType === 'lines') {
|
|
771
780
|
return [ValueType.LINE, a[1]];
|
|
772
781
|
}
|
|
773
|
-
if (
|
|
774
|
-
|
|
782
|
+
if (valueType === ValueType.LINE) {
|
|
783
|
+
// @ts-expect-error
|
|
784
|
+
var keyframes = valueData.map(function (data) { return [BezierKeyframeType.LINE, data]; });
|
|
785
|
+
return [ValueType.BEZIER_CURVE, keyframes];
|
|
775
786
|
}
|
|
776
|
-
if (
|
|
777
|
-
return [ValueType.
|
|
787
|
+
if (valueType === 'curve' || valueType === ValueType.CURVE) {
|
|
788
|
+
return [ValueType.BEZIER_CURVE, getBezierCurveFromHermiteInGE(valueData)];
|
|
778
789
|
}
|
|
790
|
+
return a;
|
|
779
791
|
}
|
|
780
792
|
}
|
|
781
793
|
function ensureFixedNumberWithRandom(a, p) {
|
|
@@ -801,6 +813,7 @@ function ensureColorExpression(a, normalized) {
|
|
|
801
813
|
else if (a[0] === 'color') {
|
|
802
814
|
return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];
|
|
803
815
|
}
|
|
816
|
+
return a;
|
|
804
817
|
}
|
|
805
818
|
}
|
|
806
819
|
function ensureNumberExpression(a) {
|
|
@@ -868,6 +881,9 @@ function parsePercent(c) {
|
|
|
868
881
|
}
|
|
869
882
|
function getGradientColor(color, normalized) {
|
|
870
883
|
if (Array.isArray(color)) {
|
|
884
|
+
if (color[0] === ValueType.GRADIENT_COLOR) {
|
|
885
|
+
return color;
|
|
886
|
+
}
|
|
871
887
|
// @ts-expect-error
|
|
872
888
|
return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);
|
|
873
889
|
}
|
|
@@ -880,12 +896,36 @@ function ensureFixedVec3(a) {
|
|
|
880
896
|
if (a.length === 3) {
|
|
881
897
|
return [ValueType.CONSTANT_VEC3, a];
|
|
882
898
|
}
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
899
|
+
var valueType = a[0];
|
|
900
|
+
if (valueType === 'path' ||
|
|
901
|
+
valueType === 'bezier' ||
|
|
902
|
+
valueType === ValueType.BEZIER_PATH ||
|
|
903
|
+
valueType === ValueType.LINEAR_PATH) {
|
|
904
|
+
var valueData = a[1];
|
|
905
|
+
var easing = valueData[0];
|
|
906
|
+
var points = valueData[1];
|
|
907
|
+
var controlPoints = valueData[2];
|
|
908
|
+
var bezierEasing = getBezierCurveFromHermiteInGE(easing);
|
|
909
|
+
// linear path没有controlPoints
|
|
910
|
+
if (!controlPoints) {
|
|
911
|
+
controlPoints = [];
|
|
912
|
+
for (var keyframeIndex = 0; keyframeIndex < points.length; keyframeIndex++) {
|
|
913
|
+
var point = points[keyframeIndex].slice();
|
|
914
|
+
if (keyframeIndex === 0) {
|
|
915
|
+
controlPoints.push(point);
|
|
916
|
+
}
|
|
917
|
+
else if (keyframeIndex < points.length - 1) {
|
|
918
|
+
controlPoints.push(point);
|
|
919
|
+
controlPoints.push(point);
|
|
920
|
+
}
|
|
921
|
+
else {
|
|
922
|
+
controlPoints.push(point);
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
return [ValueType.BEZIER_CURVE_PATH, [bezierEasing, points, controlPoints]];
|
|
888
927
|
}
|
|
928
|
+
return a;
|
|
889
929
|
}
|
|
890
930
|
}
|
|
891
931
|
function objectValueToNumber(o) {
|
|
@@ -975,6 +1015,50 @@ function rotationZYXFromQuat(out, quat) {
|
|
|
975
1015
|
}
|
|
976
1016
|
return out;
|
|
977
1017
|
}
|
|
1018
|
+
function getBezierCurveFromHermite(m0, m1, p0, p3) {
|
|
1019
|
+
var xStart = p0[0];
|
|
1020
|
+
var yStart = p0[1];
|
|
1021
|
+
var xEnd = p3[0];
|
|
1022
|
+
var yEnd = p3[1];
|
|
1023
|
+
var dt = xEnd - xStart;
|
|
1024
|
+
m0 = m0 * dt;
|
|
1025
|
+
m1 = m1 * dt;
|
|
1026
|
+
var bezierControlPoints = [[xStart + (xEnd - xStart) / 3, yStart + m0 / 3], [xEnd - (xEnd - xStart) / 3, yEnd - m1 / 3]];
|
|
1027
|
+
return bezierControlPoints;
|
|
1028
|
+
}
|
|
1029
|
+
function getBezierCurveFromHermiteInGE(geHermiteCurves) {
|
|
1030
|
+
var ymax = -1000000;
|
|
1031
|
+
var ymin = 1000000;
|
|
1032
|
+
for (var i = 0; i < geHermiteCurves.length; i++) {
|
|
1033
|
+
ymax = Math.max(ymax, geHermiteCurves[i][1]);
|
|
1034
|
+
ymin = Math.min(ymin, geHermiteCurves[i][1]);
|
|
1035
|
+
}
|
|
1036
|
+
var geBezierCurves = [[geHermiteCurves[0][0], geHermiteCurves[0][1]]];
|
|
1037
|
+
for (var i = 0; i < geHermiteCurves.length - 1; i++) {
|
|
1038
|
+
var m0 = geHermiteCurves[i][3] * (ymax - ymin);
|
|
1039
|
+
var m1 = geHermiteCurves[i + 1][2] * (ymax - ymin);
|
|
1040
|
+
var p0 = [geHermiteCurves[i][0], geHermiteCurves[i][1]];
|
|
1041
|
+
var p3 = [geHermiteCurves[i + 1][0], geHermiteCurves[i + 1][1]];
|
|
1042
|
+
if (p0[0] != p3[0]) {
|
|
1043
|
+
var bezierControlPoints = getBezierCurveFromHermite(m0, m1, p0, p3);
|
|
1044
|
+
var p1 = bezierControlPoints[0];
|
|
1045
|
+
var p2 = bezierControlPoints[1];
|
|
1046
|
+
geBezierCurves[geBezierCurves.length - 1].push(p1[0]);
|
|
1047
|
+
geBezierCurves[geBezierCurves.length - 1].push(p1[1]);
|
|
1048
|
+
geBezierCurves.push([p2[0], p2[1], p3[0], p3[1]]);
|
|
1049
|
+
}
|
|
1050
|
+
else {
|
|
1051
|
+
geBezierCurves[geBezierCurves.length - 1].push(p3[0]);
|
|
1052
|
+
geBezierCurves[geBezierCurves.length - 1].push(p3[1]);
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
// 添加关键帧类型
|
|
1056
|
+
return geBezierCurves.map(function (curve, index) {
|
|
1057
|
+
return index === 0 ? [BezierKeyframeType.EASE_OUT, curve]
|
|
1058
|
+
: index === geBezierCurves.length - 1 ? [BezierKeyframeType.EASE_IN, curve]
|
|
1059
|
+
: [BezierKeyframeType.EASE, curve];
|
|
1060
|
+
});
|
|
1061
|
+
}
|
|
978
1062
|
|
|
979
1063
|
function getStandardParticleContent(particle) {
|
|
980
1064
|
var _a;
|
|
@@ -1386,12 +1470,66 @@ function version22Migration(json) {
|
|
|
1386
1470
|
});
|
|
1387
1471
|
return json;
|
|
1388
1472
|
}
|
|
1473
|
+
/**
|
|
1474
|
+
* 2.5 以下版本 赫尔米特数据转换成贝塞尔数据
|
|
1475
|
+
*/
|
|
1476
|
+
function version24Migration(json) {
|
|
1477
|
+
// 曲线转换成贝塞尔
|
|
1478
|
+
json.compositions.map(function (comp) {
|
|
1479
|
+
var e_1, _a;
|
|
1480
|
+
try {
|
|
1481
|
+
for (var _b = __values(comp.items), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
1482
|
+
var item = _c.value;
|
|
1483
|
+
convertParam(item.content);
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
1487
|
+
finally {
|
|
1488
|
+
try {
|
|
1489
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
1490
|
+
}
|
|
1491
|
+
finally { if (e_1) throw e_1.error; }
|
|
1492
|
+
}
|
|
1493
|
+
});
|
|
1494
|
+
return json;
|
|
1495
|
+
}
|
|
1496
|
+
function convertParam(content) {
|
|
1497
|
+
var e_2, _a;
|
|
1498
|
+
if (!content) {
|
|
1499
|
+
return;
|
|
1500
|
+
}
|
|
1501
|
+
try {
|
|
1502
|
+
for (var _b = __values(Object.keys(content)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
1503
|
+
var key = _c.value;
|
|
1504
|
+
var value = content[key];
|
|
1505
|
+
var isArray = Array.isArray(value);
|
|
1506
|
+
if (isArray && value.length === 2 && Array.isArray(value[1])) {
|
|
1507
|
+
if (key === 'path') {
|
|
1508
|
+
content[key] = ensureFixedVec3(value);
|
|
1509
|
+
}
|
|
1510
|
+
else {
|
|
1511
|
+
content[key] = ensureFixedNumber(value);
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1514
|
+
else if (!isArray && typeof value === 'object') {
|
|
1515
|
+
convertParam(value);
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1519
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
1520
|
+
finally {
|
|
1521
|
+
try {
|
|
1522
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
1523
|
+
}
|
|
1524
|
+
finally { if (e_2) throw e_2.error; }
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1389
1527
|
|
|
1390
1528
|
var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
|
|
1391
1529
|
var standardVersion = /^(\d+)\.(\d+)$/;
|
|
1392
1530
|
var reverseParticle = false;
|
|
1393
1531
|
function getStandardJSON(json) {
|
|
1394
|
-
var _a
|
|
1532
|
+
var _a;
|
|
1395
1533
|
if (!json || typeof json !== 'object') {
|
|
1396
1534
|
throw Error('expect a json object');
|
|
1397
1535
|
}
|
|
@@ -1401,9 +1539,14 @@ function getStandardJSON(json) {
|
|
|
1401
1539
|
reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
|
|
1402
1540
|
return version21Migration(getStandardJSONFromV0(json));
|
|
1403
1541
|
}
|
|
1404
|
-
var
|
|
1542
|
+
var vs = standardVersion.exec(json.version) || [];
|
|
1543
|
+
var mainVersion = Number(vs[1]);
|
|
1544
|
+
var minorVersion = Number(vs[2]);
|
|
1405
1545
|
if (mainVersion) {
|
|
1406
|
-
if (
|
|
1546
|
+
if (mainVersion < 2 || (mainVersion === 2 && minorVersion < 4)) {
|
|
1547
|
+
version24Migration(json);
|
|
1548
|
+
}
|
|
1549
|
+
if (mainVersion < 2) {
|
|
1407
1550
|
return version21Migration(json);
|
|
1408
1551
|
}
|
|
1409
1552
|
return json;
|
|
@@ -1684,6 +1827,7 @@ exports.ensureNumberExpression = ensureNumberExpression;
|
|
|
1684
1827
|
exports.ensureRGBAValue = ensureRGBAValue;
|
|
1685
1828
|
exports.ensureValueGetter = ensureValueGetter;
|
|
1686
1829
|
exports.forEach = forEach;
|
|
1830
|
+
exports.getBezierCurveFromHermiteInGE = getBezierCurveFromHermiteInGE;
|
|
1687
1831
|
exports.getGradientColor = getGradientColor;
|
|
1688
1832
|
exports.getStandardComposition = getStandardComposition;
|
|
1689
1833
|
exports.getStandardImage = getStandardImage;
|