@galacean/effects-specification 2.0.0-alpha.8 → 2.0.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.
Files changed (101) hide show
  1. package/README.md +2 -10
  2. package/es/animation-clip-data.d.ts +26 -0
  3. package/es/animation-clip-data.js +1 -0
  4. package/{dist/src → es}/binary.d.ts +4 -2
  5. package/es/binary.js +1 -0
  6. package/es/buitin-object-guid.d.ts +5 -0
  7. package/es/buitin-object-guid.js +5 -0
  8. package/{dist/src → es}/components.d.ts +81 -4
  9. package/es/components.js +129 -0
  10. package/{dist/src → es}/composition.d.ts +28 -70
  11. package/es/composition.js +12 -0
  12. package/{dist/src → es}/constants.d.ts +23 -0
  13. package/es/constants.js +34 -0
  14. package/{dist/src → es}/image.d.ts +13 -6
  15. package/es/image.js +9 -0
  16. package/{dist/src → es}/index.d.ts +2 -1
  17. package/es/index.js +28 -0
  18. package/{dist/src → es}/item/base-item.d.ts +27 -7
  19. package/es/item/base-item.js +27 -0
  20. package/{dist/src → es}/item/camera-item.d.ts +5 -5
  21. package/es/item/camera-item.js +1 -0
  22. package/{dist/src → es}/item/composition-item.d.ts +4 -4
  23. package/es/item/composition-item.js +1 -0
  24. package/{dist/src → es}/item/effect-item.d.ts +2 -2
  25. package/es/item/effect-item.js +1 -0
  26. package/{dist/src → es}/item/interact-item.d.ts +3 -3
  27. package/es/item/interact-item.js +1 -0
  28. package/es/item/model/binary.js +1 -0
  29. package/{dist/src → es}/item/model/camera.d.ts +2 -2
  30. package/es/item/model/camera.js +5 -0
  31. package/es/item/model/index.js +35 -0
  32. package/{dist/src → es}/item/model/light.d.ts +2 -2
  33. package/es/item/model/light.js +19 -0
  34. package/{dist/src → es}/item/model/material.d.ts +3 -3
  35. package/es/item/model/material.js +16 -0
  36. package/{dist/src → es}/item/model/mesh.d.ts +6 -5
  37. package/es/item/model/mesh.js +5 -0
  38. package/es/item/model/render.js +42 -0
  39. package/{dist/src → es}/item/model/skybox.d.ts +9 -3
  40. package/es/item/model/skybox.js +1 -0
  41. package/{dist/src → es}/item/model/tree.d.ts +10 -0
  42. package/es/item/model/tree.js +1 -0
  43. package/es/item/null-item.d.ts +46 -0
  44. package/es/item/null-item.js +1 -0
  45. package/{dist/src → es}/item/particle-item.d.ts +20 -20
  46. package/es/item/particle-item.js +14 -0
  47. package/es/item/particle-shape.js +19 -0
  48. package/{dist/src → es}/item/plugin-item.d.ts +3 -3
  49. package/es/item/plugin-item.js +1 -0
  50. package/{dist/src → es}/item/spine-item.d.ts +44 -20
  51. package/es/item/spine-item.js +1 -0
  52. package/{dist/src → es}/item/sprite-item.d.ts +3 -3
  53. package/es/item/sprite-item.js +1 -0
  54. package/{dist/src → es}/item/text-item.d.ts +3 -3
  55. package/es/item/text-item.js +1 -0
  56. package/{dist/src → es}/item.d.ts +1 -3
  57. package/es/item.js +1 -0
  58. package/{dist/src → es}/number-expression.d.ts +21 -8
  59. package/es/number-expression.js +91 -0
  60. package/{dist/src → es}/scene.d.ts +17 -14
  61. package/es/scene.js +1 -0
  62. package/{dist/src → es}/text.d.ts +3 -49
  63. package/es/text.js +84 -0
  64. package/es/timeline/index.d.ts +5 -0
  65. package/es/timeline/index.js +5 -0
  66. package/es/timeline/playables/sprite-color-playable-asset-data.d.ts +8 -0
  67. package/es/timeline/playables/sprite-color-playable-asset-data.js +1 -0
  68. package/es/timeline/playables/transform-playable-asset-data.d.ts +17 -0
  69. package/es/timeline/playables/transform-playable-asset-data.js +1 -0
  70. package/es/timeline/timeline-asset-data.d.ts +8 -0
  71. package/es/timeline/timeline-asset-data.js +1 -0
  72. package/es/timeline/timeline-clip-data.d.ts +11 -0
  73. package/es/timeline/timeline-clip-data.js +1 -0
  74. package/es/timeline/track/track-asset-data.d.ts +9 -0
  75. package/es/timeline/track/track-asset-data.js +1 -0
  76. package/{dist/src → es}/type.d.ts +25 -12
  77. package/es/type.js +342 -0
  78. package/{dist/src → es}/vfx-item-data.d.ts +8 -9
  79. package/es/vfx-item-data.js +1 -0
  80. package/package.json +27 -48
  81. package/dist/fallback/camera.d.ts +0 -2
  82. package/dist/fallback/index.d.ts +0 -12
  83. package/dist/fallback/interact.d.ts +0 -2
  84. package/dist/fallback/migration.d.ts +0 -13
  85. package/dist/fallback/particle.d.ts +0 -2
  86. package/dist/fallback/sprite.d.ts +0 -3
  87. package/dist/fallback/utils.d.ts +0 -36
  88. package/dist/fallback.js +0 -2093
  89. package/dist/fallback.js.map +0 -1
  90. package/dist/fallback.mjs +0 -2065
  91. package/dist/fallback.mjs.map +0 -1
  92. package/dist/index.js +0 -802
  93. package/dist/index.js.map +0 -1
  94. package/dist/index.mjs +0 -787
  95. package/dist/index.mjs.map +0 -1
  96. package/dist/src/buitin-object-guid.d.ts +0 -5
  97. package/dist/src/item/null-item.d.ts +0 -94
  98. /package/{dist/src → es}/item/model/binary.d.ts +0 -0
  99. /package/{dist/src → es}/item/model/index.d.ts +0 -0
  100. /package/{dist/src → es}/item/model/render.d.ts +0 -0
  101. /package/{dist/src → es}/item/particle-shape.d.ts +0 -0
