@galacean/effects-specification 2.0.0-alpha.7 → 2.0.0-alpha.9
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 -1
- 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 +11 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -2
- package/dist/index.mjs.map +1 -1
- package/dist/src/buitin-object-guid.d.ts +5 -0
- package/dist/src/components.d.ts +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/scene.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { JSONScene, JSONSceneLegacy } from '../src';
|
|
1
|
+
import type { JSONScene, JSONSceneLegacy, BaseContent } from '../src';
|
|
2
2
|
/**
|
|
3
3
|
* 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)
|
|
4
4
|
*/
|
|
@@ -11,3 +11,8 @@ export declare function version22Migration(json: JSONSceneLegacy): JSONSceneLega
|
|
|
11
11
|
* 3.0 以下版本数据适配(runtime 2.0及以上版本支持)
|
|
12
12
|
*/
|
|
13
13
|
export declare function version30Migration(json: JSONSceneLegacy): JSONScene;
|
|
14
|
+
/**
|
|
15
|
+
* 2.5 以下版本 赫尔米特数据转换成贝塞尔数据
|
|
16
|
+
*/
|
|
17
|
+
export declare function version24Migration(json: JSONScene): JSONScene;
|
|
18
|
+
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, vec2 } from '../src';
|
|
1
|
+
import type { FixedNumberExpression, RGBAColorValue, ColorExpression, NumberExpression, GradientColor, FixedVec3Expression, vec4, vec3, BezierKeyframeValue, vec2 } from '../src';
|
|
2
2
|
import { ParticleOrigin } from '../src';
|
|
3
3
|
export declare function arrAdd<T>(arr: T[], item: T): boolean | undefined;
|
|
4
4
|
/**
|
|
@@ -22,7 +22,7 @@ export declare function ensureGradient(a: any, normalized?: boolean): GradientCo
|
|
|
22
22
|
export declare function colorToArr(hex: string | number[], normalized?: boolean): vec4;
|
|
23
23
|
export declare function normalizeColor(a: number[]): number[] | undefined;
|
|
24
24
|
export declare function parsePercent(c: string): number;
|
|
25
|
-
export declare function getGradientColor(color: string | Array<string | number[]
|
|
25
|
+
export declare function getGradientColor(color: string | Array<string | number[]> | GradientColor, normalized?: boolean): GradientColor | undefined;
|
|
26
26
|
export declare function ensureFixedVec3(a: any): FixedVec3Expression | undefined;
|
|
27
27
|
export declare function objectValueToNumber(o: Record<string, any>): object;
|
|
28
28
|
export declare function deleteEmptyValue(o: Record<string, any>): object;
|
|
@@ -34,3 +34,4 @@ export declare function generateGUID(): string;
|
|
|
34
34
|
*/
|
|
35
35
|
export declare function convertAnchor(anchor?: vec2, particleOrigin?: ParticleOrigin): vec2;
|
|
36
36
|
export declare const particleOriginTranslateMap: Record<number, vec2>;
|
|
37
|
+
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: v2.0.0-alpha.
|
|
5
|
+
* Version: v2.0.0-alpha.9
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
'use strict';
|
|
@@ -926,15 +926,27 @@ function ensureFixedNumber(a) {
|
|
|
926
926
|
return [ValueType.CONSTANT, a];
|
|
927
927
|
}
|
|
928
928
|
if (a) {
|
|
929
|
-
|
|
929
|
+
var valueType = a[0];
|
|
930
|
+
var valueData = a[1];
|
|
931
|
+
if (Array.isArray(valueType)) {
|
|
932
|
+
// 没有数据类型的数据
|
|
933
|
+
return;
|
|
934
|
+
}
|
|
935
|
+
if (valueType === 'static' || valueType === ValueType.CONSTANT) {
|
|
936
|
+
return [ValueType.CONSTANT, a[1]];
|
|
937
|
+
}
|
|
938
|
+
if (valueType === 'lines') {
|
|
930
939
|
return [ValueType.LINE, a[1]];
|
|
931
940
|
}
|
|
932
|
-
if (
|
|
933
|
-
|
|
941
|
+
if (valueType === ValueType.LINE) {
|
|
942
|
+
// @ts-expect-error
|
|
943
|
+
var keyframes = valueData.map(function (data) { return [BezierKeyframeType.LINE, data]; });
|
|
944
|
+
return [ValueType.BEZIER_CURVE, keyframes];
|
|
934
945
|
}
|
|
935
|
-
if (
|
|
936
|
-
return [ValueType.
|
|
946
|
+
if (valueType === 'curve' || valueType === ValueType.CURVE) {
|
|
947
|
+
return [ValueType.BEZIER_CURVE, getBezierCurveFromHermiteInGE(valueData)];
|
|
937
948
|
}
|
|
949
|
+
return a;
|
|
938
950
|
}
|
|
939
951
|
}
|
|
940
952
|
function ensureFixedNumberWithRandom(a, p) {
|
|
@@ -960,6 +972,7 @@ function ensureColorExpression(a, normalized) {
|
|
|
960
972
|
else if (a[0] === 'color') {
|
|
961
973
|
return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];
|
|
962
974
|
}
|
|
975
|
+
return a;
|
|
963
976
|
}
|
|
964
977
|
}
|
|
965
978
|
function ensureNumberExpression(a) {
|
|
@@ -1027,6 +1040,9 @@ function parsePercent(c) {
|
|
|
1027
1040
|
}
|
|
1028
1041
|
function getGradientColor(color, normalized) {
|
|
1029
1042
|
if (Array.isArray(color)) {
|
|
1043
|
+
if (color[0] === ValueType.GRADIENT_COLOR) {
|
|
1044
|
+
return color;
|
|
1045
|
+
}
|
|
1030
1046
|
// @ts-expect-error
|
|
1031
1047
|
return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);
|
|
1032
1048
|
}
|
|
@@ -1039,12 +1055,36 @@ function ensureFixedVec3(a) {
|
|
|
1039
1055
|
if (a.length === 3) {
|
|
1040
1056
|
return [ValueType.CONSTANT_VEC3, a];
|
|
1041
1057
|
}
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1058
|
+
var valueType = a[0];
|
|
1059
|
+
if (valueType === 'path' ||
|
|
1060
|
+
valueType === 'bezier' ||
|
|
1061
|
+
valueType === ValueType.BEZIER_PATH ||
|
|
1062
|
+
valueType === ValueType.LINEAR_PATH) {
|
|
1063
|
+
var valueData = a[1];
|
|
1064
|
+
var easing = valueData[0];
|
|
1065
|
+
var points = valueData[1];
|
|
1066
|
+
var controlPoints = valueData[2];
|
|
1067
|
+
var bezierEasing = getBezierCurveFromHermiteInGE(easing);
|
|
1068
|
+
// linear path没有controlPoints
|
|
1069
|
+
if (!controlPoints) {
|
|
1070
|
+
controlPoints = [];
|
|
1071
|
+
for (var keyframeIndex = 0; keyframeIndex < points.length; keyframeIndex++) {
|
|
1072
|
+
var point = points[keyframeIndex].slice();
|
|
1073
|
+
if (keyframeIndex === 0) {
|
|
1074
|
+
controlPoints.push(point);
|
|
1075
|
+
}
|
|
1076
|
+
else if (keyframeIndex < points.length - 1) {
|
|
1077
|
+
controlPoints.push(point);
|
|
1078
|
+
controlPoints.push(point);
|
|
1079
|
+
}
|
|
1080
|
+
else {
|
|
1081
|
+
controlPoints.push(point);
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
return [ValueType.BEZIER_CURVE_PATH, [bezierEasing, points, controlPoints]];
|
|
1047
1086
|
}
|
|
1087
|
+
return a;
|
|
1048
1088
|
}
|
|
1049
1089
|
}
|
|
1050
1090
|
function objectValueToNumber(o) {
|
|
@@ -1162,6 +1202,50 @@ var particleOriginTranslateMap = (_a = {},
|
|
|
1162
1202
|
_a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
|
|
1163
1203
|
_a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
|
|
1164
1204
|
_a);
|
|
1205
|
+
function getBezierCurveFromHermite(m0, m1, p0, p3) {
|
|
1206
|
+
var xStart = p0[0];
|
|
1207
|
+
var yStart = p0[1];
|
|
1208
|
+
var xEnd = p3[0];
|
|
1209
|
+
var yEnd = p3[1];
|
|
1210
|
+
var dt = xEnd - xStart;
|
|
1211
|
+
m0 = m0 * dt;
|
|
1212
|
+
m1 = m1 * dt;
|
|
1213
|
+
var bezierControlPoints = [[xStart + (xEnd - xStart) / 3, yStart + m0 / 3], [xEnd - (xEnd - xStart) / 3, yEnd - m1 / 3]];
|
|
1214
|
+
return bezierControlPoints;
|
|
1215
|
+
}
|
|
1216
|
+
function getBezierCurveFromHermiteInGE(geHermiteCurves) {
|
|
1217
|
+
var ymax = -1000000;
|
|
1218
|
+
var ymin = 1000000;
|
|
1219
|
+
for (var i = 0; i < geHermiteCurves.length; i++) {
|
|
1220
|
+
ymax = Math.max(ymax, geHermiteCurves[i][1]);
|
|
1221
|
+
ymin = Math.min(ymin, geHermiteCurves[i][1]);
|
|
1222
|
+
}
|
|
1223
|
+
var geBezierCurves = [[geHermiteCurves[0][0], geHermiteCurves[0][1]]];
|
|
1224
|
+
for (var i = 0; i < geHermiteCurves.length - 1; i++) {
|
|
1225
|
+
var m0 = geHermiteCurves[i][3] * (ymax - ymin);
|
|
1226
|
+
var m1 = geHermiteCurves[i + 1][2] * (ymax - ymin);
|
|
1227
|
+
var p0 = [geHermiteCurves[i][0], geHermiteCurves[i][1]];
|
|
1228
|
+
var p3 = [geHermiteCurves[i + 1][0], geHermiteCurves[i + 1][1]];
|
|
1229
|
+
if (p0[0] != p3[0]) {
|
|
1230
|
+
var bezierControlPoints = getBezierCurveFromHermite(m0, m1, p0, p3);
|
|
1231
|
+
var p1 = bezierControlPoints[0];
|
|
1232
|
+
var p2 = bezierControlPoints[1];
|
|
1233
|
+
geBezierCurves[geBezierCurves.length - 1].push(p1[0]);
|
|
1234
|
+
geBezierCurves[geBezierCurves.length - 1].push(p1[1]);
|
|
1235
|
+
geBezierCurves.push([p2[0], p2[1], p3[0], p3[1]]);
|
|
1236
|
+
}
|
|
1237
|
+
else {
|
|
1238
|
+
geBezierCurves[geBezierCurves.length - 1].push(p3[0]);
|
|
1239
|
+
geBezierCurves[geBezierCurves.length - 1].push(p3[1]);
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
// 添加关键帧类型
|
|
1243
|
+
return geBezierCurves.map(function (curve, index) {
|
|
1244
|
+
return index === 0 ? [BezierKeyframeType.EASE_OUT, curve]
|
|
1245
|
+
: index === geBezierCurves.length - 1 ? [BezierKeyframeType.EASE_IN, curve]
|
|
1246
|
+
: [BezierKeyframeType.EASE, curve];
|
|
1247
|
+
});
|
|
1248
|
+
}
|
|
1165
1249
|
|
|
1166
1250
|
function getStandardParticleContent(particle) {
|
|
1167
1251
|
var _a;
|
|
@@ -1787,12 +1871,66 @@ function version30Migration(json) {
|
|
|
1787
1871
|
result.version = '3.0';
|
|
1788
1872
|
return result;
|
|
1789
1873
|
}
|
|
1874
|
+
/**
|
|
1875
|
+
* 2.5 以下版本 赫尔米特数据转换成贝塞尔数据
|
|
1876
|
+
*/
|
|
1877
|
+
function version24Migration(json) {
|
|
1878
|
+
// 曲线转换成贝塞尔
|
|
1879
|
+
json.compositions.map(function (comp) {
|
|
1880
|
+
var e_4, _a;
|
|
1881
|
+
try {
|
|
1882
|
+
for (var _b = __values(comp.items), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
1883
|
+
var item = _c.value;
|
|
1884
|
+
convertParam(item.content);
|
|
1885
|
+
}
|
|
1886
|
+
}
|
|
1887
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
1888
|
+
finally {
|
|
1889
|
+
try {
|
|
1890
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
1891
|
+
}
|
|
1892
|
+
finally { if (e_4) throw e_4.error; }
|
|
1893
|
+
}
|
|
1894
|
+
});
|
|
1895
|
+
return json;
|
|
1896
|
+
}
|
|
1897
|
+
function convertParam(content) {
|
|
1898
|
+
var e_5, _a;
|
|
1899
|
+
if (!content) {
|
|
1900
|
+
return;
|
|
1901
|
+
}
|
|
1902
|
+
try {
|
|
1903
|
+
for (var _b = __values(Object.keys(content)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
1904
|
+
var key = _c.value;
|
|
1905
|
+
var value = content[key];
|
|
1906
|
+
var isArray = Array.isArray(value);
|
|
1907
|
+
if (isArray && value.length === 2 && Array.isArray(value[1])) {
|
|
1908
|
+
if (key === 'path') {
|
|
1909
|
+
content[key] = ensureFixedVec3(value);
|
|
1910
|
+
}
|
|
1911
|
+
else {
|
|
1912
|
+
content[key] = ensureFixedNumber(value);
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
else if (!isArray && typeof value === 'object') {
|
|
1916
|
+
convertParam(value);
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
}
|
|
1920
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
1921
|
+
finally {
|
|
1922
|
+
try {
|
|
1923
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
1924
|
+
}
|
|
1925
|
+
finally { if (e_5) throw e_5.error; }
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1790
1928
|
|
|
1791
1929
|
var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
|
|
1792
1930
|
var standardVersion = /^(\d+)\.(\d+)$/;
|
|
1793
1931
|
var reverseParticle = false;
|
|
1794
1932
|
function getStandardJSON(json) {
|
|
1795
|
-
var _a
|
|
1933
|
+
var _a;
|
|
1796
1934
|
if (!json || typeof json !== 'object') {
|
|
1797
1935
|
throw Error('expect a json object');
|
|
1798
1936
|
}
|
|
@@ -1802,9 +1940,14 @@ function getStandardJSON(json) {
|
|
|
1802
1940
|
reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
|
|
1803
1941
|
return version30Migration(version21Migration(getStandardJSONFromV0(json)));
|
|
1804
1942
|
}
|
|
1805
|
-
var
|
|
1943
|
+
var vs = standardVersion.exec(json.version) || [];
|
|
1944
|
+
var mainVersion = Number(vs[1]);
|
|
1945
|
+
var minorVersion = Number(vs[2]);
|
|
1806
1946
|
if (mainVersion) {
|
|
1807
|
-
if (
|
|
1947
|
+
if (mainVersion < 2 || (mainVersion === 2 && minorVersion < 4)) {
|
|
1948
|
+
json = version24Migration(json);
|
|
1949
|
+
}
|
|
1950
|
+
if (mainVersion < 3) {
|
|
1808
1951
|
return version30Migration(version21Migration(json));
|
|
1809
1952
|
}
|
|
1810
1953
|
return json;
|
|
@@ -2079,6 +2222,7 @@ exports.ensureRGBAValue = ensureRGBAValue;
|
|
|
2079
2222
|
exports.ensureValueGetter = ensureValueGetter;
|
|
2080
2223
|
exports.forEach = forEach;
|
|
2081
2224
|
exports.generateGUID = generateGUID;
|
|
2225
|
+
exports.getBezierCurveFromHermiteInGE = getBezierCurveFromHermiteInGE;
|
|
2082
2226
|
exports.getGradientColor = getGradientColor;
|
|
2083
2227
|
exports.getStandardComposition = getStandardComposition;
|
|
2084
2228
|
exports.getStandardImage = getStandardImage;
|