@galacean/effects-specification 0.0.1

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 (49) hide show
  1. package/README.md +28 -0
  2. package/dist/fallback/camera.d.ts +2 -0
  3. package/dist/fallback/filter.d.ts +2 -0
  4. package/dist/fallback/index.d.ts +12 -0
  5. package/dist/fallback/interact.d.ts +2 -0
  6. package/dist/fallback/migration.d.ts +5 -0
  7. package/dist/fallback/particle.d.ts +2 -0
  8. package/dist/fallback/sprite.d.ts +3 -0
  9. package/dist/fallback/utils.d.ts +29 -0
  10. package/dist/fallback.js +1664 -0
  11. package/dist/fallback.js.map +1 -0
  12. package/dist/fallback.mjs +1639 -0
  13. package/dist/fallback.mjs.map +1 -0
  14. package/dist/index.js +689 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/index.mjs +674 -0
  17. package/dist/index.mjs.map +1 -0
  18. package/dist/src/binary.d.ts +60 -0
  19. package/dist/src/composition.d.ts +111 -0
  20. package/dist/src/constants.d.ts +11 -0
  21. package/dist/src/image.d.ts +123 -0
  22. package/dist/src/index.d.ts +22 -0
  23. package/dist/src/item/base-item.d.ts +110 -0
  24. package/dist/src/item/camera-item.d.ts +69 -0
  25. package/dist/src/item/composition-item.d.ts +56 -0
  26. package/dist/src/item/filter-item.d.ts +99 -0
  27. package/dist/src/item/interact-item.d.ts +85 -0
  28. package/dist/src/item/model/binary.d.ts +85 -0
  29. package/dist/src/item/model/camera.d.ts +33 -0
  30. package/dist/src/item/model/index.d.ts +35 -0
  31. package/dist/src/item/model/light.d.ts +72 -0
  32. package/dist/src/item/model/material.d.ts +84 -0
  33. package/dist/src/item/model/mesh.d.ts +69 -0
  34. package/dist/src/item/model/render.d.ts +41 -0
  35. package/dist/src/item/model/skybox.d.ts +50 -0
  36. package/dist/src/item/model/tree.d.ts +65 -0
  37. package/dist/src/item/null-item.d.ts +46 -0
  38. package/dist/src/item/particle-item.d.ts +412 -0
  39. package/dist/src/item/particle-shape.d.ts +212 -0
  40. package/dist/src/item/plugin-item.d.ts +46 -0
  41. package/dist/src/item/spine-item.d.ts +93 -0
  42. package/dist/src/item/sprite-item.d.ts +71 -0
  43. package/dist/src/item/text-item.d.ts +172 -0
  44. package/dist/src/item.d.ts +17 -0
  45. package/dist/src/numberExpression.d.ts +279 -0
  46. package/dist/src/scene.d.ts +92 -0
  47. package/dist/src/text.d.ts +183 -0
  48. package/dist/src/type.d.ts +643 -0
  49. package/package.json +67 -0
