@galacean/effects-threejs 2.0.0-alpha.2 → 2.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Description: Galacean Effects runtime threejs plugin for the web
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
6
- * Version: v2.0.0-alpha.2
6
+ * Version: v2.0.0-alpha.4
7
7
  */
8
8
 
9
9
  'use strict';
@@ -148,7 +148,7 @@ function __read$3(o, n) {
148
148
  return ar;
149
149
  }
150
150
 
151
- function __spreadArray$2(to, from, pack) {
151
+ function __spreadArray$3(to, from, pack) {
152
152
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
153
153
  if (ar || !(i in from)) {
154
154
  if (!ar) ar = Array.prototype.slice.call(from, 0, i);
@@ -166,20 +166,20 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
166
166
  // Unique ID creation requires a high quality random # generator. In the browser we therefore
167
167
  // require the crypto API and do not support built-in fallback to lower quality random number
168
168
  // generators (like Math.random()).
169
- let getRandomValues;
170
- const rnds8 = new Uint8Array(16);
171
- function rng() {
169
+ let getRandomValues$1;
170
+ const rnds8$1 = new Uint8Array(16);
171
+ function rng$1() {
172
172
  // lazy load so that environments that need to polyfill have a chance to do so
173
- if (!getRandomValues) {
173
+ if (!getRandomValues$1) {
174
174
  // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
175
- getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
175
+ getRandomValues$1 = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
176
176
 
177
- if (!getRandomValues) {
177
+ if (!getRandomValues$1) {
178
178
  throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
179
179
  }
180
180
  }
181
181
 
182
- return getRandomValues(rnds8);
182
+ return getRandomValues$1(rnds8$1);
183
183
  }
184
184
 
185
185
  /**
@@ -187,30 +187,30 @@ function rng() {
187
187
  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
188
188
  */
189
189
 
190
- const byteToHex = [];
190
+ const byteToHex$2 = [];
191
191
 
192
192
  for (let i = 0; i < 256; ++i) {
193
- byteToHex.push((i + 0x100).toString(16).slice(1));
193
+ byteToHex$2.push((i + 0x100).toString(16).slice(1));
194
194
  }
195
195
 
196
- function unsafeStringify(arr, offset = 0) {
196
+ function unsafeStringify$1(arr, offset = 0) {
197
197
  // Note: Be careful editing this code! It's been tuned for performance
198
198
  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
199
- 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]];
199
+ return byteToHex$2[arr[offset + 0]] + byteToHex$2[arr[offset + 1]] + byteToHex$2[arr[offset + 2]] + byteToHex$2[arr[offset + 3]] + '-' + byteToHex$2[arr[offset + 4]] + byteToHex$2[arr[offset + 5]] + '-' + byteToHex$2[arr[offset + 6]] + byteToHex$2[arr[offset + 7]] + '-' + byteToHex$2[arr[offset + 8]] + byteToHex$2[arr[offset + 9]] + '-' + byteToHex$2[arr[offset + 10]] + byteToHex$2[arr[offset + 11]] + byteToHex$2[arr[offset + 12]] + byteToHex$2[arr[offset + 13]] + byteToHex$2[arr[offset + 14]] + byteToHex$2[arr[offset + 15]];
200
200
  }
201
201
 
202
- const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
203
- var native = {
204
- randomUUID
202
+ const randomUUID$1 = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
203
+ var native$1 = {
204
+ randomUUID: randomUUID$1
205
205
  };
206
206
 
207
- function v4(options, buf, offset) {
208
- if (native.randomUUID && !buf && !options) {
209
- return native.randomUUID();
207
+ function v4$1(options, buf, offset) {
208
+ if (native$1.randomUUID && !buf && !options) {
209
+ return native$1.randomUUID();
210
210
  }
211
211
 
212
212
  options = options || {};
213
- const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
213
+ const rnds = options.random || (options.rng || rng$1)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
214
214
 
215
215
  rnds[6] = rnds[6] & 0x0f | 0x40;
216
216
  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
@@ -225,7 +225,7 @@ function v4(options, buf, offset) {
225
225
  return buf;
226
226
  }
227
227
 
228
- return unsafeStringify(rnds);
228
+ return unsafeStringify$1(rnds);
229
229
  }
230
230
 
231
231
  function addItem(arr, value) {
@@ -2212,7 +2212,7 @@ var __read$2 = (undefined && undefined.__read) || function (o, n) {
2212
2212
  }
2213
2213
  return ar;
2214
2214
  };
2215
- var __spreadArray$1 = (undefined && undefined.__spreadArray) || function (to, from, pack) {
2215
+ var __spreadArray$2 = (undefined && undefined.__spreadArray) || function (to, from, pack) {
2216
2216
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
2217
2217
  if (ar || !(i in from)) {
2218
2218
  if (!ar) ar = Array.prototype.slice.call(from, 0, i);
@@ -2529,7 +2529,7 @@ var Matrix4 = /** @class */ (function () {
2529
2529
  * @returns 复制结果
2530
2530
  */
2531
2531
  Matrix4.prototype.copyFrom = function (m) {
2532
- this.elements = __spreadArray$1([], __read$2(m.elements), false);
2532
+ this.elements = __spreadArray$2([], __read$2(m.elements), false);
2533
2533
  return this;
2534
2534
  };
2535
2535
  /**
@@ -3058,7 +3058,7 @@ var Matrix4 = /** @class */ (function () {
3058
3058
  * @returns
3059
3059
  */
3060
3060
  Matrix4.prototype.toArray = function () {
3061
- return __spreadArray$1([], __read$2(this.elements), false);
3061
+ return __spreadArray$2([], __read$2(this.elements), false);
3062
3062
  };
3063
3063
  Matrix4.prototype.fill = function (array, offset) {
3064
3064
  if (offset === void 0) { offset = 0; }
@@ -4311,7 +4311,7 @@ var __read$1 = (undefined && undefined.__read) || function (o, n) {
4311
4311
  }
4312
4312
  return ar;
4313
4313
  };
4314
- var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
4314
+ var __spreadArray$1 = (undefined && undefined.__spreadArray) || function (to, from, pack) {
4315
4315
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4316
4316
  if (ar || !(i in from)) {
4317
4317
  if (!ar) ar = Array.prototype.slice.call(from, 0, i);
@@ -4498,7 +4498,7 @@ var Matrix3 = /** @class */ (function () {
4498
4498
  * @returns 复制结果
4499
4499
  */
4500
4500
  Matrix3.prototype.copyFrom = function (m) {
4501
- this.elements = __spreadArray([], __read$1(m.elements), false);
4501
+ this.elements = __spreadArray$1([], __read$1(m.elements), false);
4502
4502
  return this;
4503
4503
  };
4504
4504
  /**
@@ -4714,7 +4714,7 @@ var Matrix3 = /** @class */ (function () {
4714
4714
  * @returns
4715
4715
  */
4716
4716
  Matrix3.prototype.toArray = function () {
4717
- return __spreadArray([], __read$1(this.elements), false);
4717
+ return __spreadArray$1([], __read$1(this.elements), false);
4718
4718
  };
4719
4719
  Matrix3.prototype.fill = function (array, offset) {
4720
4720
  if (offset === void 0) { offset = 0; }
@@ -6472,7 +6472,7 @@ function error(message) {
6472
6472
  for (var _i = 1; _i < arguments.length; _i++) {
6473
6473
  args[_i - 1] = arguments[_i];
6474
6474
  }
6475
- console.error.apply(console, __spreadArray$2(__spreadArray$2([], __read$3(format(message)), false), [args], false));
6475
+ console.error.apply(console, __spreadArray$3(__spreadArray$3([], __read$3(format(message)), false), [args], false));
6476
6476
  localLogger === null || localLogger === void 0 ? void 0 : localLogger('error', message, args);
6477
6477
  }
6478
6478
  /**
@@ -6485,7 +6485,7 @@ function info(message) {
6485
6485
  for (var _i = 1; _i < arguments.length; _i++) {
6486
6486
  args[_i - 1] = arguments[_i];
6487
6487
  }
6488
- console.debug.apply(console, __spreadArray$2([], __read$3(format(message)), false));
6488
+ console.debug.apply(console, __spreadArray$3([], __read$3(format(message)), false));
6489
6489
  localLogger === null || localLogger === void 0 ? void 0 : localLogger('info', message, args);
6490
6490
  }
6491
6491
  function warn(message) {
@@ -6493,7 +6493,7 @@ function warn(message) {
6493
6493
  for (var _i = 1; _i < arguments.length; _i++) {
6494
6494
  args[_i - 1] = arguments[_i];
6495
6495
  }
6496
- console.warn.apply(console, __spreadArray$2([], __read$3(format(message)), false));
6496
+ console.warn.apply(console, __spreadArray$3([], __read$3(format(message)), false));
6497
6497
  localLogger === null || localLogger === void 0 ? void 0 : localLogger('warn', message, args);
6498
6498
  }
6499
6499
  /**
@@ -6590,17 +6590,30 @@ function random(min, max) {
6590
6590
  function throwDestroyedError() {
6591
6591
  throw Error('destroyed item cannot be used again');
6592
6592
  }
6593
- function generateGUID() {
6594
- return v4().replace(/-/g, '');
6593
+ function generateGUID$1() {
6594
+ return v4$1().replace(/-/g, '');
6595
6595
  }
6596
6596
 
6597
6597
  /*!
6598
6598
  * Name: @galacean/effects-specification
6599
6599
  * Description: Galacean Effects JSON Specification
6600
6600
  * Author: Ant Group CO., Ltd.
6601
- * Version: v1.0.1
6601
+ * Version: v2.0.0-alpha.2
6602
+ */
6603
+
6604
+ typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
6605
+
6606
+ /**
6607
+ * Convert array of 16 byte values to UUID string format of the form:
6608
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
6602
6609
  */
6603
6610
 
6611
+ const byteToHex$1 = [];
6612
+
6613
+ for (let i = 0; i < 256; ++i) {
6614
+ byteToHex$1.push((i + 0x100).toString(16).slice(1));
6615
+ }
6616
+
6604
6617
  /*********************************************/
6605
6618
  /* 元素属性参数类型 */
6606
6619
  /*********************************************/
@@ -6863,6 +6876,10 @@ var ItemType$1;
6863
6876
  * 天空盒元素
6864
6877
  */
6865
6878
  ItemType["skybox"] = "skybox";
6879
+ /**
6880
+ * 特效元素
6881
+ */
6882
+ ItemType["effect"] = "effect";
6866
6883
  })(ItemType$1 || (ItemType$1 = {}));
6867
6884
  /**
6868
6885
  * 渲染模式
@@ -6977,6 +6994,10 @@ var CompositionEndBehavior$1;
6977
6994
  * 销毁并保留最后一帧
6978
6995
  */
6979
6996
  CompositionEndBehavior[CompositionEndBehavior["pause_destroy"] = END_BEHAVIOR_PAUSE_AND_DESTROY$1] = "pause_destroy";
6997
+ /**
6998
+ * 冻结
6999
+ */
7000
+ CompositionEndBehavior[CompositionEndBehavior["freeze"] = END_BEHAVIOR_FREEZE$1] = "freeze";
6980
7001
  })(CompositionEndBehavior$1 || (CompositionEndBehavior$1 = {}));
6981
7002
 
6982
7003
  /*********************************************/
@@ -7115,12 +7136,38 @@ var ShapeArcMode$1;
7115
7136
 
7116
7137
  var BloomFilterThresholdAvgColor = 0;
7117
7138
 
7139
+ var LightType$1;
7140
+ (function (LightType) {
7141
+ /**
7142
+ * 点光源
7143
+ */
7144
+ LightType["point"] = "point";
7145
+ /**
7146
+ * 聚光灯
7147
+ */
7148
+ LightType["spot"] = "spot";
7149
+ /**
7150
+ * 方向光
7151
+ */
7152
+ LightType["directional"] = "directional";
7153
+ /**
7154
+ * 环境光
7155
+ */
7156
+ LightType["ambient"] = "ambient";
7157
+ })(LightType$1 || (LightType$1 = {}));
7158
+
7118
7159
  var ModelBoundingType$1;
7119
7160
  (function (ModelBoundingType) {
7120
7161
  ModelBoundingType[ModelBoundingType["box"] = 2] = "box";
7121
7162
  ModelBoundingType[ModelBoundingType["sphere"] = 3] = "sphere";
7122
7163
  })(ModelBoundingType$1 || (ModelBoundingType$1 = {}));
7123
7164
 
7165
+ var CameraType$1;
7166
+ (function (CameraType) {
7167
+ CameraType["orthographic"] = "orthographic";
7168
+ CameraType["perspective"] = "perspective";
7169
+ })(CameraType$1 || (CameraType$1 = {}));
7170
+
7124
7171
  // 材质类型
7125
7172
  var MaterialType$1;
7126
7173
  (function (MaterialType) {
@@ -7266,6 +7313,28 @@ var FontStyle$1;
7266
7313
  FontStyle["oblique"] = "oblique";
7267
7314
  })(FontStyle$1 || (FontStyle$1 = {}));
7268
7315
 
7316
+ var DataType$1;
7317
+ (function (DataType) {
7318
+ DataType["VFXItemData"] = "VFXItemData";
7319
+ DataType["EffectComponent"] = "EffectComponent";
7320
+ DataType["Material"] = "Material";
7321
+ DataType["Shader"] = "Shader";
7322
+ DataType["SpriteComponent"] = "SpriteComponent";
7323
+ DataType["ParticleSystem"] = "ParticleSystem";
7324
+ DataType["InteractComponent"] = "InteractComponent";
7325
+ DataType["CameraController"] = "CameraController";
7326
+ DataType["Geometry"] = "Geometry";
7327
+ DataType["Texture"] = "Texture";
7328
+ DataType["TextComponent"] = "TextComponent";
7329
+ // FIXME: 先完成ECS的场景转换,后面移到spec中
7330
+ DataType["MeshComponent"] = "MeshComponent";
7331
+ DataType["SkyboxComponent"] = "SkyboxComponent";
7332
+ DataType["LightComponent"] = "LightComponent";
7333
+ DataType["CameraComponent"] = "CameraComponent";
7334
+ DataType["ModelPluginComponent"] = "ModelPluginComponent";
7335
+ DataType["TreeComponent"] = "TreeComponent";
7336
+ })(DataType$1 || (DataType$1 = {}));
7337
+
7269
7338
  var index = /*#__PURE__*/Object.freeze({
7270
7339
  __proto__: null,
7271
7340
  get BezierKeyframeType () { return BezierKeyframeType$1; },
@@ -7274,7 +7343,9 @@ var index = /*#__PURE__*/Object.freeze({
7274
7343
  CAMERA_CLIP_MODE_NORMAL: CAMERA_CLIP_MODE_NORMAL$1,
7275
7344
  CAMERA_CLIP_MODE_VERTICAL: CAMERA_CLIP_MODE_VERTICAL$1,
7276
7345
  get CameraClipMode () { return CameraClipMode$1; },
7346
+ get CameraType () { return CameraType$1; },
7277
7347
  get CompositionEndBehavior () { return CompositionEndBehavior$1; },
7348
+ get DataType () { return DataType$1; },
7278
7349
  END_BEHAVIOR_DESTROY: END_BEHAVIOR_DESTROY$1,
7279
7350
  END_BEHAVIOR_DESTROY_CHILDREN: END_BEHAVIOR_DESTROY_CHILDREN$1,
7280
7351
  END_BEHAVIOR_FORWARD: END_BEHAVIOR_FORWARD$1,
@@ -7287,6 +7358,7 @@ var index = /*#__PURE__*/Object.freeze({
7287
7358
  get InteractType () { return InteractType$1; },
7288
7359
  get ItemEndBehavior () { return ItemEndBehavior$1; },
7289
7360
  get ItemType () { return ItemType$1; },
7361
+ get LightType () { return LightType$1; },
7290
7362
  MESSAGE_ITEM_PHRASE_BEGIN: MESSAGE_ITEM_PHRASE_BEGIN,
7291
7363
  MESSAGE_ITEM_PHRASE_END: MESSAGE_ITEM_PHRASE_END,
7292
7364
  get MaskMode () { return MaskMode$1; },
@@ -7364,390 +7436,121 @@ function generateSerializableMember(type, sourceName) {
7364
7436
  };
7365
7437
  }
7366
7438
 
7439
+ exports.ShaderType = void 0;
7440
+ (function (ShaderType) {
7441
+ ShaderType[ShaderType["vertex"] = 0] = "vertex";
7442
+ ShaderType[ShaderType["fragment"] = 1] = "fragment";
7443
+ })(exports.ShaderType || (exports.ShaderType = {}));
7444
+
7367
7445
  /**
7368
- * @since 2.0.0
7369
- * @internal
7446
+ * Helper class to create a WebGL Context
7447
+ *
7448
+ * @param canvas
7449
+ * @param glType
7450
+ * @param options
7451
+ * @returns
7370
7452
  */
7371
- var EffectsObject = /** @class */ (function () {
7372
- function EffectsObject(engine) {
7373
- this.engine = engine;
7374
- this.guid = generateGUID();
7375
- this.taggedProperties = {};
7376
- this.engine.addInstance(this);
7453
+ function createGLContext(canvas, glType, options) {
7454
+ if (glType === void 0) { glType = 'webgl'; }
7455
+ var context;
7456
+ if (glType === 'webgl2') {
7457
+ context = canvas.getContext('webgl2', options);
7458
+ if (!context) {
7459
+ console.debug('WebGL2 context retrieval failed, falling back to WebGL context.');
7460
+ }
7377
7461
  }
7378
- EffectsObject.prototype.getInstanceId = function () {
7379
- return this.guid;
7380
- };
7381
- EffectsObject.prototype.setInstanceId = function (guid) {
7382
- this.engine.removeInstance(this.guid);
7383
- this.guid = guid;
7384
- this.engine.addInstance(this);
7385
- };
7386
- EffectsObject.prototype.toData = function () { };
7387
- /**
7388
- * 反序列化函数
7389
- *
7390
- * @param data - 对象的序列化的数据
7391
- */
7392
- EffectsObject.prototype.fromData = function (data) {
7393
- if (data.id) {
7394
- this.setInstanceId(data.id);
7462
+ if (!context || glType === 'webgl') {
7463
+ context = canvas.getContext('webgl', options);
7464
+ }
7465
+ if (!context) {
7466
+ throw new Error('This browser does not support WebGL or the WebGL version is incorrect. Please check your WebGL version.');
7467
+ }
7468
+ return context;
7469
+ }
7470
+
7471
+ function gpuTimer(gl) {
7472
+ var _this = this;
7473
+ var ext = gl.getExtension('EXT_disjoint_timer_query_webgl2');
7474
+ if (ext) {
7475
+ var query_1 = gl.createQuery();
7476
+ var getTime_1 = function () { return __awaiter(_this, void 0, void 0, function () {
7477
+ return __generator(this, function (_a) {
7478
+ return [2 /*return*/, new Promise(function (resolve, reject) {
7479
+ if (query_1) {
7480
+ var available = gl.getQueryParameter(query_1, gl.QUERY_RESULT_AVAILABLE);
7481
+ var disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);
7482
+ if (available && !disjoint) {
7483
+ // See how much time the rendering of the object took in nanoseconds.
7484
+ var timeElapsed = gl.getQueryParameter(query_1, gl.QUERY_RESULT); // Do something useful with the time. Note that care should be
7485
+ // taken to use all significant bits of the result, not just the
7486
+ // least significant 32 bits.
7487
+ resolve(timeElapsed / 1000 / 1000);
7488
+ }
7489
+ if (available || disjoint) {
7490
+ // Clean up the query object.
7491
+ gl.deleteQuery(query_1); // Don't re-enter this polling loop.
7492
+ query_1 = null;
7493
+ }
7494
+ available !== null && query_1 && window.setTimeout(function () {
7495
+ getTime_1().then(resolve).catch;
7496
+ }, 1);
7497
+ }
7498
+ })];
7499
+ });
7500
+ }); };
7501
+ if (!query_1) {
7502
+ return;
7395
7503
  }
7396
- };
7397
- EffectsObject.prototype.dispose = function () { };
7398
- __decorate([
7399
- serialize()
7400
- ], EffectsObject.prototype, "guid", void 0);
7401
- return EffectsObject;
7402
- }());
7504
+ return {
7505
+ begin: function () {
7506
+ query_1 && gl.beginQuery(ext.TIME_ELAPSED_EXT, query_1);
7507
+ },
7508
+ end: function () {
7509
+ gl.endQuery(ext.TIME_ELAPSED_EXT);
7510
+ },
7511
+ getTime: getTime_1,
7512
+ };
7513
+ }
7514
+ }
7403
7515
 
7404
- /**
7405
- * @since 2.0.0
7406
- * @internal
7407
- */
7408
- var Component = /** @class */ (function (_super) {
7409
- __extends(Component, _super);
7410
- function Component() {
7411
- return _super !== null && _super.apply(this, arguments) || this;
7516
+ var initErrors = [];
7517
+ // @ts-expect-error
7518
+ var glContext = {};
7519
+ if (!initErrors.length) {
7520
+ initGLContext();
7521
+ }
7522
+ function initGLContext() {
7523
+ // 重要:iOS 9/10 低版本需要拷贝 gl context prototype,要不然会有属性值的缺失
7524
+ if (typeof WebGL2RenderingContext === 'function') {
7525
+ copy$1(WebGL2RenderingContext);
7412
7526
  }
7413
- Object.defineProperty(Component.prototype, "transform", {
7414
- /**
7415
- * 附加到的 VFXItem 对象 Transform 组件
7416
- */
7417
- get: function () {
7418
- return this.item.transform;
7419
- },
7420
- enumerable: false,
7421
- configurable: true
7422
- });
7423
- Component.prototype.onAttached = function () { };
7424
- Component.prototype.onDestroy = function () { };
7425
- Component.prototype.fromData = function (data) {
7426
- _super.prototype.fromData.call(this, data);
7427
- if (data.item) {
7428
- this.item = data.item;
7429
- }
7430
- };
7431
- Component.prototype.dispose = function () {
7432
- this.onDestroy();
7433
- if (this.item) {
7434
- removeItem(this.item.components, this);
7527
+ else if (typeof WebGLRenderingContext !== 'undefined') {
7528
+ copy$1(WebGLRenderingContext);
7529
+ copy$1(WebGLRenderingContext.prototype);
7530
+ }
7531
+ else {
7532
+ initErrors.push(
7533
+ // iOS 16 lockdown mode
7534
+ 'iOS16 lockdown mode, WebGL Constants not in global');
7535
+ }
7536
+ if (!initErrors.length && !('HALF_FLOAT' in glContext)) {
7537
+ // @ts-expect-error set default value
7538
+ glContext['HALF_FLOAT'] = 5131;
7539
+ }
7540
+ }
7541
+ function isWebGL2(gl) {
7542
+ return typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';
7543
+ }
7544
+ function copy$1(target) {
7545
+ for (var name_1 in target) {
7546
+ if (/^[A-Z_]/.test(name_1)) {
7547
+ // @ts-expect-error safe to assign
7548
+ glContext[name_1] = target[name_1];
7435
7549
  }
7436
- };
7437
- return Component;
7438
- }(EffectsObject));
7439
- /**
7440
- * @since 2.0.0
7441
- * @internal
7442
- */
7443
- var Behaviour = /** @class */ (function (_super) {
7444
- __extends(Behaviour, _super);
7445
- function Behaviour() {
7446
- var _this = _super !== null && _super.apply(this, arguments) || this;
7447
- _this._enabled = true;
7448
- return _this;
7449
- }
7450
- Object.defineProperty(Behaviour.prototype, "isActiveAndEnabled", {
7451
- /**
7452
- * 组件是否可以更新,true 更新,false 不更新
7453
- */
7454
- get: function () {
7455
- return this.item.getVisible() && this.enabled;
7456
- },
7457
- enumerable: false,
7458
- configurable: true
7459
- });
7460
- Object.defineProperty(Behaviour.prototype, "enabled", {
7461
- get: function () {
7462
- return this._enabled;
7463
- },
7464
- set: function (value) {
7465
- this._enabled = value;
7466
- if (value) {
7467
- this.onBehaviourEnable();
7468
- }
7469
- },
7470
- enumerable: false,
7471
- configurable: true
7472
- });
7473
- Behaviour.prototype.onBehaviourEnable = function () { };
7474
- Behaviour.prototype.fromData = function (data) {
7475
- _super.prototype.fromData.call(this, data);
7476
- };
7477
- Behaviour.prototype.toData = function () {
7478
- _super.prototype.toData.call(this);
7479
- };
7480
- __decorate([
7481
- serialize()
7482
- ], Behaviour.prototype, "_enabled", void 0);
7483
- return Behaviour;
7484
- }(Component));
7485
- /**
7486
- * @since 2.0.0
7487
- * @internal
7488
- */
7489
- var ItemBehaviour = /** @class */ (function (_super) {
7490
- __extends(ItemBehaviour, _super);
7491
- function ItemBehaviour() {
7492
- var _this = _super !== null && _super.apply(this, arguments) || this;
7493
- _this.started = false;
7494
- return _this;
7495
- }
7496
- // /**
7497
- // * 生命周期函数,初始化后调用,生命周期内只调用一次
7498
- // */
7499
- // awake () {
7500
- // // OVERRIDE
7501
- // }
7502
- /**
7503
- * 在每次设置 enabled 为 true 时触发
7504
- */
7505
- ItemBehaviour.prototype.onEnable = function () { };
7506
- /**
7507
- * 生命周期函数,在第一次 update 前调用,生命周期内只调用一次
7508
- */
7509
- ItemBehaviour.prototype.start = function () {
7510
- // OVERRIDE
7511
- };
7512
- /**
7513
- * 生命周期函数,每帧调用一次
7514
- */
7515
- ItemBehaviour.prototype.update = function (dt) {
7516
- // OVERRIDE
7517
- };
7518
- /**
7519
- * 生命周期函数,每帧调用一次,在 update 之后调用
7520
- */
7521
- ItemBehaviour.prototype.lateUpdate = function (dt) {
7522
- // OVERRIDE
7523
- };
7524
- ItemBehaviour.prototype.onAttached = function () {
7525
- this.item.itemBehaviours.push(this);
7526
- };
7527
- ItemBehaviour.prototype.dispose = function () {
7528
- if (this.item) {
7529
- removeItem(this.item.itemBehaviours, this);
7530
- }
7531
- _super.prototype.dispose.call(this);
7532
- };
7533
- ItemBehaviour.prototype.onBehaviourEnable = function () {
7534
- this.onEnable();
7535
- if (!this.started) {
7536
- this.start();
7537
- this.started = true;
7538
- }
7539
- };
7540
- return ItemBehaviour;
7541
- }(Behaviour));
7542
-
7543
- /**
7544
- * 所有渲染组件的基类
7545
- * @since 2.0.0
7546
- */
7547
- var RendererComponent = /** @class */ (function (_super) {
7548
- __extends(RendererComponent, _super);
7549
- function RendererComponent() {
7550
- var _this = _super !== null && _super.apply(this, arguments) || this;
7551
- _this.started = false;
7552
- _this.materials = [];
7553
- _this._enabled = true;
7554
- return _this;
7555
- }
7556
- Object.defineProperty(RendererComponent.prototype, "priority", {
7557
- get: function () {
7558
- return this._priority;
7559
- },
7560
- set: function (value) {
7561
- this._priority = value;
7562
- },
7563
- enumerable: false,
7564
- configurable: true
7565
- });
7566
- Object.defineProperty(RendererComponent.prototype, "enabled", {
7567
- get: function () {
7568
- return this._enabled;
7569
- },
7570
- set: function (value) {
7571
- this._enabled = value;
7572
- if (value) {
7573
- this.onEnable();
7574
- }
7575
- },
7576
- enumerable: false,
7577
- configurable: true
7578
- });
7579
- Object.defineProperty(RendererComponent.prototype, "isActiveAndEnabled", {
7580
- /**
7581
- * 组件是否可以更新,true 更新,false 不更新
7582
- */
7583
- get: function () {
7584
- return this.item.getVisible() && this.enabled;
7585
- },
7586
- enumerable: false,
7587
- configurable: true
7588
- });
7589
- Object.defineProperty(RendererComponent.prototype, "material", {
7590
- get: function () {
7591
- return this.materials[0];
7592
- },
7593
- set: function (material) {
7594
- if (this.materials.length === 0) {
7595
- this.materials.push(material);
7596
- }
7597
- else {
7598
- this.materials[0] = material;
7599
- }
7600
- },
7601
- enumerable: false,
7602
- configurable: true
7603
- });
7604
- RendererComponent.prototype.onEnable = function () { };
7605
- RendererComponent.prototype.start = function () { };
7606
- RendererComponent.prototype.update = function (dt) { };
7607
- RendererComponent.prototype.lateUpdate = function (dt) { };
7608
- RendererComponent.prototype.render = function (renderer) { };
7609
- RendererComponent.prototype.onAttached = function () {
7610
- this.item.rendererComponents.push(this);
7611
- };
7612
- RendererComponent.prototype.fromData = function (data) {
7613
- _super.prototype.fromData.call(this, data);
7614
- };
7615
- RendererComponent.prototype.toData = function () {
7616
- _super.prototype.toData.call(this);
7617
- };
7618
- RendererComponent.prototype.dispose = function () {
7619
- if (this.item) {
7620
- removeItem(this.item.rendererComponents, this);
7621
- }
7622
- _super.prototype.dispose.call(this);
7623
- };
7624
- __decorate([
7625
- serialize()
7626
- ], RendererComponent.prototype, "materials", void 0);
7627
- __decorate([
7628
- serialize()
7629
- ], RendererComponent.prototype, "_priority", void 0);
7630
- __decorate([
7631
- serialize()
7632
- ], RendererComponent.prototype, "_enabled", void 0);
7633
- return RendererComponent;
7634
- }(Component));
7635
-
7636
- exports.ShaderType = void 0;
7637
- (function (ShaderType) {
7638
- ShaderType[ShaderType["vertex"] = 0] = "vertex";
7639
- ShaderType[ShaderType["fragment"] = 1] = "fragment";
7640
- })(exports.ShaderType || (exports.ShaderType = {}));
7641
-
7642
- /**
7643
- * Helper class to create a WebGL Context
7644
- *
7645
- * @param canvas
7646
- * @param glType
7647
- * @param options
7648
- * @returns
7649
- */
7650
- function createGLContext(canvas, glType, options) {
7651
- if (glType === void 0) { glType = 'webgl'; }
7652
- var context;
7653
- if (glType === 'webgl2') {
7654
- context = canvas.getContext('webgl2', options);
7655
- if (!context) {
7656
- console.debug('WebGL2 context retrieval failed, falling back to WebGL context.');
7657
- }
7658
- }
7659
- if (!context || glType === 'webgl') {
7660
- context = canvas.getContext('webgl', options);
7661
- }
7662
- if (!context) {
7663
- throw new Error('This browser does not support WebGL or the WebGL version is incorrect. Please check your WebGL version.');
7664
- }
7665
- return context;
7666
- }
7667
-
7668
- function gpuTimer(gl) {
7669
- var _this = this;
7670
- var ext = gl.getExtension('EXT_disjoint_timer_query_webgl2');
7671
- if (ext) {
7672
- var query_1 = gl.createQuery();
7673
- var getTime_1 = function () { return __awaiter(_this, void 0, void 0, function () {
7674
- return __generator(this, function (_a) {
7675
- return [2 /*return*/, new Promise(function (resolve, reject) {
7676
- if (query_1) {
7677
- var available = gl.getQueryParameter(query_1, gl.QUERY_RESULT_AVAILABLE);
7678
- var disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);
7679
- if (available && !disjoint) {
7680
- // See how much time the rendering of the object took in nanoseconds.
7681
- var timeElapsed = gl.getQueryParameter(query_1, gl.QUERY_RESULT); // Do something useful with the time. Note that care should be
7682
- // taken to use all significant bits of the result, not just the
7683
- // least significant 32 bits.
7684
- resolve(timeElapsed / 1000 / 1000);
7685
- }
7686
- if (available || disjoint) {
7687
- // Clean up the query object.
7688
- gl.deleteQuery(query_1); // Don't re-enter this polling loop.
7689
- query_1 = null;
7690
- }
7691
- available !== null && query_1 && window.setTimeout(function () {
7692
- getTime_1().then(resolve).catch;
7693
- }, 1);
7694
- }
7695
- })];
7696
- });
7697
- }); };
7698
- if (!query_1) {
7699
- return;
7700
- }
7701
- return {
7702
- begin: function () {
7703
- query_1 && gl.beginQuery(ext.TIME_ELAPSED_EXT, query_1);
7704
- },
7705
- end: function () {
7706
- gl.endQuery(ext.TIME_ELAPSED_EXT);
7707
- },
7708
- getTime: getTime_1,
7709
- };
7710
7550
  }
7711
7551
  }
7712
7552
 
7713
- var initErrors = [];
7714
- // @ts-expect-error
7715
- var glContext = {};
7716
- if (!initErrors.length) {
7717
- initGLContext();
7718
- }
7719
- function initGLContext() {
7720
- // 重要:iOS 9/10 低版本需要拷贝 gl context 的 prototype,要不然会有属性值的缺失
7721
- if (typeof WebGL2RenderingContext === 'function') {
7722
- copy$1(WebGL2RenderingContext);
7723
- }
7724
- else if (typeof WebGLRenderingContext !== 'undefined') {
7725
- copy$1(WebGLRenderingContext);
7726
- copy$1(WebGLRenderingContext.prototype);
7727
- }
7728
- else {
7729
- initErrors.push(
7730
- // iOS 16 lockdown mode
7731
- 'iOS16 lockdown mode, WebGL Constants not in global');
7732
- }
7733
- if (!initErrors.length && !('HALF_FLOAT' in glContext)) {
7734
- // @ts-expect-error set default value
7735
- glContext['HALF_FLOAT'] = 5131;
7736
- }
7737
- }
7738
- function isWebGL2(gl) {
7739
- return typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';
7740
- }
7741
- function copy$1(target) {
7742
- for (var name_1 in target) {
7743
- if (/^[A-Z_]/.test(name_1)) {
7744
- // @ts-expect-error safe to assign
7745
- glContext[name_1] = target[name_1];
7746
- }
7747
- }
7748
- }
7749
-
7750
- var _a$6;
7553
+ var _a$7;
7751
7554
  function valIfUndefined(val, def) {
7752
7555
  if (val === undefined || val === null) {
7753
7556
  return def;
@@ -7777,15 +7580,15 @@ function getPreMultiAlpha(blending) {
7777
7580
  return 1;
7778
7581
  }
7779
7582
  }
7780
- var downgradeKeywords = (_a$6 = {},
7781
- _a$6[exports.ShaderType.vertex] = {
7583
+ var downgradeKeywords = (_a$7 = {},
7584
+ _a$7[exports.ShaderType.vertex] = {
7782
7585
  in: 'attribute',
7783
7586
  out: 'varying',
7784
7587
  },
7785
- _a$6[exports.ShaderType.fragment] = {
7588
+ _a$7[exports.ShaderType.fragment] = {
7786
7589
  in: 'varying',
7787
7590
  },
7788
- _a$6);
7591
+ _a$7);
7789
7592
  /**
7790
7593
  * 生成 shader,检测到 WebGL1 上下文会降级
7791
7594
  * @param marcos - 宏定义数组
@@ -8219,6 +8022,43 @@ function loadMipmapImage(pointer, bins) {
8219
8022
  });
8220
8023
  }
8221
8024
 
8025
+ /**
8026
+ * @since 2.0.0
8027
+ * @internal
8028
+ */
8029
+ var EffectsObject = /** @class */ (function () {
8030
+ function EffectsObject(engine) {
8031
+ this.engine = engine;
8032
+ this.guid = generateGUID$1();
8033
+ this.taggedProperties = {};
8034
+ this.engine.addInstance(this);
8035
+ }
8036
+ EffectsObject.prototype.getInstanceId = function () {
8037
+ return this.guid;
8038
+ };
8039
+ EffectsObject.prototype.setInstanceId = function (guid) {
8040
+ this.engine.removeInstance(this.guid);
8041
+ this.guid = guid;
8042
+ this.engine.addInstance(this);
8043
+ };
8044
+ EffectsObject.prototype.toData = function () { };
8045
+ /**
8046
+ * 反序列化函数
8047
+ *
8048
+ * @param data - 对象的序列化的数据
8049
+ */
8050
+ EffectsObject.prototype.fromData = function (data) {
8051
+ if (data.id) {
8052
+ this.setInstanceId(data.id);
8053
+ }
8054
+ };
8055
+ EffectsObject.prototype.dispose = function () { };
8056
+ __decorate([
8057
+ serialize()
8058
+ ], EffectsObject.prototype, "guid", void 0);
8059
+ return EffectsObject;
8060
+ }());
8061
+
8222
8062
  var seed$a = 1;
8223
8063
  /**
8224
8064
  * Texture 抽象类
@@ -8886,13 +8726,49 @@ exports.GLSLVersion = void 0;
8886
8726
  GLSLVersion["GLSL1"] = "100";
8887
8727
  GLSLVersion["GLSL3"] = "300 es";
8888
8728
  })(exports.GLSLVersion || (exports.GLSLVersion = {}));
8889
- var Shader = /** @class */ (function (_super) {
8890
- __extends(Shader, _super);
8891
- function Shader(engine, source) {
8729
+ var ShaderVariant = /** @class */ (function (_super) {
8730
+ __extends(ShaderVariant, _super);
8731
+ function ShaderVariant(engine, source) {
8892
8732
  var _this = _super.call(this, engine) || this;
8893
8733
  _this.source = source;
8894
8734
  return _this;
8895
8735
  }
8736
+ return ShaderVariant;
8737
+ }(EffectsObject));
8738
+ var Shader = /** @class */ (function (_super) {
8739
+ __extends(Shader, _super);
8740
+ function Shader() {
8741
+ return _super !== null && _super.apply(this, arguments) || this;
8742
+ }
8743
+ Shader.prototype.createVariant = function (macros) {
8744
+ var e_1, _a;
8745
+ var shaderMacros = [];
8746
+ if (macros) {
8747
+ try {
8748
+ for (var _b = __values$1(Object.keys(macros)), _c = _b.next(); !_c.done; _c = _b.next()) {
8749
+ var key = _c.value;
8750
+ shaderMacros.push([key, macros[key]]);
8751
+ }
8752
+ }
8753
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
8754
+ finally {
8755
+ try {
8756
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
8757
+ }
8758
+ finally { if (e_1) throw e_1.error; }
8759
+ }
8760
+ }
8761
+ var shaderVariant = this.engine.getShaderLibrary().createShader(this.shaderData, shaderMacros);
8762
+ shaderVariant.shader = this;
8763
+ return shaderVariant;
8764
+ };
8765
+ Shader.prototype.fromData = function (data) {
8766
+ _super.prototype.fromData.call(this, data);
8767
+ this.shaderData = data;
8768
+ };
8769
+ Shader = __decorate([
8770
+ effectsClass('Shader')
8771
+ ], Shader);
8896
8772
  return Shader;
8897
8773
  }(EffectsObject));
8898
8774
 
@@ -8905,8 +8781,8 @@ function createCopyShader(level, writeDepth) {
8905
8781
  var version = webgl2 ? '#version 300 es' : '';
8906
8782
  return {
8907
8783
  name: EFFECTS_COPY_MESH_NAME,
8908
- vertex: createShaderWithMarcos([], version + '\n' + COPY_VERTEX_SHADER, exports.ShaderType.vertex, level),
8909
- fragment: createShaderWithMarcos([], version + '\n' + COPY_FRAGMENT_SHADER, exports.ShaderType.fragment, level),
8784
+ vertex: version + '\n' + COPY_VERTEX_SHADER,
8785
+ fragment: version + '\n' + COPY_FRAGMENT_SHADER,
8910
8786
  glslVersion: webgl2 ? exports.GLSLVersion.GLSL3 : exports.GLSLVersion.GLSL1,
8911
8787
  marcos: [
8912
8788
  ['WEBGL2', !!webgl2],
@@ -9038,13 +8914,13 @@ var SemanticMap = /** @class */ (function () {
9038
8914
  return SemanticMap;
9039
8915
  }());
9040
8916
 
9041
- var _a$5;
9042
- var BYTES_TYPE_MAP = (_a$5 = {},
9043
- _a$5[glContext.FLOAT] = Float32Array.BYTES_PER_ELEMENT,
9044
- _a$5[glContext.INT] = Int32Array.BYTES_PER_ELEMENT,
9045
- _a$5[glContext.SHORT] = Int16Array.BYTES_PER_ELEMENT,
9046
- _a$5[glContext.BYTE] = Int8Array.BYTES_PER_ELEMENT,
9047
- _a$5);
8917
+ var _a$6;
8918
+ var BYTES_TYPE_MAP = (_a$6 = {},
8919
+ _a$6[glContext.FLOAT] = Float32Array.BYTES_PER_ELEMENT,
8920
+ _a$6[glContext.INT] = Int32Array.BYTES_PER_ELEMENT,
8921
+ _a$6[glContext.SHORT] = Int16Array.BYTES_PER_ELEMENT,
8922
+ _a$6[glContext.BYTE] = Int8Array.BYTES_PER_ELEMENT,
8923
+ _a$6);
9048
8924
  /**
9049
8925
  * Geometry 抽象类
9050
8926
  */
@@ -9057,26 +8933,258 @@ var Geometry = /** @class */ (function (_super) {
9057
8933
  * 初始化 GPU 资源
9058
8934
  * @override
9059
8935
  */
9060
- Geometry.prototype.initialize = function () {
8936
+ Geometry.prototype.initialize = function () {
8937
+ // OVERRIDE
8938
+ };
8939
+ /**
8940
+ * 几何数据刷新
8941
+ */
8942
+ Geometry.prototype.flush = function () {
8943
+ // OVERRIDE
8944
+ };
8945
+ return Geometry;
8946
+ }(EffectsObject));
8947
+ function generateEmptyTypedArray(type) {
8948
+ if (type === glContext.INT) {
8949
+ return new Int32Array(0);
8950
+ }
8951
+ if (type === glContext.SHORT) {
8952
+ return new Int16Array(0);
8953
+ }
8954
+ return new Float32Array(0);
8955
+ }
8956
+
8957
+ /**
8958
+ * @since 2.0.0
8959
+ * @internal
8960
+ */
8961
+ var Component = /** @class */ (function (_super) {
8962
+ __extends(Component, _super);
8963
+ function Component() {
8964
+ return _super !== null && _super.apply(this, arguments) || this;
8965
+ }
8966
+ Object.defineProperty(Component.prototype, "transform", {
8967
+ /**
8968
+ * 附加到的 VFXItem 对象 Transform 组件
8969
+ */
8970
+ get: function () {
8971
+ return this.item.transform;
8972
+ },
8973
+ enumerable: false,
8974
+ configurable: true
8975
+ });
8976
+ Component.prototype.onAttached = function () { };
8977
+ Component.prototype.onDestroy = function () { };
8978
+ Component.prototype.fromData = function (data) {
8979
+ _super.prototype.fromData.call(this, data);
8980
+ if (data.item) {
8981
+ this.item = data.item;
8982
+ }
8983
+ };
8984
+ Component.prototype.dispose = function () {
8985
+ this.onDestroy();
8986
+ if (this.item) {
8987
+ removeItem(this.item.components, this);
8988
+ }
8989
+ };
8990
+ return Component;
8991
+ }(EffectsObject));
8992
+ /**
8993
+ * @since 2.0.0
8994
+ * @internal
8995
+ */
8996
+ var Behaviour = /** @class */ (function (_super) {
8997
+ __extends(Behaviour, _super);
8998
+ function Behaviour() {
8999
+ var _this = _super !== null && _super.apply(this, arguments) || this;
9000
+ _this._enabled = true;
9001
+ return _this;
9002
+ }
9003
+ Object.defineProperty(Behaviour.prototype, "isActiveAndEnabled", {
9004
+ /**
9005
+ * 组件是否可以更新,true 更新,false 不更新
9006
+ */
9007
+ get: function () {
9008
+ return this.item.getVisible() && this.enabled;
9009
+ },
9010
+ enumerable: false,
9011
+ configurable: true
9012
+ });
9013
+ Object.defineProperty(Behaviour.prototype, "enabled", {
9014
+ get: function () {
9015
+ return this._enabled;
9016
+ },
9017
+ set: function (value) {
9018
+ this._enabled = value;
9019
+ if (value) {
9020
+ this.onBehaviourEnable();
9021
+ }
9022
+ },
9023
+ enumerable: false,
9024
+ configurable: true
9025
+ });
9026
+ Behaviour.prototype.onBehaviourEnable = function () { };
9027
+ Behaviour.prototype.fromData = function (data) {
9028
+ _super.prototype.fromData.call(this, data);
9029
+ };
9030
+ Behaviour.prototype.toData = function () {
9031
+ _super.prototype.toData.call(this);
9032
+ };
9033
+ __decorate([
9034
+ serialize()
9035
+ ], Behaviour.prototype, "_enabled", void 0);
9036
+ return Behaviour;
9037
+ }(Component));
9038
+ /**
9039
+ * @since 2.0.0
9040
+ * @internal
9041
+ */
9042
+ var ItemBehaviour = /** @class */ (function (_super) {
9043
+ __extends(ItemBehaviour, _super);
9044
+ function ItemBehaviour() {
9045
+ var _this = _super !== null && _super.apply(this, arguments) || this;
9046
+ _this.started = false;
9047
+ return _this;
9048
+ }
9049
+ // /**
9050
+ // * 生命周期函数,初始化后调用,生命周期内只调用一次
9051
+ // */
9052
+ // awake () {
9053
+ // // OVERRIDE
9054
+ // }
9055
+ /**
9056
+ * 在每次设置 enabled 为 true 时触发
9057
+ */
9058
+ ItemBehaviour.prototype.onEnable = function () { };
9059
+ /**
9060
+ * 生命周期函数,在第一次 update 前调用,生命周期内只调用一次
9061
+ */
9062
+ ItemBehaviour.prototype.start = function () {
9063
+ // OVERRIDE
9064
+ };
9065
+ /**
9066
+ * 生命周期函数,每帧调用一次
9067
+ */
9068
+ ItemBehaviour.prototype.update = function (dt) {
9061
9069
  // OVERRIDE
9062
9070
  };
9063
9071
  /**
9064
- * 几何数据刷新
9072
+ * 生命周期函数,每帧调用一次,在 update 之后调用
9065
9073
  */
9066
- Geometry.prototype.flush = function () {
9074
+ ItemBehaviour.prototype.lateUpdate = function (dt) {
9067
9075
  // OVERRIDE
9068
9076
  };
9069
- return Geometry;
9070
- }(EffectsObject));
9071
- function generateEmptyTypedArray(type) {
9072
- if (type === glContext.INT) {
9073
- return new Int32Array(0);
9074
- }
9075
- if (type === glContext.SHORT) {
9076
- return new Int16Array(0);
9077
+ ItemBehaviour.prototype.onAttached = function () {
9078
+ this.item.itemBehaviours.push(this);
9079
+ };
9080
+ ItemBehaviour.prototype.dispose = function () {
9081
+ if (this.item) {
9082
+ removeItem(this.item.itemBehaviours, this);
9083
+ }
9084
+ _super.prototype.dispose.call(this);
9085
+ };
9086
+ ItemBehaviour.prototype.onBehaviourEnable = function () {
9087
+ this.onEnable();
9088
+ if (!this.started) {
9089
+ this.start();
9090
+ this.started = true;
9091
+ }
9092
+ };
9093
+ return ItemBehaviour;
9094
+ }(Behaviour));
9095
+
9096
+ /**
9097
+ * 所有渲染组件的基类
9098
+ * @since 2.0.0
9099
+ */
9100
+ var RendererComponent = /** @class */ (function (_super) {
9101
+ __extends(RendererComponent, _super);
9102
+ function RendererComponent() {
9103
+ var _this = _super !== null && _super.apply(this, arguments) || this;
9104
+ _this.started = false;
9105
+ _this.materials = [];
9106
+ _this._enabled = true;
9107
+ return _this;
9077
9108
  }
9078
- return new Float32Array(0);
9079
- }
9109
+ Object.defineProperty(RendererComponent.prototype, "priority", {
9110
+ get: function () {
9111
+ return this._priority;
9112
+ },
9113
+ set: function (value) {
9114
+ this._priority = value;
9115
+ },
9116
+ enumerable: false,
9117
+ configurable: true
9118
+ });
9119
+ Object.defineProperty(RendererComponent.prototype, "enabled", {
9120
+ get: function () {
9121
+ return this._enabled;
9122
+ },
9123
+ set: function (value) {
9124
+ this._enabled = value;
9125
+ if (value) {
9126
+ this.onEnable();
9127
+ }
9128
+ },
9129
+ enumerable: false,
9130
+ configurable: true
9131
+ });
9132
+ Object.defineProperty(RendererComponent.prototype, "isActiveAndEnabled", {
9133
+ /**
9134
+ * 组件是否可以更新,true 更新,false 不更新
9135
+ */
9136
+ get: function () {
9137
+ return this.item.getVisible() && this.enabled;
9138
+ },
9139
+ enumerable: false,
9140
+ configurable: true
9141
+ });
9142
+ Object.defineProperty(RendererComponent.prototype, "material", {
9143
+ get: function () {
9144
+ return this.materials[0];
9145
+ },
9146
+ set: function (material) {
9147
+ if (this.materials.length === 0) {
9148
+ this.materials.push(material);
9149
+ }
9150
+ else {
9151
+ this.materials[0] = material;
9152
+ }
9153
+ },
9154
+ enumerable: false,
9155
+ configurable: true
9156
+ });
9157
+ RendererComponent.prototype.onEnable = function () { };
9158
+ RendererComponent.prototype.start = function () { };
9159
+ RendererComponent.prototype.update = function (dt) { };
9160
+ RendererComponent.prototype.lateUpdate = function (dt) { };
9161
+ RendererComponent.prototype.render = function (renderer) { };
9162
+ RendererComponent.prototype.onAttached = function () {
9163
+ this.item.rendererComponents.push(this);
9164
+ };
9165
+ RendererComponent.prototype.fromData = function (data) {
9166
+ _super.prototype.fromData.call(this, data);
9167
+ };
9168
+ RendererComponent.prototype.toData = function () {
9169
+ _super.prototype.toData.call(this);
9170
+ };
9171
+ RendererComponent.prototype.dispose = function () {
9172
+ if (this.item) {
9173
+ removeItem(this.item.rendererComponents, this);
9174
+ }
9175
+ _super.prototype.dispose.call(this);
9176
+ };
9177
+ __decorate([
9178
+ serialize()
9179
+ ], RendererComponent.prototype, "materials", void 0);
9180
+ __decorate([
9181
+ serialize()
9182
+ ], RendererComponent.prototype, "_priority", void 0);
9183
+ __decorate([
9184
+ serialize()
9185
+ ], RendererComponent.prototype, "_enabled", void 0);
9186
+ return RendererComponent;
9187
+ }(Component));
9080
9188
 
9081
9189
  var seed$8 = 1;
9082
9190
  /**
@@ -9381,7 +9489,7 @@ var RenderPass = /** @class */ (function () {
9381
9489
  RenderPass.prototype.setMeshes = function (meshes) {
9382
9490
  var _a;
9383
9491
  this.meshes.length = 0;
9384
- (_a = this.meshes).splice.apply(_a, __spreadArray$2([0, 0], __read$3(meshes), false));
9492
+ (_a = this.meshes).splice.apply(_a, __spreadArray$3([0, 0], __read$3(meshes), false));
9385
9493
  sortByOrder(this.meshes, this.meshOrder);
9386
9494
  return this.meshes;
9387
9495
  };
@@ -11313,7 +11421,7 @@ var SerializationHelper = /** @class */ (function () {
11313
11421
  };
11314
11422
  SerializationHelper.deserializeProperty = function (property, engine, level) {
11315
11423
  var e_11, _a, e_12, _b;
11316
- if (level > 10) {
11424
+ if (level > 14) {
11317
11425
  console.error('序列化数据的内嵌对象层数大于上限');
11318
11426
  return;
11319
11427
  }
@@ -11374,7 +11482,7 @@ var SerializationHelper = /** @class */ (function () {
11374
11482
  return __generator(this, function (_j) {
11375
11483
  switch (_j.label) {
11376
11484
  case 0:
11377
- if (level > 10) {
11485
+ if (level > 14) {
11378
11486
  console.error('序列化数据的内嵌对象层数大于上限');
11379
11487
  return [2 /*return*/];
11380
11488
  }
@@ -11465,7 +11573,7 @@ var SerializationHelper = /** @class */ (function () {
11465
11573
  };
11466
11574
  SerializationHelper.serializeObjectProperty = function (objectProperty, serializedData, level) {
11467
11575
  var e_15, _a;
11468
- if (level > 10) {
11576
+ if (level > 14) {
11469
11577
  console.error('序列化数据的内嵌对象层数大于上限');
11470
11578
  return;
11471
11579
  }
@@ -11510,7 +11618,7 @@ var SerializationHelper = /** @class */ (function () {
11510
11618
  }
11511
11619
  };
11512
11620
  SerializationHelper.serializeArrayProperty = function (arrayProperty, serializedData, level) {
11513
- if (level > 10) {
11621
+ if (level > 14) {
11514
11622
  console.error('序列化数据的内嵌对象层数大于上限');
11515
11623
  return;
11516
11624
  }
@@ -11575,9 +11683,6 @@ var AssetLoader = /** @class */ (function () {
11575
11683
  case exports.DataType.Texture:
11576
11684
  effectsObject = Texture.create(this.engine, effectsObjectData);
11577
11685
  return effectsObject;
11578
- case exports.DataType.Shader:
11579
- effectsObject = this.engine.getShaderLibrary().createShader(effectsObjectData);
11580
- break;
11581
11686
  default: {
11582
11687
  var classConstructor = AssetLoader.getClass(effectsObjectData.dataType);
11583
11688
  if (classConstructor) {
@@ -11630,9 +11735,6 @@ var AssetLoader = /** @class */ (function () {
11630
11735
  case exports.DataType.Texture:
11631
11736
  effectsObject = Texture.create(this.engine, effectsObjectData);
11632
11737
  return [2 /*return*/, effectsObject];
11633
- case exports.DataType.Shader:
11634
- effectsObject = this.engine.getShaderLibrary().createShader(effectsObjectData);
11635
- break;
11636
11738
  default: {
11637
11739
  classConstructor = AssetLoader.getClass(effectsObjectData.dataType);
11638
11740
  if (classConstructor) {
@@ -11676,24 +11778,24 @@ var Database = /** @class */ (function () {
11676
11778
  }());
11677
11779
  exports.DataType = void 0;
11678
11780
  (function (DataType) {
11679
- DataType[DataType["VFXItemData"] = 0] = "VFXItemData";
11680
- DataType[DataType["EffectComponent"] = 1] = "EffectComponent";
11681
- DataType[DataType["Material"] = 2] = "Material";
11682
- DataType[DataType["Shader"] = 3] = "Shader";
11683
- DataType[DataType["SpriteComponent"] = 4] = "SpriteComponent";
11684
- DataType[DataType["ParticleSystem"] = 5] = "ParticleSystem";
11685
- DataType[DataType["InteractComponent"] = 6] = "InteractComponent";
11686
- DataType[DataType["CameraController"] = 7] = "CameraController";
11687
- DataType[DataType["Geometry"] = 8] = "Geometry";
11688
- DataType[DataType["Texture"] = 9] = "Texture";
11689
- DataType[DataType["TextComponent"] = 10] = "TextComponent";
11781
+ DataType["VFXItemData"] = "VFXItemData";
11782
+ DataType["EffectComponent"] = "EffectComponent";
11783
+ DataType["Material"] = "Material";
11784
+ DataType["Shader"] = "Shader";
11785
+ DataType["SpriteComponent"] = "SpriteComponent";
11786
+ DataType["ParticleSystem"] = "ParticleSystem";
11787
+ DataType["InteractComponent"] = "InteractComponent";
11788
+ DataType["CameraController"] = "CameraController";
11789
+ DataType["Geometry"] = "Geometry";
11790
+ DataType["Texture"] = "Texture";
11791
+ DataType["TextComponent"] = "TextComponent";
11690
11792
  // FIXME: 先完成ECS的场景转换,后面移到spec中
11691
- DataType[DataType["MeshComponent"] = 10000] = "MeshComponent";
11692
- DataType[DataType["SkyboxComponent"] = 10001] = "SkyboxComponent";
11693
- DataType[DataType["LightComponent"] = 10002] = "LightComponent";
11694
- DataType[DataType["CameraComponent"] = 10003] = "CameraComponent";
11695
- DataType[DataType["ModelPluginComponent"] = 10004] = "ModelPluginComponent";
11696
- DataType[DataType["TreeComponent"] = 10005] = "TreeComponent";
11793
+ DataType["MeshComponent"] = "MeshComponent";
11794
+ DataType["SkyboxComponent"] = "SkyboxComponent";
11795
+ DataType["LightComponent"] = "LightComponent";
11796
+ DataType["CameraComponent"] = "CameraComponent";
11797
+ DataType["ModelPluginComponent"] = "ModelPluginComponent";
11798
+ DataType["TreeComponent"] = "TreeComponent";
11697
11799
  })(exports.DataType || (exports.DataType = {}));
11698
11800
 
11699
11801
  /**
@@ -11845,7 +11947,7 @@ function calculateTranslation(out, target, acc, time, duration, posData, velData
11845
11947
  return ret;
11846
11948
  }
11847
11949
 
11848
- var _a$4;
11950
+ var _a$5;
11849
11951
  function ensureVec3(num) {
11850
11952
  return Array.isArray(num) ? [num[0], num[1], num[2]] : [0, 0, 0];
11851
11953
  }
@@ -11868,7 +11970,7 @@ function vecNormalize(out, a) {
11868
11970
  out = [];
11869
11971
  }
11870
11972
  var ap = a;
11871
- var sum = Math.hypot.apply(Math, __spreadArray$2([], __read$3(ap), false));
11973
+ var sum = Math.hypot.apply(Math, __spreadArray$3([], __read$3(ap), false));
11872
11974
  if (sum === 0) {
11873
11975
  return vecAssign(out, ap, ap.length);
11874
11976
  }
@@ -11899,17 +12001,17 @@ function vecMulCombine(out, a, b) {
11899
12001
  }
11900
12002
  return out;
11901
12003
  }
11902
- var particleOriginTranslateMap = (_a$4 = {},
11903
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER] = [0, 0],
11904
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER_BOTTOM] = [0, -0.5],
11905
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER_TOP] = [0, 0.5],
11906
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_TOP] = [-0.5, 0.5],
11907
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_CENTER] = [-0.5, 0],
11908
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_BOTTOM] = [-0.5, -0.5],
11909
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_CENTER] = [0.5, 0],
11910
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
11911
- _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
11912
- _a$4);
12004
+ var particleOriginTranslateMap$1 = (_a$5 = {},
12005
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER] = [0, 0],
12006
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER_BOTTOM] = [0, -0.5],
12007
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER_TOP] = [0, 0.5],
12008
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_TOP] = [-0.5, 0.5],
12009
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_CENTER] = [-0.5, 0],
12010
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_BOTTOM] = [-0.5, -0.5],
12011
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_CENTER] = [0.5, 0],
12012
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
12013
+ _a$5[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
12014
+ _a$5);
11913
12015
  function nearestPowerOfTwo(value) {
11914
12016
  return Math.pow(2, Math.round(Math.log(value) / Math.LN2));
11915
12017
  }
@@ -11934,7 +12036,7 @@ function trianglesFromRect(position, halfWidth, halfHeight) {
11934
12036
  ];
11935
12037
  }
11936
12038
 
11937
- var _a$3;
12039
+ var _a$4;
11938
12040
  var NOT_IMPLEMENT = 'not_implement';
11939
12041
  var ValueGetter = /** @class */ (function () {
11940
12042
  function ValueGetter(arg) {
@@ -12442,50 +12544,50 @@ var BezierSegments = /** @class */ (function (_super) {
12442
12544
  };
12443
12545
  return BezierSegments;
12444
12546
  }(PathSegments));
12445
- var map$1 = (_a$3 = {},
12446
- _a$3[ValueType$1.RANDOM] = function (props) {
12547
+ var map$1 = (_a$4 = {},
12548
+ _a$4[ValueType$1.RANDOM] = function (props) {
12447
12549
  if (props[0] instanceof Array) {
12448
12550
  return new RandomVectorValue(props);
12449
12551
  }
12450
12552
  return new RandomValue(props);
12451
12553
  },
12452
- _a$3[ValueType$1.CONSTANT] = function (props) {
12554
+ _a$4[ValueType$1.CONSTANT] = function (props) {
12453
12555
  return new StaticValue(props);
12454
12556
  },
12455
- _a$3[ValueType$1.CONSTANT_VEC2] = function (props) {
12557
+ _a$4[ValueType$1.CONSTANT_VEC2] = function (props) {
12456
12558
  return new StaticValue(props);
12457
12559
  },
12458
- _a$3[ValueType$1.CONSTANT_VEC3] = function (props) {
12560
+ _a$4[ValueType$1.CONSTANT_VEC3] = function (props) {
12459
12561
  return new StaticValue(props);
12460
12562
  },
12461
- _a$3[ValueType$1.CONSTANT_VEC4] = function (props) {
12563
+ _a$4[ValueType$1.CONSTANT_VEC4] = function (props) {
12462
12564
  return new StaticValue(props);
12463
12565
  },
12464
- _a$3[ValueType$1.CURVE] = function (props) {
12566
+ _a$4[ValueType$1.CURVE] = function (props) {
12465
12567
  return new CurveValue(props);
12466
12568
  },
12467
- _a$3[ValueType$1.RGBA_COLOR] = function (props) {
12569
+ _a$4[ValueType$1.RGBA_COLOR] = function (props) {
12468
12570
  return new StaticValue(props);
12469
12571
  },
12470
- _a$3[ValueType$1.COLORS] = function (props) {
12572
+ _a$4[ValueType$1.COLORS] = function (props) {
12471
12573
  return new RandomSetValue(props.map(function (c) { return colorToArr$1(c, false); }));
12472
12574
  },
12473
- _a$3[ValueType$1.LINE] = function (props) {
12575
+ _a$4[ValueType$1.LINE] = function (props) {
12474
12576
  if (props.length === 2 && props[0][0] === 0 && props[1][0] === 1) {
12475
12577
  return new LinearValue([props[0][1], props[1][1]]);
12476
12578
  }
12477
12579
  return new LineSegments(props);
12478
12580
  },
12479
- _a$3[ValueType$1.GRADIENT_COLOR] = function (props) {
12581
+ _a$4[ValueType$1.GRADIENT_COLOR] = function (props) {
12480
12582
  return new GradientValue(props);
12481
12583
  },
12482
- _a$3[ValueType$1.LINEAR_PATH] = function (pros) {
12584
+ _a$4[ValueType$1.LINEAR_PATH] = function (pros) {
12483
12585
  return new PathSegments(pros);
12484
12586
  },
12485
- _a$3[ValueType$1.BEZIER_PATH] = function (pros) {
12587
+ _a$4[ValueType$1.BEZIER_PATH] = function (pros) {
12486
12588
  return new BezierSegments(pros);
12487
12589
  },
12488
- _a$3);
12590
+ _a$4);
12489
12591
  function createValueGetter(args) {
12490
12592
  if (!args || !isNaN(+args)) {
12491
12593
  return new StaticValue(args || 0);
@@ -13436,13 +13538,13 @@ var InteractMesh = /** @class */ (function () {
13436
13538
  ['ENV_EDITOR', ((_a = this.engine.renderer) === null || _a === void 0 ? void 0 : _a.env) === PLAYER_OPTIONS_ENV_EDITOR],
13437
13539
  ];
13438
13540
  var color = createValueGetter(this.color).getValue(0);
13439
- var level = this.engine.gpuCapability.level;
13440
13541
  var materialProps = {
13441
13542
  shader: {
13442
- vertex: createShaderWithMarcos(marcos, vertex, exports.ShaderType.vertex, level),
13443
- fragment: createShaderWithMarcos(marcos, fragment, exports.ShaderType.fragment, level),
13543
+ vertex: vertex,
13544
+ fragment: fragment,
13444
13545
  glslVersion: exports.GLSLVersion.GLSL1,
13445
13546
  cacheId: "".concat(rendererOptions.cachePrefix, "_effects_interact"),
13547
+ marcos: marcos,
13446
13548
  },
13447
13549
  uniformSemantics: {
13448
13550
  effects_MatrixVP: 'VIEWPROJECTION',
@@ -13516,11 +13618,11 @@ var InteractComponent = /** @class */ (function (_super) {
13516
13618
  }
13517
13619
  InteractComponent_1 = InteractComponent;
13518
13620
  InteractComponent.prototype.start = function () {
13519
- var _a, _b, _c;
13621
+ var _this = this;
13520
13622
  var options = this.item.props.content.options;
13521
- var env = ((_b = (_a = this.item.engine) === null || _a === void 0 ? void 0 : _a.renderer) !== null && _b !== void 0 ? _b : {}).env;
13623
+ var env = this.item.engine.renderer.env;
13522
13624
  var composition = this.item.composition;
13523
- var _d = this.interactData.options, type = _d.type, showPreview = _d.showPreview;
13625
+ var _a = this.interactData.options, type = _a.type, showPreview = _a.showPreview;
13524
13626
  if (type === InteractType$1.CLICK) {
13525
13627
  this.clickable = true;
13526
13628
  if (showPreview && env === PLAYER_OPTIONS_ENV_EDITOR) {
@@ -13528,7 +13630,8 @@ var InteractComponent = /** @class */ (function (_super) {
13528
13630
  this.previewContent = new InteractMesh(this.item.props.content, rendererOptions, this.transform, this.engine);
13529
13631
  }
13530
13632
  }
13531
- (_c = this.item.composition) === null || _c === void 0 ? void 0 : _c.addInteractiveItem(this.item, options.type);
13633
+ composition.addInteractiveItem(this.item, options.type);
13634
+ this.item.onEnd = function () { return composition.removeInteractiveItem(_this.item, options.type); };
13532
13635
  if (options.type === InteractType$1.DRAG) {
13533
13636
  if (env !== PLAYER_OPTIONS_ENV_EDITOR || options.enableInEditor) {
13534
13637
  composition.event && this.beginDragTarget(options, composition.event);
@@ -13721,8 +13824,8 @@ function spriteMeshShaderFromFilter(level, options) {
13721
13824
  var fragment = wireframe ? itemFrameFrag : itemFrag.replace(/#pragma\s+FILTER_FRAG/, '');
13722
13825
  var vertex = itemVert.replace(/#pragma\s+FILTER_VERT/, 'vec4 filterMain(float t,vec4 pos){return effects_MatrixVP * pos;}');
13723
13826
  return {
13724
- fragment: createShaderWithMarcos(marcos, fragment, exports.ShaderType.fragment, level),
13725
- vertex: createShaderWithMarcos(marcos, vertex, exports.ShaderType.vertex, level),
13827
+ fragment: fragment,
13828
+ vertex: vertex,
13726
13829
  glslVersion: level === 1 ? exports.GLSLVersion.GLSL1 : exports.GLSLVersion.GLSL3,
13727
13830
  marcos: marcos,
13728
13831
  shared: true,
@@ -13960,15 +14063,25 @@ var PlayableOutput = /** @class */ (function () {
13960
14063
  };
13961
14064
  return PlayableOutput;
13962
14065
  }());
14066
+ var PlayableAsset = /** @class */ (function () {
14067
+ function PlayableAsset() {
14068
+ }
14069
+ PlayableAsset.prototype.fromData = function (data) {
14070
+ };
14071
+ return PlayableAsset;
14072
+ }());
13963
14073
 
13964
14074
  /**
13965
14075
  * @since 2.0.0
13966
14076
  * @internal
13967
14077
  */
13968
- var Track = /** @class */ (function () {
14078
+ var Track = /** @class */ (function (_super) {
14079
+ __extends(Track, _super);
13969
14080
  function Track() {
13970
- this.clips = [];
13971
- this.clipSeed = 0;
14081
+ var _this = _super !== null && _super.apply(this, arguments) || this;
14082
+ _this.clips = [];
14083
+ _this.clipSeed = 0;
14084
+ return _this;
13972
14085
  }
13973
14086
  Track.prototype.createOutput = function () {
13974
14087
  var output = new PlayableOutput();
@@ -13980,7 +14093,7 @@ var Track = /** @class */ (function () {
13980
14093
  Track.prototype.createMixerPlayable = function () {
13981
14094
  return new Playable();
13982
14095
  };
13983
- Track.prototype.createPlayebleTree = function () {
14096
+ Track.prototype.createPlayable = function () {
13984
14097
  var e_1, _a;
13985
14098
  var defaultMixPlayable = this.createMixerPlayable();
13986
14099
  try {
@@ -14032,7 +14145,7 @@ var Track = /** @class */ (function () {
14032
14145
  this.clips.push(clip);
14033
14146
  };
14034
14147
  return Track;
14035
- }());
14148
+ }(PlayableAsset));
14036
14149
  /**
14037
14150
  * @since 2.0.0
14038
14151
  * @internal
@@ -14088,12 +14201,12 @@ var tempPos = new Vector3();
14088
14201
  * @since 2.0.0
14089
14202
  * @internal
14090
14203
  */
14091
- var AnimationClipPlayable = /** @class */ (function (_super) {
14092
- __extends(AnimationClipPlayable, _super);
14093
- function AnimationClipPlayable() {
14204
+ var TransformAnimationPlayable = /** @class */ (function (_super) {
14205
+ __extends(TransformAnimationPlayable, _super);
14206
+ function TransformAnimationPlayable() {
14094
14207
  return _super !== null && _super.apply(this, arguments) || this;
14095
14208
  }
14096
- AnimationClipPlayable.prototype.processFrame = function (dt) {
14209
+ TransformAnimationPlayable.prototype.processFrame = function (dt) {
14097
14210
  if (this.bindingItem.composition) {
14098
14211
  this.sampleAnimation();
14099
14212
  }
@@ -14101,7 +14214,7 @@ var AnimationClipPlayable = /** @class */ (function (_super) {
14101
14214
  /**
14102
14215
  * 应用时间轴K帧数据到对象
14103
14216
  */
14104
- AnimationClipPlayable.prototype.sampleAnimation = function () {
14217
+ TransformAnimationPlayable.prototype.sampleAnimation = function () {
14105
14218
  var _this = this;
14106
14219
  var duration = this.bindingItem.duration;
14107
14220
  var life = this.time / duration;
@@ -14146,7 +14259,7 @@ var AnimationClipPlayable = /** @class */ (function (_super) {
14146
14259
  // this.animationStream.setCurveValue('transform', 'position.z', pos.z);
14147
14260
  }
14148
14261
  };
14149
- AnimationClipPlayable.prototype.fromData = function (data) {
14262
+ TransformAnimationPlayable.prototype.fromData = function (data) {
14150
14263
  var _a;
14151
14264
  var scale = this.bindingItem.transform.scale;
14152
14265
  this.originalTransform = {
@@ -14217,30 +14330,45 @@ var AnimationClipPlayable = /** @class */ (function (_super) {
14217
14330
  this.velocity = this.direction.clone();
14218
14331
  this.velocity.multiply(this.startSpeed);
14219
14332
  };
14220
- return AnimationClipPlayable;
14333
+ return TransformAnimationPlayable;
14221
14334
  }(AnimationPlayable));
14335
+ var TransformAnimationPlayableAsset = /** @class */ (function (_super) {
14336
+ __extends(TransformAnimationPlayableAsset, _super);
14337
+ function TransformAnimationPlayableAsset() {
14338
+ return _super !== null && _super.apply(this, arguments) || this;
14339
+ }
14340
+ TransformAnimationPlayableAsset.prototype.createPlayable = function () {
14341
+ var transformAnimationPlayable = new TransformAnimationPlayable();
14342
+ transformAnimationPlayable.fromData(this.transformAnimationData);
14343
+ return transformAnimationPlayable;
14344
+ };
14345
+ TransformAnimationPlayableAsset.prototype.fromData = function (data) {
14346
+ this.transformAnimationData = data;
14347
+ };
14348
+ return TransformAnimationPlayableAsset;
14349
+ }(PlayableAsset));
14222
14350
  /**
14223
14351
  * @since 2.0.0
14224
14352
  * @internal
14225
14353
  */
14226
- var ActivationClipPlayable = /** @class */ (function (_super) {
14227
- __extends(ActivationClipPlayable, _super);
14228
- function ActivationClipPlayable() {
14354
+ var ActivationPlayable = /** @class */ (function (_super) {
14355
+ __extends(ActivationPlayable, _super);
14356
+ function ActivationPlayable() {
14229
14357
  return _super !== null && _super.apply(this, arguments) || this;
14230
14358
  }
14231
- ActivationClipPlayable.prototype.onGraphStart = function () {
14359
+ ActivationPlayable.prototype.onGraphStart = function () {
14232
14360
  this.bindingItem.transform.setValid(false);
14233
14361
  this.hideRendererComponents();
14234
14362
  };
14235
- ActivationClipPlayable.prototype.onPlayablePlay = function () {
14363
+ ActivationPlayable.prototype.onPlayablePlay = function () {
14236
14364
  this.bindingItem.transform.setValid(true);
14237
14365
  this.showRendererComponents();
14238
14366
  };
14239
- ActivationClipPlayable.prototype.onPlayableDestroy = function () {
14367
+ ActivationPlayable.prototype.onPlayableDestroy = function () {
14240
14368
  this.bindingItem.transform.setValid(false);
14241
14369
  this.hideRendererComponents();
14242
14370
  };
14243
- ActivationClipPlayable.prototype.hideRendererComponents = function () {
14371
+ ActivationPlayable.prototype.hideRendererComponents = function () {
14244
14372
  var e_1, _a;
14245
14373
  try {
14246
14374
  for (var _b = __values$1(this.bindingItem.rendererComponents), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -14258,7 +14386,7 @@ var ActivationClipPlayable = /** @class */ (function (_super) {
14258
14386
  finally { if (e_1) throw e_1.error; }
14259
14387
  }
14260
14388
  };
14261
- ActivationClipPlayable.prototype.showRendererComponents = function () {
14389
+ ActivationPlayable.prototype.showRendererComponents = function () {
14262
14390
  var e_2, _a;
14263
14391
  try {
14264
14392
  for (var _b = __values$1(this.bindingItem.rendererComponents), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -14276,7 +14404,7 @@ var ActivationClipPlayable = /** @class */ (function (_super) {
14276
14404
  finally { if (e_2) throw e_2.error; }
14277
14405
  }
14278
14406
  };
14279
- return ActivationClipPlayable;
14407
+ return ActivationPlayable;
14280
14408
  }(Playable));
14281
14409
 
14282
14410
  /**
@@ -14531,7 +14659,7 @@ var TimelineComponent = /** @class */ (function (_super) {
14531
14659
  try {
14532
14660
  for (var _b = __values$1(this.tracks), _c = _b.next(); !_c.done; _c = _b.next()) {
14533
14661
  var track = _c.value;
14534
- var trackMixPlayable = track.createPlayebleTree();
14662
+ var trackMixPlayable = track.createPlayable();
14535
14663
  var trackOutput = track.createOutput();
14536
14664
  graph.addOutput(trackOutput);
14537
14665
  trackOutput.setSourcePlayeble(trackMixPlayable);
@@ -14546,6 +14674,7 @@ var TimelineComponent = /** @class */ (function (_super) {
14546
14674
  }
14547
14675
  };
14548
14676
  TimelineComponent.prototype.fromData = function (data) {
14677
+ var e_13, _a, e_14, _b;
14549
14678
  _super.prototype.fromData.call(this, data);
14550
14679
  this.options = {
14551
14680
  start: this.item.start,
@@ -14556,7 +14685,47 @@ var TimelineComponent = /** @class */ (function (_super) {
14556
14685
  this.id = this.item.id;
14557
14686
  this.name = this.item.name;
14558
14687
  var activationTrack = this.createTrack(Track, 'ActivationTrack');
14559
- activationTrack.createClip(ActivationClipPlayable, 'ActivationTimelineClip');
14688
+ activationTrack.createClip(ActivationPlayable, 'ActivationTimelineClip');
14689
+ //@ts-expect-error
14690
+ if (data.tracks) {
14691
+ //@ts-expect-error
14692
+ var tracks = data.tracks;
14693
+ try {
14694
+ for (var tracks_1 = __values$1(tracks), tracks_1_1 = tracks_1.next(); !tracks_1_1.done; tracks_1_1 = tracks_1.next()) {
14695
+ var track = tracks_1_1.value;
14696
+ var newTrack = this.createTrack(Track);
14697
+ try {
14698
+ for (var _c = (e_14 = void 0, __values$1(track.clips)), _d = _c.next(); !_d.done; _d = _c.next()) {
14699
+ var clipAsset = _d.value;
14700
+ switch (clipAsset.dataType) {
14701
+ case 'TransformAnimationPlayableAsset':
14702
+ newTrack.name = 'AnimationTrack';
14703
+ newTrack.createClip(TransformAnimationPlayable, 'AnimationTimelineClip').playable.fromData(clipAsset.animationClip);
14704
+ break;
14705
+ case 'SpriteColorAnimationPlayableAsset':
14706
+ newTrack.name = 'SpriteColorTrack';
14707
+ newTrack.createClip(SpriteColorPlayable, 'SpriteColorClip').playable.fromData(clipAsset.animationClip);
14708
+ break;
14709
+ }
14710
+ }
14711
+ }
14712
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
14713
+ finally {
14714
+ try {
14715
+ if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
14716
+ }
14717
+ finally { if (e_14) throw e_14.error; }
14718
+ }
14719
+ }
14720
+ }
14721
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
14722
+ finally {
14723
+ try {
14724
+ if (tracks_1_1 && !tracks_1_1.done && (_a = tracks_1.return)) _a.call(tracks_1);
14725
+ }
14726
+ finally { if (e_13) throw e_13.error; }
14727
+ }
14728
+ }
14560
14729
  };
14561
14730
  TimelineComponent.prototype.toData = function () {
14562
14731
  _super.prototype.toData.call(this);
@@ -14970,9 +15139,6 @@ var SpriteComponent = /** @class */ (function (_super) {
14970
15139
  this.material.setVector4('_Color', new Vector4().setFromArray(startColor));
14971
15140
  this.material.setVector4('_TexOffset', new Vector4().setFromArray([0, 0, 1, 1]));
14972
15141
  this.setItem();
14973
- // 添加K帧动画
14974
- var colorTrack = this.item.getComponent(TimelineComponent).createTrack(Track, 'SpriteColorTrack');
14975
- colorTrack.createClip(SpriteColorPlayable, 'SpriteColorClip').playable.fromData({ colorOverLifetime: data.colorOverLifetime, startColor: data.options.startColor });
14976
15142
  };
14977
15143
  SpriteComponent.prototype.toData = function () {
14978
15144
  _super.prototype.toData.call(this);
@@ -15139,8 +15305,8 @@ var ParticleMesh = /** @class */ (function () {
15139
15305
  var originalVertex = "#define LOOKUP_TEXTURE_CURVE ".concat(vertex_lookup_texture, "\n").concat(particleVert);
15140
15306
  var vertex = originalVertex;
15141
15307
  var shader = {
15142
- fragment: createShaderWithMarcos(marcos, fragment, exports.ShaderType.fragment, level),
15143
- vertex: createShaderWithMarcos(marcos, vertex, exports.ShaderType.vertex, level),
15308
+ fragment: fragment,
15309
+ vertex: vertex,
15144
15310
  glslVersion: level === 1 ? exports.GLSLVersion.GLSL1 : exports.GLSLVersion.GLSL3,
15145
15311
  shared: true,
15146
15312
  cacheId: shaderCache,
@@ -15695,8 +15861,8 @@ var TrailMesh = /** @class */ (function () {
15695
15861
  else {
15696
15862
  uniformValues.uVCurveValues = CurveValue.getAllData(keyFrameMeta);
15697
15863
  }
15698
- var vertex = createShaderWithMarcos(marcos, trailVert, exports.ShaderType.vertex, level);
15699
- var fragment = createShaderWithMarcos(marcos, particleFrag, exports.ShaderType.fragment, level);
15864
+ var vertex = trailVert;
15865
+ var fragment = particleFrag;
15700
15866
  var mtl = ({
15701
15867
  shader: {
15702
15868
  vertex: vertex,
@@ -16383,7 +16549,7 @@ var TextureShape = /** @class */ (function () {
16383
16549
  return TextureShape;
16384
16550
  }());
16385
16551
 
16386
- var _a$2;
16552
+ var _a$3;
16387
16553
  var ShapeNone = /** @class */ (function () {
16388
16554
  function ShapeNone() {
16389
16555
  }
@@ -16395,18 +16561,18 @@ var ShapeNone = /** @class */ (function () {
16395
16561
  };
16396
16562
  return ShapeNone;
16397
16563
  }());
16398
- var map = (_a$2 = {},
16399
- _a$2[ShapeType$1.NONE] = ShapeNone,
16400
- _a$2[ShapeType$1.CONE] = Cone,
16401
- _a$2[ShapeType$1.SPHERE] = Sphere,
16402
- _a$2[ShapeType$1.HEMISPHERE] = Hemisphere,
16403
- _a$2[ShapeType$1.CIRCLE] = Circle,
16404
- _a$2[ShapeType$1.DONUT] = Donut,
16405
- _a$2[ShapeType$1.RECTANGLE] = Rectangle,
16406
- _a$2[ShapeType$1.EDGE] = Edge,
16407
- _a$2[ShapeType$1.RECTANGLE_EDGE] = RectangleEdge,
16408
- _a$2[ShapeType$1.TEXTURE] = TextureShape,
16409
- _a$2);
16564
+ var map = (_a$3 = {},
16565
+ _a$3[ShapeType$1.NONE] = ShapeNone,
16566
+ _a$3[ShapeType$1.CONE] = Cone,
16567
+ _a$3[ShapeType$1.SPHERE] = Sphere,
16568
+ _a$3[ShapeType$1.HEMISPHERE] = Hemisphere,
16569
+ _a$3[ShapeType$1.CIRCLE] = Circle,
16570
+ _a$3[ShapeType$1.DONUT] = Donut,
16571
+ _a$3[ShapeType$1.RECTANGLE] = Rectangle,
16572
+ _a$3[ShapeType$1.EDGE] = Edge,
16573
+ _a$3[ShapeType$1.RECTANGLE_EDGE] = RectangleEdge,
16574
+ _a$3[ShapeType$1.TEXTURE] = TextureShape,
16575
+ _a$3);
16410
16576
  function createShape(shapeOptions) {
16411
16577
  if (!shapeOptions) {
16412
16578
  return new ShapeNone();
@@ -17735,7 +17901,7 @@ var ParticleSystem = /** @class */ (function (_super) {
17735
17901
  }));
17736
17902
  p.delay += meshTime;
17737
17903
  cursor++;
17738
- (_a = p.transform).translate.apply(_a, __spreadArray$2([], __read$3(burstOffset), false));
17904
+ (_a = p.transform).translate.apply(_a, __spreadArray$3([], __read$3(burstOffset), false));
17739
17905
  this.addParticle(p, maxCount_1);
17740
17906
  }
17741
17907
  }
@@ -18507,7 +18673,9 @@ var TextStyle = /** @class */ (function () {
18507
18673
  this.fontOffset = 0;
18508
18674
  var _g = options.textColor, textColor = _g === void 0 ? [1, 1, 1, 1] : _g, _h = options.fontSize, fontSize = _h === void 0 ? 40 : _h, outline = options.outline, shadow = options.shadow, _j = options.fontWeight, fontWeight = _j === void 0 ? 'normal' : _j, _k = options.fontStyle, fontStyle = _k === void 0 ? 'normal' : _k, _l = options.fontFamily, fontFamily = _l === void 0 ? 'sans-serif' : _l;
18509
18675
  this.textColor = textColor;
18676
+ //@ts-expect-error
18510
18677
  this.textWeight = fontWeight;
18678
+ //@ts-expect-error
18511
18679
  this.fontStyle = fontStyle;
18512
18680
  this.fontFamily = fontFamily;
18513
18681
  this.fontSize = fontSize; // 暂时取消字号限制 Math.min(fontSize, this.maxFontSize);
@@ -20575,7 +20743,10 @@ var VFXItem = /** @class */ (function (_super) {
20575
20743
  try {
20576
20744
  for (var _e = __values$1(this.children), _f = _e.next(); !_f.done; _f = _e.next()) {
20577
20745
  var child = _f.value;
20578
- return child.find(name);
20746
+ var res = child.find(name);
20747
+ if (res) {
20748
+ return res;
20749
+ }
20579
20750
  }
20580
20751
  }
20581
20752
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
@@ -20592,6 +20763,7 @@ var VFXItem = /** @class */ (function (_super) {
20592
20763
  _super.prototype.fromData.call(this, data);
20593
20764
  var id = data.id, name = data.name, delay = data.delay, parentId = data.parentId, endBehavior = data.endBehavior, transform = data.transform, _b = data.listIndex, listIndex = _b === void 0 ? 0 : _b, _c = data.duration, duration = _c === void 0 ? 0 : _c;
20594
20765
  this.props = data;
20766
+ //@ts-expect-error
20595
20767
  this.type = data.type;
20596
20768
  this.id = id.toString(); // TODO 老数据 id 是 number,需要转换
20597
20769
  this.name = name;
@@ -20629,10 +20801,6 @@ var VFXItem = /** @class */ (function (_super) {
20629
20801
  }
20630
20802
  var timelineComponent = this.getComponent(TimelineComponent);
20631
20803
  timelineComponent.fromData(data.content);
20632
- if (this.type !== ItemType$1.particle) {
20633
- var track = timelineComponent.createTrack(Track, 'AnimationTrack');
20634
- track.createClip(AnimationClipPlayable, 'AnimationTimelineClip').playable.fromData(data.content);
20635
- }
20636
20804
  if (duration <= 0) {
20637
20805
  throw Error("Item duration can't be less than 0, see ".concat(HELP_LINK['Item duration can\'t be less than 0']));
20638
20806
  }
@@ -20691,10 +20859,10 @@ var VFXItem = /** @class */ (function (_super) {
20691
20859
  };
20692
20860
  VFXItem.prototype.translateByPixel = function (x, y) {
20693
20861
  if (this.composition) {
20862
+ // @ts-expect-error
20863
+ var _a = this.composition.renderer.canvas.getBoundingClientRect(), width = _a.width, height = _a.height;
20694
20864
  var z = this.transform.getWorldPosition().z;
20695
- var _a = this.composition.camera.getInverseVPRatio(z), rx = _a.x, ry = _a.y;
20696
- var width = this.composition.renderer.getWidth() / 2;
20697
- var height = this.composition.renderer.getHeight() / 2;
20865
+ var _b = this.composition.camera.getInverseVPRatio(z), rx = _b.x, ry = _b.y;
20698
20866
  this.transform.translate(2 * x * rx / width, -2 * y * ry / height, 0);
20699
20867
  }
20700
20868
  };
@@ -20799,7 +20967,6 @@ function createVFXItem(props, composition) {
20799
20967
  if (!pluginName) {
20800
20968
  switch (type) {
20801
20969
  case ItemType$1.null:
20802
- case ItemType$1.base:
20803
20970
  pluginName = 'cal';
20804
20971
  break;
20805
20972
  case ItemType$1.sprite:
@@ -20920,7 +21087,7 @@ var PluginSystem = /** @class */ (function () {
20920
21087
  plugin = plugins[i];
20921
21088
  ctrl = pluginLoaderMap[plugin.name];
20922
21089
  if (name in ctrl) {
20923
- pendings.push(Promise.resolve(ctrl[name].apply(ctrl, __spreadArray$2([], __read$3(args), false))));
21090
+ pendings.push(Promise.resolve(ctrl[name].apply(ctrl, __spreadArray$3([], __read$3(args), false))));
20924
21091
  }
20925
21092
  }
20926
21093
  return [2 /*return*/, Promise.all(pendings)];
@@ -20961,12 +21128,77 @@ function getPluginUsageInfo(name) {
20961
21128
  }
20962
21129
  }
20963
21130
 
20964
- /*!
20965
- * Name: @galacean/effects-specification
20966
- * Description: Galacean Effects JSON Specification
20967
- * Author: Ant Group CO., Ltd.
20968
- * Version: v1.0.1
20969
- */
21131
+ /*!
21132
+ * Name: @galacean/effects-specification
21133
+ * Description: Galacean Effects JSON Specification
21134
+ * Author: Ant Group CO., Ltd.
21135
+ * Version: v2.0.0-alpha.2
21136
+ */
21137
+
21138
+ const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
21139
+ var native = {
21140
+ randomUUID
21141
+ };
21142
+
21143
+ // Unique ID creation requires a high quality random # generator. In the browser we therefore
21144
+ // require the crypto API and do not support built-in fallback to lower quality random number
21145
+ // generators (like Math.random()).
21146
+ let getRandomValues;
21147
+ const rnds8 = new Uint8Array(16);
21148
+ function rng() {
21149
+ // lazy load so that environments that need to polyfill have a chance to do so
21150
+ if (!getRandomValues) {
21151
+ // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
21152
+ getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
21153
+
21154
+ if (!getRandomValues) {
21155
+ throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
21156
+ }
21157
+ }
21158
+
21159
+ return getRandomValues(rnds8);
21160
+ }
21161
+
21162
+ /**
21163
+ * Convert array of 16 byte values to UUID string format of the form:
21164
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
21165
+ */
21166
+
21167
+ const byteToHex = [];
21168
+
21169
+ for (let i = 0; i < 256; ++i) {
21170
+ byteToHex.push((i + 0x100).toString(16).slice(1));
21171
+ }
21172
+
21173
+ function unsafeStringify(arr, offset = 0) {
21174
+ // Note: Be careful editing this code! It's been tuned for performance
21175
+ // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
21176
+ 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]];
21177
+ }
21178
+
21179
+ function v4(options, buf, offset) {
21180
+ if (native.randomUUID && !buf && !options) {
21181
+ return native.randomUUID();
21182
+ }
21183
+
21184
+ options = options || {};
21185
+ const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
21186
+
21187
+ rnds[6] = rnds[6] & 0x0f | 0x40;
21188
+ rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
21189
+
21190
+ if (buf) {
21191
+ offset = offset || 0;
21192
+
21193
+ for (let i = 0; i < 16; ++i) {
21194
+ buf[offset + i] = rnds[i];
21195
+ }
21196
+
21197
+ return buf;
21198
+ }
21199
+
21200
+ return unsafeStringify(rnds);
21201
+ }
20970
21202
 
20971
21203
  /*********************************************/
20972
21204
  /* 元素属性参数类型 */
@@ -21230,6 +21462,10 @@ var ItemType;
21230
21462
  * 天空盒元素
21231
21463
  */
21232
21464
  ItemType["skybox"] = "skybox";
21465
+ /**
21466
+ * 特效元素
21467
+ */
21468
+ ItemType["effect"] = "effect";
21233
21469
  })(ItemType || (ItemType = {}));
21234
21470
  /**
21235
21471
  * 渲染模式
@@ -21342,6 +21578,10 @@ var CompositionEndBehavior;
21342
21578
  * 销毁并保留最后一帧
21343
21579
  */
21344
21580
  CompositionEndBehavior[CompositionEndBehavior["pause_destroy"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = "pause_destroy";
21581
+ /**
21582
+ * 冻结
21583
+ */
21584
+ CompositionEndBehavior[CompositionEndBehavior["freeze"] = END_BEHAVIOR_FREEZE] = "freeze";
21345
21585
  })(CompositionEndBehavior || (CompositionEndBehavior = {}));
21346
21586
 
21347
21587
  /*********************************************/
@@ -21478,12 +21718,38 @@ var ShapeArcMode;
21478
21718
  ShapeArcMode[ShapeArcMode["UNIFORM_BURST"] = 3] = "UNIFORM_BURST";
21479
21719
  })(ShapeArcMode || (ShapeArcMode = {}));
21480
21720
 
21721
+ var LightType;
21722
+ (function (LightType) {
21723
+ /**
21724
+ * 点光源
21725
+ */
21726
+ LightType["point"] = "point";
21727
+ /**
21728
+ * 聚光灯
21729
+ */
21730
+ LightType["spot"] = "spot";
21731
+ /**
21732
+ * 方向光
21733
+ */
21734
+ LightType["directional"] = "directional";
21735
+ /**
21736
+ * 环境光
21737
+ */
21738
+ LightType["ambient"] = "ambient";
21739
+ })(LightType || (LightType = {}));
21740
+
21481
21741
  var ModelBoundingType;
21482
21742
  (function (ModelBoundingType) {
21483
21743
  ModelBoundingType[ModelBoundingType["box"] = 2] = "box";
21484
21744
  ModelBoundingType[ModelBoundingType["sphere"] = 3] = "sphere";
21485
21745
  })(ModelBoundingType || (ModelBoundingType = {}));
21486
21746
 
21747
+ var CameraType;
21748
+ (function (CameraType) {
21749
+ CameraType["orthographic"] = "orthographic";
21750
+ CameraType["perspective"] = "perspective";
21751
+ })(CameraType || (CameraType = {}));
21752
+
21487
21753
  // 材质类型
21488
21754
  var MaterialType;
21489
21755
  (function (MaterialType) {
@@ -21629,6 +21895,28 @@ var FontStyle;
21629
21895
  FontStyle["oblique"] = "oblique";
21630
21896
  })(FontStyle || (FontStyle = {}));
21631
21897
 
21898
+ var DataType;
21899
+ (function (DataType) {
21900
+ DataType["VFXItemData"] = "VFXItemData";
21901
+ DataType["EffectComponent"] = "EffectComponent";
21902
+ DataType["Material"] = "Material";
21903
+ DataType["Shader"] = "Shader";
21904
+ DataType["SpriteComponent"] = "SpriteComponent";
21905
+ DataType["ParticleSystem"] = "ParticleSystem";
21906
+ DataType["InteractComponent"] = "InteractComponent";
21907
+ DataType["CameraController"] = "CameraController";
21908
+ DataType["Geometry"] = "Geometry";
21909
+ DataType["Texture"] = "Texture";
21910
+ DataType["TextComponent"] = "TextComponent";
21911
+ // FIXME: 先完成ECS的场景转换,后面移到spec中
21912
+ DataType["MeshComponent"] = "MeshComponent";
21913
+ DataType["SkyboxComponent"] = "SkyboxComponent";
21914
+ DataType["LightComponent"] = "LightComponent";
21915
+ DataType["CameraComponent"] = "CameraComponent";
21916
+ DataType["ModelPluginComponent"] = "ModelPluginComponent";
21917
+ DataType["TreeComponent"] = "TreeComponent";
21918
+ })(DataType || (DataType = {}));
21919
+
21632
21920
  /******************************************************************************
21633
21921
  Copyright (c) Microsoft Corporation.
21634
21922
 
@@ -21684,11 +21972,22 @@ function __read(o, n) {
21684
21972
  return ar;
21685
21973
  }
21686
21974
 
21975
+ function __spreadArray(to, from, pack) {
21976
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
21977
+ if (ar || !(i in from)) {
21978
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21979
+ ar[i] = from[i];
21980
+ }
21981
+ }
21982
+ return to.concat(ar || Array.prototype.slice.call(from));
21983
+ }
21984
+
21687
21985
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
21688
21986
  var e = new Error(message);
21689
21987
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
21690
21988
  };
21691
21989
 
21990
+ var _a$2;
21692
21991
  function arrAdd(arr, item) {
21693
21992
  if (!arr.includes(item)) {
21694
21993
  arr.push(item);
@@ -21924,6 +22223,34 @@ function rotationZYXFromQuat(out, quat) {
21924
22223
  }
21925
22224
  return out;
21926
22225
  }
22226
+ function generateGUID() {
22227
+ return v4().replace(/-/g, '');
22228
+ }
22229
+ /**
22230
+ * 提取并转换 JSON 数据中的 anchor 值
22231
+ */
22232
+ function convertAnchor$1(anchor, particleOrigin) {
22233
+ if (anchor) {
22234
+ return [anchor[0] - 0.5, 0.5 - anchor[1]];
22235
+ }
22236
+ else if (particleOrigin) {
22237
+ return particleOriginTranslateMap[particleOrigin];
22238
+ }
22239
+ else {
22240
+ return [0, 0];
22241
+ }
22242
+ }
22243
+ var particleOriginTranslateMap = (_a$2 = {},
22244
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_CENTER] = [0, 0],
22245
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM] = [0, -0.5],
22246
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP] = [0, 0.5],
22247
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP] = [-0.5, 0.5],
22248
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER] = [-0.5, 0],
22249
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM] = [-0.5, -0.5],
22250
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER] = [0.5, 0],
22251
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
22252
+ _a$2[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
22253
+ _a$2);
21927
22254
 
21928
22255
  function getStandardParticleContent(particle) {
21929
22256
  var _a;
@@ -22335,6 +22662,309 @@ function version22Migration(json) {
22335
22662
  });
22336
22663
  return json;
22337
22664
  }
22665
+ /**
22666
+ * 3.0 以下版本数据适配(runtime 2.0及以上版本支持)
22667
+ */
22668
+ function version30Migration(json) {
22669
+ var e_1, _a;
22670
+ var _b, _c, _d, _e;
22671
+ var result = Object.assign({}, json, {
22672
+ items: [],
22673
+ components: [],
22674
+ materials: [],
22675
+ shaders: [],
22676
+ geometries: [],
22677
+ });
22678
+ // 兼容老版本数据中不存在textures的情况
22679
+ (_b = result.textures) !== null && _b !== void 0 ? _b : (result.textures = []);
22680
+ result.textures.forEach(function (textureOptions) {
22681
+ Object.assign(textureOptions, {
22682
+ id: generateGUID(),
22683
+ dataType: DataType.Texture,
22684
+ });
22685
+ });
22686
+ if (result.textures.length < result.images.length) {
22687
+ for (var i = result.textures.length; i < result.images.length; i++) {
22688
+ result.textures.push({
22689
+ //@ts-expect-error
22690
+ id: generateGUID(),
22691
+ dataType: DataType.Texture,
22692
+ source: i,
22693
+ flipY: true,
22694
+ });
22695
+ }
22696
+ }
22697
+ var _loop_1 = function (composition) {
22698
+ var e_2, _h, e_3, _j;
22699
+ // composition 的 endbehaviour 兼容
22700
+ if (composition.endBehavior === END_BEHAVIOR_PAUSE_AND_DESTROY || composition.endBehavior === END_BEHAVIOR_PAUSE) {
22701
+ composition.endBehavior = END_BEHAVIOR_FREEZE;
22702
+ }
22703
+ var itemGuidMap = {};
22704
+ try {
22705
+ for (var _k = (e_2 = void 0, __values(composition.items)), _l = _k.next(); !_l.done; _l = _k.next()) {
22706
+ var item = _l.value;
22707
+ itemGuidMap[item.id] = generateGUID();
22708
+ // TODO: 编辑器测试用,上线后删除
22709
+ //@ts-expect-error
22710
+ item.oldId = item.id;
22711
+ item.id = itemGuidMap[item.id];
22712
+ }
22713
+ }
22714
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
22715
+ finally {
22716
+ try {
22717
+ if (_l && !_l.done && (_h = _k.return)) _h.call(_k);
22718
+ }
22719
+ finally { if (e_2) throw e_2.error; }
22720
+ }
22721
+ composition.items.forEach(function (item, index) {
22722
+ if (item.parentId) {
22723
+ if (item.parentId.includes('^')) {
22724
+ var parentId = (item.parentId).split('^')[0];
22725
+ var nodeId = (item.parentId).split('^')[1];
22726
+ item.parentId = itemGuidMap[parentId] + '^' + nodeId;
22727
+ }
22728
+ else {
22729
+ item.parentId = itemGuidMap[item.parentId];
22730
+ }
22731
+ }
22732
+ // @ts-expect-error fix item type
22733
+ result.items.push(item);
22734
+ // @ts-expect-error fix item type
22735
+ composition.items[index] = { id: item.id };
22736
+ });
22737
+ try {
22738
+ for (var _m = (e_3 = void 0, __values(result.items)), _o = _m.next(); !_o.done; _o = _m.next()) {
22739
+ var item = _o.value;
22740
+ // 原 texture 索引转为统一 guid 索引
22741
+ if (item.content) {
22742
+ if (item.content.renderer) {
22743
+ if (item.content.renderer.texture !== undefined) {
22744
+ var oldTextureId = item.content.renderer.texture;
22745
+ //@ts-expect-error
22746
+ item.content.renderer.texture = { id: result.textures[oldTextureId].id };
22747
+ }
22748
+ }
22749
+ if (item.content.trails) {
22750
+ if (item.content.trails.texture !== undefined) {
22751
+ var oldTextureId = item.content.trails.texture;
22752
+ //@ts-expect-error
22753
+ item.content.trails.texture = { id: result.textures[oldTextureId].id };
22754
+ }
22755
+ }
22756
+ }
22757
+ // item 的 transform 属性由数组转为 {x:n, y:n, z:n}
22758
+ if (item.transform) {
22759
+ //@ts-expect-error
22760
+ var position = __spreadArray([], __read((_c = item.transform.position) !== null && _c !== void 0 ? _c : [0, 0, 0]), false);
22761
+ //@ts-expect-error
22762
+ var rotation = __spreadArray([], __read((_d = item.transform.rotation) !== null && _d !== void 0 ? _d : [0, 0, 0]), false);
22763
+ //@ts-expect-error
22764
+ var scale = __spreadArray([], __read((_e = item.transform.scale) !== null && _e !== void 0 ? _e : [1, 1, 1]), false);
22765
+ Object.assign(item, {
22766
+ transform: {
22767
+ position: { x: position[0], y: position[1], z: position[2] },
22768
+ rotation: { x: rotation[0], y: rotation[1], z: rotation[2] },
22769
+ scale: { x: scale[0], y: scale[1], z: scale[0] },
22770
+ },
22771
+ });
22772
+ // sprite 的 scale 转为 size
22773
+ if (item.type === ItemType.sprite) {
22774
+ item.transform.size = { x: scale[0], y: scale[1] };
22775
+ item.transform.scale = { x: 1, y: 1, z: 1 };
22776
+ }
22777
+ // sprite 的 anchor 修正
22778
+ if (item.type === ItemType.sprite) {
22779
+ var content = item.content;
22780
+ if (!content.renderer) {
22781
+ content.renderer = {};
22782
+ }
22783
+ var renderer = content.renderer;
22784
+ var realAnchor = convertAnchor$1(renderer.anchor, renderer.particleOrigin);
22785
+ var startSize = item.transform.size;
22786
+ // 兼容旧JSON(anchor和particleOrigin可能同时存在)
22787
+ if (!renderer.anchor && renderer.particleOrigin !== undefined) {
22788
+ //@ts-expect-error
22789
+ item.transform.position.x += -realAnchor[0] * startSize.x;
22790
+ //@ts-expect-error
22791
+ item.transform.position.y += -realAnchor[1] * startSize.y;
22792
+ }
22793
+ //@ts-expect-error
22794
+ item.transform.anchor = { x: realAnchor[0] * startSize.x, y: realAnchor[1] * startSize.y };
22795
+ }
22796
+ }
22797
+ if (item.type === ItemType.particle) {
22798
+ var content = item.content;
22799
+ if (!content.renderer) {
22800
+ content.renderer = {};
22801
+ }
22802
+ var renderer = content.renderer;
22803
+ content.renderer.anchor = convertAnchor$1(renderer.anchor, renderer.particleOrigin);
22804
+ }
22805
+ // 动画数据转化 TODO: 动画数据移到 TimelineComponentData
22806
+ item.content.tracks = [];
22807
+ var tracks = item.content.tracks;
22808
+ if (item.type !== ItemType.particle) {
22809
+ tracks.push({
22810
+ clips: [
22811
+ {
22812
+ dataType: 'TransformAnimationPlayableAsset',
22813
+ animationClip: {
22814
+ sizeOverLifetime: item.content.sizeOverLifetime,
22815
+ rotationOverLifetime: item.content.rotationOverLifetime,
22816
+ positionOverLifetime: item.content.positionOverLifetime,
22817
+ },
22818
+ },
22819
+ ],
22820
+ });
22821
+ }
22822
+ if (item.type === ItemType.sprite) {
22823
+ tracks.push({
22824
+ clips: [
22825
+ {
22826
+ dataType: 'SpriteColorAnimationPlayableAsset',
22827
+ animationClip: {
22828
+ colorOverLifetime: item.content.colorOverLifetime,
22829
+ startColor: item.content.options.startColor,
22830
+ },
22831
+ },
22832
+ ],
22833
+ });
22834
+ }
22835
+ // gizmo 的 target id 转换为新的 item guid
22836
+ if (item.content.options.target) {
22837
+ item.content.options.target = itemGuidMap[item.content.options.target];
22838
+ }
22839
+ // item 的 content 转为 component data 加入 JSONScene.components
22840
+ var uuid = generateGUID();
22841
+ if (item.type === ItemType.sprite) {
22842
+ item.components = [];
22843
+ result.components.push(item.content);
22844
+ item.content.id = uuid;
22845
+ item.content.dataType = DataType.SpriteComponent;
22846
+ item.content.item = { id: item.id };
22847
+ item.dataType = DataType.VFXItemData;
22848
+ //@ts-expect-error
22849
+ item.components.push({ id: item.content.id });
22850
+ }
22851
+ else if (item.type === ItemType.particle) {
22852
+ item.components = [];
22853
+ result.components.push(item.content);
22854
+ item.content.id = uuid;
22855
+ item.content.dataType = DataType.ParticleSystem;
22856
+ item.content.item = { id: item.id };
22857
+ item.dataType = DataType.VFXItemData;
22858
+ //@ts-expect-error
22859
+ item.components.push({ id: item.content.id });
22860
+ }
22861
+ else if (item.type === ItemType.mesh) {
22862
+ item.components = [];
22863
+ result.components.push(item.content);
22864
+ item.content.id = uuid;
22865
+ item.content.dataType = DataType.MeshComponent;
22866
+ item.content.item = { id: item.id };
22867
+ item.dataType = DataType.VFXItemData;
22868
+ //@ts-expect-error
22869
+ item.components.push({ id: item.content.id });
22870
+ }
22871
+ else if (item.type === ItemType.skybox) {
22872
+ item.components = [];
22873
+ result.components.push(item.content);
22874
+ item.content.id = uuid;
22875
+ item.content.dataType = DataType.SkyboxComponent;
22876
+ item.content.item = { id: item.id };
22877
+ item.dataType = DataType.VFXItemData;
22878
+ //@ts-expect-error
22879
+ item.components.push({ id: item.content.id });
22880
+ }
22881
+ else if (item.type === ItemType.light) {
22882
+ item.components = [];
22883
+ result.components.push(item.content);
22884
+ item.content.id = uuid;
22885
+ item.content.dataType = DataType.LightComponent;
22886
+ item.content.item = { id: item.id };
22887
+ item.dataType = DataType.VFXItemData;
22888
+ //@ts-expect-error
22889
+ item.components.push({ id: item.content.id });
22890
+ }
22891
+ else if (item.type === 'camera') {
22892
+ item.components = [];
22893
+ result.components.push(item.content);
22894
+ item.content.id = uuid;
22895
+ item.content.dataType = DataType.CameraComponent;
22896
+ item.content.item = { id: item.id };
22897
+ item.dataType = DataType.VFXItemData;
22898
+ //@ts-expect-error
22899
+ item.components.push({ id: item.content.id });
22900
+ }
22901
+ else if (item.type === ItemType.tree) {
22902
+ item.components = [];
22903
+ result.components.push(item.content);
22904
+ item.content.id = uuid;
22905
+ item.content.dataType = DataType.TreeComponent;
22906
+ item.content.item = { id: item.id };
22907
+ item.dataType = DataType.VFXItemData;
22908
+ //@ts-expect-error
22909
+ item.components.push({ id: item.content.id });
22910
+ }
22911
+ else if (item.type === ItemType.interact) {
22912
+ item.components = [];
22913
+ result.components.push(item.content);
22914
+ item.content.id = uuid;
22915
+ item.content.dataType = DataType.InteractComponent;
22916
+ item.content.item = { id: item.id };
22917
+ item.dataType = DataType.VFXItemData;
22918
+ //@ts-expect-error
22919
+ item.components.push({ id: item.content.id });
22920
+ }
22921
+ else if (item.type === ItemType.camera) {
22922
+ item.components = [];
22923
+ result.components.push(item.content);
22924
+ item.content.id = uuid;
22925
+ item.content.dataType = DataType.CameraController;
22926
+ item.content.item = { id: item.id };
22927
+ item.dataType = DataType.VFXItemData;
22928
+ //@ts-expect-error
22929
+ item.components.push({ id: item.content.id });
22930
+ }
22931
+ else if (item.type === ItemType.text) {
22932
+ item.components = [];
22933
+ result.components.push(item.content);
22934
+ item.content.id = uuid;
22935
+ item.content.dataType = DataType.TextComponent;
22936
+ item.content.item = { id: item.id };
22937
+ item.dataType = DataType.VFXItemData;
22938
+ //@ts-expect-error
22939
+ item.components.push({ id: item.content.id });
22940
+ }
22941
+ }
22942
+ }
22943
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
22944
+ finally {
22945
+ try {
22946
+ if (_o && !_o.done && (_j = _m.return)) _j.call(_m);
22947
+ }
22948
+ finally { if (e_3) throw e_3.error; }
22949
+ }
22950
+ };
22951
+ try {
22952
+ // 更正Composition.endBehavior
22953
+ for (var _f = __values(json.compositions), _g = _f.next(); !_g.done; _g = _f.next()) {
22954
+ var composition = _g.value;
22955
+ _loop_1(composition);
22956
+ }
22957
+ }
22958
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
22959
+ finally {
22960
+ try {
22961
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
22962
+ }
22963
+ finally { if (e_1) throw e_1.error; }
22964
+ }
22965
+ result.version = '3.0';
22966
+ return result;
22967
+ }
22338
22968
 
22339
22969
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
22340
22970
  var standardVersion = /^(\d+)\.(\d+)$/;
@@ -22344,16 +22974,16 @@ function getStandardJSON(json) {
22344
22974
  if (!json || typeof json !== 'object') {
22345
22975
  throw Error('expect a json object');
22346
22976
  }
22347
- // 修正老版本数据中,meshItem以及lightItem结束行为错误问题
22977
+ // 修正老版本数据中,meshItem 以及 lightItem 结束行为错误问题
22348
22978
  version22Migration(json);
22349
22979
  if (v0.test(json.version)) {
22350
22980
  reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
22351
- return version21Migration(getStandardJSONFromV0(json));
22981
+ return version30Migration(version21Migration(getStandardJSONFromV0(json)));
22352
22982
  }
22353
22983
  var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];
22354
22984
  if (mainVersion) {
22355
- if (Number(mainVersion) < 2) {
22356
- return version21Migration(json);
22985
+ if (Number(mainVersion) < 3) {
22986
+ return version30Migration(version21Migration(json));
22357
22987
  }
22358
22988
  return json;
22359
22989
  }
@@ -22677,7 +23307,7 @@ function version3Migration(scene) {
22677
23307
  try {
22678
23308
  for (var _j = __values$1(ecScene.items), _k = _j.next(); !_k.done; _k = _j.next()) {
22679
23309
  var item = _k.value;
22680
- itemGuidMap[item.id] = generateGUID();
23310
+ itemGuidMap[item.id] = generateGUID$1();
22681
23311
  // TODO: 编辑器测试用,上线后删除
22682
23312
  //@ts-expect-error
22683
23313
  item.oldId = item.id;
@@ -22733,7 +23363,7 @@ function version3Migration(scene) {
22733
23363
  // texture 增加 id 和 dataType
22734
23364
  for (var _q = __values$1(scene.textureOptions), _r = _q.next(); !_r.done; _r = _q.next()) {
22735
23365
  var texture = _r.value;
22736
- texture.id = generateGUID();
23366
+ texture.id = generateGUID$1();
22737
23367
  texture.dataType = exports.DataType.Texture;
22738
23368
  }
22739
23369
  }
@@ -22753,23 +23383,15 @@ function version3Migration(scene) {
22753
23383
  var item = _t.value;
22754
23384
  // 原 texture 索引转为统一 guid 索引
22755
23385
  if (item.content) {
22756
- //@ts-expect-error
22757
23386
  if (item.content.renderer) {
22758
- //@ts-expect-error
22759
23387
  if (item.content.renderer.texture !== undefined) {
22760
- //@ts-expect-error
22761
23388
  var oldTextureId = item.content.renderer.texture;
22762
- //@ts-expect-error
22763
23389
  item.content.renderer.texture = { id: scene.textureOptions[oldTextureId].id };
22764
23390
  }
22765
23391
  }
22766
- //@ts-expect-error
22767
23392
  if (item.content.trails) {
22768
- //@ts-expect-error
22769
23393
  if (item.content.trails.texture !== undefined) {
22770
- //@ts-expect-error
22771
23394
  var oldTextureId = item.content.trails.texture;
22772
- //@ts-expect-error
22773
23395
  item.content.trails.texture = { id: scene.textureOptions[oldTextureId].id };
22774
23396
  }
22775
23397
  }
@@ -22780,12 +23402,14 @@ function version3Migration(scene) {
22780
23402
  var rotation = item.transform.rotation;
22781
23403
  var scale = item.transform.scale;
22782
23404
  if (!position) {
23405
+ //@ts-expect-error
22783
23406
  position = [0, 0, 0];
22784
23407
  }
22785
23408
  if (!rotation) {
22786
23409
  rotation = [0, 0, 0];
22787
23410
  }
22788
23411
  if (!scale) {
23412
+ //@ts-expect-error
22789
23413
  scale = [1, 1, 1];
22790
23414
  }
22791
23415
  item.transform = {
@@ -22806,12 +23430,9 @@ function version3Migration(scene) {
22806
23430
  // sprite 的 anchor 修正
22807
23431
  if (item.type === ItemType$1.sprite) {
22808
23432
  var content = item.content;
22809
- //@ts-expect-error
22810
23433
  if (!content.renderer) {
22811
- //@ts-expect-error
22812
23434
  content.renderer = {};
22813
23435
  }
22814
- //@ts-expect-error
22815
23436
  var renderer = content.renderer;
22816
23437
  var realAnchor = convertAnchor(renderer.anchor, renderer.particleOrigin);
22817
23438
  //@ts-expect-error
@@ -22829,14 +23450,10 @@ function version3Migration(scene) {
22829
23450
  }
22830
23451
  if (item.type === ItemType$1.particle) {
22831
23452
  var content = item.content;
22832
- //@ts-expect-error
22833
23453
  if (!content.renderer) {
22834
- //@ts-expect-error
22835
23454
  content.renderer = {};
22836
23455
  }
22837
- //@ts-expect-error
22838
23456
  var renderer = content.renderer;
22839
- //@ts-expect-error
22840
23457
  content.renderer.anchor = convertAnchor(renderer.anchor, renderer.particleOrigin);
22841
23458
  }
22842
23459
  // item 的 endbehaviour 兼容
@@ -22844,164 +23461,138 @@ function version3Migration(scene) {
22844
23461
  if (item.endBehavior === END_BEHAVIOR_PAUSE_AND_DESTROY$1 || item.endBehavior === END_BEHAVIOR_PAUSE$1) {
22845
23462
  item.endBehavior = END_BEHAVIOR_FREEZE$1;
22846
23463
  }
23464
+ // 动画数据转化 TODO: 动画数据移到 TimelineComponentData
23465
+ item.content.tracks = [];
23466
+ var tracks = item.content.tracks;
23467
+ if (item.type !== ItemType$1.particle) {
23468
+ tracks.push({
23469
+ clips: [
23470
+ {
23471
+ dataType: 'TransformAnimationPlayableAsset',
23472
+ animationClip: {
23473
+ sizeOverLifetime: item.content.sizeOverLifetime,
23474
+ rotationOverLifetime: item.content.rotationOverLifetime,
23475
+ positionOverLifetime: item.content.positionOverLifetime,
23476
+ },
23477
+ },
23478
+ ],
23479
+ });
23480
+ }
23481
+ if (item.type === ItemType$1.sprite) {
23482
+ tracks.push({
23483
+ clips: [
23484
+ {
23485
+ dataType: 'SpriteColorAnimationPlayableAsset',
23486
+ animationClip: {
23487
+ colorOverLifetime: item.content.colorOverLifetime,
23488
+ startColor: item.content.options.startColor,
23489
+ },
23490
+ },
23491
+ ],
23492
+ });
23493
+ }
23494
+ // gizmo 的 target id 转换为新的 item guid
23495
+ if (item.content && item.content.options && item.content.options.target) {
23496
+ item.content.options.target = itemGuidMap[item.content.options.target];
23497
+ }
22847
23498
  // item 的 content 转为 component data 加入 JSONScene.components
22848
- var uuid = v4().replace(/-/g, '');
23499
+ var uuid = v4$1().replace(/-/g, '');
22849
23500
  if (item.type === ItemType$1.sprite) {
22850
- //@ts-expect-error
22851
23501
  item.components = [];
22852
- //@ts-expect-error
22853
23502
  components.push(item.content);
22854
- //@ts-expect-error
22855
23503
  item.content.id = uuid;
22856
- //@ts-expect-error
22857
23504
  item.content.dataType = exports.DataType.SpriteComponent;
22858
- //@ts-expect-error
22859
23505
  item.content.item = { id: item.id };
22860
- //@ts-expect-error
22861
23506
  item.dataType = exports.DataType.VFXItemData;
22862
23507
  //@ts-expect-error
22863
23508
  item.components.push({ id: item.content.id });
22864
23509
  }
22865
23510
  else if (item.type === ItemType$1.particle) {
22866
- //@ts-expect-error
22867
23511
  item.components = [];
22868
- //@ts-expect-error
22869
23512
  components.push(item.content);
22870
- //@ts-expect-error
22871
23513
  item.content.id = uuid;
22872
- //@ts-expect-error
22873
23514
  item.content.dataType = exports.DataType.ParticleSystem;
22874
- //@ts-expect-error
22875
23515
  item.content.item = { id: item.id };
22876
- //@ts-expect-error
22877
23516
  item.dataType = exports.DataType.VFXItemData;
22878
23517
  //@ts-expect-error
22879
23518
  item.components.push({ id: item.content.id });
22880
23519
  }
22881
23520
  else if (item.type === ItemType$1.mesh) {
22882
- //@ts-expect-error
22883
23521
  item.components = [];
22884
- //@ts-expect-error
22885
23522
  components.push(item.content);
22886
- //@ts-expect-error
22887
23523
  item.content.id = uuid;
22888
- //@ts-expect-error
22889
23524
  item.content.dataType = exports.DataType.MeshComponent;
22890
- //@ts-expect-error
22891
23525
  item.content.item = { id: item.id };
22892
- //@ts-expect-error
22893
23526
  item.dataType = exports.DataType.VFXItemData;
22894
23527
  //@ts-expect-error
22895
23528
  item.components.push({ id: item.content.id });
22896
23529
  }
22897
23530
  else if (item.type === ItemType$1.skybox) {
22898
- //@ts-expect-error
22899
23531
  item.components = [];
22900
- //@ts-expect-error
22901
23532
  components.push(item.content);
22902
- //@ts-expect-error
22903
23533
  item.content.id = uuid;
22904
- //@ts-expect-error
22905
23534
  item.content.dataType = exports.DataType.SkyboxComponent;
22906
- //@ts-expect-error
22907
23535
  item.content.item = { id: item.id };
22908
- //@ts-expect-error
22909
23536
  item.dataType = exports.DataType.VFXItemData;
22910
23537
  //@ts-expect-error
22911
23538
  item.components.push({ id: item.content.id });
22912
23539
  }
22913
23540
  else if (item.type === ItemType$1.light) {
22914
- //@ts-expect-error
22915
23541
  item.components = [];
22916
- //@ts-expect-error
22917
23542
  components.push(item.content);
22918
- //@ts-expect-error
22919
23543
  item.content.id = uuid;
22920
- //@ts-expect-error
22921
23544
  item.content.dataType = exports.DataType.LightComponent;
22922
- //@ts-expect-error
22923
23545
  item.content.item = { id: item.id };
22924
- //@ts-expect-error
22925
23546
  item.dataType = exports.DataType.VFXItemData;
22926
23547
  //@ts-expect-error
22927
23548
  item.components.push({ id: item.content.id });
22928
23549
  }
22929
23550
  else if (item.type === 'camera') {
22930
- //@ts-expect-error
22931
23551
  item.components = [];
22932
- //@ts-expect-error
22933
23552
  components.push(item.content);
22934
- //@ts-expect-error
22935
23553
  item.content.id = uuid;
22936
- //@ts-expect-error
22937
23554
  item.content.dataType = exports.DataType.CameraComponent;
22938
- //@ts-expect-error
22939
23555
  item.content.item = { id: item.id };
22940
- //@ts-expect-error
22941
23556
  item.dataType = exports.DataType.VFXItemData;
22942
23557
  //@ts-expect-error
22943
23558
  item.components.push({ id: item.content.id });
22944
23559
  }
22945
23560
  else if (item.type === ItemType$1.tree) {
22946
- //@ts-expect-error
22947
23561
  item.components = [];
22948
- //@ts-expect-error
22949
23562
  components.push(item.content);
22950
- //@ts-expect-error
22951
23563
  item.content.id = uuid;
22952
- //@ts-expect-error
22953
23564
  item.content.dataType = exports.DataType.TreeComponent;
22954
- //@ts-expect-error
22955
23565
  item.content.item = { id: item.id };
22956
- //@ts-expect-error
22957
23566
  item.dataType = exports.DataType.VFXItemData;
22958
23567
  //@ts-expect-error
22959
23568
  item.components.push({ id: item.content.id });
22960
23569
  }
22961
23570
  else if (item.type === ItemType$1.interact) {
22962
- //@ts-expect-error
22963
23571
  item.components = [];
22964
- //@ts-expect-error
22965
23572
  components.push(item.content);
22966
- //@ts-expect-error
22967
23573
  item.content.id = uuid;
22968
- //@ts-expect-error
22969
23574
  item.content.dataType = exports.DataType.InteractComponent;
22970
- //@ts-expect-error
22971
23575
  item.content.item = { id: item.id };
22972
- //@ts-expect-error
22973
23576
  item.dataType = exports.DataType.VFXItemData;
22974
23577
  //@ts-expect-error
22975
23578
  item.components.push({ id: item.content.id });
22976
23579
  }
22977
23580
  else if (item.type === ItemType$1.camera) {
22978
- //@ts-expect-error
22979
23581
  item.components = [];
22980
- //@ts-expect-error
22981
23582
  components.push(item.content);
22982
- //@ts-expect-error
22983
23583
  item.content.id = uuid;
22984
- //@ts-expect-error
22985
23584
  item.content.dataType = exports.DataType.CameraController;
22986
- //@ts-expect-error
22987
23585
  item.content.item = { id: item.id };
22988
- //@ts-expect-error
22989
23586
  item.dataType = exports.DataType.VFXItemData;
22990
23587
  //@ts-expect-error
22991
23588
  item.components.push({ id: item.content.id });
22992
23589
  }
22993
23590
  else if (item.type === ItemType$1.text) {
22994
- //@ts-expect-error
22995
23591
  item.components = [];
22996
- //@ts-expect-error
22997
23592
  components.push(item.content);
22998
- //@ts-expect-error
22999
23593
  item.content.id = uuid;
23000
- //@ts-expect-error
23001
23594
  item.content.dataType = exports.DataType.TextComponent;
23002
- //@ts-expect-error
23003
23595
  item.content.item = { id: item.id };
23004
- //@ts-expect-error
23005
23596
  item.dataType = exports.DataType.VFXItemData;
23006
23597
  //@ts-expect-error
23007
23598
  item.components.push({ id: item.content.id });
@@ -23025,7 +23616,7 @@ function convertAnchor(anchor, particleOrigin) {
23025
23616
  return [anchor[0] - 0.5, 0.5 - anchor[1]];
23026
23617
  }
23027
23618
  else if (particleOrigin) {
23028
- return particleOriginTranslateMap[particleOrigin];
23619
+ return particleOriginTranslateMap$1[particleOrigin];
23029
23620
  }
23030
23621
  else {
23031
23622
  return [0, 0];
@@ -23303,16 +23894,17 @@ var AssetManager = /** @class */ (function () {
23303
23894
  };
23304
23895
  AssetManager.prototype.processBins = function (bins) {
23305
23896
  return __awaiter(this, void 0, void 0, function () {
23306
- var renderLevel, jobs;
23897
+ var renderLevel, baseUrl, jobs;
23307
23898
  var _this = this;
23308
23899
  return __generator(this, function (_a) {
23309
23900
  renderLevel = this.options.renderLevel;
23901
+ baseUrl = this.baseUrl;
23310
23902
  jobs = bins.map(function (bin) {
23311
23903
  if (bin instanceof ArrayBuffer) {
23312
23904
  return bin;
23313
23905
  }
23314
23906
  if (passRenderLevel(bin.renderLevel, renderLevel)) {
23315
- return _this.loadBins(bin.url);
23907
+ return _this.loadBins(new URL(bin.url, baseUrl).href);
23316
23908
  }
23317
23909
  throw new Error("Invalid bins source: ".concat(JSON.stringify(bins)));
23318
23910
  });
@@ -23330,13 +23922,14 @@ var AssetManager = /** @class */ (function () {
23330
23922
  return [2 /*return*/];
23331
23923
  }
23332
23924
  jobs = fonts.map(function (font) { return __awaiter(_this, void 0, void 0, function () {
23333
- var fontFace;
23925
+ var url, fontFace;
23334
23926
  var _a;
23335
23927
  return __generator(this, function (_b) {
23336
23928
  switch (_b.label) {
23337
23929
  case 0:
23338
23930
  if (!(font.fontURL && !AssetManager.fonts.has(font.fontFamily))) return [3 /*break*/, 4];
23339
- fontFace = new FontFace((_a = font.fontFamily) !== null && _a !== void 0 ? _a : '', 'url(' + font.fontURL + ')');
23931
+ url = new URL(font.fontURL, this.baseUrl).href;
23932
+ fontFace = new FontFace((_a = font.fontFamily) !== null && _a !== void 0 ? _a : '', 'url(' + url + ')');
23340
23933
  _b.label = 1;
23341
23934
  case 1:
23342
23935
  _b.trys.push([1, 3, , 4]);
@@ -23349,7 +23942,7 @@ var AssetManager = /** @class */ (function () {
23349
23942
  return [3 /*break*/, 4];
23350
23943
  case 3:
23351
23944
  _b.sent();
23352
- logger.warn("Invalid fonts source: ".concat(JSON.stringify(font.fontURL)));
23945
+ logger.warn("Invalid fonts source: ".concat(JSON.stringify(url)));
23353
23946
  return [3 /*break*/, 4];
23354
23947
  case 4: return [2 /*return*/];
23355
23948
  }
@@ -23598,7 +24191,7 @@ function createTextureOptionsBySource(image, sourceFrom) {
23598
24191
  return image.source;
23599
24192
  }
23600
24193
  else if (image instanceof HTMLImageElement ||
23601
- image instanceof HTMLCanvasElement) {
24194
+ isCanvas(image)) {
23602
24195
  return {
23603
24196
  image: image,
23604
24197
  sourceType: exports.TextureSourceType.image,
@@ -23660,6 +24253,11 @@ function base64ToFile(base64, filename, contentType) {
23660
24253
  var file = new File([blob], filename, { type: contentType });
23661
24254
  return file;
23662
24255
  }
24256
+ function isCanvas(cavnas) {
24257
+ var _a;
24258
+ // 小程序 Canvas 无法使用 instanceof HTMLCanvasElement 判断
24259
+ return typeof cavnas === 'object' && cavnas !== null && ((_a = cavnas.tagName) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === 'CANVAS';
24260
+ }
23663
24261
 
23664
24262
  var tmpScale = new Vector3(1, 1, 1);
23665
24263
  /**
@@ -23879,8 +24477,9 @@ var Camera = /** @class */ (function () {
23879
24477
  Camera.prototype.getInverseVPRatio = function (z) {
23880
24478
  var pos = new Vector3(0, 0, z);
23881
24479
  var mat = this.getViewProjectionMatrix();
23882
- var nz = pos.applyMatrix(mat).z;
23883
- return new Vector3(1, 1, nz).applyMatrix(mat);
24480
+ var inverseVP = this.getInverseViewProjectionMatrix();
24481
+ var nz = mat.projectPoint(pos).z;
24482
+ return inverseVP.projectPoint(new Vector3(1, 1, nz));
23884
24483
  };
23885
24484
  /**
23886
24485
  * 设置相机的旋转四元数
@@ -23892,7 +24491,6 @@ var Camera = /** @class */ (function () {
23892
24491
  this.dirty = true;
23893
24492
  }
23894
24493
  else {
23895
- this.options.quat;
23896
24494
  if (!this.options.quat.equals(value)) {
23897
24495
  this.options.quat.copyFrom(value);
23898
24496
  this.dirty = true;
@@ -24060,8 +24658,7 @@ var CompositionComponent = /** @class */ (function (_super) {
24060
24658
  }
24061
24659
  item.getComponent(CompositionComponent).createContent();
24062
24660
  }
24063
- else if (itemData.type === 'ECS' ||
24064
- itemData.type === ItemType$1.sprite ||
24661
+ else if (itemData.type === ItemType$1.sprite ||
24065
24662
  itemData.type === ItemType$1.text ||
24066
24663
  itemData.type === ItemType$1.particle ||
24067
24664
  itemData.type === ItemType$1.mesh ||
@@ -24079,20 +24676,7 @@ var CompositionComponent = /** @class */ (function (_super) {
24079
24676
  item = new VFXItem(this.engine, itemData);
24080
24677
  item.composition = this.item.composition;
24081
24678
  // 兼容老的数据代码,json 更新后可移除
24082
- switch (itemData.type) {
24083
- case ItemType$1.text: {
24084
- // 添加文本组件
24085
- var textItem = new TextComponent(this.engine, itemData.content);
24086
- textItem.item = item;
24087
- item.components.push(textItem);
24088
- item.rendererComponents.push(textItem);
24089
- item._content = textItem;
24090
- break;
24091
- }
24092
- default: {
24093
- item = createVFXItem(itemData, this.item.composition);
24094
- }
24095
- }
24679
+ item = createVFXItem(itemData, this.item.composition);
24096
24680
  }
24097
24681
  item.parent = this.item;
24098
24682
  // 相机不跟随合成移动
@@ -25482,10 +26066,8 @@ var Engine = /** @class */ (function () {
25482
26066
  Engine.prototype.addPackageDatas = function (scene) {
25483
26067
  var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f;
25484
26068
  var jsonScene = scene.jsonScene;
25485
- //@ts-expect-error
25486
26069
  if (jsonScene.items) {
25487
26070
  try {
25488
- //@ts-expect-error
25489
26071
  for (var _g = __values$1(jsonScene.items), _h = _g.next(); !_h.done; _h = _g.next()) {
25490
26072
  var vfxItemData = _h.value;
25491
26073
  this.addEffectsObjectData(vfxItemData);
@@ -25499,10 +26081,8 @@ var Engine = /** @class */ (function () {
25499
26081
  finally { if (e_1) throw e_1.error; }
25500
26082
  }
25501
26083
  }
25502
- //@ts-expect-error
25503
26084
  if (jsonScene.materials) {
25504
26085
  try {
25505
- //@ts-expect-error
25506
26086
  for (var _j = __values$1(jsonScene.materials), _k = _j.next(); !_k.done; _k = _j.next()) {
25507
26087
  var materialData = _k.value;
25508
26088
  this.addEffectsObjectData(materialData);
@@ -25516,10 +26096,8 @@ var Engine = /** @class */ (function () {
25516
26096
  finally { if (e_2) throw e_2.error; }
25517
26097
  }
25518
26098
  }
25519
- //@ts-expect-error
25520
26099
  if (jsonScene.shaders) {
25521
26100
  try {
25522
- //@ts-expect-error
25523
26101
  for (var _l = __values$1(jsonScene.shaders), _m = _l.next(); !_m.done; _m = _l.next()) {
25524
26102
  var shaderData = _m.value;
25525
26103
  this.addEffectsObjectData(shaderData);
@@ -25533,10 +26111,8 @@ var Engine = /** @class */ (function () {
25533
26111
  finally { if (e_3) throw e_3.error; }
25534
26112
  }
25535
26113
  }
25536
- //@ts-expect-error
25537
26114
  if (jsonScene.geometries) {
25538
26115
  try {
25539
- //@ts-expect-error
25540
26116
  for (var _o = __values$1(jsonScene.geometries), _p = _o.next(); !_p.done; _p = _o.next()) {
25541
26117
  var geometryData = _p.value;
25542
26118
  this.addEffectsObjectData(geometryData);
@@ -25550,10 +26126,8 @@ var Engine = /** @class */ (function () {
25550
26126
  finally { if (e_4) throw e_4.error; }
25551
26127
  }
25552
26128
  }
25553
- //@ts-expect-error
25554
26129
  if (jsonScene.components) {
25555
26130
  try {
25556
- //@ts-expect-error
25557
26131
  for (var _q = __values$1(jsonScene.components), _r = _q.next(); !_r.done; _r = _q.next()) {
25558
26132
  var componentData = _r.value;
25559
26133
  this.addEffectsObjectData(componentData);
@@ -26478,13 +27052,13 @@ var ThreeMaterial = /** @class */ (function (_super) {
26478
27052
  this.uniforms[name] = this.material.uniforms[name] = uniform;
26479
27053
  };
26480
27054
  // 下列三个方法暂时不需要实现
26481
- ThreeMaterial.prototype.enableKeyword = function (keyword) {
27055
+ ThreeMaterial.prototype.enableMacro = function (keyword) {
26482
27056
  throw new Error('Method not implemented.');
26483
27057
  };
26484
- ThreeMaterial.prototype.disableKeyword = function (keyword) {
27058
+ ThreeMaterial.prototype.disableMacro = function (keyword) {
26485
27059
  throw new Error('Method not implemented.');
26486
27060
  };
26487
- ThreeMaterial.prototype.isKeywordEnabled = function (keyword) {
27061
+ ThreeMaterial.prototype.isMacroEnabled = function (keyword) {
26488
27062
  throw new Error('Method not implemented.');
26489
27063
  };
26490
27064
  ThreeMaterial.prototype.clone = function (props) {
@@ -27542,12 +28116,11 @@ Geometry.create = function (engine, options) {
27542
28116
  Mesh.create = function (engine, props) {
27543
28117
  return new ThreeMesh(engine, props);
27544
28118
  };
27545
- var version = "2.0.0-alpha.2";
28119
+ var version = "2.0.0-alpha.4";
27546
28120
  logger.info('THREEJS plugin version: ' + version);
27547
28121
 
27548
28122
  exports.AbstractPlugin = AbstractPlugin;
27549
- exports.ActivationClipPlayable = ActivationClipPlayable;
27550
- exports.AnimationClipPlayable = AnimationClipPlayable;
28123
+ exports.ActivationPlayable = ActivationPlayable;
27551
28124
  exports.AssetLoader = AssetLoader;
27552
28125
  exports.AssetManager = AssetManager;
27553
28126
  exports.BYTES_TYPE_MAP = BYTES_TYPE_MAP;
@@ -27636,6 +28209,7 @@ exports.SPRITE_VERTEX_STRIDE = SPRITE_VERTEX_STRIDE;
27636
28209
  exports.SemanticMap = SemanticMap;
27637
28210
  exports.SerializationHelper = SerializationHelper;
27638
28211
  exports.Shader = Shader;
28212
+ exports.ShaderVariant = ShaderVariant;
27639
28213
  exports.SpriteColorPlayable = SpriteColorPlayable;
27640
28214
  exports.SpriteComponent = SpriteComponent;
27641
28215
  exports.SpriteLoader = SpriteLoader;
@@ -27657,6 +28231,8 @@ exports.TimelineClip = TimelineClip;
27657
28231
  exports.TimelineComponent = TimelineComponent;
27658
28232
  exports.Track = Track;
27659
28233
  exports.Transform = Transform;
28234
+ exports.TransformAnimationPlayable = TransformAnimationPlayable;
28235
+ exports.TransformAnimationPlayableAsset = TransformAnimationPlayableAsset;
27660
28236
  exports.VFXItem = VFXItem;
27661
28237
  exports.ValueGetter = ValueGetter;
27662
28238
  exports.addByOrder = addByOrder;
@@ -27710,7 +28286,7 @@ exports.gaussianDownHFrag = gaussianDownHFrag;
27710
28286
  exports.gaussianDownVFrag = gaussianDownVFrag;
27711
28287
  exports.gaussianUpFrag = gaussianUpFrag;
27712
28288
  exports.generateEmptyTypedArray = generateEmptyTypedArray;
27713
- exports.generateGUID = generateGUID;
28289
+ exports.generateGUID = generateGUID$1;
27714
28290
  exports.generateHalfFloatTexture = generateHalfFloatTexture;
27715
28291
  exports.getBackgroundImage = getBackgroundImage;
27716
28292
  exports.getColorFromGradientStops = getColorFromGradientStops;
@@ -27767,7 +28343,7 @@ exports.nearestPowerOfTwo = nearestPowerOfTwo;
27767
28343
  exports.noop = noop;
27768
28344
  exports.parsePercent = parsePercent$1;
27769
28345
  exports.particleFrag = particleFrag;
27770
- exports.particleOriginTranslateMap = particleOriginTranslateMap;
28346
+ exports.particleOriginTranslateMap = particleOriginTranslateMap$1;
27771
28347
  exports.particleVert = particleVert;
27772
28348
  exports.pluginLoaderMap = pluginLoaderMap;
27773
28349
  exports.random = random;