package/dist/fallback.mjs DELETED
@@ -1,2065 +0,0 @@
1
- /*!
2
- * Name: @galacean/effects-specification
3
- * Description: Galacean Effects JSON Specification
4
- * Author: Ant Group CO., Ltd.
5
- * Version: v2.0.0-alpha.8
6
- */
7
-
8
- /******************************************************************************
9
- Copyright (c) Microsoft Corporation.
10
-
11
- Permission to use, copy, modify, and/or distribute this software for any
12
- purpose with or without fee is hereby granted.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
15
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
16
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
17
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
18
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
19
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20
- PERFORMANCE OF THIS SOFTWARE.
21
- ***************************************************************************** */
22
-
23
- var __assign = function() {
24
- __assign = Object.assign || function __assign(t) {
25
- for (var s, i = 1, n = arguments.length; i < n; i++) {
26
- s = arguments[i];
27
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
28
- }
29
- return t;
30
- };
31
- return __assign.apply(this, arguments);
32
- };
33
-
34
- function __values(o) {
35
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
36
- if (m) return m.call(o);
37
- if (o && typeof o.length === "number") return {
38
- next: function () {
39
- if (o && i >= o.length) o = void 0;
40
- return { value: o && o[i++], done: !o };
41
- }
42
- };
43
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
44
- }
45
-
46
- function __read(o, n) {
47
- var m = typeof Symbol === "function" && o[Symbol.iterator];
48
- if (!m) return o;
49
- var i = m.call(o), r, ar = [], e;
50
- try {
51
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
52
- }
53
- catch (error) { e = { error: error }; }
54
- finally {
55
- try {
56
- if (r && !r.done && (m = i["return"])) m.call(i);
57
- }
58
- finally { if (e) throw e.error; }
59
- }
60
- return ar;
61
- }
62
-
63
- function __spreadArray(to, from, pack) {
64
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
65
- if (ar || !(i in from)) {
66
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
67
- ar[i] = from[i];
68
- }
69
- }
70
- return to.concat(ar || Array.prototype.slice.call(from));
71
- }
72
-
73
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
74
- var e = new Error(message);
75
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
76
- };
77
-
78
- const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
79
- var native = {
80
- randomUUID
81
- };
82
-
83
- // Unique ID creation requires a high quality random # generator. In the browser we therefore
84
- // require the crypto API and do not support built-in fallback to lower quality random number
85
- // generators (like Math.random()).
86
- let getRandomValues;
87
- const rnds8 = new Uint8Array(16);
88
- function rng() {
89
- // lazy load so that environments that need to polyfill have a chance to do so
90
- if (!getRandomValues) {
91
- // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
92
- getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
93
-
94
- if (!getRandomValues) {
95
- throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
96
- }
97
- }
98
-
99
- return getRandomValues(rnds8);
100
- }
101
-
102
- /**
103
- * Convert array of 16 byte values to UUID string format of the form:
104
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
105
- */
106
-
107
- const byteToHex = [];
108
-
109
- for (let i = 0; i < 256; ++i) {
110
- byteToHex.push((i + 0x100).toString(16).slice(1));
111
- }
112
-
113
- function unsafeStringify(arr, offset = 0) {
114
- // Note: Be careful editing this code! It's been tuned for performance
115
- // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
116
- return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
117
- }
118
-
119
- function v4(options, buf, offset) {
120
- if (native.randomUUID && !buf && !options) {
121
- return native.randomUUID();
122
- }
123
-
124
- options = options || {};
125
- const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
126
-
127
- rnds[6] = rnds[6] & 0x0f | 0x40;
128
- rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
129
-
130
- if (buf) {
131
- offset = offset || 0;
132
-
133
- for (let i = 0; i < 16; ++i) {
134
- buf[offset + i] = rnds[i];
135
- }
136
-
137
- return buf;
138
- }
139
-
140
- return unsafeStringify(rnds);
141
- }
142
-
143
- /*********************************************/
144
- /* 元素属性参数类型 */
145
- /*********************************************/
146
- /**
147
- * 渲染等级
148
- */
149
- var RenderLevel;
150
- (function (RenderLevel) {
151
- RenderLevel["S"] = "S";
152
- RenderLevel["APlus"] = "A+";
153
- RenderLevel["A"] = "A";
154
- RenderLevel["BPlus"] = "B+";
155
- RenderLevel["B"] = "B";
156
- })(RenderLevel || (RenderLevel = {}));
157
- /**
158
- * 混合模式
159
- */
160
- var BlendingMode;
161
- (function (BlendingMode) {
162
- /**
163
- * 普通混合模式
164
- */
165
- BlendingMode[BlendingMode["ALPHA"] = 0] = "ALPHA";
166
- /**
167
- * 叠加混合模式
168
- */
169
- BlendingMode[BlendingMode["ADD"] = 1] = "ADD";
170
- /**
171
- * 相乘混合模式
172
- */
173
- BlendingMode[BlendingMode["MULTIPLY"] = 2] = "MULTIPLY";
174
- /**
175
- * 亮度混合模式
176
- */
177
- BlendingMode[BlendingMode["BRIGHTNESS"] = 3] = "BRIGHTNESS";
178
- /**
179
- * 减色混合模式
180
- */
181
- BlendingMode[BlendingMode["SUBTRACTION"] = 4] = "SUBTRACTION";
182
- /**
183
- * 强光混合模式
184
- */
185
- BlendingMode[BlendingMode["STRONG_LIGHT"] = 5] = "STRONG_LIGHT";
186
- /**
187
- * 弱光混合模式
188
- */
189
- BlendingMode[BlendingMode["WEAK_LIGHT"] = 6] = "WEAK_LIGHT";
190
- /**
191
- * 亮度叠加混合模式
192
- */
193
- BlendingMode[BlendingMode["SUPERPOSITION"] = 7] = "SUPERPOSITION";
194
- })(BlendingMode || (BlendingMode = {}));
195
- /**
196
- * 单双面模式
197
- */
198
- var SideMode;
199
- (function (SideMode) {
200
- /**
201
- * 双面模式
202
- */
203
- SideMode[SideMode["DOUBLE"] = 1032] = "DOUBLE";
204
- /**
205
- * 正面模式
206
- */
207
- SideMode[SideMode["FRONT"] = 1028] = "FRONT";
208
- /**
209
- * 背面模式
210
- */
211
- SideMode[SideMode["BACK"] = 1029] = "BACK";
212
- })(SideMode || (SideMode = {}));
213
- /**
214
- * 蒙版模式
215
- */
216
- var MaskMode;
217
- (function (MaskMode) {
218
- /**
219
- * 无蒙版
220
- */
221
- MaskMode[MaskMode["NONE"] = 0] = "NONE";
222
- /**
223
- * 蒙版
224
- */
225
- MaskMode[MaskMode["MASK"] = 1] = "MASK";
226
- /**
227
- * 被遮挡
228
- */
229
- MaskMode[MaskMode["OBSCURED"] = 2] = "OBSCURED";
230
- /**
231
- * 被反向遮挡
232
- */
233
- MaskMode[MaskMode["REVERSE_OBSCURED"] = 3] = "REVERSE_OBSCURED";
234
- })(MaskMode || (MaskMode = {}));
235
- /**
236
- * 发射器形状
237
- */
238
- var ShapeType;
239
- (function (ShapeType) {
240
- /**
241
- * 没有类型
242
- */
243
- ShapeType[ShapeType["NONE"] = 0] = "NONE";
244
- /**
245
- * 圆球
246
- */
247
- ShapeType[ShapeType["SPHERE"] = 1] = "SPHERE";
248
- /**
249
- * 圆锥
250
- */
251
- ShapeType[ShapeType["CONE"] = 2] = "CONE";
252
- /**
253
- * 半球
254
- */
255
- ShapeType[ShapeType["HEMISPHERE"] = 3] = "HEMISPHERE";
256
- /**
257
- * 圆
258
- */
259
- ShapeType[ShapeType["CIRCLE"] = 4] = "CIRCLE";
260
- /**
261
- * 圆环
262
- */
263
- ShapeType[ShapeType["DONUT"] = 5] = "DONUT";
264
- /**
265
- * 矩形
266
- */
267
- ShapeType[ShapeType["RECTANGLE"] = 6] = "RECTANGLE";
268
- /**
269
- * 矩形框
270
- */
271
- ShapeType[ShapeType["RECTANGLE_EDGE"] = 7] = "RECTANGLE_EDGE";
272
- /**
273
- * 直线
274
- */
275
- ShapeType[ShapeType["EDGE"] = 8] = "EDGE";
276
- /**
277
- * 贴图
278
- */
279
- ShapeType[ShapeType["TEXTURE"] = 9] = "TEXTURE";
280
- })(ShapeType || (ShapeType = {}));
281
- /**
282
- * 插件类型
283
- */
284
- var PluginType;
285
- (function (PluginType) {
286
- /**
287
- * 陀螺仪
288
- */
289
- PluginType[PluginType["GYROSCOPE"] = 0] = "GYROSCOPE";
290
- /**
291
- * Spine
292
- */
293
- PluginType[PluginType["SPINE"] = 1] = "SPINE";
294
- })(PluginType || (PluginType = {}));
295
- /**
296
- * 交互类型
297
- */
298
- var InteractType;
299
- (function (InteractType) {
300
- /**
301
- * 点击
302
- */
303
- InteractType[InteractType["CLICK"] = 0] = "CLICK";
304
- /**
305
- * 消息
306
- * 前端收到 onMessageItem 回调
307
- */
308
- InteractType[InteractType["MESSAGE"] = 1] = "MESSAGE";
309
- /**
310
- * 拖拽
311
- */
312
- InteractType[InteractType["DRAG"] = 2] = "DRAG";
313
- })(InteractType || (InteractType = {}));
314
- /**
315
- * 交互行为
316
- */
317
- var InteractBehavior;
318
- (function (InteractBehavior) {
319
- /**
320
- * 无
321
- */
322
- InteractBehavior[InteractBehavior["NONE"] = 0] = "NONE";
323
- /**
324
- * 通知
325
- */
326
- InteractBehavior[InteractBehavior["NOTIFY"] = 1] = "NOTIFY";
327
- /**
328
- * 重置播放器
329
- */
330
- InteractBehavior[InteractBehavior["RESUME_PLAYER"] = 2] = "RESUME_PLAYER";
331
- /**
332
- * 清除元素
333
- */
334
- InteractBehavior[InteractBehavior["REMOVE"] = 3] = "REMOVE";
335
- /**
336
- * 暂停播放器
337
- */
338
- InteractBehavior[InteractBehavior["PAUSE"] = 4] = "PAUSE";
339
- })(InteractBehavior || (InteractBehavior = {}));
340
- /**
341
- * 元素类型
342
- */
343
- var ItemType;
344
- (function (ItemType) {
345
- /**
346
- * 错误元素
347
- */
348
- ItemType["base"] = "0";
349
- /**
350
- * 图层元素
351
- */
352
- ItemType["sprite"] = "1";
353
- /**
354
- * 粒子元素
355
- */
356
- ItemType["particle"] = "2";
357
- /**
358
- * 空节点元素
359
- */
360
- ItemType["null"] = "3";
361
- /**
362
- * 交互元素
363
- */
364
- ItemType["interact"] = "4";
365
- /**
366
- * 插件元素
367
- */
368
- ItemType["plugin"] = "5";
369
- /**
370
- * 相机元素
371
- */
372
- ItemType["camera"] = "6";
373
- /**
374
- * 预合成元素
375
- */
376
- ItemType["composition"] = "7";
377
- /**
378
- * Spine 元素
379
- */
380
- ItemType["spine"] = "spine";
381
- /**
382
- * Mesh 元素
383
- */
384
- ItemType["mesh"] = "mesh";
385
- /**
386
- * 节点树元素
387
- */
388
- ItemType["tree"] = "tree";
389
- /**
390
- * 文本元素
391
- */
392
- ItemType["text"] = "text";
393
- /**
394
- * 灯光元素
395
- */
396
- ItemType["light"] = "light";
397
- /**
398
- * 天空盒元素
399
- */
400
- ItemType["skybox"] = "skybox";
401
- /**
402
- * 特效元素
403
- */
404
- ItemType["effect"] = "effect";
405
- })(ItemType || (ItemType = {}));
406
- /**
407
- * 渲染模式
408
- */
409
- var RenderMode;
410
- (function (RenderMode) {
411
- /**
412
- * 广告牌模式
413
- */
414
- RenderMode[RenderMode["BILLBOARD"] = 0] = "BILLBOARD";
415
- /**
416
- * 网格模式
417
- */
418
- RenderMode[RenderMode["MESH"] = 1] = "MESH";
419
- /**
420
- * 垂直广告牌模式
421
- */
422
- RenderMode[RenderMode["VERTICAL_BILLBOARD"] = 2] = "VERTICAL_BILLBOARD";
423
- /**
424
- * 水平广告牌模式
425
- */
426
- RenderMode[RenderMode["HORIZONTAL_BILLBOARD"] = 3] = "HORIZONTAL_BILLBOARD";
427
- })(RenderMode || (RenderMode = {}));
428
- /**
429
- * 变换中心
430
- */
431
- var ParticleOrigin;
432
- (function (ParticleOrigin) {
433
- /**
434
- * 水平和垂直中点
435
- */
436
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_CENTER"] = 0] = "PARTICLE_ORIGIN_CENTER";
437
- /**
438
- * 水平左侧 垂直顶部
439
- */
440
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_LEFT_TOP"] = 1] = "PARTICLE_ORIGIN_LEFT_TOP";
441
- /**
442
- * 水平左侧 垂直中间
443
- */
444
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_LEFT_CENTER"] = 2] = "PARTICLE_ORIGIN_LEFT_CENTER";
445
- /**
446
- * 水平左侧 垂直底部
447
- */
448
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_LEFT_BOTTOM"] = 3] = "PARTICLE_ORIGIN_LEFT_BOTTOM";
449
- /**
450
- * 水平中间 垂直顶部
451
- */
452
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_CENTER_TOP"] = 4] = "PARTICLE_ORIGIN_CENTER_TOP";
453
- /**
454
- * 水平中间 垂直底部
455
- */
456
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_CENTER_BOTTOM"] = 5] = "PARTICLE_ORIGIN_CENTER_BOTTOM";
457
- /**
458
- * 水平右侧 垂直顶部
459
- */
460
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_RIGHT_TOP"] = 6] = "PARTICLE_ORIGIN_RIGHT_TOP";
461
- /**
462
- * 水平右侧 垂直中间
463
- */
464
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_RIGHT_CENTER"] = 7] = "PARTICLE_ORIGIN_RIGHT_CENTER";
465
- /**
466
- * 水平右侧 垂直底部
467
- */
468
- ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_RIGHT_BOTTOM"] = 8] = "PARTICLE_ORIGIN_RIGHT_BOTTOM";
469
- })(ParticleOrigin || (ParticleOrigin = {}));
470
-
471
- var END_BEHAVIOR_DESTROY = 0;
472
- var END_BEHAVIOR_PAUSE = 1;
473
- var END_BEHAVIOR_FORWARD = 2;
474
- var END_BEHAVIOR_PAUSE_AND_DESTROY = 3;
475
- var END_BEHAVIOR_FREEZE = 4;
476
- var END_BEHAVIOR_RESTART = 5;
477
- var END_BEHAVIOR_DESTROY_CHILDREN = 6;
478
- var CAMERA_CLIP_MODE_VERTICAL = 1;
479
- var CAMERA_CLIP_MODE_NORMAL = 0;
480
-
481
- var CameraClipMode;
482
- (function (CameraClipMode) {
483
- /**
484
- * 剪裁上下
485
- */
486
- CameraClipMode[CameraClipMode["portrait"] = CAMERA_CLIP_MODE_VERTICAL] = "portrait";
487
- /**
488
- * 剪裁左右
489
- */
490
- CameraClipMode[CameraClipMode["landscape"] = CAMERA_CLIP_MODE_NORMAL] = "landscape";
491
- })(CameraClipMode || (CameraClipMode = {}));
492
- /**
493
- * 结束行为
494
- */
495
- var CompositionEndBehavior;
496
- (function (CompositionEndBehavior) {
497
- /**
498
- * 销毁
499
- */
500
- CompositionEndBehavior[CompositionEndBehavior["destroy"] = END_BEHAVIOR_DESTROY] = "destroy";
501
- /**
502
- * 暂停
503
- */
504
- CompositionEndBehavior[CompositionEndBehavior["pause"] = END_BEHAVIOR_PAUSE] = "pause";
505
- /**
506
- * 重播
507
- */
508
- CompositionEndBehavior[CompositionEndBehavior["restart"] = END_BEHAVIOR_RESTART] = "restart";
509
- /**
510
- * 无限播放
511
- */
512
- CompositionEndBehavior[CompositionEndBehavior["forward"] = END_BEHAVIOR_FORWARD] = "forward";
513
- /**
514
- * 销毁并保留最后一帧
515
- */
516
- CompositionEndBehavior[CompositionEndBehavior["pause_destroy"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = "pause_destroy";
517
- /**
518
- * 冻结
519
- */
520
- CompositionEndBehavior[CompositionEndBehavior["freeze"] = END_BEHAVIOR_FREEZE] = "freeze";
521
- })(CompositionEndBehavior || (CompositionEndBehavior = {}));
522
-
523
- /**
524
- * 动态换图类型
525
- * @since 1.1.0
526
- */
527
- var BackgroundType;
528
- (function (BackgroundType) {
529
- BackgroundType["video"] = "video";
530
- BackgroundType["image"] = "image";
531
- })(BackgroundType || (BackgroundType = {}));
532
-
533
- /*********************************************/
534
- /* 基本数值属性参数 */
535
- /*********************************************/
536
- var ValueType;
537
- (function (ValueType) {
538
- /**
539
- * 常数
540
- */
541
- ValueType[ValueType["CONSTANT"] = 0] = "CONSTANT";
542
- /**
543
- * 二维常数向量
544
- */
545
- ValueType[ValueType["CONSTANT_VEC2"] = 1] = "CONSTANT_VEC2";
546
- /**
547
- * 三维常数向量
548
- */
549
- ValueType[ValueType["CONSTANT_VEC3"] = 2] = "CONSTANT_VEC3";
550
- /**
551
- * 四维常数向量
552
- */
553
- ValueType[ValueType["CONSTANT_VEC4"] = 3] = "CONSTANT_VEC4";
554
- /**
555
- * 随机数
556
- */
557
- ValueType[ValueType["RANDOM"] = 4] = "RANDOM";
558
- /**
559
- * 直线
560
- */
561
- ValueType[ValueType["LINE"] = 5] = "LINE";
562
- /**
563
- * 曲线
564
- */
565
- ValueType[ValueType["CURVE"] = 6] = "CURVE";
566
- /**
567
- * 贝塞尔路径
568
- */
569
- ValueType[ValueType["BEZIER_PATH"] = 7] = "BEZIER_PATH";
570
- /**
571
- * 颜色
572
- */
573
- ValueType[ValueType["RGBA_COLOR"] = 8] = "RGBA_COLOR";
574
- /**
575
- * 渐变色
576
- */
577
- ValueType[ValueType["GRADIENT_COLOR"] = 9] = "GRADIENT_COLOR";
578
- /**
579
- * 蒙版形状点集
580
- */
581
- ValueType[ValueType["SHAPE_POINTS"] = 10] = "SHAPE_POINTS";
582
- /**
583
- * 蒙版形状切分
584
- */
585
- ValueType[ValueType["SHAPE_SPLITS"] = 11] = "SHAPE_SPLITS";
586
- /**
587
- *直线路径
588
- */
589
- ValueType[ValueType["LINEAR_PATH"] = 12] = "LINEAR_PATH";
590
- /**
591
- * 多色
592
- */
593
- ValueType[ValueType["COLORS"] = 13] = "COLORS";
594
- /**
595
- * 二进制指针
596
- */
597
- ValueType[ValueType["BINARY"] = 20] = "BINARY";
598
- /**
599
- * 贝塞尔曲线
600
- */
601
- ValueType[ValueType["BEZIER_CURVE"] = 21] = "BEZIER_CURVE";
602
- /**
603
- * 贝塞尔曲线路径
604
- */
605
- ValueType[ValueType["BEZIER_CURVE_PATH"] = 22] = "BEZIER_CURVE_PATH";
606
- })(ValueType || (ValueType = {}));
607
- /**
608
- * 关键帧类型
609
- */
610
- var BezierKeyframeType;
611
- (function (BezierKeyframeType) {
612
- BezierKeyframeType[BezierKeyframeType["AUTO"] = 0] = "AUTO";
613
- BezierKeyframeType[BezierKeyframeType["EASE"] = 1] = "EASE";
614
- BezierKeyframeType[BezierKeyframeType["EASE_IN"] = 2] = "EASE_IN";
615
- BezierKeyframeType[BezierKeyframeType["EASE_OUT"] = 3] = "EASE_OUT";
616
- BezierKeyframeType[BezierKeyframeType["LINE"] = 4] = "LINE";
617
- BezierKeyframeType[BezierKeyframeType["HOLD"] = 5] = "HOLD";
618
- BezierKeyframeType[BezierKeyframeType["LINE_OUT"] = 6] = "LINE_OUT";
619
- })(BezierKeyframeType || (BezierKeyframeType = {}));
620
-
621
- var ItemEndBehavior;
622
- (function (ItemEndBehavior) {
623
- ItemEndBehavior[ItemEndBehavior["destroy"] = END_BEHAVIOR_DESTROY] = "destroy";
624
- ItemEndBehavior[ItemEndBehavior["loop"] = END_BEHAVIOR_RESTART] = "loop";
625
- ItemEndBehavior[ItemEndBehavior["freeze"] = END_BEHAVIOR_FREEZE] = "freeze";
626
- })(ItemEndBehavior || (ItemEndBehavior = {}));
627
- var ParentItemEndBehavior;
628
- (function (ParentItemEndBehavior) {
629
- ParentItemEndBehavior[ParentItemEndBehavior["destroyChildren"] = END_BEHAVIOR_DESTROY_CHILDREN] = "destroyChildren";
630
- })(ParentItemEndBehavior || (ParentItemEndBehavior = {}));
631
-
632
- /**
633
- * 粒子交互行为
634
- */
635
- var ParticleInteractionBehavior;
636
- (function (ParticleInteractionBehavior) {
637
- /**
638
- * 无
639
- */
640
- ParticleInteractionBehavior[ParticleInteractionBehavior["none"] = 0] = "none";
641
- /**
642
- * 移出粒子
643
- */
644
- ParticleInteractionBehavior[ParticleInteractionBehavior["removeParticle"] = 1] = "removeParticle";
645
- })(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));
646
-
647
- var ShapeArcMode;
648
- (function (ShapeArcMode) {
649
- /**
650
- * 随机
651
- */
652
- ShapeArcMode[ShapeArcMode["RANDOM"] = 0] = "RANDOM";
653
- /**
654
- * 单向循环
655
- */
656
- ShapeArcMode[ShapeArcMode["UNIDIRECTIONAL_CYCLE"] = 1] = "UNIDIRECTIONAL_CYCLE";
657
- /**
658
- * 双向循环
659
- */
660
- ShapeArcMode[ShapeArcMode["BIDIRECTIONAL_CYCLE"] = 2] = "BIDIRECTIONAL_CYCLE";
661
- /**
662
- * 均匀爆发
663
- */
664
- ShapeArcMode[ShapeArcMode["UNIFORM_BURST"] = 3] = "UNIFORM_BURST";
665
- })(ShapeArcMode || (ShapeArcMode = {}));
666
-
667
- var LightType;
668
- (function (LightType) {
669
- /**
670
- * 点光源
671
- */
672
- LightType["point"] = "point";
673
- /**
674
- * 聚光灯
675
- */
676
- LightType["spot"] = "spot";
677
- /**
678
- * 方向光
679
- */
680
- LightType["directional"] = "directional";
681
- /**
682
- * 环境光
683
- */
684
- LightType["ambient"] = "ambient";
685
- })(LightType || (LightType = {}));
686
-
687
- var ModelBoundingType;
688
- (function (ModelBoundingType) {
689
- ModelBoundingType[ModelBoundingType["box"] = 2] = "box";
690
- ModelBoundingType[ModelBoundingType["sphere"] = 3] = "sphere";
691
- })(ModelBoundingType || (ModelBoundingType = {}));
692
-
693
- var CameraType;
694
- (function (CameraType) {
695
- CameraType["orthographic"] = "orthographic";
696
- CameraType["perspective"] = "perspective";
697
- })(CameraType || (CameraType = {}));
698
-
699
- // 材质类型
700
- var MaterialType;
701
- (function (MaterialType) {
702
- MaterialType["unlit"] = "unlit";
703
- MaterialType["pbr"] = "pbr";
704
- // 头发材质,在 pbr 材质基础上扩展
705
- MaterialType["hair"] = "hair";
706
- })(MaterialType || (MaterialType = {}));
707
- // 混合模式
708
- var MaterialBlending;
709
- (function (MaterialBlending) {
710
- MaterialBlending[MaterialBlending["opaque"] = 100] = "opaque";
711
- MaterialBlending[MaterialBlending["masked"] = 101] = "masked";
712
- MaterialBlending[MaterialBlending["translucent"] = 102] = "translucent";
713
- MaterialBlending[MaterialBlending["additive"] = 103] = "additive";
714
- })(MaterialBlending || (MaterialBlending = {}));
715
-
716
- /**
717
- * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质
718
- */
719
- var RenderMode3D;
720
- (function (RenderMode3D) {
721
- /**
722
- * 正常渲染
723
- */
724
- RenderMode3D["none"] = "none";
725
- /**
726
- * 纹理坐标
727
- */
728
- RenderMode3D["uv"] = "uv";
729
- /**
730
- * 世界坐标法线
731
- */
732
- RenderMode3D["normal"] = "normal";
733
- /**
734
- * 基础颜色
735
- */
736
- RenderMode3D["basecolor"] = "basecolor";
737
- /**
738
- * 基础颜色 Alpha
739
- */
740
- RenderMode3D["alpha"] = "alpha";
741
- /**
742
- * 金属度
743
- */
744
- RenderMode3D["metallic"] = "metallic";
745
- /**
746
- * 粗超度
747
- */
748
- RenderMode3D["roughness"] = "roughness";
749
- /**
750
- * 环境遮蔽
751
- */
752
- RenderMode3D["ao"] = "ao";
753
- /**
754
- * 自发光
755
- */
756
- RenderMode3D["emissive"] = "emissive";
757
- })(RenderMode3D || (RenderMode3D = {}));
758
-
759
- var TextOverflow;
760
- (function (TextOverflow) {
761
- /**
762
- * display 模式下,会显示所有文本,存在文本超过边界框的情况。
763
- */
764
- TextOverflow[TextOverflow["display"] = 0] = "display";
765
- /**
766
- * clip 模式下,当文本内容超出边界框时,多余的会被截断。
767
- */
768
- TextOverflow[TextOverflow["clip"] = 1] = "clip";
769
- /**
770
- * ellipsis 模式下,会使用(...)来代替超出边界框的内容。
771
- */
772
- TextOverflow[TextOverflow["ellipsis"] = 2] = "ellipsis";
773
- })(TextOverflow || (TextOverflow = {}));
774
- var TextBaseline;
775
- (function (TextBaseline) {
776
- /**
777
- * 文本顶对齐。
778
- */
779
- TextBaseline[TextBaseline["top"] = 0] = "top";
780
- /**
781
- * 文本垂直居中对齐。
782
- */
783
- TextBaseline[TextBaseline["middle"] = 1] = "middle";
784
- /**
785
- * 文本底对齐。
786
- */
787
- TextBaseline[TextBaseline["bottom"] = 2] = "bottom";
788
- })(TextBaseline || (TextBaseline = {}));
789
- var TextAlignment;
790
- (function (TextAlignment) {
791
- /**
792
- * text alignment starts from(x,y) to right direction
793
- * 从(x,y)开始第一个字符,向右边延伸
794
- */
795
- TextAlignment[TextAlignment["left"] = 0] = "left";
796
- /**
797
- * (x,y) is middle position of text, where (left + right)/2 =(x,y)
798
- * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)
799
- */
800
- TextAlignment[TextAlignment["middle"] = 1] = "middle";
801
- /**
802
- * text alignment ends with(x,y) from left direction
803
- * 从(x,y)结束最后一个字符,向左边延伸
804
- */
805
- TextAlignment[TextAlignment["right"] = 2] = "right";
806
- })(TextAlignment || (TextAlignment = {}));
807
- /**
808
- * 文本字重
809
- */
810
- var TextWeight;
811
- (function (TextWeight) {
812
- /**
813
- * 正常
814
- */
815
- TextWeight["normal"] = "normal";
816
- /**
817
- * 粗体
818
- */
819
- TextWeight["bold"] = "bold";
820
- /**
821
- * 瘦体
822
- */
823
- TextWeight["lighter"] = "lighter";
824
- })(TextWeight || (TextWeight = {}));
825
- /**
826
- * 文本样式
827
- */
828
- var FontStyle;
829
- (function (FontStyle) {
830
- /**
831
- * 正常
832
- */
833
- FontStyle["normal"] = "normal";
834
- /**
835
- * 斜体
836
- */
837
- FontStyle["italic"] = "italic";
838
- /**
839
- * 倾斜体
840
- */
841
- FontStyle["oblique"] = "oblique";
842
- })(FontStyle || (FontStyle = {}));
843
-
844
- var DataType;
845
- (function (DataType) {
846
- DataType["VFXItemData"] = "VFXItemData";
847
- DataType["EffectComponent"] = "EffectComponent";
848
- DataType["Material"] = "Material";
849
- DataType["Shader"] = "Shader";
850
- DataType["SpriteComponent"] = "SpriteComponent";
851
- DataType["ParticleSystem"] = "ParticleSystem";
852
- DataType["InteractComponent"] = "InteractComponent";
853
- DataType["CameraController"] = "CameraController";
854
- DataType["Geometry"] = "Geometry";
855
- DataType["Texture"] = "Texture";
856
- DataType["TextComponent"] = "TextComponent";
857
- // FIXME: 先完成ECS的场景转换,后面移到spec中
858
- DataType["MeshComponent"] = "MeshComponent";
859
- DataType["SkyboxComponent"] = "SkyboxComponent";
860
- DataType["LightComponent"] = "LightComponent";
861
- DataType["CameraComponent"] = "CameraComponent";
862
- DataType["ModelPluginComponent"] = "ModelPluginComponent";
863
- DataType["TreeComponent"] = "TreeComponent";
864
- })(DataType || (DataType = {}));
865
- var GeometryType;
866
- (function (GeometryType) {
867
- /**
868
- * Draw single points.
869
- */
870
- GeometryType[GeometryType["POINTS"] = 0] = "POINTS";
871
- /**
872
- * Draw lines. Each vertex connects to the one after it.
873
- */
874
- GeometryType[GeometryType["LINES"] = 1] = "LINES";
875
- /**
876
- * Draw lines. Each set of two vertices is treated as a separate line segment.
877
- */
878
- GeometryType[GeometryType["LINE_LOOP"] = 2] = "LINE_LOOP";
879
- /**
880
- * Draw a connected group of line segments from the first vertex to the last.
881
- */
882
- GeometryType[GeometryType["LINE_STRIP"] = 3] = "LINE_STRIP";
883
- /**
884
- * Draw triangles. Each set of three vertices creates a separate triangle.
885
- */
886
- GeometryType[GeometryType["TRIANGLES"] = 4] = "TRIANGLES";
887
- /**
888
- * Draw a connected strip of triangles.
889
- */
890
- GeometryType[GeometryType["TRIANGLE_STRIP"] = 5] = "TRIANGLE_STRIP";
891
- /**
892
- * Draw a connected group of triangles. Each vertex connects to the previous and the first vertex in the fan.
893
- */
894
- GeometryType[GeometryType["TRIANGLE_FAN"] = 6] = "TRIANGLE_FAN";
895
- })(GeometryType || (GeometryType = {}));
896
-
897
- var _a;
898
- function arrAdd(arr, item) {
899
- if (!arr.includes(item)) {
900
- arr.push(item);
901
- return true;
902
- }
903
- }
904
- /**
905
- * @deprecated 请直接使用 Array.prototype.forEach 或 for...of
906
- * @param object
907
- * @param callback
908
- * @returns the mutated input object
909
- */
910
- function forEach(object, callback, thisObj) {
911
- if (object) {
912
- for (var name_1 in object) {
913
- if (Object.hasOwnProperty.call(object, name_1)) {
914
- callback.call(thisObj, object[name_1], name_1);
915
- }
916
- }
917
- }
918
- return object;
919
- }
920
- function ensureFixedNumber(a) {
921
- if (Number.isFinite(a)) {
922
- return [ValueType.CONSTANT, a];
923
- }
924
- if (a) {
925
- if (a[0] === 'lines') {
926
- return [ValueType.LINE, a[1]];
927
- }
928
- if (a[0] === 'curve') {
929
- return [ValueType.CURVE, a[1]];
930
- }
931
- if (a[0] === 'static') {
932
- return [ValueType.CONSTANT, a[1]];
933
- }
934
- }
935
- }
936
- function ensureFixedNumberWithRandom(a, p) {
937
- if (Array.isArray(a) && a[0] === 'random') {
938
- return [ValueType.CONSTANT, a[1][p]];
939
- }
940
- return ensureFixedNumber(a);
941
- }
942
- function ensureRGBAValue(a) {
943
- if (a && a[0] === 'color') {
944
- return colorToArr(a[1], true);
945
- }
946
- return [1, 1, 1, 1];
947
- }
948
- function ensureColorExpression(a, normalized) {
949
- if (a) {
950
- if (a[0] === 'colors') {
951
- return [ValueType.COLORS, a[1].map(function (color) { return colorToArr(color, normalized); })];
952
- }
953
- else if (a[0] === 'gradient') {
954
- return ensureGradient(a[1], normalized);
955
- }
956
- else if (a[0] === 'color') {
957
- return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];
958
- }
959
- }
960
- }
961
- function ensureNumberExpression(a) {
962
- if (a && a[0] === 'random') {
963
- return [ValueType.RANDOM, a[1]];
964
- }
965
- return ensureFixedNumber(a);
966
- }
967
- function ensureValueGetter(a) {
968
- if (Array.isArray(a) && typeof a[0] === 'string') {
969
- return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;
970
- }
971
- return a;
972
- }
973
- function ensureGradient(a, normalized) {
974
- if (a) {
975
- var stops_1 = [];
976
- Object.getOwnPropertyNames(a).forEach(function (p) {
977
- var stop = parsePercent(p);
978
- var color = colorToArr(a[p], normalized);
979
- stops_1.push([stop, color[0], color[1], color[2], color[3]]);
980
- });
981
- stops_1 = stops_1.sort(function (a, b) { return a[0] - b[0]; });
982
- return [ValueType.GRADIENT_COLOR, stops_1];
983
- }
984
- }
985
- function colorToArr(hex, normalized) {
986
- var ret;
987
- if (typeof hex === 'string') {
988
- hex = hex.replace(/[\s\t\r\n]/g, '');
989
- var m = /rgba?\(([.\d]+),([.\d]+),([.\d]+),?([.\d]+)?\)/.exec(hex);
990
- if (m) {
991
- var a = +m[4];
992
- ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];
993
- }
994
- else if (/^#[a-f\d]{3}$/i.test(hex)) {
995
- ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];
996
- // eslint-disable-next-line no-cond-assign
997
- }
998
- else if (m = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex)) {
999
- ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255] || [0, 0, 0, 255];
1000
- }
1001
- }
1002
- else if (hex instanceof Array) {
1003
- ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];
1004
- }
1005
- if (normalized) {
1006
- // @ts-expect-error
1007
- ret = normalizeColor(ret);
1008
- }
1009
- // @ts-expect-error
1010
- return ret;
1011
- }
1012
- function normalizeColor(a) {
1013
- if (Array.isArray(a)) {
1014
- return a.map(function (i) { return Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0; });
1015
- }
1016
- }
1017
- function parsePercent(c) {
1018
- var match = /^(-)?([\d+.]+)%$/.exec(c);
1019
- if (match) {
1020
- return +match[2] / 100 * (match[1] ? -1 : 1);
1021
- }
1022
- return +c;
1023
- }
1024
- function getGradientColor(color, normalized) {
1025
- if (Array.isArray(color)) {
1026
- // @ts-expect-error
1027
- return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);
1028
- }
1029
- else {
1030
- return ensureGradient(color, normalized);
1031
- }
1032
- }
1033
- function ensureFixedVec3(a) {
1034
- if (a) {
1035
- if (a.length === 3) {
1036
- return [ValueType.CONSTANT_VEC3, a];
1037
- }
1038
- if (a[0] === 'path') {
1039
- return [ValueType.LINEAR_PATH, a[1]];
1040
- }
1041
- if (a[0] === 'bezier') {
1042
- return [ValueType.BEZIER_PATH, a[1]];
1043
- }
1044
- }
1045
- }
1046
- function objectValueToNumber(o) {
1047
- var e_1, _a;
1048
- try {
1049
- for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {
1050
- var key = _c.value;
1051
- o[key] = Number(o[key]);
1052
- }
1053
- }
1054
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
1055
- finally {
1056
- try {
1057
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1058
- }
1059
- finally { if (e_1) throw e_1.error; }
1060
- }
1061
- return o;
1062
- }
1063
- function deleteEmptyValue(o) {
1064
- var e_2, _a;
1065
- try {
1066
- for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {
1067
- var key = _c.value;
1068
- if (o[key] === undefined) {
1069
- delete o[key];
1070
- }
1071
- }
1072
- }
1073
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
1074
- finally {
1075
- try {
1076
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1077
- }
1078
- finally { if (e_2) throw e_2.error; }
1079
- }
1080
- return o;
1081
- }
1082
- var cos = Math.cos;
1083
- var sin = Math.sin;
1084
- var d2r = Math.PI / 180;
1085
- var r2d = 180 / Math.PI;
1086
- function quatFromXYZRotation(out, x, y, z) {
1087
- var c1 = cos((x * d2r) / 2);
1088
- var c2 = cos((y * d2r) / 2);
1089
- var c3 = cos((z * d2r) / 2);
1090
- var s1 = sin((x * d2r) / 2);
1091
- var s2 = sin((y * d2r) / 2);
1092
- var s3 = sin((z * d2r) / 2);
1093
- out[0] = s1 * c2 * c3 + c1 * s2 * s3;
1094
- out[1] = c1 * s2 * c3 - s1 * c2 * s3;
1095
- out[2] = c1 * c2 * s3 + s1 * s2 * c3;
1096
- out[3] = c1 * c2 * c3 - s1 * s2 * s3;
1097
- return out;
1098
- }
1099
- function clamp(v, min, max) {
1100
- return v > max ? max : (v < min ? min : v);
1101
- }
1102
- function rotationZYXFromQuat(out, quat) {
1103
- var x = quat[0];
1104
- var y = quat[1];
1105
- var z = quat[2];
1106
- var w = quat[3];
1107
- var x2 = x + x;
1108
- var y2 = y + y;
1109
- var z2 = z + z;
1110
- var xx = x * x2;
1111
- var yx = y * x2;
1112
- var yy = y * y2;
1113
- var zx = z * x2;
1114
- var zy = z * y2;
1115
- var zz = z * z2;
1116
- var wx = w * x2;
1117
- var wy = w * y2;
1118
- var wz = w * z2;
1119
- var m11 = 1 - yy - zz, m12 = yx - wz;
1120
- var m21 = yx + wz, m22 = 1 - xx - zz;
1121
- var m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;
1122
- out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;
1123
- if (Math.abs(m31) < 0.9999999) {
1124
- out[0] = Math.atan2(m32, m33) * r2d;
1125
- out[2] = Math.atan2(m21, m11) * r2d;
1126
- }
1127
- else {
1128
- out[0] = 0;
1129
- out[2] = Math.atan2(-m12, m22) * r2d;
1130
- }
1131
- return out;
1132
- }
1133
- function generateGUID() {
1134
- return v4().replace(/-/g, '');
1135
- }
1136
- /**
1137
- * 提取并转换 JSON 数据中的 anchor 值
1138
- */
1139
- function convertAnchor(anchor, particleOrigin) {
1140
- if (anchor) {
1141
- return [anchor[0] - 0.5, 0.5 - anchor[1]];
1142
- }
1143
- else if (particleOrigin) {
1144
- return particleOriginTranslateMap[particleOrigin];
1145
- }
1146
- else {
1147
- return [0, 0];
1148
- }
1149
- }
1150
- var particleOriginTranslateMap = (_a = {},
1151
- _a[ParticleOrigin.PARTICLE_ORIGIN_CENTER] = [0, 0],
1152
- _a[ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM] = [0, -0.5],
1153
- _a[ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP] = [0, 0.5],
1154
- _a[ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP] = [-0.5, 0.5],
1155
- _a[ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER] = [-0.5, 0],
1156
- _a[ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM] = [-0.5, -0.5],
1157
- _a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER] = [0.5, 0],
1158
- _a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
1159
- _a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
1160
- _a);
1161
-
1162
- function getStandardParticleContent(particle) {
1163
- var _a;
1164
- var options = particle.options;
1165
- var transform = particle.transform;
1166
- var shape = {
1167
- type: ShapeType.NONE,
1168
- };
1169
- if (particle.shape) {
1170
- var shapeType = (_a = particle.shape.shape) === null || _a === void 0 ? void 0 : _a.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');
1171
- shape = __assign(__assign({}, particle.shape), { type: ShapeType[shapeType] });
1172
- if (particle.shape.upDirection) {
1173
- var _b = __read(particle.shape.upDirection, 3), x = _b[0], y = _b[1], z = _b[2];
1174
- if (x === 0 && y === 0 && z === 0) {
1175
- delete shape.upDirection;
1176
- }
1177
- }
1178
- }
1179
- if (options.startTurbulence) {
1180
- shape.turbulenceX = ensureNumberExpression(options.turbulenceX);
1181
- shape.turbulenceY = ensureNumberExpression(options.turbulenceY);
1182
- shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);
1183
- }
1184
- var emission = particle.emission;
1185
- if (emission.bursts && emission.bursts.length > 0) {
1186
- emission.bursts = emission.bursts.map(function (b) { return objectValueToNumber(b); });
1187
- }
1188
- if (emission.burstOffsets && emission.burstOffsets.length > 0) {
1189
- emission.burstOffsets = emission.burstOffsets.map(function (b) { return objectValueToNumber(b); });
1190
- }
1191
- if (emission.rateOverTime) {
1192
- emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);
1193
- }
1194
- var ret = {
1195
- renderer: particle.renderer,
1196
- shape: shape,
1197
- splits: particle.splits,
1198
- emission: emission,
1199
- options: {
1200
- startLifetime: ensureNumberExpression(options.startLifetime),
1201
- start3DSize: !!options.start3DSize,
1202
- startSize: ensureNumberExpression(options.startSize),
1203
- startSizeX: ensureNumberExpression(options.startSizeX),
1204
- startSizeY: ensureNumberExpression(options.startSizeY),
1205
- sizeAspect: ensureNumberExpression(options.sizeAspect),
1206
- maxCount: options.maxCount,
1207
- startDelay: ensureNumberExpression(options.startDelay),
1208
- startColor: ensureColorExpression(options.startColor, true),
1209
- startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),
1210
- particleFollowParent: options.particleFollowParent,
1211
- },
1212
- };
1213
- if (options.start3DRotation) {
1214
- ret.options.startRotationX = ensureNumberExpression(options.startRotationX);
1215
- ret.options.startRotationY = ensureNumberExpression(options.startRotationY);
1216
- }
1217
- if (transform && transform.path) {
1218
- ret.emitterTransform = {
1219
- path: ensureFixedVec3(transform.path),
1220
- };
1221
- }
1222
- var sizeOverLifetime = particle.sizeOverLifetime;
1223
- if (sizeOverLifetime) {
1224
- if (sizeOverLifetime.separateAxes) {
1225
- ret.sizeOverLifetime = {
1226
- separateAxes: true,
1227
- x: ensureNumberExpression(sizeOverLifetime.x),
1228
- y: ensureNumberExpression(sizeOverLifetime.y),
1229
- };
1230
- }
1231
- else {
1232
- ret.sizeOverLifetime = {
1233
- size: ensureNumberExpression(sizeOverLifetime.size),
1234
- };
1235
- }
1236
- }
1237
- var velocityOverLifetime = particle.velocityOverLifetime || {};
1238
- var sol = velocityOverLifetime.speedOverLifetime;
1239
- if (sol) {
1240
- sol = ensureFixedNumber(sol);
1241
- }
1242
- else {
1243
- sol = undefined;
1244
- }
1245
- ret.positionOverLifetime = {
1246
- gravity: options.gravity,
1247
- gravityOverLifetime: ensureFixedNumber(options.gravityModifier),
1248
- startSpeed: ensureNumberExpression(options.startSpeed),
1249
- speedOverLifetime: sol,
1250
- asMovement: velocityOverLifetime.asMovement,
1251
- linearX: ensureNumberExpression(velocityOverLifetime.linearX),
1252
- linearY: ensureNumberExpression(velocityOverLifetime.linearY),
1253
- linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),
1254
- asRotation: velocityOverLifetime.asRotation,
1255
- orbCenter: velocityOverLifetime.orbCenter,
1256
- orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),
1257
- orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),
1258
- orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),
1259
- forceTarget: velocityOverLifetime.forceTarget,
1260
- target: velocityOverLifetime.target,
1261
- forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve),
1262
- };
1263
- deleteEmptyValue(ret.positionOverLifetime);
1264
- var rotationOverLifetime = particle.rotationOverLifetime;
1265
- if (rotationOverLifetime) {
1266
- ret.rotationOverLifetime = {
1267
- separateAxes: rotationOverLifetime.separateAxes,
1268
- asRotation: rotationOverLifetime.asRotation,
1269
- z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),
1270
- };
1271
- if (rotationOverLifetime.separateAxes) {
1272
- ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);
1273
- ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);
1274
- }
1275
- }
1276
- var colorOverLifetime = particle.colorOverLifetime;
1277
- if (colorOverLifetime) {
1278
- var col = ret.colorOverLifetime = {
1279
- opacity: ensureFixedNumber(colorOverLifetime.opacity),
1280
- };
1281
- if (colorOverLifetime.color) {
1282
- col.color = getGradientColor(colorOverLifetime.color);
1283
- }
1284
- }
1285
- var textureSheetAnimation = particle.textureSheetAnimation;
1286
- if (textureSheetAnimation) {
1287
- ret.textureSheetAnimation = {
1288
- row: textureSheetAnimation.row,
1289
- col: textureSheetAnimation.col,
1290
- total: textureSheetAnimation.total,
1291
- animate: textureSheetAnimation.animate,
1292
- cycles: ensureFixedNumber(textureSheetAnimation.cycles),
1293
- animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),
1294
- animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0),
1295
- };
1296
- }
1297
- var trials = particle.trails;
1298
- if (trials) {
1299
- ret.trails = {
1300
- lifetime: ensureNumberExpression(trials.lifetime),
1301
- dieWithParticles: trials.dieWithParticles,
1302
- maxPointPerTrail: trials.maxPointPerTrail,
1303
- minimumVertexDistance: trials.minimumVertexDistance,
1304
- widthOverTrail: ensureFixedNumber(trials.widthOverTrail),
1305
- colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),
1306
- blending: trials.blending,
1307
- colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),
1308
- inheritParticleColor: trials.inheritParticleColor,
1309
- occlusion: trials.occlusion,
1310
- transparentOcclusion: trials.transparentOcclusion,
1311
- orderOffset: trials.orderOffset,
1312
- sizeAffectsLifetime: trials.sizeAffectsLifetime,
1313
- sizeAffectsWidth: trials.sizeAffectsWidth,
1314
- texture: trials.texture,
1315
- parentAffectsPosition: trials.parentAffectsPosition,
1316
- opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),
1317
- };
1318
- }
1319
- ret.trails && deleteEmptyValue(ret.trails);
1320
- var interaction = particle.interaction;
1321
- if (interaction) {
1322
- ret.interaction = {
1323
- behavior: interaction.behavior,
1324
- radius: interaction.radius,
1325
- multiple: interaction.multiple,
1326
- };
1327
- }
1328
- return ret;
1329
- }
1330
-
1331
- function getStandardNullContent(sprite, transform) {
1332
- var _a;
1333
- var opt = sprite.options;
1334
- var velocityOverLifetime = sprite.velocityOverLifetime || {};
1335
- var positionOverLifetime = {
1336
- path: ensureFixedVec3((_a = sprite.transform) === null || _a === void 0 ? void 0 : _a.path),
1337
- gravity: opt.gravity,
1338
- gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),
1339
- direction: opt.direction,
1340
- startSpeed: opt.startSpeed,
1341
- asMovement: velocityOverLifetime.asMovement,
1342
- linearX: ensureFixedNumber(velocityOverLifetime.linearX),
1343
- linearY: ensureFixedNumber(velocityOverLifetime.linearY),
1344
- linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),
1345
- asRotation: velocityOverLifetime.asRotation,
1346
- orbCenter: velocityOverLifetime.orbCenter,
1347
- orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),
1348
- orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),
1349
- orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),
1350
- speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),
1351
- };
1352
- deleteEmptyValue(positionOverLifetime);
1353
- var ret = {
1354
- options: {
1355
- startColor: ensureRGBAValue(opt.startColor),
1356
- },
1357
- positionOverLifetime: positionOverLifetime,
1358
- };
1359
- if (opt.startSize) {
1360
- transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];
1361
- }
1362
- if (opt.startRotation) {
1363
- if (!transform.rotation) {
1364
- transform.rotation = [0, 0, opt.startRotation];
1365
- }
1366
- else {
1367
- transform.rotation[2] += opt.startRotation;
1368
- }
1369
- }
1370
- var rotationOverLifetime = sprite.rotationOverLifetime;
1371
- if (rotationOverLifetime) {
1372
- var rot = ret.rotationOverLifetime = {
1373
- separateAxes: rotationOverLifetime.separateAxes,
1374
- asRotation: rotationOverLifetime.asRotation,
1375
- };
1376
- if (rot.separateAxes) {
1377
- rot.x = ensureFixedNumber(rotationOverLifetime.x);
1378
- rot.y = ensureFixedNumber(rotationOverLifetime.y);
1379
- rot.z = ensureFixedNumber(rotationOverLifetime.z);
1380
- }
1381
- else {
1382
- rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);
1383
- }
1384
- }
1385
- var colorOverLifetime = sprite.colorOverLifetime;
1386
- if (colorOverLifetime) {
1387
- var col = ret.colorOverLifetime = {
1388
- opacity: ensureFixedNumber(colorOverLifetime.opacity),
1389
- };
1390
- if (colorOverLifetime.color) {
1391
- col.color = getGradientColor(colorOverLifetime.color);
1392
- }
1393
- }
1394
- var sizeOverLifetime = sprite.sizeOverLifetime;
1395
- if (sizeOverLifetime) {
1396
- ret.sizeOverLifetime = {
1397
- separateAxes: sizeOverLifetime.separateAxes,
1398
- size: ensureFixedNumber(sizeOverLifetime.size),
1399
- x: ensureFixedNumber(sizeOverLifetime.x),
1400
- y: ensureFixedNumber(sizeOverLifetime.y),
1401
- z: ensureFixedNumber(sizeOverLifetime.z),
1402
- };
1403
- }
1404
- return ret;
1405
- }
1406
- function getStandardSpriteContent(sprite, transform) {
1407
- var ret = getStandardNullContent(sprite, transform);
1408
- var texAni = sprite.textureSheetAnimation;
1409
- if (texAni) {
1410
- ret.textureSheetAnimation = {
1411
- row: texAni.row,
1412
- col: texAni.col,
1413
- total: texAni.total || undefined,
1414
- animate: texAni.animate,
1415
- };
1416
- }
1417
- ret.renderer = sprite.renderer;
1418
- if (sprite.splits) {
1419
- ret.splits = sprite.splits;
1420
- }
1421
- if (sprite.interaction) {
1422
- ret.interaction = sprite.interaction;
1423
- }
1424
- return ret;
1425
- }
1426
-
1427
- function getStandardInteractContent(ui) {
1428
- var options = ui.options;
1429
- var option;
1430
- switch (options.type) {
1431
- case 'click': {
1432
- option = {
1433
- type: InteractType.CLICK,
1434
- showPreview: options.showPreview,
1435
- previewColor: options.previewColor && ensureRGBAValue(options.previewColor),
1436
- behavior: options.behavior || InteractBehavior.NOTIFY,
1437
- };
1438
- break;
1439
- }
1440
- case 'drag': {
1441
- option = {
1442
- type: InteractType.DRAG,
1443
- enableInEditor: !!options.enableInEditor,
1444
- dxRange: options.dxRange,
1445
- dyRange: options.dyRange,
1446
- target: options.target,
1447
- };
1448
- break;
1449
- }
1450
- case 'message': {
1451
- option = {
1452
- type: InteractType.MESSAGE,
1453
- };
1454
- break;
1455
- }
1456
- }
1457
- var ret = {
1458
- // @ts-expect-error
1459
- options: option,
1460
- };
1461
- return ret;
1462
- }
1463
-
1464
- function getStandardCameraContent(model) {
1465
- var _a, _b;
1466
- var opt = model.options;
1467
- var ret = {
1468
- options: {
1469
- fov: opt.fov,
1470
- far: opt.far,
1471
- near: opt.near,
1472
- clipMode: opt.clipMode,
1473
- },
1474
- };
1475
- var velocityOverLifetime = model.velocityOverLifetime;
1476
- if (velocityOverLifetime || ((_a = model.transform) === null || _a === void 0 ? void 0 : _a.path)) {
1477
- var positionOverLifetime = {
1478
- path: ensureFixedVec3((_b = model.transform) === null || _b === void 0 ? void 0 : _b.path),
1479
- linearX: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateX),
1480
- linearY: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateY),
1481
- linearZ: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateZ),
1482
- };
1483
- deleteEmptyValue(positionOverLifetime);
1484
- ret.positionOverLifetime = positionOverLifetime;
1485
- }
1486
- var rol = model.rotationOverLifetime;
1487
- if (rol) {
1488
- var rotationOverLifetime = {
1489
- separateAxes: rol.separateAxes,
1490
- x: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateX),
1491
- y: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateY),
1492
- z: rol.separateAxes ? ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateZ) : ensureFixedNumber(rol.rotation),
1493
- };
1494
- deleteEmptyValue(rotationOverLifetime);
1495
- ret.rotationOverLifetime = rotationOverLifetime;
1496
- }
1497
- return ret;
1498
- }
1499
-
1500
- /**
1501
- * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)
1502
- */
1503
- function version21Migration(json) {
1504
- json.compositions.forEach(function (composition) {
1505
- composition.items.forEach(function (item) {
1506
- if (item.type === ItemType.null) {
1507
- if (item.endBehavior === ItemEndBehavior.destroy) {
1508
- item.endBehavior = ItemEndBehavior.freeze;
1509
- }
1510
- }
1511
- });
1512
- });
1513
- json.version = '2.1';
1514
- return json;
1515
- }
1516
- /**
1517
- * 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)
1518
- */
1519
- function version22Migration(json) {
1520
- var _a;
1521
- var singleVersion = (_a = json.version) === null || _a === void 0 ? void 0 : _a.split('.');
1522
- if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {
1523
- return json;
1524
- }
1525
- json.compositions.forEach(function (composition) {
1526
- composition.items.forEach(function (item) {
1527
- if (item.type === ItemType.mesh || item.type === ItemType.light) {
1528
- item.endBehavior = item.endBehavior === 1 ? ItemEndBehavior.destroy : item.endBehavior;
1529
- }
1530
- });
1531
- });
1532
- return json;
1533
- }
1534
- /**
1535
- * 3.0 以下版本数据适配(runtime 2.0及以上版本支持)
1536
- */
1537
- function version30Migration(json) {
1538
- var e_1, _a, e_2, _b;
1539
- var _c, _d, _e, _f, _g, _h, _j, _k;
1540
- var result = __assign(__assign({}, json), { items: [], components: [], materials: [], shaders: [], geometries: [] });
1541
- // 兼容老版本数据中不存在textures的情况
1542
- (_c = result.textures) !== null && _c !== void 0 ? _c : (result.textures = []);
1543
- result.textures.forEach(function (textureOptions) {
1544
- textureOptions.id = generateGUID();
1545
- textureOptions.dataType = DataType.Texture;
1546
- });
1547
- if (result.textures.length < result.images.length) {
1548
- for (var i = result.textures.length; i < result.images.length; i++) {
1549
- result.textures.push({
1550
- id: generateGUID(),
1551
- dataType: DataType.Texture,
1552
- source: i,
1553
- flipY: true,
1554
- });
1555
- }
1556
- }
1557
- var itemGuidMap = {};
1558
- var _loop_1 = function (composition) {
1559
- var e_3, _q;
1560
- // composition 的 endbehaviour 兼容
1561
- if (composition.endBehavior === END_BEHAVIOR_PAUSE_AND_DESTROY || composition.endBehavior === END_BEHAVIOR_PAUSE) {
1562
- composition.endBehavior = END_BEHAVIOR_FREEZE;
1563
- }
1564
- // 过滤掉滤镜元素
1565
- composition.items = composition.items.filter(function (item) { return item.type !== '8'; });
1566
- // 过滤掉粒子滤镜(扭曲)
1567
- composition.items.forEach(function (item) {
1568
- if (item.type === ItemType.particle) {
1569
- // @ts-expect-error
1570
- var filterData = item.content['filter'];
1571
- if (filterData) {
1572
- // @ts-expect-error
1573
- delete item.content['filter'];
1574
- }
1575
- }
1576
- });
1577
- var itemGuidMap_1 = {};
1578
- try {
1579
- for (var _r = (e_3 = void 0, __values(composition.items)), _s = _r.next(); !_s.done; _s = _r.next()) {
1580
- var item = _s.value;
1581
- itemGuidMap_1[item.id] = generateGUID();
1582
- // TODO: 编辑器测试用,上线后删除
1583
- //@ts-expect-error
1584
- item.oldId = item.id;
1585
- item.id = itemGuidMap_1[item.id];
1586
- }
1587
- }
1588
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
1589
- finally {
1590
- try {
1591
- if (_s && !_s.done && (_q = _r.return)) _q.call(_r);
1592
- }
1593
- finally { if (e_3) throw e_3.error; }
1594
- }
1595
- composition.items.forEach(function (item, index) {
1596
- if (item.parentId) {
1597
- if (item.parentId.includes('^')) {
1598
- var parentId = (item.parentId).split('^')[0];
1599
- var nodeId = (item.parentId).split('^')[1];
1600
- item.parentId = itemGuidMap_1[parentId] + '^' + nodeId;
1601
- }
1602
- else {
1603
- item.parentId = itemGuidMap_1[item.parentId];
1604
- }
1605
- }
1606
- // @ts-expect-error fix item type
1607
- result.items.push(item);
1608
- // @ts-expect-error fix item type
1609
- composition.items[index] = { id: item.id };
1610
- });
1611
- };
1612
- try {
1613
- // 更正Composition.endBehavior
1614
- for (var _l = __values(json.compositions), _m = _l.next(); !_m.done; _m = _l.next()) {
1615
- var composition = _m.value;
1616
- _loop_1(composition);
1617
- }
1618
- }
1619
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
1620
- finally {
1621
- try {
1622
- if (_m && !_m.done && (_a = _l.return)) _a.call(_l);
1623
- }
1624
- finally { if (e_1) throw e_1.error; }
1625
- }
1626
- try {
1627
- for (var _o = __values(result.items), _p = _o.next(); !_p.done; _p = _o.next()) {
1628
- var item = _p.value;
1629
- // 原 texture 索引转为统一 guid 索引
1630
- if (item.content) {
1631
- if (item.content.renderer) {
1632
- if (item.content.renderer.texture !== undefined) {
1633
- var oldTextureId = item.content.renderer.texture;
1634
- item.content.renderer.texture = { id: result.textures[oldTextureId].id };
1635
- }
1636
- }
1637
- if (item.content.trails) {
1638
- if (item.content.trails.texture !== undefined) {
1639
- var oldTextureId = item.content.trails.texture;
1640
- item.content.trails.texture = { id: result.textures[oldTextureId].id };
1641
- }
1642
- }
1643
- }
1644
- // item 的 transform 属性由数组转为 {x:n, y:n, z:n}
1645
- if (item.transform) {
1646
- //@ts-expect-error
1647
- var position = __spreadArray([], __read((_d = item.transform.position) !== null && _d !== void 0 ? _d : [0, 0, 0]), false);
1648
- //@ts-expect-error
1649
- var rotation = __spreadArray([], __read((_e = item.transform.rotation) !== null && _e !== void 0 ? _e : [0, 0, 0]), false);
1650
- //@ts-expect-error
1651
- var scale = __spreadArray([], __read((_f = item.transform.scale) !== null && _f !== void 0 ? _f : [1, 1, 1]), false);
1652
- Object.assign(item, {
1653
- transform: {
1654
- position: { x: position[0], y: position[1], z: position[2] },
1655
- eulerHint: { x: rotation[0], y: rotation[1], z: rotation[2] },
1656
- scale: { x: scale[0], y: scale[1], z: scale[0] },
1657
- },
1658
- });
1659
- // sprite 的 scale 转为 size
1660
- if (item.type === ItemType.sprite) {
1661
- item.transform.size = { x: scale[0], y: scale[1] };
1662
- item.transform.scale = { x: 1, y: 1, z: 1 };
1663
- }
1664
- // sprite 的 anchor 修正
1665
- if (item.type === ItemType.sprite) {
1666
- var content = item.content;
1667
- if (!content.renderer) {
1668
- content.renderer = {};
1669
- }
1670
- var renderer = content.renderer;
1671
- var realAnchor = convertAnchor(renderer.anchor, renderer.particleOrigin);
1672
- var startSize = item.transform.size;
1673
- // 兼容旧JSON(anchor和particleOrigin可能同时存在)
1674
- if (!renderer.anchor && renderer.particleOrigin !== undefined) {
1675
- item.transform.position.x += -realAnchor[0] * ((_g = startSize === null || startSize === void 0 ? void 0 : startSize.x) !== null && _g !== void 0 ? _g : 1);
1676
- item.transform.position.y += -realAnchor[1] * ((_h = startSize === null || startSize === void 0 ? void 0 : startSize.y) !== null && _h !== void 0 ? _h : 1);
1677
- }
1678
- item.transform.anchor = { x: realAnchor[0] * ((_j = startSize === null || startSize === void 0 ? void 0 : startSize.x) !== null && _j !== void 0 ? _j : 1), y: realAnchor[1] * ((_k = startSize === null || startSize === void 0 ? void 0 : startSize.y) !== null && _k !== void 0 ? _k : 1) };
1679
- }
1680
- }
1681
- if (item.type === ItemType.particle) {
1682
- var content = item.content;
1683
- if (!content.renderer) {
1684
- content.renderer = {};
1685
- }
1686
- var renderer = content.renderer;
1687
- content.renderer.anchor = convertAnchor(renderer.anchor, renderer.particleOrigin);
1688
- }
1689
- // 动画数据转化 TODO: 动画数据移到 TimelineComponentData
1690
- item.content.tracks = [];
1691
- var tracks = item.content.tracks;
1692
- if (item.type !== ItemType.particle) {
1693
- tracks.push({
1694
- clips: [
1695
- {
1696
- dataType: 'TransformAnimationPlayableAsset',
1697
- animationClip: {
1698
- sizeOverLifetime: item.content.sizeOverLifetime,
1699
- rotationOverLifetime: item.content.rotationOverLifetime,
1700
- positionOverLifetime: item.content.positionOverLifetime,
1701
- },
1702
- },
1703
- ],
1704
- });
1705
- }
1706
- if (item.type === ItemType.sprite) {
1707
- tracks.push({
1708
- clips: [
1709
- {
1710
- dataType: 'SpriteColorAnimationPlayableAsset',
1711
- animationClip: {
1712
- colorOverLifetime: item.content.colorOverLifetime,
1713
- startColor: item.content.options.startColor,
1714
- },
1715
- },
1716
- ],
1717
- });
1718
- }
1719
- // gizmo 的 target id 转换为新的 item guid
1720
- if (item.content.options.target) {
1721
- item.content.options.target = itemGuidMap[item.content.options.target];
1722
- }
1723
- // item 的 content 转为 component data 加入 JSONScene.components
1724
- var uuid = generateGUID();
1725
- if (item.type === ItemType.sprite ||
1726
- item.type === ItemType.particle ||
1727
- item.type === ItemType.mesh ||
1728
- item.type === ItemType.skybox ||
1729
- item.type === ItemType.light ||
1730
- item.type === 'camera' ||
1731
- item.type === ItemType.tree ||
1732
- item.type === ItemType.interact ||
1733
- item.type === ItemType.camera ||
1734
- item.type === ItemType.text) {
1735
- item.components = [];
1736
- result.components.push(item.content);
1737
- item.content.id = uuid;
1738
- item.content.item = { id: item.id };
1739
- item.dataType = DataType.VFXItemData;
1740
- item.components.push({ id: item.content.id });
1741
- }
1742
- switch (item.type) {
1743
- case ItemType.sprite:
1744
- item.content.dataType = DataType.SpriteComponent;
1745
- break;
1746
- case ItemType.particle:
1747
- item.content.dataType = DataType.ParticleSystem;
1748
- break;
1749
- case ItemType.mesh:
1750
- item.content.dataType = DataType.MeshComponent;
1751
- break;
1752
- case ItemType.skybox:
1753
- item.content.dataType = DataType.SkyboxComponent;
1754
- break;
1755
- case ItemType.light:
1756
- item.content.dataType = DataType.LightComponent;
1757
- break;
1758
- case 'camera':
1759
- item.content.dataType = DataType.CameraComponent;
1760
- break;
1761
- case ItemType.tree:
1762
- item.content.dataType = DataType.TreeComponent;
1763
- break;
1764
- case ItemType.interact:
1765
- item.content.dataType = DataType.InteractComponent;
1766
- break;
1767
- case ItemType.camera:
1768
- item.content.dataType = DataType.CameraController;
1769
- break;
1770
- case ItemType.text:
1771
- item.content.dataType = DataType.TextComponent;
1772
- break;
1773
- }
1774
- }
1775
- }
1776
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
1777
- finally {
1778
- try {
1779
- if (_p && !_p.done && (_b = _o.return)) _b.call(_o);
1780
- }
1781
- finally { if (e_2) throw e_2.error; }
1782
- }
1783
- result.version = '3.0';
1784
- return result;
1785
- }
1786
-
1787
- var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
1788
- var standardVersion = /^(\d+)\.(\d+)$/;
1789
- var reverseParticle = false;
1790
- function getStandardJSON(json) {
1791
- var _a, _b;
1792
- if (!json || typeof json !== 'object') {
1793
- throw Error('expect a json object');
1794
- }
1795
- // 修正老版本数据中,meshItem 以及 lightItem 结束行为错误问题
1796
- version22Migration(json);
1797
- if (v0.test(json.version)) {
1798
- reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
1799
- return version30Migration(version21Migration(getStandardJSONFromV0(json)));
1800
- }
1801
- var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];
1802
- if (mainVersion) {
1803
- if (Number(mainVersion) < 3) {
1804
- return version30Migration(version21Migration(json));
1805
- }
1806
- return json;
1807
- }
1808
- throw Error('invalid json version ' + json.version);
1809
- }
1810
- var currentVersion = '1.0';
1811
- function getStandardJSONFromV0(json) {
1812
- var _a, _b;
1813
- currentVersion = '1.0';
1814
- var plugins = json.plugins || [];
1815
- if ((_a = json.bins) === null || _a === void 0 ? void 0 : _a.length) {
1816
- currentVersion = '1.3';
1817
- }
1818
- var requires = (json.requires || []).slice();
1819
- var images = json.images.map(function (img, index) { return getStandardImage(img, index, json.imageTags || []); });
1820
- var textures = json.textures || images.map(function (img, i) { return ({ source: i, flipY: true }); });
1821
- var ret = {
1822
- plugins: plugins,
1823
- shapes: json.shapes || [],
1824
- type: 'ge',
1825
- version: currentVersion,
1826
- playerVersion: (_b = json.playerVersion) !== null && _b !== void 0 ? _b : {
1827
- web: '',
1828
- native: '',
1829
- },
1830
- compositionId: json.compositionId + '',
1831
- compositions: json.compositions.map(function (comp) { return getStandardComposition(comp, { plugins: plugins, requires: requires }); }),
1832
- images: images,
1833
- imgUsage: json._imgs,
1834
- binUsage: json.binUsage,
1835
- spines: json.spines,
1836
- requires: json.requires,
1837
- textures: textures,
1838
- bins: (json.bins || []).slice(),
1839
- };
1840
- if (json._textures) {
1841
- ret._textures = json._textures;
1842
- }
1843
- return ret;
1844
- }
1845
- function getStandardImage(image, index, imageTags) {
1846
- var renderLevel = imageTags[index];
1847
- var oriY = image.oriY;
1848
- if (typeof image === 'string') {
1849
- return {
1850
- renderLevel: renderLevel,
1851
- url: image,
1852
- oriY: oriY,
1853
- };
1854
- }
1855
- else if (image.template) {
1856
- return {
1857
- url: image.url,
1858
- template: image.template,
1859
- webp: image.webp,
1860
- renderLevel: renderLevel,
1861
- oriY: oriY,
1862
- };
1863
- }
1864
- else if (image.compressed) {
1865
- return {
1866
- url: image.url,
1867
- oriY: oriY,
1868
- compressed: {
1869
- astc: image.compressed.android,
1870
- pvrtc: image.compressed.iOS,
1871
- },
1872
- webp: image.webp,
1873
- renderLevel: renderLevel,
1874
- };
1875
- }
1876
- else if (image.url) {
1877
- return {
1878
- url: image.url,
1879
- webp: image.webp,
1880
- renderLevel: renderLevel,
1881
- oriY: oriY,
1882
- };
1883
- }
1884
- else if (image && image.sourceType) {
1885
- return image;
1886
- }
1887
- throw Error('invalid image type');
1888
- }
1889
- function getStandardComposition(composition, opt) {
1890
- var _a;
1891
- if (opt === void 0) { opt = {}; }
1892
- var ret = {
1893
- id: composition.id + '',
1894
- camera: __assign({ clipMode: CAMERA_CLIP_MODE_NORMAL }, composition.camera),
1895
- duration: composition.duration,
1896
- endBehavior: composition.endBehavior,
1897
- items: composition.items.map(function (item) { return getStandardItem(item, opt); }),
1898
- name: composition.name,
1899
- };
1900
- var startTime = composition.startTime || composition.st;
1901
- if (startTime) {
1902
- ret.startTime = startTime;
1903
- }
1904
- var previewSize = (_a = composition.meta) === null || _a === void 0 ? void 0 : _a.previewSize;
1905
- if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {
1906
- previewSize = undefined;
1907
- }
1908
- if (previewSize) {
1909
- ret.previewSize = previewSize;
1910
- }
1911
- return ret;
1912
- }
1913
- var tempQuat = [0, 0, 0, 1];
1914
- var stdAnchor = 0.5;
1915
- function getStandardItem(item, opt) {
1916
- var _a, _b, _c;
1917
- if (opt === void 0) { opt = {}; }
1918
- var type = ItemType.base;
1919
- var transform;
1920
- var originContent;
1921
- var content;
1922
- var endBehavior = item.endBehavior;
1923
- var renderLevel;
1924
- var pluginName;
1925
- var duration = NaN;
1926
- var pn;
1927
- if (item.content) {
1928
- type = item.type || ItemType.plugin;
1929
- pn = item.pn;
1930
- pluginName = item.pluginName;
1931
- content = item.content;
1932
- originContent = item.content;
1933
- if (isNaN(pn) && !pluginName) {
1934
- pluginName = content.options.type;
1935
- }
1936
- if (item.duration) {
1937
- duration = item.duration;
1938
- }
1939
- transform = item.transform || getTransform(originContent.transform);
1940
- }
1941
- else if (item.particle) {
1942
- type = ItemType.particle;
1943
- originContent = item.particle;
1944
- transform = getTransform(originContent.transform, reverseParticle, true);
1945
- content = getStandardParticleContent(originContent);
1946
- }
1947
- else if (item.sprite) {
1948
- type = ItemType.sprite;
1949
- originContent = item.sprite;
1950
- transform = getTransform(originContent.transform, false, true);
1951
- content = getStandardSpriteContent(originContent, transform);
1952
- }
1953
- else if (item.cal) {
1954
- type = ItemType.null;
1955
- originContent = item.cal;
1956
- transform = getTransform(originContent.transform, false, true);
1957
- content = getStandardNullContent(originContent, transform);
1958
- }
1959
- else if (item.ui) {
1960
- type = ItemType.interact;
1961
- originContent = item.ui;
1962
- transform = getTransform(originContent.transform);
1963
- content = getStandardInteractContent(originContent);
1964
- transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];
1965
- }
1966
- else if (item.model) {
1967
- originContent = item.model;
1968
- if (item.model.options.type === 1) {
1969
- type = ItemType.camera;
1970
- transform = getTransform(originContent.transform);
1971
- content = getStandardCameraContent(originContent);
1972
- }
1973
- }
1974
- if ((_a = content.renderer) === null || _a === void 0 ? void 0 : _a.anchor) {
1975
- var anchor = new Float32Array(content.renderer.anchor);
1976
- if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {
1977
- delete content.renderer.anchor;
1978
- }
1979
- else if (opt.requires) {
1980
- arrAdd(opt.requires, 'anchor');
1981
- }
1982
- }
1983
- if (originContent) {
1984
- var looping = (_b = originContent.options) === null || _b === void 0 ? void 0 : _b.looping;
1985
- if (looping) {
1986
- if (Array.isArray(looping)) {
1987
- endBehavior = looping[1] ? ItemEndBehavior.loop : ItemEndBehavior.destroy;
1988
- }
1989
- else {
1990
- endBehavior = ItemEndBehavior.loop;
1991
- }
1992
- }
1993
- else {
1994
- endBehavior = endBehavior || ((_c = originContent === null || originContent === void 0 ? void 0 : originContent.options) === null || _c === void 0 ? void 0 : _c.endBehavior) || ItemEndBehavior.destroy;
1995
- }
1996
- if (originContent.options.renderLevel) {
1997
- renderLevel = originContent.options.renderLevel;
1998
- }
1999
- if (isNaN(duration)) {
2000
- duration = originContent.options.duration;
2001
- }
2002
- }
2003
- var ret = {
2004
- type: type,
2005
- name: item.name,
2006
- delay: item.delay,
2007
- duration: duration,
2008
- id: item.id + '',
2009
- // @ts-expect-error
2010
- transform: transform,
2011
- endBehavior: endBehavior,
2012
- // @ts-expect-error
2013
- renderLevel: renderLevel,
2014
- content: content,
2015
- };
2016
- // @ts-expect-error
2017
- if (pluginName) {
2018
- if (opt.plugins) {
2019
- arrAdd(opt.plugins, pluginName);
2020
- ret.pn = opt.plugins.indexOf(pluginName);
2021
- }
2022
- else {
2023
- ret.pluginName = pluginName;
2024
- }
2025
- // @ts-expect-error
2026
- }
2027
- else if (Number.isInteger(pn)) {
2028
- // @ts-expect-error
2029
- ret.pn = pn;
2030
- }
2031
- if (item.parentId) {
2032
- ret.parentId = item.parentId + '';
2033
- }
2034
- return ret;
2035
- function getTransform(originTransform, inverseRotation, changeOrder) {
2036
- if (originTransform) {
2037
- var transform_1 = {};
2038
- var rotation = originTransform.rotation;
2039
- if (rotation) {
2040
- if (inverseRotation) {
2041
- transform_1.rotation = [-rotation[0], -rotation[1], -rotation[2]];
2042
- }
2043
- else {
2044
- transform_1.rotation = [rotation[0], rotation[1], rotation[2]];
2045
- }
2046
- if (changeOrder) {
2047
- var q = quatFromXYZRotation(tempQuat, transform_1.rotation[0], transform_1.rotation[1], transform_1.rotation[2]);
2048
- transform_1.rotation = rotationZYXFromQuat([], q);
2049
- }
2050
- }
2051
- var position = originTransform.position;
2052
- if (position) {
2053
- transform_1.position = originTransform.position;
2054
- }
2055
- if (Array.isArray(originTransform.scale)) {
2056
- transform_1.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];
2057
- }
2058
- return transform_1;
2059
- }
2060
- return {};
2061
- }
2062
- }
2063
-
2064
- export { arrAdd, colorToArr, convertAnchor, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, generateGUID, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, particleOriginTranslateMap, quatFromXYZRotation, rotationZYXFromQuat };
2065
- //# sourceMappingURL=fallback.mjs.map