@@ -0,0 +1,1639 @@
1
+ /*!
2
+ * Name: @galacean/effects-specification
3
+ * Description: Galacean Effects JSON Specification
4
+ * Author: Ant Group CO., Ltd.
5
+ * Version: v0.0.1
6
+ */
7
+
8
+ /*********************************************/
9
+ /* 元素属性参数类型 */
10
+ /*********************************************/
11
+ /**
12
+ * 渲染等级
13
+ */
14
+ var RenderLevel;
15
+ (function (RenderLevel) {
16
+ RenderLevel["S"] = "S";
17
+ RenderLevel["APlus"] = "A+";
18
+ RenderLevel["A"] = "A";
19
+ RenderLevel["BPlus"] = "B+";
20
+ RenderLevel["B"] = "B";
21
+ })(RenderLevel || (RenderLevel = {}));
22
+ /**
23
+ * 混合模式
24
+ */
25
+ var BlendingMode;
26
+ (function (BlendingMode) {
27
+ /**
28
+ * 普通混合模式
29
+ */
30
+ BlendingMode[BlendingMode["ALPHA"] = 0] = "ALPHA";
31
+ /**
32
+ * 叠加混合模式
33
+ */
34
+ BlendingMode[BlendingMode["ADD"] = 1] = "ADD";
35
+ /**
36
+ * 相乘混合模式
37
+ */
38
+ BlendingMode[BlendingMode["MULTIPLY"] = 2] = "MULTIPLY";
39
+ /**
40
+ * 亮度混合模式
41
+ */
42
+ BlendingMode[BlendingMode["BRIGHTNESS"] = 3] = "BRIGHTNESS";
43
+ /**
44
+ * 减色混合模式
45
+ */
46
+ BlendingMode[BlendingMode["SUBTRACTION"] = 4] = "SUBTRACTION";
47
+ /**
48
+ * 强光混合模式
49
+ */
50
+ BlendingMode[BlendingMode["STRONG_LIGHT"] = 5] = "STRONG_LIGHT";
51
+ /**
52
+ * 弱光混合模式
53
+ */
54
+ BlendingMode[BlendingMode["WEAK_LIGHT"] = 6] = "WEAK_LIGHT";
55
+ /**
56
+ * 亮度叠加混合模式
57
+ */
58
+ BlendingMode[BlendingMode["SUPERPOSITION"] = 7] = "SUPERPOSITION";
59
+ })(BlendingMode || (BlendingMode = {}));
60
+ /**
61
+ * 单双面模式
62
+ */
63
+ var SideMode;
64
+ (function (SideMode) {
65
+ /**
66
+ * 双面模式
67
+ */
68
+ SideMode[SideMode["DOUBLE"] = 1032] = "DOUBLE";
69
+ /**
70
+ * 正面模式
71
+ */
72
+ SideMode[SideMode["FRONT"] = 1028] = "FRONT";
73
+ /**
74
+ * 背面模式
75
+ */
76
+ SideMode[SideMode["BACK"] = 1029] = "BACK";
77
+ })(SideMode || (SideMode = {}));
78
+ /**
79
+ * 蒙版模式
80
+ */
81
+ var MaskMode;
82
+ (function (MaskMode) {
83
+ /**
84
+ * 无蒙版
85
+ */
86
+ MaskMode[MaskMode["NONE"] = 0] = "NONE";
87
+ /**
88
+ * 蒙版
89
+ */
90
+ MaskMode[MaskMode["MASK"] = 1] = "MASK";
91
+ /**
92
+ * 被遮挡
93
+ */
94
+ MaskMode[MaskMode["OBSCURED"] = 2] = "OBSCURED";
95
+ /**
96
+ * 被反向遮挡
97
+ */
98
+ MaskMode[MaskMode["REVERSE_OBSCURED"] = 3] = "REVERSE_OBSCURED";
99
+ })(MaskMode || (MaskMode = {}));
100
+ /**
101
+ * 发射器形状
102
+ */
103
+ var ShapeType;
104
+ (function (ShapeType) {
105
+ /**
106
+ * 没有类型
107
+ */
108
+ ShapeType[ShapeType["NONE"] = 0] = "NONE";
109
+ /**
110
+ * 圆球
111
+ */
112
+ ShapeType[ShapeType["SPHERE"] = 1] = "SPHERE";
113
+ /**
114
+ * 圆锥
115
+ */
116
+ ShapeType[ShapeType["CONE"] = 2] = "CONE";
117
+ /**
118
+ * 半球
119
+ */
120
+ ShapeType[ShapeType["HEMISPHERE"] = 3] = "HEMISPHERE";
121
+ /**
122
+ * 圆
123
+ */
124
+ ShapeType[ShapeType["CIRCLE"] = 4] = "CIRCLE";
125
+ /**
126
+ * 圆环
127
+ */
128
+ ShapeType[ShapeType["DONUT"] = 5] = "DONUT";
129
+ /**
130
+ * 矩形
131
+ */
132
+ ShapeType[ShapeType["RECTANGLE"] = 6] = "RECTANGLE";
133
+ /**
134
+ * 矩形框
135
+ */
136
+ ShapeType[ShapeType["RECTANGLE_EDGE"] = 7] = "RECTANGLE_EDGE";
137
+ /**
138
+ * 直线
139
+ */
140
+ ShapeType[ShapeType["EDGE"] = 8] = "EDGE";
141
+ /**
142
+ * 贴图
143
+ */
144
+ ShapeType[ShapeType["TEXTURE"] = 9] = "TEXTURE";
145
+ })(ShapeType || (ShapeType = {}));
146
+ /**
147
+ * 插件类型
148
+ */
149
+ var PluginType;
150
+ (function (PluginType) {
151
+ /**
152
+ * 陀螺仪
153
+ */
154
+ PluginType[PluginType["GYROSCOPE"] = 0] = "GYROSCOPE";
155
+ /**
156
+ * Spine
157
+ */
158
+ PluginType[PluginType["SPINE"] = 1] = "SPINE";
159
+ })(PluginType || (PluginType = {}));
160
+ /**
161
+ * 交互类型
162
+ */
163
+ var InteractType;
164
+ (function (InteractType) {
165
+ /**
166
+ * 点击
167
+ */
168
+ InteractType[InteractType["CLICK"] = 0] = "CLICK";
169
+ /**
170
+ * 消息
171
+ * 前端收到 onMessageItem 回调
172
+ */
173
+ InteractType[InteractType["MESSAGE"] = 1] = "MESSAGE";
174
+ /**
175
+ * 拖拽
176
+ */
177
+ InteractType[InteractType["DRAG"] = 2] = "DRAG";
178
+ })(InteractType || (InteractType = {}));
179
+ /**
180
+ * 交互行为
181
+ */
182
+ var InteractBehavior;
183
+ (function (InteractBehavior) {
184
+ /**
185
+ * 无
186
+ */
187
+ InteractBehavior[InteractBehavior["NONE"] = 0] = "NONE";
188
+ /**
189
+ * 通知
190
+ */
191
+ InteractBehavior[InteractBehavior["NOTIFY"] = 1] = "NOTIFY";
192
+ /**
193
+ * 重置播放器
194
+ */
195
+ InteractBehavior[InteractBehavior["RESUME_PLAYER"] = 2] = "RESUME_PLAYER";
196
+ /**
197
+ * 清除元素
198
+ */
199
+ InteractBehavior[InteractBehavior["REMOVE"] = 3] = "REMOVE";
200
+ /**
201
+ * 暂停播放器
202
+ */
203
+ InteractBehavior[InteractBehavior["PAUSE"] = 4] = "PAUSE";
204
+ })(InteractBehavior || (InteractBehavior = {}));
205
+ /**
206
+ * 元素类型
207
+ */
208
+ var ItemType;
209
+ (function (ItemType) {
210
+ /**
211
+ * 错误元素
212
+ */
213
+ ItemType["base"] = "0";
214
+ /**
215
+ * 图层元素
216
+ */
217
+ ItemType["sprite"] = "1";
218
+ /**
219
+ * 粒子元素
220
+ */
221
+ ItemType["particle"] = "2";
222
+ /**
223
+ * 空节点元素
224
+ */
225
+ ItemType["null"] = "3";
226
+ /**
227
+ * 交互元素
228
+ */
229
+ ItemType["interact"] = "4";
230
+ /**
231
+ * 插件元素
232
+ */
233
+ ItemType["plugin"] = "5";
234
+ /**
235
+ * 相机元素
236
+ */
237
+ ItemType["camera"] = "6";
238
+ /**
239
+ * 预合成元素
240
+ */
241
+ ItemType["composition"] = "7";
242
+ /**
243
+ * 滤镜图层
244
+ */
245
+ ItemType["filter"] = "8";
246
+ /**
247
+ * Spine 元素
248
+ */
249
+ ItemType["spine"] = "spine";
250
+ /**
251
+ * Mesh 元素
252
+ */
253
+ ItemType["mesh"] = "mesh";
254
+ /**
255
+ * 节点树元素
256
+ */
257
+ ItemType["tree"] = "tree";
258
+ /**
259
+ * 文本元素
260
+ */
261
+ ItemType["text"] = "text";
262
+ /**
263
+ * 灯光元素
264
+ */
265
+ ItemType["light"] = "light";
266
+ /**
267
+ * 天空盒元素
268
+ */
269
+ ItemType["skybox"] = "skybox";
270
+ })(ItemType || (ItemType = {}));
271
+ /**
272
+ * 渲染模式
273
+ */
274
+ var RenderMode;
275
+ (function (RenderMode) {
276
+ /**
277
+ * 广告牌模式
278
+ */
279
+ RenderMode[RenderMode["BILLBOARD"] = 0] = "BILLBOARD";
280
+ /**
281
+ * 网格模式
282
+ */
283
+ RenderMode[RenderMode["MESH"] = 1] = "MESH";
284
+ /**
285
+ * 垂直广告牌模式
286
+ */
287
+ RenderMode[RenderMode["VERTICAL_BILLBOARD"] = 2] = "VERTICAL_BILLBOARD";
288
+ /**
289
+ * 水平广告牌模式
290
+ */
291
+ RenderMode[RenderMode["HORIZONTAL_BILLBOARD"] = 3] = "HORIZONTAL_BILLBOARD";
292
+ })(RenderMode || (RenderMode = {}));
293
+ /**
294
+ * 变换中心
295
+ */
296
+ var ParticleOrigin;
297
+ (function (ParticleOrigin) {
298
+ /**
299
+ * 水平和垂直中点
300
+ */
301
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_CENTER"] = 0] = "PARTICLE_ORIGIN_CENTER";
302
+ /**
303
+ * 水平左侧 垂直顶部
304
+ */
305
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_LEFT_TOP"] = 1] = "PARTICLE_ORIGIN_LEFT_TOP";
306
+ /**
307
+ * 水平左侧 垂直中间
308
+ */
309
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_LEFT_CENTER"] = 2] = "PARTICLE_ORIGIN_LEFT_CENTER";
310
+ /**
311
+ * 水平左侧 垂直底部
312
+ */
313
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_LEFT_BOTTOM"] = 3] = "PARTICLE_ORIGIN_LEFT_BOTTOM";
314
+ /**
315
+ * 水平中间 垂直顶部
316
+ */
317
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_CENTER_TOP"] = 4] = "PARTICLE_ORIGIN_CENTER_TOP";
318
+ /**
319
+ * 水平中间 垂直底部
320
+ */
321
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_CENTER_BOTTOM"] = 5] = "PARTICLE_ORIGIN_CENTER_BOTTOM";
322
+ /**
323
+ * 水平右侧 垂直顶部
324
+ */
325
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_RIGHT_TOP"] = 6] = "PARTICLE_ORIGIN_RIGHT_TOP";
326
+ /**
327
+ * 水平右侧 垂直中间
328
+ */
329
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_RIGHT_CENTER"] = 7] = "PARTICLE_ORIGIN_RIGHT_CENTER";
330
+ /**
331
+ * 水平右侧 垂直底部
332
+ */
333
+ ParticleOrigin[ParticleOrigin["PARTICLE_ORIGIN_RIGHT_BOTTOM"] = 8] = "PARTICLE_ORIGIN_RIGHT_BOTTOM";
334
+ })(ParticleOrigin || (ParticleOrigin = {}));
335
+
336
+ var END_BEHAVIOR_DESTROY = 0;
337
+ var END_BEHAVIOR_PAUSE = 1;
338
+ var END_BEHAVIOR_FORWARD = 2;
339
+ var END_BEHAVIOR_PAUSE_AND_DESTROY = 3;
340
+ var END_BEHAVIOR_FREEZE = 4;
341
+ var END_BEHAVIOR_RESTART = 5;
342
+ var END_BEHAVIOR_DESTROY_CHILDREN = 6;
343
+ var CAMERA_CLIP_MODE_VERTICAL = 1;
344
+ var CAMERA_CLIP_MODE_NORMAL = 0;
345
+
346
+ var CameraClipMode;
347
+ (function (CameraClipMode) {
348
+ /**
349
+ * 剪裁上下
350
+ */
351
+ CameraClipMode[CameraClipMode["portrait"] = CAMERA_CLIP_MODE_VERTICAL] = "portrait";
352
+ /**
353
+ * 剪裁左右
354
+ */
355
+ CameraClipMode[CameraClipMode["landscape"] = CAMERA_CLIP_MODE_NORMAL] = "landscape";
356
+ })(CameraClipMode || (CameraClipMode = {}));
357
+ /**
358
+ * 结束行为
359
+ */
360
+ var CompositionEndBehavior;
361
+ (function (CompositionEndBehavior) {
362
+ /**
363
+ * 销毁
364
+ */
365
+ CompositionEndBehavior[CompositionEndBehavior["destroy"] = END_BEHAVIOR_DESTROY] = "destroy";
366
+ /**
367
+ * 暂停
368
+ */
369
+ CompositionEndBehavior[CompositionEndBehavior["pause"] = END_BEHAVIOR_PAUSE] = "pause";
370
+ /**
371
+ * 重播
372
+ */
373
+ CompositionEndBehavior[CompositionEndBehavior["restart"] = END_BEHAVIOR_RESTART] = "restart";
374
+ /**
375
+ * 无限播放
376
+ */
377
+ CompositionEndBehavior[CompositionEndBehavior["forward"] = END_BEHAVIOR_FORWARD] = "forward";
378
+ /**
379
+ * 销毁并保留最后一帧
380
+ */
381
+ CompositionEndBehavior[CompositionEndBehavior["pause_destroy"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = "pause_destroy";
382
+ })(CompositionEndBehavior || (CompositionEndBehavior = {}));
383
+
384
+ /*********************************************/
385
+ /* 基本数值属性参数 */
386
+ /*********************************************/
387
+ var ValueType;
388
+ (function (ValueType) {
389
+ /**
390
+ * 常数
391
+ */
392
+ ValueType[ValueType["CONSTANT"] = 0] = "CONSTANT";
393
+ /**
394
+ * 二维常数向量
395
+ */
396
+ ValueType[ValueType["CONSTANT_VEC2"] = 1] = "CONSTANT_VEC2";
397
+ /**
398
+ * 三维常数向量
399
+ */
400
+ ValueType[ValueType["CONSTANT_VEC3"] = 2] = "CONSTANT_VEC3";
401
+ /**
402
+ * 四维常数向量
403
+ */
404
+ ValueType[ValueType["CONSTANT_VEC4"] = 3] = "CONSTANT_VEC4";
405
+ /**
406
+ * 随机数
407
+ */
408
+ ValueType[ValueType["RANDOM"] = 4] = "RANDOM";
409
+ /**
410
+ * 直线
411
+ */
412
+ ValueType[ValueType["LINE"] = 5] = "LINE";
413
+ /**
414
+ * 曲线
415
+ */
416
+ ValueType[ValueType["CURVE"] = 6] = "CURVE";
417
+ /**
418
+ * 贝塞尔路径
419
+ */
420
+ ValueType[ValueType["BEZIER_PATH"] = 7] = "BEZIER_PATH";
421
+ /**
422
+ * 颜色
423
+ */
424
+ ValueType[ValueType["RGBA_COLOR"] = 8] = "RGBA_COLOR";
425
+ /**
426
+ * 渐变色
427
+ */
428
+ ValueType[ValueType["GRADIENT_COLOR"] = 9] = "GRADIENT_COLOR";
429
+ /**
430
+ * 蒙版形状点集
431
+ */
432
+ ValueType[ValueType["SHAPE_POINTS"] = 10] = "SHAPE_POINTS";
433
+ /**
434
+ * 蒙版形状切分
435
+ */
436
+ ValueType[ValueType["SHAPE_SPLITS"] = 11] = "SHAPE_SPLITS";
437
+ /**
438
+ *直线路径
439
+ */
440
+ ValueType[ValueType["LINEAR_PATH"] = 12] = "LINEAR_PATH";
441
+ /**
442
+ * 多色
443
+ */
444
+ ValueType[ValueType["COLORS"] = 13] = "COLORS";
445
+ /**
446
+ * 二进制指针
447
+ */
448
+ ValueType[ValueType["BINARY"] = 20] = "BINARY";
449
+ /**
450
+ * 贝塞尔曲线
451
+ */
452
+ ValueType[ValueType["BEZIER_CURVE"] = 21] = "BEZIER_CURVE";
453
+ /**
454
+ * 贝塞尔曲线路径
455
+ */
456
+ ValueType[ValueType["BEZIER_CURVE_PATH"] = 22] = "BEZIER_CURVE_PATH";
457
+ })(ValueType || (ValueType = {}));
458
+ /**
459
+ * 关键帧类型
460
+ */
461
+ var BezierKeyframeType;
462
+ (function (BezierKeyframeType) {
463
+ BezierKeyframeType[BezierKeyframeType["AUTO"] = 0] = "AUTO";
464
+ BezierKeyframeType[BezierKeyframeType["EASE"] = 1] = "EASE";
465
+ BezierKeyframeType[BezierKeyframeType["EASE_IN"] = 2] = "EASE_IN";
466
+ BezierKeyframeType[BezierKeyframeType["EASE_OUT"] = 3] = "EASE_OUT";
467
+ BezierKeyframeType[BezierKeyframeType["LINE"] = 4] = "LINE";
468
+ BezierKeyframeType[BezierKeyframeType["HOLD"] = 5] = "HOLD";
469
+ BezierKeyframeType[BezierKeyframeType["LINE_OUT"] = 6] = "LINE_OUT";
470
+ })(BezierKeyframeType || (BezierKeyframeType = {}));
471
+
472
+ var ItemEndBehavior;
473
+ (function (ItemEndBehavior) {
474
+ ItemEndBehavior[ItemEndBehavior["destroy"] = END_BEHAVIOR_DESTROY] = "destroy";
475
+ ItemEndBehavior[ItemEndBehavior["loop"] = END_BEHAVIOR_RESTART] = "loop";
476
+ ItemEndBehavior[ItemEndBehavior["forward"] = END_BEHAVIOR_FREEZE] = "forward";
477
+ })(ItemEndBehavior || (ItemEndBehavior = {}));
478
+ var ParentItemEndBehavior;
479
+ (function (ParentItemEndBehavior) {
480
+ ParentItemEndBehavior[ParentItemEndBehavior["destroyChildren"] = END_BEHAVIOR_DESTROY_CHILDREN] = "destroyChildren";
481
+ })(ParentItemEndBehavior || (ParentItemEndBehavior = {}));
482
+
483
+ /**
484
+ * 粒子交互行为
485
+ */
486
+ var ParticleInteractionBehavior;
487
+ (function (ParticleInteractionBehavior) {
488
+ /**
489
+ * 无
490
+ */
491
+ ParticleInteractionBehavior[ParticleInteractionBehavior["none"] = 0] = "none";
492
+ /**
493
+ * 移出粒子
494
+ */
495
+ ParticleInteractionBehavior[ParticleInteractionBehavior["removeParticle"] = 1] = "removeParticle";
496
+ })(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));
497
+
498
+ var ShapeArcMode;
499
+ (function (ShapeArcMode) {
500
+ /**
501
+ * 随机
502
+ */
503
+ ShapeArcMode[ShapeArcMode["RANDOM"] = 0] = "RANDOM";
504
+ /**
505
+ * 单向循环
506
+ */
507
+ ShapeArcMode[ShapeArcMode["UNIDIRECTIONAL_CYCLE"] = 1] = "UNIDIRECTIONAL_CYCLE";
508
+ /**
509
+ * 双向循环
510
+ */
511
+ ShapeArcMode[ShapeArcMode["BIDIRECTIONAL_CYCLE"] = 2] = "BIDIRECTIONAL_CYCLE";
512
+ /**
513
+ * 均匀爆发
514
+ */
515
+ ShapeArcMode[ShapeArcMode["UNIFORM_BURST"] = 3] = "UNIFORM_BURST";
516
+ })(ShapeArcMode || (ShapeArcMode = {}));
517
+
518
+ var ModelBoundingType;
519
+ (function (ModelBoundingType) {
520
+ ModelBoundingType[ModelBoundingType["box"] = 2] = "box";
521
+ ModelBoundingType[ModelBoundingType["sphere"] = 3] = "sphere";
522
+ })(ModelBoundingType || (ModelBoundingType = {}));
523
+
524
+ // 材质类型
525
+ var MaterialType;
526
+ (function (MaterialType) {
527
+ MaterialType["unlit"] = "unlit";
528
+ MaterialType["pbr"] = "pbr";
529
+ // 头发材质,在 pbr 材质基础上扩展
530
+ MaterialType["hair"] = "hair";
531
+ })(MaterialType || (MaterialType = {}));
532
+ // 混合模式
533
+ var MaterialBlending;
534
+ (function (MaterialBlending) {
535
+ MaterialBlending[MaterialBlending["opaque"] = 100] = "opaque";
536
+ MaterialBlending[MaterialBlending["masked"] = 101] = "masked";
537
+ MaterialBlending[MaterialBlending["translucent"] = 102] = "translucent";
538
+ MaterialBlending[MaterialBlending["additive"] = 103] = "additive";
539
+ })(MaterialBlending || (MaterialBlending = {}));
540
+
541
+ /**
542
+ * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质
543
+ */
544
+ var RenderMode3D;
545
+ (function (RenderMode3D) {
546
+ /**
547
+ * 正常渲染
548
+ */
549
+ RenderMode3D["none"] = "none";
550
+ /**
551
+ * 纹理坐标
552
+ */
553
+ RenderMode3D["uv"] = "uv";
554
+ /**
555
+ * 世界坐标法线
556
+ */
557
+ RenderMode3D["normal"] = "normal";
558
+ /**
559
+ * 基础颜色
560
+ */
561
+ RenderMode3D["basecolor"] = "basecolor";
562
+ /**
563
+ * 基础颜色 Alpha
564
+ */
565
+ RenderMode3D["alpha"] = "alpha";
566
+ /**
567
+ * 金属度
568
+ */
569
+ RenderMode3D["metallic"] = "metallic";
570
+ /**
571
+ * 粗超度
572
+ */
573
+ RenderMode3D["roughness"] = "roughness";
574
+ /**
575
+ * 环境遮蔽
576
+ */
577
+ RenderMode3D["ao"] = "ao";
578
+ /**
579
+ * 自发光
580
+ */
581
+ RenderMode3D["emissive"] = "emissive";
582
+ })(RenderMode3D || (RenderMode3D = {}));
583
+
584
+ var TextOverflow;
585
+ (function (TextOverflow) {
586
+ /**
587
+ * display 模式下,会显示所有文本,存在文本超过边界框的情况。
588
+ */
589
+ TextOverflow[TextOverflow["display"] = 0] = "display";
590
+ /**
591
+ * clip 模式下,当文本内容超出边界框时,多余的会被截断。
592
+ */
593
+ TextOverflow[TextOverflow["clip"] = 1] = "clip";
594
+ /**
595
+ * ellipsis 模式下,会使用(...)来代替超出边界框的内容。
596
+ */
597
+ TextOverflow[TextOverflow["ellipsis"] = 2] = "ellipsis";
598
+ })(TextOverflow || (TextOverflow = {}));
599
+ var TextBaseline;
600
+ (function (TextBaseline) {
601
+ /**
602
+ * 文本顶对齐。
603
+ */
604
+ TextBaseline[TextBaseline["top"] = 0] = "top";
605
+ /**
606
+ * 文本垂直居中对齐。
607
+ */
608
+ TextBaseline[TextBaseline["middle"] = 1] = "middle";
609
+ /**
610
+ * 文本底对齐。
611
+ */
612
+ TextBaseline[TextBaseline["bottom"] = 2] = "bottom";
613
+ })(TextBaseline || (TextBaseline = {}));
614
+ var TextAlignment;
615
+ (function (TextAlignment) {
616
+ /**
617
+ * text alignment starts from(x,y) to right direction
618
+ * 从(x,y)开始第一个字符,向右边延伸
619
+ */
620
+ TextAlignment[TextAlignment["left"] = 0] = "left";
621
+ /**
622
+ * (x,y) is middle position of text, where (left + right)/2 =(x,y)
623
+ * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)
624
+ */
625
+ TextAlignment[TextAlignment["middle"] = 1] = "middle";
626
+ /**
627
+ * text alignment ends with(x,y) from left direction
628
+ * 从(x,y)结束最后一个字符,向左边延伸
629
+ */
630
+ TextAlignment[TextAlignment["right"] = 2] = "right";
631
+ })(TextAlignment || (TextAlignment = {}));
632
+ /**
633
+ * 文本字重
634
+ */
635
+ var TextWeight;
636
+ (function (TextWeight) {
637
+ /**
638
+ * 正常
639
+ */
640
+ TextWeight["normal"] = "normal";
641
+ /**
642
+ * 粗体
643
+ */
644
+ TextWeight["bold"] = "bold";
645
+ /**
646
+ * 瘦体
647
+ */
648
+ TextWeight["lighter"] = "lighter";
649
+ })(TextWeight || (TextWeight = {}));
650
+ /**
651
+ * 文本样式
652
+ */
653
+ var FontStyle;
654
+ (function (FontStyle) {
655
+ /**
656
+ * 正常
657
+ */
658
+ FontStyle["normal"] = "normal";
659
+ /**
660
+ * 斜体
661
+ */
662
+ FontStyle["italic"] = "italic";
663
+ /**
664
+ * 倾斜体
665
+ */
666
+ FontStyle["oblique"] = "oblique";
667
+ })(FontStyle || (FontStyle = {}));
668
+
669
+ /******************************************************************************
670
+ Copyright (c) Microsoft Corporation.
671
+
672
+ Permission to use, copy, modify, and/or distribute this software for any
673
+ purpose with or without fee is hereby granted.
674
+
675
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
676
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
677
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
678
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
679
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
680
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
681
+ PERFORMANCE OF THIS SOFTWARE.
682
+ ***************************************************************************** */
683
+
684
+ var __assign = function() {
685
+ __assign = Object.assign || function __assign(t) {
686
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
687
+ s = arguments[i];
688
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
689
+ }
690
+ return t;
691
+ };
692
+ return __assign.apply(this, arguments);
693
+ };
694
+
695
+ function __values(o) {
696
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
697
+ if (m) return m.call(o);
698
+ if (o && typeof o.length === "number") return {
699
+ next: function () {
700
+ if (o && i >= o.length) o = void 0;
701
+ return { value: o && o[i++], done: !o };
702
+ }
703
+ };
704
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
705
+ }
706
+
707
+ function __read(o, n) {
708
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
709
+ if (!m) return o;
710
+ var i = m.call(o), r, ar = [], e;
711
+ try {
712
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
713
+ }
714
+ catch (error) { e = { error: error }; }
715
+ finally {
716
+ try {
717
+ if (r && !r.done && (m = i["return"])) m.call(i);
718
+ }
719
+ finally { if (e) throw e.error; }
720
+ }
721
+ return ar;
722
+ }
723
+
724
+ function arrAdd(arr, item) {
725
+ if (!arr.includes(item)) {
726
+ arr.push(item);
727
+ return true;
728
+ }
729
+ }
730
+ /**
731
+ * @deprecated 请直接使用 Array.prototype.forEach 或 for...of
732
+ * @param object
733
+ * @param callback
734
+ * @returns the mutated input object
735
+ */
736
+ function forEach(object, callback, thisObj) {
737
+ if (object) {
738
+ for (var name_1 in object) {
739
+ if (Object.hasOwnProperty.call(object, name_1)) {
740
+ callback.call(thisObj, object[name_1], name_1);
741
+ }
742
+ }
743
+ }
744
+ return object;
745
+ }
746
+ function ensureFixedNumber(a) {
747
+ if (Number.isFinite(a)) {
748
+ return [ValueType.CONSTANT, a];
749
+ }
750
+ if (a) {
751
+ if (a[0] === 'lines') {
752
+ return [ValueType.LINE, a[1]];
753
+ }
754
+ if (a[0] === 'curve') {
755
+ return [ValueType.CURVE, a[1]];
756
+ }
757
+ if (a[0] === 'static') {
758
+ return [ValueType.CONSTANT, a[1]];
759
+ }
760
+ }
761
+ }
762
+ function ensureFixedNumberWithRandom(a, p) {
763
+ if (Array.isArray(a) && a[0] === 'random') {
764
+ return [ValueType.CONSTANT, a[1][p]];
765
+ }
766
+ return ensureFixedNumber(a);
767
+ }
768
+ function ensureRGBAValue(a) {
769
+ if (a && a[0] === 'color') {
770
+ return colorToArr(a[1], true);
771
+ }
772
+ return [1, 1, 1, 1];
773
+ }
774
+ function ensureColorExpression(a, normalized) {
775
+ if (a) {
776
+ if (a[0] === 'colors') {
777
+ return [ValueType.COLORS, a[1].map(function (color) { return colorToArr(color, normalized); })];
778
+ }
779
+ else if (a[0] === 'gradient') {
780
+ return ensureGradient(a[1], normalized);
781
+ }
782
+ else if (a[0] === 'color') {
783
+ return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];
784
+ }
785
+ }
786
+ }
787
+ function ensureNumberExpression(a) {
788
+ if (a && a[0] === 'random') {
789
+ return [ValueType.RANDOM, a[1]];
790
+ }
791
+ return ensureFixedNumber(a);
792
+ }
793
+ function ensureValueGetter(a) {
794
+ if (Array.isArray(a) && typeof a[0] === 'string') {
795
+ return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;
796
+ }
797
+ return a;
798
+ }
799
+ function ensureGradient(a, normalized) {
800
+ if (a) {
801
+ var stops_1 = [];
802
+ Object.getOwnPropertyNames(a).forEach(function (p) {
803
+ var stop = parsePercent(p);
804
+ var color = colorToArr(a[p], normalized);
805
+ stops_1.push([stop, color[0], color[1], color[2], color[3]]);
806
+ });
807
+ stops_1 = stops_1.sort(function (a, b) { return a[0] - b[0]; });
808
+ return [ValueType.GRADIENT_COLOR, stops_1];
809
+ }
810
+ }
811
+ function colorToArr(hex, normalized) {
812
+ var ret;
813
+ if (typeof hex === 'string') {
814
+ hex = hex.replace(/[\s\t\r\n]/g, '');
815
+ var m = /rgba?\(([.\d]+),([.\d]+),([.\d]+),?([.\d]+)?\)/.exec(hex);
816
+ if (m) {
817
+ var a = +m[4];
818
+ ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];
819
+ }
820
+ else if (/^#[a-f\d]{3}$/i.test(hex)) {
821
+ ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];
822
+ // eslint-disable-next-line no-cond-assign
823
+ }
824
+ else if (m = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex)) {
825
+ ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255] || [0, 0, 0, 255];
826
+ }
827
+ }
828
+ else if (hex instanceof Array) {
829
+ ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];
830
+ }
831
+ if (normalized) {
832
+ // @ts-expect-error
833
+ ret = normalizeColor(ret);
834
+ }
835
+ // @ts-expect-error
836
+ return ret;
837
+ }
838
+ function normalizeColor(a) {
839
+ if (Array.isArray(a)) {
840
+ return a.map(function (i) { return Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0; });
841
+ }
842
+ }
843
+ function parsePercent(c) {
844
+ var match = /^(-)?([\d+.]+)%$/.exec(c);
845
+ if (match) {
846
+ return +match[2] / 100 * (match[1] ? -1 : 1);
847
+ }
848
+ return +c;
849
+ }
850
+ function getGradientColor(color, normalized) {
851
+ if (Array.isArray(color)) {
852
+ // @ts-expect-error
853
+ return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);
854
+ }
855
+ else {
856
+ return ensureGradient(color, normalized);
857
+ }
858
+ }
859
+ function ensureFixedVec3(a) {
860
+ if (a) {
861
+ if (a.length === 3) {
862
+ return [ValueType.CONSTANT_VEC3, a];
863
+ }
864
+ if (a[0] === 'path') {
865
+ return [ValueType.LINEAR_PATH, a[1]];
866
+ }
867
+ if (a[0] === 'bezier') {
868
+ return [ValueType.BEZIER_PATH, a[1]];
869
+ }
870
+ }
871
+ }
872
+ function objectValueToNumber(o) {
873
+ var e_1, _a;
874
+ try {
875
+ for (var _b = __values(Object.entries(o)), _c = _b.next(); !_c.done; _c = _b.next()) {
876
+ var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
877
+ o[key] = Number(value);
878
+ }
879
+ }
880
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
881
+ finally {
882
+ try {
883
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
884
+ }
885
+ finally { if (e_1) throw e_1.error; }
886
+ }
887
+ return o;
888
+ }
889
+ function deleteEmptyValue(o) {
890
+ var e_2, _a;
891
+ try {
892
+ for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {
893
+ var key = _c.value;
894
+ if (o[key] === undefined) {
895
+ delete o[key];
896
+ }
897
+ }
898
+ }
899
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
900
+ finally {
901
+ try {
902
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
903
+ }
904
+ finally { if (e_2) throw e_2.error; }
905
+ }
906
+ return o;
907
+ }
908
+ var cos = Math.cos;
909
+ var sin = Math.sin;
910
+ var d2r = Math.PI / 180;
911
+ var r2d = 180 / Math.PI;
912
+ function quatFromXYZRotation(out, x, y, z) {
913
+ var c1 = cos((x * d2r) / 2);
914
+ var c2 = cos((y * d2r) / 2);
915
+ var c3 = cos((z * d2r) / 2);
916
+ var s1 = sin((x * d2r) / 2);
917
+ var s2 = sin((y * d2r) / 2);
918
+ var s3 = sin((z * d2r) / 2);
919
+ out[0] = s1 * c2 * c3 + c1 * s2 * s3;
920
+ out[1] = c1 * s2 * c3 - s1 * c2 * s3;
921
+ out[2] = c1 * c2 * s3 + s1 * s2 * c3;
922
+ out[3] = c1 * c2 * c3 - s1 * s2 * s3;
923
+ return out;
924
+ }
925
+ function clamp(v, min, max) {
926
+ return v > max ? max : (v < min ? min : v);
927
+ }
928
+ function rotationZYXFromQuat(out, quat) {
929
+ var x = quat[0];
930
+ var y = quat[1];
931
+ var z = quat[2];
932
+ var w = quat[3];
933
+ var x2 = x + x;
934
+ var y2 = y + y;
935
+ var z2 = z + z;
936
+ var xx = x * x2;
937
+ var yx = y * x2;
938
+ var yy = y * y2;
939
+ var zx = z * x2;
940
+ var zy = z * y2;
941
+ var zz = z * z2;
942
+ var wx = w * x2;
943
+ var wy = w * y2;
944
+ var wz = w * z2;
945
+ var m11 = 1 - yy - zz, m12 = yx - wz;
946
+ var m21 = yx + wz, m22 = 1 - xx - zz;
947
+ var m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;
948
+ out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;
949
+ if (Math.abs(m31) < 0.9999999) {
950
+ out[0] = Math.atan2(m32, m33) * r2d;
951
+ out[2] = Math.atan2(m21, m11) * r2d;
952
+ }
953
+ else {
954
+ out[0] = 0;
955
+ out[2] = Math.atan2(-m12, m22) * r2d;
956
+ }
957
+ return out;
958
+ }
959
+
960
+ function getStandardParticleContent(particle) {
961
+ var _a;
962
+ var options = particle.options;
963
+ var transform = particle.transform;
964
+ var shape = {
965
+ type: ShapeType.NONE,
966
+ };
967
+ if (particle.shape) {
968
+ var shapeType = (_a = particle.shape.shape) === null || _a === void 0 ? void 0 : _a.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');
969
+ shape = __assign(__assign({}, particle.shape), { type: ShapeType[shapeType] });
970
+ if (particle.shape.upDirection) {
971
+ var _b = __read(particle.shape.upDirection, 3), x = _b[0], y = _b[1], z = _b[2];
972
+ if (x === 0 && y === 0 && z === 0) {
973
+ delete shape.upDirection;
974
+ }
975
+ }
976
+ }
977
+ if (options.startTurbulence) {
978
+ shape.turbulenceX = ensureNumberExpression(options.turbulenceX);
979
+ shape.turbulenceY = ensureNumberExpression(options.turbulenceY);
980
+ shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);
981
+ }
982
+ var emission = particle.emission;
983
+ if (emission.bursts && emission.bursts.length > 0) {
984
+ emission.bursts = emission.bursts.map(function (b) { return objectValueToNumber(b); });
985
+ }
986
+ if (emission.burstOffsets && emission.burstOffsets.length > 0) {
987
+ emission.burstOffsets = emission.burstOffsets.map(function (b) { return objectValueToNumber(b); });
988
+ }
989
+ if (emission.rateOverTime) {
990
+ emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);
991
+ }
992
+ var ret = {
993
+ renderer: particle.renderer,
994
+ shape: shape,
995
+ splits: particle.splits,
996
+ emission: emission,
997
+ options: {
998
+ startLifetime: ensureNumberExpression(options.startLifetime),
999
+ start3DSize: !!options.start3DSize,
1000
+ startSize: ensureNumberExpression(options.startSize),
1001
+ startSizeX: ensureNumberExpression(options.startSizeX),
1002
+ startSizeY: ensureNumberExpression(options.startSizeY),
1003
+ sizeAspect: ensureNumberExpression(options.sizeAspect),
1004
+ maxCount: options.maxCount,
1005
+ startDelay: ensureNumberExpression(options.startDelay),
1006
+ startColor: ensureColorExpression(options.startColor, true),
1007
+ startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),
1008
+ particleFollowParent: options.particleFollowParent,
1009
+ },
1010
+ };
1011
+ if (options.start3DRotation) {
1012
+ ret.options.startRotationX = ensureNumberExpression(options.startRotationX);
1013
+ ret.options.startRotationY = ensureNumberExpression(options.startRotationY);
1014
+ }
1015
+ if (particle.filter) {
1016
+ var filter_1 = {};
1017
+ forEach(particle.filter, function (val, key) {
1018
+ // @ts-expect-error
1019
+ filter_1[key] = ensureValueGetter(val);
1020
+ });
1021
+ ret.filter = filter_1;
1022
+ }
1023
+ if (transform && transform.path) {
1024
+ ret.emitterTransform = {
1025
+ path: ensureFixedVec3(transform.path),
1026
+ };
1027
+ }
1028
+ var sizeOverLifetime = particle.sizeOverLifetime;
1029
+ if (sizeOverLifetime) {
1030
+ if (sizeOverLifetime.separateAxes) {
1031
+ ret.sizeOverLifetime = {
1032
+ separateAxes: true,
1033
+ x: ensureNumberExpression(sizeOverLifetime.x),
1034
+ y: ensureNumberExpression(sizeOverLifetime.y),
1035
+ };
1036
+ }
1037
+ else {
1038
+ ret.sizeOverLifetime = {
1039
+ size: ensureNumberExpression(sizeOverLifetime.size),
1040
+ };
1041
+ }
1042
+ }
1043
+ var velocityOverLifetime = particle.velocityOverLifetime || {};
1044
+ var sol = velocityOverLifetime.speedOverLifetime;
1045
+ if (sol) {
1046
+ sol = ensureFixedNumber(sol);
1047
+ }
1048
+ else {
1049
+ sol = undefined;
1050
+ }
1051
+ ret.positionOverLifetime = {
1052
+ gravity: options.gravity,
1053
+ gravityOverLifetime: ensureFixedNumber(options.gravityModifier),
1054
+ startSpeed: ensureNumberExpression(options.startSpeed),
1055
+ speedOverLifetime: sol,
1056
+ asMovement: velocityOverLifetime.asMovement,
1057
+ linearX: ensureNumberExpression(velocityOverLifetime.linearX),
1058
+ linearY: ensureNumberExpression(velocityOverLifetime.linearY),
1059
+ linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),
1060
+ asRotation: velocityOverLifetime.asRotation,
1061
+ orbCenter: velocityOverLifetime.orbCenter,
1062
+ orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),
1063
+ orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),
1064
+ orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),
1065
+ forceTarget: velocityOverLifetime.forceTarget,
1066
+ target: velocityOverLifetime.target,
1067
+ forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve),
1068
+ };
1069
+ deleteEmptyValue(ret.positionOverLifetime);
1070
+ var rotationOverLifetime = particle.rotationOverLifetime;
1071
+ if (rotationOverLifetime) {
1072
+ ret.rotationOverLifetime = {
1073
+ separateAxes: rotationOverLifetime.separateAxes,
1074
+ asRotation: rotationOverLifetime.asRotation,
1075
+ z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),
1076
+ };
1077
+ if (rotationOverLifetime.separateAxes) {
1078
+ ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);
1079
+ ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);
1080
+ }
1081
+ }
1082
+ var colorOverLifetime = particle.colorOverLifetime;
1083
+ if (colorOverLifetime) {
1084
+ var col = ret.colorOverLifetime = {
1085
+ opacity: ensureFixedNumber(colorOverLifetime.opacity),
1086
+ };
1087
+ if (colorOverLifetime.color) {
1088
+ col.color = getGradientColor(colorOverLifetime.color);
1089
+ }
1090
+ }
1091
+ var textureSheetAnimation = particle.textureSheetAnimation;
1092
+ if (textureSheetAnimation) {
1093
+ ret.textureSheetAnimation = {
1094
+ row: textureSheetAnimation.row,
1095
+ col: textureSheetAnimation.col,
1096
+ total: textureSheetAnimation.total,
1097
+ animate: textureSheetAnimation.animate,
1098
+ cycles: ensureFixedNumber(textureSheetAnimation.cycles),
1099
+ animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),
1100
+ animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0),
1101
+ };
1102
+ }
1103
+ var trials = particle.trails;
1104
+ if (trials) {
1105
+ ret.trails = {
1106
+ lifetime: ensureNumberExpression(trials.lifetime),
1107
+ dieWithParticles: trials.dieWithParticles,
1108
+ maxPointPerTrail: trials.maxPointPerTrail,
1109
+ minimumVertexDistance: trials.minimumVertexDistance,
1110
+ widthOverTrail: ensureFixedNumber(trials.widthOverTrail),
1111
+ colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),
1112
+ blending: trials.blending,
1113
+ colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),
1114
+ inheritParticleColor: trials.inheritParticleColor,
1115
+ occlusion: trials.occlusion,
1116
+ transparentOcclusion: trials.transparentOcclusion,
1117
+ orderOffset: trials.orderOffset,
1118
+ sizeAffectsLifetime: trials.sizeAffectsLifetime,
1119
+ sizeAffectsWidth: trials.sizeAffectsWidth,
1120
+ texture: trials.texture,
1121
+ parentAffectsPosition: trials.parentAffectsPosition,
1122
+ opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),
1123
+ };
1124
+ }
1125
+ ret.trails && deleteEmptyValue(ret.trails);
1126
+ var interaction = particle.interaction;
1127
+ if (interaction) {
1128
+ ret.interaction = {
1129
+ behavior: interaction.behavior,
1130
+ radius: interaction.radius,
1131
+ multiple: interaction.multiple,
1132
+ };
1133
+ }
1134
+ return ret;
1135
+ }
1136
+
1137
+ function getStandardNullContent(sprite, transform) {
1138
+ var _a;
1139
+ var opt = sprite.options;
1140
+ var velocityOverLifetime = sprite.velocityOverLifetime || {};
1141
+ var positionOverLifetime = {
1142
+ path: ensureFixedVec3((_a = sprite.transform) === null || _a === void 0 ? void 0 : _a.path),
1143
+ gravity: opt.gravity,
1144
+ gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),
1145
+ direction: opt.direction,
1146
+ startSpeed: opt.startSpeed,
1147
+ asMovement: velocityOverLifetime.asMovement,
1148
+ linearX: ensureFixedNumber(velocityOverLifetime.linearX),
1149
+ linearY: ensureFixedNumber(velocityOverLifetime.linearY),
1150
+ linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),
1151
+ asRotation: velocityOverLifetime.asRotation,
1152
+ orbCenter: velocityOverLifetime.orbCenter,
1153
+ orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),
1154
+ orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),
1155
+ orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),
1156
+ speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),
1157
+ };
1158
+ deleteEmptyValue(positionOverLifetime);
1159
+ var ret = {
1160
+ options: {
1161
+ startColor: ensureRGBAValue(opt.startColor),
1162
+ },
1163
+ positionOverLifetime: positionOverLifetime,
1164
+ };
1165
+ if (opt.startSize) {
1166
+ transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];
1167
+ }
1168
+ if (opt.startRotation) {
1169
+ if (!transform.rotation) {
1170
+ transform.rotation = [0, 0, opt.startRotation];
1171
+ }
1172
+ else {
1173
+ transform.rotation[2] += opt.startRotation;
1174
+ }
1175
+ }
1176
+ var rotationOverLifetime = sprite.rotationOverLifetime;
1177
+ if (rotationOverLifetime) {
1178
+ var rot = ret.rotationOverLifetime = {
1179
+ separateAxes: rotationOverLifetime.separateAxes,
1180
+ asRotation: rotationOverLifetime.asRotation,
1181
+ };
1182
+ if (rot.separateAxes) {
1183
+ rot.x = ensureFixedNumber(rotationOverLifetime.x);
1184
+ rot.y = ensureFixedNumber(rotationOverLifetime.y);
1185
+ rot.z = ensureFixedNumber(rotationOverLifetime.z);
1186
+ }
1187
+ else {
1188
+ rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);
1189
+ }
1190
+ }
1191
+ var colorOverLifetime = sprite.colorOverLifetime;
1192
+ if (colorOverLifetime) {
1193
+ var col = ret.colorOverLifetime = {
1194
+ opacity: ensureFixedNumber(colorOverLifetime.opacity),
1195
+ };
1196
+ if (colorOverLifetime.color) {
1197
+ col.color = getGradientColor(colorOverLifetime.color);
1198
+ }
1199
+ }
1200
+ var sizeOverLifetime = sprite.sizeOverLifetime;
1201
+ if (sizeOverLifetime) {
1202
+ ret.sizeOverLifetime = {
1203
+ separateAxes: sizeOverLifetime.separateAxes,
1204
+ size: ensureFixedNumber(sizeOverLifetime.size),
1205
+ x: ensureFixedNumber(sizeOverLifetime.x),
1206
+ y: ensureFixedNumber(sizeOverLifetime.y),
1207
+ z: ensureFixedNumber(sizeOverLifetime.z),
1208
+ };
1209
+ }
1210
+ return ret;
1211
+ }
1212
+ function getStandardSpriteContent(sprite, transform) {
1213
+ var ret = getStandardNullContent(sprite, transform);
1214
+ var texAni = sprite.textureSheetAnimation;
1215
+ if (texAni) {
1216
+ ret.textureSheetAnimation = {
1217
+ row: texAni.row,
1218
+ col: texAni.col,
1219
+ total: texAni.total || undefined,
1220
+ animate: texAni.animate,
1221
+ };
1222
+ }
1223
+ ret.renderer = sprite.renderer;
1224
+ if (sprite.splits) {
1225
+ ret.splits = sprite.splits;
1226
+ }
1227
+ if (sprite.interaction) {
1228
+ ret.interaction = sprite.interaction;
1229
+ }
1230
+ return ret;
1231
+ }
1232
+
1233
+ function getStandardInteractContent(ui) {
1234
+ var options = ui.options;
1235
+ var option;
1236
+ switch (options.type) {
1237
+ case 'click': {
1238
+ option = {
1239
+ type: InteractType.CLICK,
1240
+ showPreview: options.showPreview,
1241
+ previewColor: options.previewColor && ensureRGBAValue(options.previewColor),
1242
+ behavior: options.behavior || InteractBehavior.NOTIFY,
1243
+ };
1244
+ break;
1245
+ }
1246
+ case 'drag': {
1247
+ option = {
1248
+ type: InteractType.DRAG,
1249
+ enableInEditor: !!options.enableInEditor,
1250
+ dxRange: options.dxRange,
1251
+ dyRange: options.dyRange,
1252
+ target: options.target,
1253
+ };
1254
+ break;
1255
+ }
1256
+ case 'message': {
1257
+ option = {
1258
+ type: InteractType.MESSAGE,
1259
+ };
1260
+ break;
1261
+ }
1262
+ }
1263
+ var ret = {
1264
+ // @ts-expect-error
1265
+ options: option,
1266
+ };
1267
+ return ret;
1268
+ }
1269
+
1270
+ function getStandardCameraContent(model) {
1271
+ var _a, _b;
1272
+ var opt = model.options;
1273
+ var ret = {
1274
+ options: {
1275
+ fov: opt.fov,
1276
+ far: opt.far,
1277
+ near: opt.near,
1278
+ clipMode: opt.clipMode,
1279
+ },
1280
+ };
1281
+ var velocityOverLifetime = model.velocityOverLifetime;
1282
+ if (velocityOverLifetime || ((_a = model.transform) === null || _a === void 0 ? void 0 : _a.path)) {
1283
+ var positionOverLifetime = {
1284
+ path: ensureFixedVec3((_b = model.transform) === null || _b === void 0 ? void 0 : _b.path),
1285
+ linearX: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateX),
1286
+ linearY: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateY),
1287
+ linearZ: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateZ),
1288
+ };
1289
+ deleteEmptyValue(positionOverLifetime);
1290
+ ret.positionOverLifetime = positionOverLifetime;
1291
+ }
1292
+ var rol = model.rotationOverLifetime;
1293
+ if (rol) {
1294
+ var rotationOverLifetime = {
1295
+ separateAxes: rol.separateAxes,
1296
+ x: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateX),
1297
+ y: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateY),
1298
+ z: rol.separateAxes ? ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateZ) : ensureFixedNumber(rol.rotation),
1299
+ };
1300
+ deleteEmptyValue(rotationOverLifetime);
1301
+ ret.rotationOverLifetime = rotationOverLifetime;
1302
+ }
1303
+ return ret;
1304
+ }
1305
+
1306
+ var convertParams = [
1307
+ 'strength',
1308
+ 'bloomAddon',
1309
+ 'colorAddon',
1310
+ 'period',
1311
+ 'waveMovement',
1312
+ 'colorThreshold',
1313
+ 'xOpacity',
1314
+ 'yOpacity',
1315
+ 'feather',
1316
+ ];
1317
+ var pathParams = [
1318
+ 'path', 'position',
1319
+ ];
1320
+ function getStandardFilterContent(filter) {
1321
+ var ret = {};
1322
+ forEach(filter, function (val, key) {
1323
+ if (convertParams.includes(key)) {
1324
+ ret[key] = ensureFixedNumber(val);
1325
+ }
1326
+ else if (pathParams.includes(key)) {
1327
+ ret[key] = ensureFixedVec3(val);
1328
+ }
1329
+ else {
1330
+ ret[key] = val;
1331
+ }
1332
+ });
1333
+ return ret;
1334
+ }
1335
+
1336
+ /**
1337
+ * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)
1338
+ */
1339
+ function version21Migration(json) {
1340
+ json.compositions.forEach(function (composition) {
1341
+ composition.items.forEach(function (item) {
1342
+ if (item.type === ItemType.null) {
1343
+ if (item.endBehavior === ItemEndBehavior.destroy) {
1344
+ item.endBehavior = ItemEndBehavior.forward;
1345
+ }
1346
+ }
1347
+ });
1348
+ });
1349
+ json.version = '2.1';
1350
+ return json;
1351
+ }
1352
+
1353
+ var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
1354
+ var standardVersion = /^(\d+)\.(\d+)$/;
1355
+ var reverseParticle = false;
1356
+ function getStandardJSON(json) {
1357
+ var _a, _b;
1358
+ if (!json || typeof json !== 'object') {
1359
+ throw Error('expect a json object');
1360
+ }
1361
+ if (v0.test(json.version)) {
1362
+ reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
1363
+ return version21Migration(getStandardJSONFromV0(json));
1364
+ }
1365
+ var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];
1366
+ if (mainVersion) {
1367
+ if (Number(mainVersion) < 2) {
1368
+ return version21Migration(json);
1369
+ }
1370
+ return json;
1371
+ }
1372
+ throw Error('invalid json version ' + json.version);
1373
+ }
1374
+ var currentVersion = '1.0';
1375
+ function getStandardJSONFromV0(json) {
1376
+ var _a, _b;
1377
+ currentVersion = '1.0';
1378
+ var plugins = json.plugins || [];
1379
+ if ((_a = json.bins) === null || _a === void 0 ? void 0 : _a.length) {
1380
+ currentVersion = '1.3';
1381
+ }
1382
+ var requires = (json.requires || []).slice();
1383
+ var images = json.images.map(function (img, index) { return getStandardImage(img, index, json.imageTags || []); });
1384
+ var textures = json.textures || images.map(function (img, i) { return ({ source: i, flipY: true }); });
1385
+ var ret = {
1386
+ plugins: plugins,
1387
+ shapes: json.shapes || [],
1388
+ type: 'ge',
1389
+ version: currentVersion,
1390
+ playerVersion: (_b = json.playerVersion) !== null && _b !== void 0 ? _b : {
1391
+ web: '',
1392
+ native: '',
1393
+ },
1394
+ compositionId: json.compositionId + '',
1395
+ compositions: json.compositions.map(function (comp) { return getStandardComposition(comp, { plugins: plugins, requires: requires }); }),
1396
+ images: images,
1397
+ imgUsage: json._imgs,
1398
+ binUsage: json.binUsage,
1399
+ spines: json.spines,
1400
+ requires: json.requires,
1401
+ textures: textures,
1402
+ bins: (json.bins || []).slice(),
1403
+ };
1404
+ if (json._textures) {
1405
+ ret._textures = json._textures;
1406
+ }
1407
+ return ret;
1408
+ }
1409
+ function getStandardImage(image, index, imageTags) {
1410
+ var renderLevel = imageTags[index];
1411
+ var oriY = image.oriY;
1412
+ if (typeof image === 'string') {
1413
+ return {
1414
+ renderLevel: renderLevel,
1415
+ url: image,
1416
+ oriY: oriY,
1417
+ };
1418
+ }
1419
+ else if (image.template) {
1420
+ return {
1421
+ url: image.url,
1422
+ template: image.template,
1423
+ webp: image.webp,
1424
+ renderLevel: renderLevel,
1425
+ oriY: oriY,
1426
+ };
1427
+ }
1428
+ else if (image.compressed) {
1429
+ return {
1430
+ url: image.url,
1431
+ oriY: oriY,
1432
+ compressed: {
1433
+ astc: image.compressed.android,
1434
+ pvrtc: image.compressed.iOS,
1435
+ },
1436
+ webp: image.webp,
1437
+ renderLevel: renderLevel,
1438
+ };
1439
+ }
1440
+ else if (image.url) {
1441
+ return {
1442
+ url: image.url,
1443
+ type: image.type,
1444
+ webp: image.webp,
1445
+ renderLevel: renderLevel,
1446
+ oriY: oriY,
1447
+ loop: image.loop,
1448
+ };
1449
+ }
1450
+ else if (image && image.sourceType) {
1451
+ return image;
1452
+ }
1453
+ throw Error('invalid image type');
1454
+ }
1455
+ function getStandardComposition(composition, opt) {
1456
+ var _a;
1457
+ if (opt === void 0) { opt = {}; }
1458
+ var ret = {
1459
+ id: composition.id + '',
1460
+ camera: Object.assign({ clipMode: CAMERA_CLIP_MODE_NORMAL }, composition.camera),
1461
+ duration: composition.duration,
1462
+ endBehavior: composition.endBehavior,
1463
+ items: composition.items.map(function (item) { return getStandardItem(item, opt); }),
1464
+ name: composition.name,
1465
+ };
1466
+ var startTime = composition.startTime || composition.st;
1467
+ if (startTime) {
1468
+ ret.startTime = startTime;
1469
+ }
1470
+ var previewSize = (_a = composition.meta) === null || _a === void 0 ? void 0 : _a.previewSize;
1471
+ if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {
1472
+ previewSize = undefined;
1473
+ }
1474
+ if (previewSize) {
1475
+ ret.previewSize = previewSize;
1476
+ }
1477
+ return ret;
1478
+ }
1479
+ var tempQuat = [0, 0, 0, 1];
1480
+ var stdAnchor = 0.5;
1481
+ function getStandardItem(item, opt) {
1482
+ var _a, _b, _c;
1483
+ if (opt === void 0) { opt = {}; }
1484
+ var type = ItemType.base;
1485
+ var transform;
1486
+ var originContent;
1487
+ var content;
1488
+ var endBehavior = item.endBehavior;
1489
+ var renderLevel;
1490
+ var pluginName;
1491
+ var duration = NaN;
1492
+ var pn;
1493
+ if (item.content) {
1494
+ type = item.type || ItemType.plugin;
1495
+ pn = item.pn;
1496
+ pluginName = item.pluginName;
1497
+ content = item.content;
1498
+ originContent = item.content;
1499
+ if (isNaN(pn) && !pluginName) {
1500
+ pluginName = content.options.type;
1501
+ }
1502
+ if (item.duration) {
1503
+ duration = item.duration;
1504
+ }
1505
+ transform = item.transform || getTransform(originContent.transform);
1506
+ if (type === ItemType.filter) {
1507
+ if (currentVersion < '1.1') {
1508
+ currentVersion = '1.1';
1509
+ }
1510
+ content = getStandardSpriteContent(originContent, transform);
1511
+ // @ts-expect-error
1512
+ content.filter = getStandardFilterContent(originContent.filter);
1513
+ }
1514
+ }
1515
+ else if (item.particle) {
1516
+ type = ItemType.particle;
1517
+ originContent = item.particle;
1518
+ transform = getTransform(originContent.transform, reverseParticle, true);
1519
+ content = getStandardParticleContent(originContent);
1520
+ }
1521
+ else if (item.sprite) {
1522
+ type = ItemType.sprite;
1523
+ originContent = item.sprite;
1524
+ transform = getTransform(originContent.transform, false, true);
1525
+ content = getStandardSpriteContent(originContent, transform);
1526
+ }
1527
+ else if (item.cal) {
1528
+ type = ItemType.null;
1529
+ originContent = item.cal;
1530
+ transform = getTransform(originContent.transform, false, true);
1531
+ content = getStandardNullContent(originContent, transform);
1532
+ }
1533
+ else if (item.ui) {
1534
+ type = ItemType.interact;
1535
+ originContent = item.ui;
1536
+ transform = getTransform(originContent.transform);
1537
+ content = getStandardInteractContent(originContent);
1538
+ transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];
1539
+ }
1540
+ else if (item.model) {
1541
+ originContent = item.model;
1542
+ if (item.model.options.type === 1) {
1543
+ type = ItemType.camera;
1544
+ transform = getTransform(originContent.transform);
1545
+ content = getStandardCameraContent(originContent);
1546
+ }
1547
+ }
1548
+ if ((_a = content.renderer) === null || _a === void 0 ? void 0 : _a.anchor) {
1549
+ var anchor = new Float32Array(content.renderer.anchor);
1550
+ if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {
1551
+ delete content.renderer.anchor;
1552
+ }
1553
+ else if (opt.requires) {
1554
+ arrAdd(opt.requires, 'anchor');
1555
+ }
1556
+ }
1557
+ if (originContent) {
1558
+ var looping = (_b = originContent.options) === null || _b === void 0 ? void 0 : _b.looping;
1559
+ if (looping) {
1560
+ if (Array.isArray(looping)) {
1561
+ endBehavior = looping[1] ? ItemEndBehavior.loop : ItemEndBehavior.destroy;
1562
+ }
1563
+ else {
1564
+ endBehavior = ItemEndBehavior.loop;
1565
+ }
1566
+ }
1567
+ else {
1568
+ endBehavior = endBehavior || ((_c = originContent === null || originContent === void 0 ? void 0 : originContent.options) === null || _c === void 0 ? void 0 : _c.endBehavior) || ItemEndBehavior.destroy;
1569
+ }
1570
+ if (originContent.options.renderLevel) {
1571
+ renderLevel = originContent.options.renderLevel;
1572
+ }
1573
+ if (isNaN(duration)) {
1574
+ duration = originContent.options.duration;
1575
+ }
1576
+ }
1577
+ var ret = {
1578
+ type: type,
1579
+ name: item.name,
1580
+ delay: item.delay,
1581
+ duration: duration,
1582
+ id: item.id + '',
1583
+ // @ts-expect-error
1584
+ transform: transform,
1585
+ endBehavior: endBehavior,
1586
+ // @ts-expect-error
1587
+ renderLevel: renderLevel,
1588
+ content: content,
1589
+ };
1590
+ // @ts-expect-error
1591
+ if (pluginName) {
1592
+ if (opt.plugins) {
1593
+ arrAdd(opt.plugins, pluginName);
1594
+ ret.pn = opt.plugins.indexOf(pluginName);
1595
+ }
1596
+ else {
1597
+ ret.pluginName = pluginName;
1598
+ }
1599
+ // @ts-expect-error
1600
+ }
1601
+ else if (Number.isInteger(pn)) {
1602
+ // @ts-expect-error
1603
+ ret.pn = pn;
1604
+ }
1605
+ if (item.parentId) {
1606
+ ret.parentId = item.parentId + '';
1607
+ }
1608
+ return ret;
1609
+ function getTransform(originTransform, inverseRotation, changeOrder) {
1610
+ if (originTransform) {
1611
+ var transform_1 = {};
1612
+ var rotation = originTransform.rotation;
1613
+ if (rotation) {
1614
+ if (inverseRotation) {
1615
+ transform_1.rotation = [-rotation[0], -rotation[1], -rotation[2]];
1616
+ }
1617
+ else {
1618
+ transform_1.rotation = [rotation[0], rotation[1], rotation[2]];
1619
+ }
1620
+ if (changeOrder) {
1621
+ var q = quatFromXYZRotation(tempQuat, transform_1.rotation[0], transform_1.rotation[1], transform_1.rotation[2]);
1622
+ transform_1.rotation = rotationZYXFromQuat([], q);
1623
+ }
1624
+ }
1625
+ var position = originTransform.position;
1626
+ if (position) {
1627
+ transform_1.position = originTransform.position;
1628
+ }
1629
+ if (Array.isArray(originTransform.scale)) {
1630
+ transform_1.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];
1631
+ }
1632
+ return transform_1;
1633
+ }
1634
+ return {};
1635
+ }
1636
+ }
1637
+
1638
+ export { arrAdd, colorToArr, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, quatFromXYZRotation, rotationZYXFromQuat };
1639
+ //# sourceMappingURL=fallback.mjs.map