@galacean/effects-core 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 core 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';
@@ -126,7 +126,7 @@ function __read$3(o, n) {
126
126
  return ar;
127
127
  }
128
128
 
129
- function __spreadArray$2(to, from, pack) {
129
+ function __spreadArray$3(to, from, pack) {
130
130
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
131
131
  if (ar || !(i in from)) {
132
132
  if (!ar) ar = Array.prototype.slice.call(from, 0, i);
@@ -144,20 +144,20 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
144
144
  // Unique ID creation requires a high quality random # generator. In the browser we therefore
145
145
  // require the crypto API and do not support built-in fallback to lower quality random number
146
146
  // generators (like Math.random()).
147
- let getRandomValues;
148
- const rnds8 = new Uint8Array(16);
149
- function rng() {
147
+ let getRandomValues$1;
148
+ const rnds8$1 = new Uint8Array(16);
149
+ function rng$1() {
150
150
  // lazy load so that environments that need to polyfill have a chance to do so
151
- if (!getRandomValues) {
151
+ if (!getRandomValues$1) {
152
152
  // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
153
- getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
153
+ getRandomValues$1 = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
154
154
 
155
- if (!getRandomValues) {
155
+ if (!getRandomValues$1) {
156
156
  throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
157
157
  }
158
158
  }
159
159
 
160
- return getRandomValues(rnds8);
160
+ return getRandomValues$1(rnds8$1);
161
161
  }
162
162
 
163
163
  /**
@@ -165,30 +165,30 @@ function rng() {
165
165
  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
166
166
  */
167
167
 
168
- const byteToHex = [];
168
+ const byteToHex$2 = [];
169
169
 
170
170
  for (let i = 0; i < 256; ++i) {
171
- byteToHex.push((i + 0x100).toString(16).slice(1));
171
+ byteToHex$2.push((i + 0x100).toString(16).slice(1));
172
172
  }
173
173
 
174
- function unsafeStringify(arr, offset = 0) {
174
+ function unsafeStringify$1(arr, offset = 0) {
175
175
  // Note: Be careful editing this code! It's been tuned for performance
176
176
  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
177
- 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]];
177
+ 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]];
178
178
  }
179
179
 
180
- const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
181
- var native = {
182
- randomUUID
180
+ const randomUUID$1 = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
181
+ var native$1 = {
182
+ randomUUID: randomUUID$1
183
183
  };
184
184
 
185
- function v4(options, buf, offset) {
186
- if (native.randomUUID && !buf && !options) {
187
- return native.randomUUID();
185
+ function v4$1(options, buf, offset) {
186
+ if (native$1.randomUUID && !buf && !options) {
187
+ return native$1.randomUUID();
188
188
  }
189
189
 
190
190
  options = options || {};
191
- const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
191
+ const rnds = options.random || (options.rng || rng$1)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
192
192
 
193
193
  rnds[6] = rnds[6] & 0x0f | 0x40;
194
194
  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
@@ -203,7 +203,7 @@ function v4(options, buf, offset) {
203
203
  return buf;
204
204
  }
205
205
 
206
- return unsafeStringify(rnds);
206
+ return unsafeStringify$1(rnds);
207
207
  }
208
208
 
209
209
  function addItem(arr, value) {
@@ -2190,7 +2190,7 @@ var __read$2 = (undefined && undefined.__read) || function (o, n) {
2190
2190
  }
2191
2191
  return ar;
2192
2192
  };
2193
- var __spreadArray$1 = (undefined && undefined.__spreadArray) || function (to, from, pack) {
2193
+ var __spreadArray$2 = (undefined && undefined.__spreadArray) || function (to, from, pack) {
2194
2194
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
2195
2195
  if (ar || !(i in from)) {
2196
2196
  if (!ar) ar = Array.prototype.slice.call(from, 0, i);
@@ -2507,7 +2507,7 @@ var Matrix4 = /** @class */ (function () {
2507
2507
  * @returns 复制结果
2508
2508
  */
2509
2509
  Matrix4.prototype.copyFrom = function (m) {
2510
- this.elements = __spreadArray$1([], __read$2(m.elements), false);
2510
+ this.elements = __spreadArray$2([], __read$2(m.elements), false);
2511
2511
  return this;
2512
2512
  };
2513
2513
  /**
@@ -3036,7 +3036,7 @@ var Matrix4 = /** @class */ (function () {
3036
3036
  * @returns
3037
3037
  */
3038
3038
  Matrix4.prototype.toArray = function () {
3039
- return __spreadArray$1([], __read$2(this.elements), false);
3039
+ return __spreadArray$2([], __read$2(this.elements), false);
3040
3040
  };
3041
3041
  Matrix4.prototype.fill = function (array, offset) {
3042
3042
  if (offset === void 0) { offset = 0; }
@@ -4289,7 +4289,7 @@ var __read$1 = (undefined && undefined.__read) || function (o, n) {
4289
4289
  }
4290
4290
  return ar;
4291
4291
  };
4292
- var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
4292
+ var __spreadArray$1 = (undefined && undefined.__spreadArray) || function (to, from, pack) {
4293
4293
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4294
4294
  if (ar || !(i in from)) {
4295
4295
  if (!ar) ar = Array.prototype.slice.call(from, 0, i);
@@ -4476,7 +4476,7 @@ var Matrix3 = /** @class */ (function () {
4476
4476
  * @returns 复制结果
4477
4477
  */
4478
4478
  Matrix3.prototype.copyFrom = function (m) {
4479
- this.elements = __spreadArray([], __read$1(m.elements), false);
4479
+ this.elements = __spreadArray$1([], __read$1(m.elements), false);
4480
4480
  return this;
4481
4481
  };
4482
4482
  /**
@@ -4692,7 +4692,7 @@ var Matrix3 = /** @class */ (function () {
4692
4692
  * @returns
4693
4693
  */
4694
4694
  Matrix3.prototype.toArray = function () {
4695
- return __spreadArray([], __read$1(this.elements), false);
4695
+ return __spreadArray$1([], __read$1(this.elements), false);
4696
4696
  };
4697
4697
  Matrix3.prototype.fill = function (array, offset) {
4698
4698
  if (offset === void 0) { offset = 0; }
@@ -6450,7 +6450,7 @@ function error(message) {
6450
6450
  for (var _i = 1; _i < arguments.length; _i++) {
6451
6451
  args[_i - 1] = arguments[_i];
6452
6452
  }
6453
- console.error.apply(console, __spreadArray$2(__spreadArray$2([], __read$3(format(message)), false), [args], false));
6453
+ console.error.apply(console, __spreadArray$3(__spreadArray$3([], __read$3(format(message)), false), [args], false));
6454
6454
  localLogger === null || localLogger === void 0 ? void 0 : localLogger('error', message, args);
6455
6455
  }
6456
6456
  /**
@@ -6463,7 +6463,7 @@ function info(message) {
6463
6463
  for (var _i = 1; _i < arguments.length; _i++) {
6464
6464
  args[_i - 1] = arguments[_i];
6465
6465
  }
6466
- console.debug.apply(console, __spreadArray$2([], __read$3(format(message)), false));
6466
+ console.debug.apply(console, __spreadArray$3([], __read$3(format(message)), false));
6467
6467
  localLogger === null || localLogger === void 0 ? void 0 : localLogger('info', message, args);
6468
6468
  }
6469
6469
  function warn(message) {
@@ -6471,7 +6471,7 @@ function warn(message) {
6471
6471
  for (var _i = 1; _i < arguments.length; _i++) {
6472
6472
  args[_i - 1] = arguments[_i];
6473
6473
  }
6474
- console.warn.apply(console, __spreadArray$2([], __read$3(format(message)), false));
6474
+ console.warn.apply(console, __spreadArray$3([], __read$3(format(message)), false));
6475
6475
  localLogger === null || localLogger === void 0 ? void 0 : localLogger('warn', message, args);
6476
6476
  }
6477
6477
  /**
@@ -6568,17 +6568,30 @@ function random(min, max) {
6568
6568
  function throwDestroyedError() {
6569
6569
  throw Error('destroyed item cannot be used again');
6570
6570
  }
6571
- function generateGUID() {
6572
- return v4().replace(/-/g, '');
6571
+ function generateGUID$1() {
6572
+ return v4$1().replace(/-/g, '');
6573
6573
  }
6574
6574
 
6575
6575
  /*!
6576
6576
  * Name: @galacean/effects-specification
6577
6577
  * Description: Galacean Effects JSON Specification
6578
6578
  * Author: Ant Group CO., Ltd.
6579
- * Version: v1.0.1
6579
+ * Version: v2.0.0-alpha.2
6580
+ */
6581
+
6582
+ typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
6583
+
6584
+ /**
6585
+ * Convert array of 16 byte values to UUID string format of the form:
6586
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
6580
6587
  */
6581
6588
 
6589
+ const byteToHex$1 = [];
6590
+
6591
+ for (let i = 0; i < 256; ++i) {
6592
+ byteToHex$1.push((i + 0x100).toString(16).slice(1));
6593
+ }
6594
+
6582
6595
  /*********************************************/
6583
6596
  /* 元素属性参数类型 */
6584
6597
  /*********************************************/
@@ -6841,6 +6854,10 @@ var ItemType$1;
6841
6854
  * 天空盒元素
6842
6855
  */
6843
6856
  ItemType["skybox"] = "skybox";
6857
+ /**
6858
+ * 特效元素
6859
+ */
6860
+ ItemType["effect"] = "effect";
6844
6861
  })(ItemType$1 || (ItemType$1 = {}));
6845
6862
  /**
6846
6863
  * 渲染模式
@@ -6955,6 +6972,10 @@ var CompositionEndBehavior$1;
6955
6972
  * 销毁并保留最后一帧
6956
6973
  */
6957
6974
  CompositionEndBehavior[CompositionEndBehavior["pause_destroy"] = END_BEHAVIOR_PAUSE_AND_DESTROY$1] = "pause_destroy";
6975
+ /**
6976
+ * 冻结
6977
+ */
6978
+ CompositionEndBehavior[CompositionEndBehavior["freeze"] = END_BEHAVIOR_FREEZE$1] = "freeze";
6958
6979
  })(CompositionEndBehavior$1 || (CompositionEndBehavior$1 = {}));
6959
6980
 
6960
6981
  /*********************************************/
@@ -7093,12 +7114,38 @@ var ShapeArcMode$1;
7093
7114
 
7094
7115
  var BloomFilterThresholdAvgColor = 0;
7095
7116
 
7117
+ var LightType$1;
7118
+ (function (LightType) {
7119
+ /**
7120
+ * 点光源
7121
+ */
7122
+ LightType["point"] = "point";
7123
+ /**
7124
+ * 聚光灯
7125
+ */
7126
+ LightType["spot"] = "spot";
7127
+ /**
7128
+ * 方向光
7129
+ */
7130
+ LightType["directional"] = "directional";
7131
+ /**
7132
+ * 环境光
7133
+ */
7134
+ LightType["ambient"] = "ambient";
7135
+ })(LightType$1 || (LightType$1 = {}));
7136
+
7096
7137
  var ModelBoundingType$1;
7097
7138
  (function (ModelBoundingType) {
7098
7139
  ModelBoundingType[ModelBoundingType["box"] = 2] = "box";
7099
7140
  ModelBoundingType[ModelBoundingType["sphere"] = 3] = "sphere";
7100
7141
  })(ModelBoundingType$1 || (ModelBoundingType$1 = {}));
7101
7142
 
7143
+ var CameraType$1;
7144
+ (function (CameraType) {
7145
+ CameraType["orthographic"] = "orthographic";
7146
+ CameraType["perspective"] = "perspective";
7147
+ })(CameraType$1 || (CameraType$1 = {}));
7148
+
7102
7149
  // 材质类型
7103
7150
  var MaterialType$1;
7104
7151
  (function (MaterialType) {
@@ -7244,6 +7291,28 @@ var FontStyle$1;
7244
7291
  FontStyle["oblique"] = "oblique";
7245
7292
  })(FontStyle$1 || (FontStyle$1 = {}));
7246
7293
 
7294
+ var DataType$1;
7295
+ (function (DataType) {
7296
+ DataType["VFXItemData"] = "VFXItemData";
7297
+ DataType["EffectComponent"] = "EffectComponent";
7298
+ DataType["Material"] = "Material";
7299
+ DataType["Shader"] = "Shader";
7300
+ DataType["SpriteComponent"] = "SpriteComponent";
7301
+ DataType["ParticleSystem"] = "ParticleSystem";
7302
+ DataType["InteractComponent"] = "InteractComponent";
7303
+ DataType["CameraController"] = "CameraController";
7304
+ DataType["Geometry"] = "Geometry";
7305
+ DataType["Texture"] = "Texture";
7306
+ DataType["TextComponent"] = "TextComponent";
7307
+ // FIXME: 先完成ECS的场景转换,后面移到spec中
7308
+ DataType["MeshComponent"] = "MeshComponent";
7309
+ DataType["SkyboxComponent"] = "SkyboxComponent";
7310
+ DataType["LightComponent"] = "LightComponent";
7311
+ DataType["CameraComponent"] = "CameraComponent";
7312
+ DataType["ModelPluginComponent"] = "ModelPluginComponent";
7313
+ DataType["TreeComponent"] = "TreeComponent";
7314
+ })(DataType$1 || (DataType$1 = {}));
7315
+
7247
7316
  var index = /*#__PURE__*/Object.freeze({
7248
7317
  __proto__: null,
7249
7318
  get BezierKeyframeType () { return BezierKeyframeType$1; },
@@ -7252,7 +7321,9 @@ var index = /*#__PURE__*/Object.freeze({
7252
7321
  CAMERA_CLIP_MODE_NORMAL: CAMERA_CLIP_MODE_NORMAL$1,
7253
7322
  CAMERA_CLIP_MODE_VERTICAL: CAMERA_CLIP_MODE_VERTICAL$1,
7254
7323
  get CameraClipMode () { return CameraClipMode$1; },
7324
+ get CameraType () { return CameraType$1; },
7255
7325
  get CompositionEndBehavior () { return CompositionEndBehavior$1; },
7326
+ get DataType () { return DataType$1; },
7256
7327
  END_BEHAVIOR_DESTROY: END_BEHAVIOR_DESTROY$1,
7257
7328
  END_BEHAVIOR_DESTROY_CHILDREN: END_BEHAVIOR_DESTROY_CHILDREN$1,
7258
7329
  END_BEHAVIOR_FORWARD: END_BEHAVIOR_FORWARD$1,
@@ -7265,6 +7336,7 @@ var index = /*#__PURE__*/Object.freeze({
7265
7336
  get InteractType () { return InteractType$1; },
7266
7337
  get ItemEndBehavior () { return ItemEndBehavior$1; },
7267
7338
  get ItemType () { return ItemType$1; },
7339
+ get LightType () { return LightType$1; },
7268
7340
  MESSAGE_ITEM_PHRASE_BEGIN: MESSAGE_ITEM_PHRASE_BEGIN,
7269
7341
  MESSAGE_ITEM_PHRASE_END: MESSAGE_ITEM_PHRASE_END,
7270
7342
  get MaskMode () { return MaskMode$1; },
@@ -7342,390 +7414,121 @@ function generateSerializableMember(type, sourceName) {
7342
7414
  };
7343
7415
  }
7344
7416
 
7417
+ exports.ShaderType = void 0;
7418
+ (function (ShaderType) {
7419
+ ShaderType[ShaderType["vertex"] = 0] = "vertex";
7420
+ ShaderType[ShaderType["fragment"] = 1] = "fragment";
7421
+ })(exports.ShaderType || (exports.ShaderType = {}));
7422
+
7345
7423
  /**
7346
- * @since 2.0.0
7347
- * @internal
7424
+ * Helper class to create a WebGL Context
7425
+ *
7426
+ * @param canvas
7427
+ * @param glType
7428
+ * @param options
7429
+ * @returns
7348
7430
  */
7349
- var EffectsObject = /** @class */ (function () {
7350
- function EffectsObject(engine) {
7351
- this.engine = engine;
7352
- this.guid = generateGUID();
7353
- this.taggedProperties = {};
7354
- this.engine.addInstance(this);
7431
+ function createGLContext(canvas, glType, options) {
7432
+ if (glType === void 0) { glType = 'webgl'; }
7433
+ var context;
7434
+ if (glType === 'webgl2') {
7435
+ context = canvas.getContext('webgl2', options);
7436
+ if (!context) {
7437
+ console.debug('WebGL2 context retrieval failed, falling back to WebGL context.');
7438
+ }
7355
7439
  }
7356
- EffectsObject.prototype.getInstanceId = function () {
7357
- return this.guid;
7358
- };
7359
- EffectsObject.prototype.setInstanceId = function (guid) {
7360
- this.engine.removeInstance(this.guid);
7361
- this.guid = guid;
7362
- this.engine.addInstance(this);
7363
- };
7364
- EffectsObject.prototype.toData = function () { };
7365
- /**
7366
- * 反序列化函数
7367
- *
7368
- * @param data - 对象的序列化的数据
7369
- */
7370
- EffectsObject.prototype.fromData = function (data) {
7371
- if (data.id) {
7372
- this.setInstanceId(data.id);
7440
+ if (!context || glType === 'webgl') {
7441
+ context = canvas.getContext('webgl', options);
7442
+ }
7443
+ if (!context) {
7444
+ throw new Error('This browser does not support WebGL or the WebGL version is incorrect. Please check your WebGL version.');
7445
+ }
7446
+ return context;
7447
+ }
7448
+
7449
+ function gpuTimer(gl) {
7450
+ var _this = this;
7451
+ var ext = gl.getExtension('EXT_disjoint_timer_query_webgl2');
7452
+ if (ext) {
7453
+ var query_1 = gl.createQuery();
7454
+ var getTime_1 = function () { return __awaiter(_this, void 0, void 0, function () {
7455
+ return __generator(this, function (_a) {
7456
+ return [2 /*return*/, new Promise(function (resolve, reject) {
7457
+ if (query_1) {
7458
+ var available = gl.getQueryParameter(query_1, gl.QUERY_RESULT_AVAILABLE);
7459
+ var disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);
7460
+ if (available && !disjoint) {
7461
+ // See how much time the rendering of the object took in nanoseconds.
7462
+ var timeElapsed = gl.getQueryParameter(query_1, gl.QUERY_RESULT); // Do something useful with the time. Note that care should be
7463
+ // taken to use all significant bits of the result, not just the
7464
+ // least significant 32 bits.
7465
+ resolve(timeElapsed / 1000 / 1000);
7466
+ }
7467
+ if (available || disjoint) {
7468
+ // Clean up the query object.
7469
+ gl.deleteQuery(query_1); // Don't re-enter this polling loop.
7470
+ query_1 = null;
7471
+ }
7472
+ available !== null && query_1 && window.setTimeout(function () {
7473
+ getTime_1().then(resolve).catch;
7474
+ }, 1);
7475
+ }
7476
+ })];
7477
+ });
7478
+ }); };
7479
+ if (!query_1) {
7480
+ return;
7373
7481
  }
7374
- };
7375
- EffectsObject.prototype.dispose = function () { };
7376
- __decorate([
7377
- serialize()
7378
- ], EffectsObject.prototype, "guid", void 0);
7379
- return EffectsObject;
7380
- }());
7482
+ return {
7483
+ begin: function () {
7484
+ query_1 && gl.beginQuery(ext.TIME_ELAPSED_EXT, query_1);
7485
+ },
7486
+ end: function () {
7487
+ gl.endQuery(ext.TIME_ELAPSED_EXT);
7488
+ },
7489
+ getTime: getTime_1,
7490
+ };
7491
+ }
7492
+ }
7381
7493
 
7382
- /**
7383
- * @since 2.0.0
7384
- * @internal
7385
- */
7386
- var Component = /** @class */ (function (_super) {
7387
- __extends(Component, _super);
7388
- function Component() {
7389
- return _super !== null && _super.apply(this, arguments) || this;
7494
+ var initErrors = [];
7495
+ // @ts-expect-error
7496
+ var glContext = {};
7497
+ if (!initErrors.length) {
7498
+ initGLContext();
7499
+ }
7500
+ function initGLContext() {
7501
+ // 重要:iOS 9/10 低版本需要拷贝 gl context prototype,要不然会有属性值的缺失
7502
+ if (typeof WebGL2RenderingContext === 'function') {
7503
+ copy$1(WebGL2RenderingContext);
7390
7504
  }
7391
- Object.defineProperty(Component.prototype, "transform", {
7392
- /**
7393
- * 附加到的 VFXItem 对象 Transform 组件
7394
- */
7395
- get: function () {
7396
- return this.item.transform;
7397
- },
7398
- enumerable: false,
7399
- configurable: true
7400
- });
7401
- Component.prototype.onAttached = function () { };
7402
- Component.prototype.onDestroy = function () { };
7403
- Component.prototype.fromData = function (data) {
7404
- _super.prototype.fromData.call(this, data);
7405
- if (data.item) {
7406
- this.item = data.item;
7407
- }
7408
- };
7409
- Component.prototype.dispose = function () {
7410
- this.onDestroy();
7411
- if (this.item) {
7412
- removeItem(this.item.components, this);
7505
+ else if (typeof WebGLRenderingContext !== 'undefined') {
7506
+ copy$1(WebGLRenderingContext);
7507
+ copy$1(WebGLRenderingContext.prototype);
7508
+ }
7509
+ else {
7510
+ initErrors.push(
7511
+ // iOS 16 lockdown mode
7512
+ 'iOS16 lockdown mode, WebGL Constants not in global');
7513
+ }
7514
+ if (!initErrors.length && !('HALF_FLOAT' in glContext)) {
7515
+ // @ts-expect-error set default value
7516
+ glContext['HALF_FLOAT'] = 5131;
7517
+ }
7518
+ }
7519
+ function isWebGL2(gl) {
7520
+ return typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';
7521
+ }
7522
+ function copy$1(target) {
7523
+ for (var name_1 in target) {
7524
+ if (/^[A-Z_]/.test(name_1)) {
7525
+ // @ts-expect-error safe to assign
7526
+ glContext[name_1] = target[name_1];
7413
7527
  }
7414
- };
7415
- return Component;
7416
- }(EffectsObject));
7417
- /**
7418
- * @since 2.0.0
7419
- * @internal
7420
- */
7421
- var Behaviour = /** @class */ (function (_super) {
7422
- __extends(Behaviour, _super);
7423
- function Behaviour() {
7424
- var _this = _super !== null && _super.apply(this, arguments) || this;
7425
- _this._enabled = true;
7426
- return _this;
7427
- }
7428
- Object.defineProperty(Behaviour.prototype, "isActiveAndEnabled", {
7429
- /**
7430
- * 组件是否可以更新,true 更新,false 不更新
7431
- */
7432
- get: function () {
7433
- return this.item.getVisible() && this.enabled;
7434
- },
7435
- enumerable: false,
7436
- configurable: true
7437
- });
7438
- Object.defineProperty(Behaviour.prototype, "enabled", {
7439
- get: function () {
7440
- return this._enabled;
7441
- },
7442
- set: function (value) {
7443
- this._enabled = value;
7444
- if (value) {
7445
- this.onBehaviourEnable();
7446
- }
7447
- },
7448
- enumerable: false,
7449
- configurable: true
7450
- });
7451
- Behaviour.prototype.onBehaviourEnable = function () { };
7452
- Behaviour.prototype.fromData = function (data) {
7453
- _super.prototype.fromData.call(this, data);
7454
- };
7455
- Behaviour.prototype.toData = function () {
7456
- _super.prototype.toData.call(this);
7457
- };
7458
- __decorate([
7459
- serialize()
7460
- ], Behaviour.prototype, "_enabled", void 0);
7461
- return Behaviour;
7462
- }(Component));
7463
- /**
7464
- * @since 2.0.0
7465
- * @internal
7466
- */
7467
- var ItemBehaviour = /** @class */ (function (_super) {
7468
- __extends(ItemBehaviour, _super);
7469
- function ItemBehaviour() {
7470
- var _this = _super !== null && _super.apply(this, arguments) || this;
7471
- _this.started = false;
7472
- return _this;
7473
- }
7474
- // /**
7475
- // * 生命周期函数,初始化后调用,生命周期内只调用一次
7476
- // */
7477
- // awake () {
7478
- // // OVERRIDE
7479
- // }
7480
- /**
7481
- * 在每次设置 enabled 为 true 时触发
7482
- */
7483
- ItemBehaviour.prototype.onEnable = function () { };
7484
- /**
7485
- * 生命周期函数,在第一次 update 前调用,生命周期内只调用一次
7486
- */
7487
- ItemBehaviour.prototype.start = function () {
7488
- // OVERRIDE
7489
- };
7490
- /**
7491
- * 生命周期函数,每帧调用一次
7492
- */
7493
- ItemBehaviour.prototype.update = function (dt) {
7494
- // OVERRIDE
7495
- };
7496
- /**
7497
- * 生命周期函数,每帧调用一次,在 update 之后调用
7498
- */
7499
- ItemBehaviour.prototype.lateUpdate = function (dt) {
7500
- // OVERRIDE
7501
- };
7502
- ItemBehaviour.prototype.onAttached = function () {
7503
- this.item.itemBehaviours.push(this);
7504
- };
7505
- ItemBehaviour.prototype.dispose = function () {
7506
- if (this.item) {
7507
- removeItem(this.item.itemBehaviours, this);
7508
- }
7509
- _super.prototype.dispose.call(this);
7510
- };
7511
- ItemBehaviour.prototype.onBehaviourEnable = function () {
7512
- this.onEnable();
7513
- if (!this.started) {
7514
- this.start();
7515
- this.started = true;
7516
- }
7517
- };
7518
- return ItemBehaviour;
7519
- }(Behaviour));
7520
-
7521
- /**
7522
- * 所有渲染组件的基类
7523
- * @since 2.0.0
7524
- */
7525
- var RendererComponent = /** @class */ (function (_super) {
7526
- __extends(RendererComponent, _super);
7527
- function RendererComponent() {
7528
- var _this = _super !== null && _super.apply(this, arguments) || this;
7529
- _this.started = false;
7530
- _this.materials = [];
7531
- _this._enabled = true;
7532
- return _this;
7533
- }
7534
- Object.defineProperty(RendererComponent.prototype, "priority", {
7535
- get: function () {
7536
- return this._priority;
7537
- },
7538
- set: function (value) {
7539
- this._priority = value;
7540
- },
7541
- enumerable: false,
7542
- configurable: true
7543
- });
7544
- Object.defineProperty(RendererComponent.prototype, "enabled", {
7545
- get: function () {
7546
- return this._enabled;
7547
- },
7548
- set: function (value) {
7549
- this._enabled = value;
7550
- if (value) {
7551
- this.onEnable();
7552
- }
7553
- },
7554
- enumerable: false,
7555
- configurable: true
7556
- });
7557
- Object.defineProperty(RendererComponent.prototype, "isActiveAndEnabled", {
7558
- /**
7559
- * 组件是否可以更新,true 更新,false 不更新
7560
- */
7561
- get: function () {
7562
- return this.item.getVisible() && this.enabled;
7563
- },
7564
- enumerable: false,
7565
- configurable: true
7566
- });
7567
- Object.defineProperty(RendererComponent.prototype, "material", {
7568
- get: function () {
7569
- return this.materials[0];
7570
- },
7571
- set: function (material) {
7572
- if (this.materials.length === 0) {
7573
- this.materials.push(material);
7574
- }
7575
- else {
7576
- this.materials[0] = material;
7577
- }
7578
- },
7579
- enumerable: false,
7580
- configurable: true
7581
- });
7582
- RendererComponent.prototype.onEnable = function () { };
7583
- RendererComponent.prototype.start = function () { };
7584
- RendererComponent.prototype.update = function (dt) { };
7585
- RendererComponent.prototype.lateUpdate = function (dt) { };
7586
- RendererComponent.prototype.render = function (renderer) { };
7587
- RendererComponent.prototype.onAttached = function () {
7588
- this.item.rendererComponents.push(this);
7589
- };
7590
- RendererComponent.prototype.fromData = function (data) {
7591
- _super.prototype.fromData.call(this, data);
7592
- };
7593
- RendererComponent.prototype.toData = function () {
7594
- _super.prototype.toData.call(this);
7595
- };
7596
- RendererComponent.prototype.dispose = function () {
7597
- if (this.item) {
7598
- removeItem(this.item.rendererComponents, this);
7599
- }
7600
- _super.prototype.dispose.call(this);
7601
- };
7602
- __decorate([
7603
- serialize()
7604
- ], RendererComponent.prototype, "materials", void 0);
7605
- __decorate([
7606
- serialize()
7607
- ], RendererComponent.prototype, "_priority", void 0);
7608
- __decorate([
7609
- serialize()
7610
- ], RendererComponent.prototype, "_enabled", void 0);
7611
- return RendererComponent;
7612
- }(Component));
7613
-
7614
- exports.ShaderType = void 0;
7615
- (function (ShaderType) {
7616
- ShaderType[ShaderType["vertex"] = 0] = "vertex";
7617
- ShaderType[ShaderType["fragment"] = 1] = "fragment";
7618
- })(exports.ShaderType || (exports.ShaderType = {}));
7619
-
7620
- /**
7621
- * Helper class to create a WebGL Context
7622
- *
7623
- * @param canvas
7624
- * @param glType
7625
- * @param options
7626
- * @returns
7627
- */
7628
- function createGLContext(canvas, glType, options) {
7629
- if (glType === void 0) { glType = 'webgl'; }
7630
- var context;
7631
- if (glType === 'webgl2') {
7632
- context = canvas.getContext('webgl2', options);
7633
- if (!context) {
7634
- console.debug('WebGL2 context retrieval failed, falling back to WebGL context.');
7635
- }
7636
- }
7637
- if (!context || glType === 'webgl') {
7638
- context = canvas.getContext('webgl', options);
7639
- }
7640
- if (!context) {
7641
- throw new Error('This browser does not support WebGL or the WebGL version is incorrect. Please check your WebGL version.');
7642
- }
7643
- return context;
7644
- }
7645
-
7646
- function gpuTimer(gl) {
7647
- var _this = this;
7648
- var ext = gl.getExtension('EXT_disjoint_timer_query_webgl2');
7649
- if (ext) {
7650
- var query_1 = gl.createQuery();
7651
- var getTime_1 = function () { return __awaiter(_this, void 0, void 0, function () {
7652
- return __generator(this, function (_a) {
7653
- return [2 /*return*/, new Promise(function (resolve, reject) {
7654
- if (query_1) {
7655
- var available = gl.getQueryParameter(query_1, gl.QUERY_RESULT_AVAILABLE);
7656
- var disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);
7657
- if (available && !disjoint) {
7658
- // See how much time the rendering of the object took in nanoseconds.
7659
- var timeElapsed = gl.getQueryParameter(query_1, gl.QUERY_RESULT); // Do something useful with the time. Note that care should be
7660
- // taken to use all significant bits of the result, not just the
7661
- // least significant 32 bits.
7662
- resolve(timeElapsed / 1000 / 1000);
7663
- }
7664
- if (available || disjoint) {
7665
- // Clean up the query object.
7666
- gl.deleteQuery(query_1); // Don't re-enter this polling loop.
7667
- query_1 = null;
7668
- }
7669
- available !== null && query_1 && window.setTimeout(function () {
7670
- getTime_1().then(resolve).catch;
7671
- }, 1);
7672
- }
7673
- })];
7674
- });
7675
- }); };
7676
- if (!query_1) {
7677
- return;
7678
- }
7679
- return {
7680
- begin: function () {
7681
- query_1 && gl.beginQuery(ext.TIME_ELAPSED_EXT, query_1);
7682
- },
7683
- end: function () {
7684
- gl.endQuery(ext.TIME_ELAPSED_EXT);
7685
- },
7686
- getTime: getTime_1,
7687
- };
7688
7528
  }
7689
7529
  }
7690
7530
 
7691
- var initErrors = [];
7692
- // @ts-expect-error
7693
- var glContext = {};
7694
- if (!initErrors.length) {
7695
- initGLContext();
7696
- }
7697
- function initGLContext() {
7698
- // 重要:iOS 9/10 低版本需要拷贝 gl context 的 prototype,要不然会有属性值的缺失
7699
- if (typeof WebGL2RenderingContext === 'function') {
7700
- copy$1(WebGL2RenderingContext);
7701
- }
7702
- else if (typeof WebGLRenderingContext !== 'undefined') {
7703
- copy$1(WebGLRenderingContext);
7704
- copy$1(WebGLRenderingContext.prototype);
7705
- }
7706
- else {
7707
- initErrors.push(
7708
- // iOS 16 lockdown mode
7709
- 'iOS16 lockdown mode, WebGL Constants not in global');
7710
- }
7711
- if (!initErrors.length && !('HALF_FLOAT' in glContext)) {
7712
- // @ts-expect-error set default value
7713
- glContext['HALF_FLOAT'] = 5131;
7714
- }
7715
- }
7716
- function isWebGL2(gl) {
7717
- return typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';
7718
- }
7719
- function copy$1(target) {
7720
- for (var name_1 in target) {
7721
- if (/^[A-Z_]/.test(name_1)) {
7722
- // @ts-expect-error safe to assign
7723
- glContext[name_1] = target[name_1];
7724
- }
7725
- }
7726
- }
7727
-
7728
- var _a$5;
7531
+ var _a$6;
7729
7532
  function valIfUndefined(val, def) {
7730
7533
  if (val === undefined || val === null) {
7731
7534
  return def;
@@ -7755,15 +7558,15 @@ function getPreMultiAlpha(blending) {
7755
7558
  return 1;
7756
7559
  }
7757
7560
  }
7758
- var downgradeKeywords = (_a$5 = {},
7759
- _a$5[exports.ShaderType.vertex] = {
7561
+ var downgradeKeywords = (_a$6 = {},
7562
+ _a$6[exports.ShaderType.vertex] = {
7760
7563
  in: 'attribute',
7761
7564
  out: 'varying',
7762
7565
  },
7763
- _a$5[exports.ShaderType.fragment] = {
7566
+ _a$6[exports.ShaderType.fragment] = {
7764
7567
  in: 'varying',
7765
7568
  },
7766
- _a$5);
7569
+ _a$6);
7767
7570
  /**
7768
7571
  * 生成 shader,检测到 WebGL1 上下文会降级
7769
7572
  * @param marcos - 宏定义数组
@@ -8197,6 +8000,43 @@ function loadMipmapImage(pointer, bins) {
8197
8000
  });
8198
8001
  }
8199
8002
 
8003
+ /**
8004
+ * @since 2.0.0
8005
+ * @internal
8006
+ */
8007
+ var EffectsObject = /** @class */ (function () {
8008
+ function EffectsObject(engine) {
8009
+ this.engine = engine;
8010
+ this.guid = generateGUID$1();
8011
+ this.taggedProperties = {};
8012
+ this.engine.addInstance(this);
8013
+ }
8014
+ EffectsObject.prototype.getInstanceId = function () {
8015
+ return this.guid;
8016
+ };
8017
+ EffectsObject.prototype.setInstanceId = function (guid) {
8018
+ this.engine.removeInstance(this.guid);
8019
+ this.guid = guid;
8020
+ this.engine.addInstance(this);
8021
+ };
8022
+ EffectsObject.prototype.toData = function () { };
8023
+ /**
8024
+ * 反序列化函数
8025
+ *
8026
+ * @param data - 对象的序列化的数据
8027
+ */
8028
+ EffectsObject.prototype.fromData = function (data) {
8029
+ if (data.id) {
8030
+ this.setInstanceId(data.id);
8031
+ }
8032
+ };
8033
+ EffectsObject.prototype.dispose = function () { };
8034
+ __decorate([
8035
+ serialize()
8036
+ ], EffectsObject.prototype, "guid", void 0);
8037
+ return EffectsObject;
8038
+ }());
8039
+
8200
8040
  var seed$9 = 1;
8201
8041
  /**
8202
8042
  * Texture 抽象类
@@ -8864,13 +8704,49 @@ exports.GLSLVersion = void 0;
8864
8704
  GLSLVersion["GLSL1"] = "100";
8865
8705
  GLSLVersion["GLSL3"] = "300 es";
8866
8706
  })(exports.GLSLVersion || (exports.GLSLVersion = {}));
8867
- var Shader = /** @class */ (function (_super) {
8868
- __extends(Shader, _super);
8869
- function Shader(engine, source) {
8707
+ var ShaderVariant = /** @class */ (function (_super) {
8708
+ __extends(ShaderVariant, _super);
8709
+ function ShaderVariant(engine, source) {
8870
8710
  var _this = _super.call(this, engine) || this;
8871
8711
  _this.source = source;
8872
8712
  return _this;
8873
8713
  }
8714
+ return ShaderVariant;
8715
+ }(EffectsObject));
8716
+ var Shader = /** @class */ (function (_super) {
8717
+ __extends(Shader, _super);
8718
+ function Shader() {
8719
+ return _super !== null && _super.apply(this, arguments) || this;
8720
+ }
8721
+ Shader.prototype.createVariant = function (macros) {
8722
+ var e_1, _a;
8723
+ var shaderMacros = [];
8724
+ if (macros) {
8725
+ try {
8726
+ for (var _b = __values$1(Object.keys(macros)), _c = _b.next(); !_c.done; _c = _b.next()) {
8727
+ var key = _c.value;
8728
+ shaderMacros.push([key, macros[key]]);
8729
+ }
8730
+ }
8731
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
8732
+ finally {
8733
+ try {
8734
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
8735
+ }
8736
+ finally { if (e_1) throw e_1.error; }
8737
+ }
8738
+ }
8739
+ var shaderVariant = this.engine.getShaderLibrary().createShader(this.shaderData, shaderMacros);
8740
+ shaderVariant.shader = this;
8741
+ return shaderVariant;
8742
+ };
8743
+ Shader.prototype.fromData = function (data) {
8744
+ _super.prototype.fromData.call(this, data);
8745
+ this.shaderData = data;
8746
+ };
8747
+ Shader = __decorate([
8748
+ effectsClass('Shader')
8749
+ ], Shader);
8874
8750
  return Shader;
8875
8751
  }(EffectsObject));
8876
8752
 
@@ -8883,8 +8759,8 @@ function createCopyShader(level, writeDepth) {
8883
8759
  var version = webgl2 ? '#version 300 es' : '';
8884
8760
  return {
8885
8761
  name: EFFECTS_COPY_MESH_NAME,
8886
- vertex: createShaderWithMarcos([], version + '\n' + COPY_VERTEX_SHADER, exports.ShaderType.vertex, level),
8887
- fragment: createShaderWithMarcos([], version + '\n' + COPY_FRAGMENT_SHADER, exports.ShaderType.fragment, level),
8762
+ vertex: version + '\n' + COPY_VERTEX_SHADER,
8763
+ fragment: version + '\n' + COPY_FRAGMENT_SHADER,
8888
8764
  glslVersion: webgl2 ? exports.GLSLVersion.GLSL3 : exports.GLSLVersion.GLSL1,
8889
8765
  marcos: [
8890
8766
  ['WEBGL2', !!webgl2],
@@ -9016,13 +8892,13 @@ var SemanticMap = /** @class */ (function () {
9016
8892
  return SemanticMap;
9017
8893
  }());
9018
8894
 
9019
- var _a$4;
9020
- var BYTES_TYPE_MAP = (_a$4 = {},
9021
- _a$4[glContext.FLOAT] = Float32Array.BYTES_PER_ELEMENT,
9022
- _a$4[glContext.INT] = Int32Array.BYTES_PER_ELEMENT,
9023
- _a$4[glContext.SHORT] = Int16Array.BYTES_PER_ELEMENT,
9024
- _a$4[glContext.BYTE] = Int8Array.BYTES_PER_ELEMENT,
9025
- _a$4);
8895
+ var _a$5;
8896
+ var BYTES_TYPE_MAP = (_a$5 = {},
8897
+ _a$5[glContext.FLOAT] = Float32Array.BYTES_PER_ELEMENT,
8898
+ _a$5[glContext.INT] = Int32Array.BYTES_PER_ELEMENT,
8899
+ _a$5[glContext.SHORT] = Int16Array.BYTES_PER_ELEMENT,
8900
+ _a$5[glContext.BYTE] = Int8Array.BYTES_PER_ELEMENT,
8901
+ _a$5);
9026
8902
  /**
9027
8903
  * Geometry 抽象类
9028
8904
  */
@@ -9035,26 +8911,258 @@ var Geometry = /** @class */ (function (_super) {
9035
8911
  * 初始化 GPU 资源
9036
8912
  * @override
9037
8913
  */
9038
- Geometry.prototype.initialize = function () {
8914
+ Geometry.prototype.initialize = function () {
8915
+ // OVERRIDE
8916
+ };
8917
+ /**
8918
+ * 几何数据刷新
8919
+ */
8920
+ Geometry.prototype.flush = function () {
8921
+ // OVERRIDE
8922
+ };
8923
+ return Geometry;
8924
+ }(EffectsObject));
8925
+ function generateEmptyTypedArray(type) {
8926
+ if (type === glContext.INT) {
8927
+ return new Int32Array(0);
8928
+ }
8929
+ if (type === glContext.SHORT) {
8930
+ return new Int16Array(0);
8931
+ }
8932
+ return new Float32Array(0);
8933
+ }
8934
+
8935
+ /**
8936
+ * @since 2.0.0
8937
+ * @internal
8938
+ */
8939
+ var Component = /** @class */ (function (_super) {
8940
+ __extends(Component, _super);
8941
+ function Component() {
8942
+ return _super !== null && _super.apply(this, arguments) || this;
8943
+ }
8944
+ Object.defineProperty(Component.prototype, "transform", {
8945
+ /**
8946
+ * 附加到的 VFXItem 对象 Transform 组件
8947
+ */
8948
+ get: function () {
8949
+ return this.item.transform;
8950
+ },
8951
+ enumerable: false,
8952
+ configurable: true
8953
+ });
8954
+ Component.prototype.onAttached = function () { };
8955
+ Component.prototype.onDestroy = function () { };
8956
+ Component.prototype.fromData = function (data) {
8957
+ _super.prototype.fromData.call(this, data);
8958
+ if (data.item) {
8959
+ this.item = data.item;
8960
+ }
8961
+ };
8962
+ Component.prototype.dispose = function () {
8963
+ this.onDestroy();
8964
+ if (this.item) {
8965
+ removeItem(this.item.components, this);
8966
+ }
8967
+ };
8968
+ return Component;
8969
+ }(EffectsObject));
8970
+ /**
8971
+ * @since 2.0.0
8972
+ * @internal
8973
+ */
8974
+ var Behaviour = /** @class */ (function (_super) {
8975
+ __extends(Behaviour, _super);
8976
+ function Behaviour() {
8977
+ var _this = _super !== null && _super.apply(this, arguments) || this;
8978
+ _this._enabled = true;
8979
+ return _this;
8980
+ }
8981
+ Object.defineProperty(Behaviour.prototype, "isActiveAndEnabled", {
8982
+ /**
8983
+ * 组件是否可以更新,true 更新,false 不更新
8984
+ */
8985
+ get: function () {
8986
+ return this.item.getVisible() && this.enabled;
8987
+ },
8988
+ enumerable: false,
8989
+ configurable: true
8990
+ });
8991
+ Object.defineProperty(Behaviour.prototype, "enabled", {
8992
+ get: function () {
8993
+ return this._enabled;
8994
+ },
8995
+ set: function (value) {
8996
+ this._enabled = value;
8997
+ if (value) {
8998
+ this.onBehaviourEnable();
8999
+ }
9000
+ },
9001
+ enumerable: false,
9002
+ configurable: true
9003
+ });
9004
+ Behaviour.prototype.onBehaviourEnable = function () { };
9005
+ Behaviour.prototype.fromData = function (data) {
9006
+ _super.prototype.fromData.call(this, data);
9007
+ };
9008
+ Behaviour.prototype.toData = function () {
9009
+ _super.prototype.toData.call(this);
9010
+ };
9011
+ __decorate([
9012
+ serialize()
9013
+ ], Behaviour.prototype, "_enabled", void 0);
9014
+ return Behaviour;
9015
+ }(Component));
9016
+ /**
9017
+ * @since 2.0.0
9018
+ * @internal
9019
+ */
9020
+ var ItemBehaviour = /** @class */ (function (_super) {
9021
+ __extends(ItemBehaviour, _super);
9022
+ function ItemBehaviour() {
9023
+ var _this = _super !== null && _super.apply(this, arguments) || this;
9024
+ _this.started = false;
9025
+ return _this;
9026
+ }
9027
+ // /**
9028
+ // * 生命周期函数,初始化后调用,生命周期内只调用一次
9029
+ // */
9030
+ // awake () {
9031
+ // // OVERRIDE
9032
+ // }
9033
+ /**
9034
+ * 在每次设置 enabled 为 true 时触发
9035
+ */
9036
+ ItemBehaviour.prototype.onEnable = function () { };
9037
+ /**
9038
+ * 生命周期函数,在第一次 update 前调用,生命周期内只调用一次
9039
+ */
9040
+ ItemBehaviour.prototype.start = function () {
9041
+ // OVERRIDE
9042
+ };
9043
+ /**
9044
+ * 生命周期函数,每帧调用一次
9045
+ */
9046
+ ItemBehaviour.prototype.update = function (dt) {
9039
9047
  // OVERRIDE
9040
9048
  };
9041
9049
  /**
9042
- * 几何数据刷新
9050
+ * 生命周期函数,每帧调用一次,在 update 之后调用
9043
9051
  */
9044
- Geometry.prototype.flush = function () {
9052
+ ItemBehaviour.prototype.lateUpdate = function (dt) {
9045
9053
  // OVERRIDE
9046
9054
  };
9047
- return Geometry;
9048
- }(EffectsObject));
9049
- function generateEmptyTypedArray(type) {
9050
- if (type === glContext.INT) {
9051
- return new Int32Array(0);
9052
- }
9053
- if (type === glContext.SHORT) {
9054
- return new Int16Array(0);
9055
+ ItemBehaviour.prototype.onAttached = function () {
9056
+ this.item.itemBehaviours.push(this);
9057
+ };
9058
+ ItemBehaviour.prototype.dispose = function () {
9059
+ if (this.item) {
9060
+ removeItem(this.item.itemBehaviours, this);
9061
+ }
9062
+ _super.prototype.dispose.call(this);
9063
+ };
9064
+ ItemBehaviour.prototype.onBehaviourEnable = function () {
9065
+ this.onEnable();
9066
+ if (!this.started) {
9067
+ this.start();
9068
+ this.started = true;
9069
+ }
9070
+ };
9071
+ return ItemBehaviour;
9072
+ }(Behaviour));
9073
+
9074
+ /**
9075
+ * 所有渲染组件的基类
9076
+ * @since 2.0.0
9077
+ */
9078
+ var RendererComponent = /** @class */ (function (_super) {
9079
+ __extends(RendererComponent, _super);
9080
+ function RendererComponent() {
9081
+ var _this = _super !== null && _super.apply(this, arguments) || this;
9082
+ _this.started = false;
9083
+ _this.materials = [];
9084
+ _this._enabled = true;
9085
+ return _this;
9055
9086
  }
9056
- return new Float32Array(0);
9057
- }
9087
+ Object.defineProperty(RendererComponent.prototype, "priority", {
9088
+ get: function () {
9089
+ return this._priority;
9090
+ },
9091
+ set: function (value) {
9092
+ this._priority = value;
9093
+ },
9094
+ enumerable: false,
9095
+ configurable: true
9096
+ });
9097
+ Object.defineProperty(RendererComponent.prototype, "enabled", {
9098
+ get: function () {
9099
+ return this._enabled;
9100
+ },
9101
+ set: function (value) {
9102
+ this._enabled = value;
9103
+ if (value) {
9104
+ this.onEnable();
9105
+ }
9106
+ },
9107
+ enumerable: false,
9108
+ configurable: true
9109
+ });
9110
+ Object.defineProperty(RendererComponent.prototype, "isActiveAndEnabled", {
9111
+ /**
9112
+ * 组件是否可以更新,true 更新,false 不更新
9113
+ */
9114
+ get: function () {
9115
+ return this.item.getVisible() && this.enabled;
9116
+ },
9117
+ enumerable: false,
9118
+ configurable: true
9119
+ });
9120
+ Object.defineProperty(RendererComponent.prototype, "material", {
9121
+ get: function () {
9122
+ return this.materials[0];
9123
+ },
9124
+ set: function (material) {
9125
+ if (this.materials.length === 0) {
9126
+ this.materials.push(material);
9127
+ }
9128
+ else {
9129
+ this.materials[0] = material;
9130
+ }
9131
+ },
9132
+ enumerable: false,
9133
+ configurable: true
9134
+ });
9135
+ RendererComponent.prototype.onEnable = function () { };
9136
+ RendererComponent.prototype.start = function () { };
9137
+ RendererComponent.prototype.update = function (dt) { };
9138
+ RendererComponent.prototype.lateUpdate = function (dt) { };
9139
+ RendererComponent.prototype.render = function (renderer) { };
9140
+ RendererComponent.prototype.onAttached = function () {
9141
+ this.item.rendererComponents.push(this);
9142
+ };
9143
+ RendererComponent.prototype.fromData = function (data) {
9144
+ _super.prototype.fromData.call(this, data);
9145
+ };
9146
+ RendererComponent.prototype.toData = function () {
9147
+ _super.prototype.toData.call(this);
9148
+ };
9149
+ RendererComponent.prototype.dispose = function () {
9150
+ if (this.item) {
9151
+ removeItem(this.item.rendererComponents, this);
9152
+ }
9153
+ _super.prototype.dispose.call(this);
9154
+ };
9155
+ __decorate([
9156
+ serialize()
9157
+ ], RendererComponent.prototype, "materials", void 0);
9158
+ __decorate([
9159
+ serialize()
9160
+ ], RendererComponent.prototype, "_priority", void 0);
9161
+ __decorate([
9162
+ serialize()
9163
+ ], RendererComponent.prototype, "_enabled", void 0);
9164
+ return RendererComponent;
9165
+ }(Component));
9058
9166
 
9059
9167
  var seed$7 = 1;
9060
9168
  /**
@@ -9359,7 +9467,7 @@ var RenderPass = /** @class */ (function () {
9359
9467
  RenderPass.prototype.setMeshes = function (meshes) {
9360
9468
  var _a;
9361
9469
  this.meshes.length = 0;
9362
- (_a = this.meshes).splice.apply(_a, __spreadArray$2([0, 0], __read$3(meshes), false));
9470
+ (_a = this.meshes).splice.apply(_a, __spreadArray$3([0, 0], __read$3(meshes), false));
9363
9471
  sortByOrder(this.meshes, this.meshOrder);
9364
9472
  return this.meshes;
9365
9473
  };
@@ -11291,7 +11399,7 @@ var SerializationHelper = /** @class */ (function () {
11291
11399
  };
11292
11400
  SerializationHelper.deserializeProperty = function (property, engine, level) {
11293
11401
  var e_11, _a, e_12, _b;
11294
- if (level > 10) {
11402
+ if (level > 14) {
11295
11403
  console.error('序列化数据的内嵌对象层数大于上限');
11296
11404
  return;
11297
11405
  }
@@ -11352,7 +11460,7 @@ var SerializationHelper = /** @class */ (function () {
11352
11460
  return __generator(this, function (_j) {
11353
11461
  switch (_j.label) {
11354
11462
  case 0:
11355
- if (level > 10) {
11463
+ if (level > 14) {
11356
11464
  console.error('序列化数据的内嵌对象层数大于上限');
11357
11465
  return [2 /*return*/];
11358
11466
  }
@@ -11443,7 +11551,7 @@ var SerializationHelper = /** @class */ (function () {
11443
11551
  };
11444
11552
  SerializationHelper.serializeObjectProperty = function (objectProperty, serializedData, level) {
11445
11553
  var e_15, _a;
11446
- if (level > 10) {
11554
+ if (level > 14) {
11447
11555
  console.error('序列化数据的内嵌对象层数大于上限');
11448
11556
  return;
11449
11557
  }
@@ -11488,7 +11596,7 @@ var SerializationHelper = /** @class */ (function () {
11488
11596
  }
11489
11597
  };
11490
11598
  SerializationHelper.serializeArrayProperty = function (arrayProperty, serializedData, level) {
11491
- if (level > 10) {
11599
+ if (level > 14) {
11492
11600
  console.error('序列化数据的内嵌对象层数大于上限');
11493
11601
  return;
11494
11602
  }
@@ -11553,9 +11661,6 @@ var AssetLoader = /** @class */ (function () {
11553
11661
  case exports.DataType.Texture:
11554
11662
  effectsObject = Texture.create(this.engine, effectsObjectData);
11555
11663
  return effectsObject;
11556
- case exports.DataType.Shader:
11557
- effectsObject = this.engine.getShaderLibrary().createShader(effectsObjectData);
11558
- break;
11559
11664
  default: {
11560
11665
  var classConstructor = AssetLoader.getClass(effectsObjectData.dataType);
11561
11666
  if (classConstructor) {
@@ -11608,9 +11713,6 @@ var AssetLoader = /** @class */ (function () {
11608
11713
  case exports.DataType.Texture:
11609
11714
  effectsObject = Texture.create(this.engine, effectsObjectData);
11610
11715
  return [2 /*return*/, effectsObject];
11611
- case exports.DataType.Shader:
11612
- effectsObject = this.engine.getShaderLibrary().createShader(effectsObjectData);
11613
- break;
11614
11716
  default: {
11615
11717
  classConstructor = AssetLoader.getClass(effectsObjectData.dataType);
11616
11718
  if (classConstructor) {
@@ -11654,24 +11756,24 @@ var Database = /** @class */ (function () {
11654
11756
  }());
11655
11757
  exports.DataType = void 0;
11656
11758
  (function (DataType) {
11657
- DataType[DataType["VFXItemData"] = 0] = "VFXItemData";
11658
- DataType[DataType["EffectComponent"] = 1] = "EffectComponent";
11659
- DataType[DataType["Material"] = 2] = "Material";
11660
- DataType[DataType["Shader"] = 3] = "Shader";
11661
- DataType[DataType["SpriteComponent"] = 4] = "SpriteComponent";
11662
- DataType[DataType["ParticleSystem"] = 5] = "ParticleSystem";
11663
- DataType[DataType["InteractComponent"] = 6] = "InteractComponent";
11664
- DataType[DataType["CameraController"] = 7] = "CameraController";
11665
- DataType[DataType["Geometry"] = 8] = "Geometry";
11666
- DataType[DataType["Texture"] = 9] = "Texture";
11667
- DataType[DataType["TextComponent"] = 10] = "TextComponent";
11759
+ DataType["VFXItemData"] = "VFXItemData";
11760
+ DataType["EffectComponent"] = "EffectComponent";
11761
+ DataType["Material"] = "Material";
11762
+ DataType["Shader"] = "Shader";
11763
+ DataType["SpriteComponent"] = "SpriteComponent";
11764
+ DataType["ParticleSystem"] = "ParticleSystem";
11765
+ DataType["InteractComponent"] = "InteractComponent";
11766
+ DataType["CameraController"] = "CameraController";
11767
+ DataType["Geometry"] = "Geometry";
11768
+ DataType["Texture"] = "Texture";
11769
+ DataType["TextComponent"] = "TextComponent";
11668
11770
  // FIXME: 先完成ECS的场景转换,后面移到spec中
11669
- DataType[DataType["MeshComponent"] = 10000] = "MeshComponent";
11670
- DataType[DataType["SkyboxComponent"] = 10001] = "SkyboxComponent";
11671
- DataType[DataType["LightComponent"] = 10002] = "LightComponent";
11672
- DataType[DataType["CameraComponent"] = 10003] = "CameraComponent";
11673
- DataType[DataType["ModelPluginComponent"] = 10004] = "ModelPluginComponent";
11674
- DataType[DataType["TreeComponent"] = 10005] = "TreeComponent";
11771
+ DataType["MeshComponent"] = "MeshComponent";
11772
+ DataType["SkyboxComponent"] = "SkyboxComponent";
11773
+ DataType["LightComponent"] = "LightComponent";
11774
+ DataType["CameraComponent"] = "CameraComponent";
11775
+ DataType["ModelPluginComponent"] = "ModelPluginComponent";
11776
+ DataType["TreeComponent"] = "TreeComponent";
11675
11777
  })(exports.DataType || (exports.DataType = {}));
11676
11778
 
11677
11779
  /**
@@ -11823,7 +11925,7 @@ function calculateTranslation(out, target, acc, time, duration, posData, velData
11823
11925
  return ret;
11824
11926
  }
11825
11927
 
11826
- var _a$3;
11928
+ var _a$4;
11827
11929
  function ensureVec3(num) {
11828
11930
  return Array.isArray(num) ? [num[0], num[1], num[2]] : [0, 0, 0];
11829
11931
  }
@@ -11846,7 +11948,7 @@ function vecNormalize(out, a) {
11846
11948
  out = [];
11847
11949
  }
11848
11950
  var ap = a;
11849
- var sum = Math.hypot.apply(Math, __spreadArray$2([], __read$3(ap), false));
11951
+ var sum = Math.hypot.apply(Math, __spreadArray$3([], __read$3(ap), false));
11850
11952
  if (sum === 0) {
11851
11953
  return vecAssign(out, ap, ap.length);
11852
11954
  }
@@ -11877,17 +11979,17 @@ function vecMulCombine(out, a, b) {
11877
11979
  }
11878
11980
  return out;
11879
11981
  }
11880
- var particleOriginTranslateMap = (_a$3 = {},
11881
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER] = [0, 0],
11882
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER_BOTTOM] = [0, -0.5],
11883
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER_TOP] = [0, 0.5],
11884
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_TOP] = [-0.5, 0.5],
11885
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_CENTER] = [-0.5, 0],
11886
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_BOTTOM] = [-0.5, -0.5],
11887
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_CENTER] = [0.5, 0],
11888
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
11889
- _a$3[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
11890
- _a$3);
11982
+ var particleOriginTranslateMap$1 = (_a$4 = {},
11983
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER] = [0, 0],
11984
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER_BOTTOM] = [0, -0.5],
11985
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_CENTER_TOP] = [0, 0.5],
11986
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_TOP] = [-0.5, 0.5],
11987
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_CENTER] = [-0.5, 0],
11988
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_LEFT_BOTTOM] = [-0.5, -0.5],
11989
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_CENTER] = [0.5, 0],
11990
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
11991
+ _a$4[ParticleOrigin$1.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
11992
+ _a$4);
11891
11993
  function nearestPowerOfTwo(value) {
11892
11994
  return Math.pow(2, Math.round(Math.log(value) / Math.LN2));
11893
11995
  }
@@ -11912,7 +12014,7 @@ function trianglesFromRect(position, halfWidth, halfHeight) {
11912
12014
  ];
11913
12015
  }
11914
12016
 
11915
- var _a$2;
12017
+ var _a$3;
11916
12018
  var NOT_IMPLEMENT = 'not_implement';
11917
12019
  var ValueGetter = /** @class */ (function () {
11918
12020
  function ValueGetter(arg) {
@@ -12420,50 +12522,50 @@ var BezierSegments = /** @class */ (function (_super) {
12420
12522
  };
12421
12523
  return BezierSegments;
12422
12524
  }(PathSegments));
12423
- var map$1 = (_a$2 = {},
12424
- _a$2[ValueType$1.RANDOM] = function (props) {
12525
+ var map$1 = (_a$3 = {},
12526
+ _a$3[ValueType$1.RANDOM] = function (props) {
12425
12527
  if (props[0] instanceof Array) {
12426
12528
  return new RandomVectorValue(props);
12427
12529
  }
12428
12530
  return new RandomValue(props);
12429
12531
  },
12430
- _a$2[ValueType$1.CONSTANT] = function (props) {
12532
+ _a$3[ValueType$1.CONSTANT] = function (props) {
12431
12533
  return new StaticValue(props);
12432
12534
  },
12433
- _a$2[ValueType$1.CONSTANT_VEC2] = function (props) {
12535
+ _a$3[ValueType$1.CONSTANT_VEC2] = function (props) {
12434
12536
  return new StaticValue(props);
12435
12537
  },
12436
- _a$2[ValueType$1.CONSTANT_VEC3] = function (props) {
12538
+ _a$3[ValueType$1.CONSTANT_VEC3] = function (props) {
12437
12539
  return new StaticValue(props);
12438
12540
  },
12439
- _a$2[ValueType$1.CONSTANT_VEC4] = function (props) {
12541
+ _a$3[ValueType$1.CONSTANT_VEC4] = function (props) {
12440
12542
  return new StaticValue(props);
12441
12543
  },
12442
- _a$2[ValueType$1.CURVE] = function (props) {
12544
+ _a$3[ValueType$1.CURVE] = function (props) {
12443
12545
  return new CurveValue(props);
12444
12546
  },
12445
- _a$2[ValueType$1.RGBA_COLOR] = function (props) {
12547
+ _a$3[ValueType$1.RGBA_COLOR] = function (props) {
12446
12548
  return new StaticValue(props);
12447
12549
  },
12448
- _a$2[ValueType$1.COLORS] = function (props) {
12550
+ _a$3[ValueType$1.COLORS] = function (props) {
12449
12551
  return new RandomSetValue(props.map(function (c) { return colorToArr$1(c, false); }));
12450
12552
  },
12451
- _a$2[ValueType$1.LINE] = function (props) {
12553
+ _a$3[ValueType$1.LINE] = function (props) {
12452
12554
  if (props.length === 2 && props[0][0] === 0 && props[1][0] === 1) {
12453
12555
  return new LinearValue([props[0][1], props[1][1]]);
12454
12556
  }
12455
12557
  return new LineSegments(props);
12456
12558
  },
12457
- _a$2[ValueType$1.GRADIENT_COLOR] = function (props) {
12559
+ _a$3[ValueType$1.GRADIENT_COLOR] = function (props) {
12458
12560
  return new GradientValue(props);
12459
12561
  },
12460
- _a$2[ValueType$1.LINEAR_PATH] = function (pros) {
12562
+ _a$3[ValueType$1.LINEAR_PATH] = function (pros) {
12461
12563
  return new PathSegments(pros);
12462
12564
  },
12463
- _a$2[ValueType$1.BEZIER_PATH] = function (pros) {
12565
+ _a$3[ValueType$1.BEZIER_PATH] = function (pros) {
12464
12566
  return new BezierSegments(pros);
12465
12567
  },
12466
- _a$2);
12568
+ _a$3);
12467
12569
  function createValueGetter(args) {
12468
12570
  if (!args || !isNaN(+args)) {
12469
12571
  return new StaticValue(args || 0);
@@ -13414,13 +13516,13 @@ var InteractMesh = /** @class */ (function () {
13414
13516
  ['ENV_EDITOR', ((_a = this.engine.renderer) === null || _a === void 0 ? void 0 : _a.env) === PLAYER_OPTIONS_ENV_EDITOR],
13415
13517
  ];
13416
13518
  var color = createValueGetter(this.color).getValue(0);
13417
- var level = this.engine.gpuCapability.level;
13418
13519
  var materialProps = {
13419
13520
  shader: {
13420
- vertex: createShaderWithMarcos(marcos, vertex, exports.ShaderType.vertex, level),
13421
- fragment: createShaderWithMarcos(marcos, fragment, exports.ShaderType.fragment, level),
13521
+ vertex: vertex,
13522
+ fragment: fragment,
13422
13523
  glslVersion: exports.GLSLVersion.GLSL1,
13423
13524
  cacheId: "".concat(rendererOptions.cachePrefix, "_effects_interact"),
13525
+ marcos: marcos,
13424
13526
  },
13425
13527
  uniformSemantics: {
13426
13528
  effects_MatrixVP: 'VIEWPROJECTION',
@@ -13494,11 +13596,11 @@ var InteractComponent = /** @class */ (function (_super) {
13494
13596
  }
13495
13597
  InteractComponent_1 = InteractComponent;
13496
13598
  InteractComponent.prototype.start = function () {
13497
- var _a, _b, _c;
13599
+ var _this = this;
13498
13600
  var options = this.item.props.content.options;
13499
- var env = ((_b = (_a = this.item.engine) === null || _a === void 0 ? void 0 : _a.renderer) !== null && _b !== void 0 ? _b : {}).env;
13601
+ var env = this.item.engine.renderer.env;
13500
13602
  var composition = this.item.composition;
13501
- var _d = this.interactData.options, type = _d.type, showPreview = _d.showPreview;
13603
+ var _a = this.interactData.options, type = _a.type, showPreview = _a.showPreview;
13502
13604
  if (type === InteractType$1.CLICK) {
13503
13605
  this.clickable = true;
13504
13606
  if (showPreview && env === PLAYER_OPTIONS_ENV_EDITOR) {
@@ -13506,7 +13608,8 @@ var InteractComponent = /** @class */ (function (_super) {
13506
13608
  this.previewContent = new InteractMesh(this.item.props.content, rendererOptions, this.transform, this.engine);
13507
13609
  }
13508
13610
  }
13509
- (_c = this.item.composition) === null || _c === void 0 ? void 0 : _c.addInteractiveItem(this.item, options.type);
13611
+ composition.addInteractiveItem(this.item, options.type);
13612
+ this.item.onEnd = function () { return composition.removeInteractiveItem(_this.item, options.type); };
13510
13613
  if (options.type === InteractType$1.DRAG) {
13511
13614
  if (env !== PLAYER_OPTIONS_ENV_EDITOR || options.enableInEditor) {
13512
13615
  composition.event && this.beginDragTarget(options, composition.event);
@@ -13699,8 +13802,8 @@ function spriteMeshShaderFromFilter(level, options) {
13699
13802
  var fragment = wireframe ? itemFrameFrag : itemFrag.replace(/#pragma\s+FILTER_FRAG/, '');
13700
13803
  var vertex = itemVert.replace(/#pragma\s+FILTER_VERT/, 'vec4 filterMain(float t,vec4 pos){return effects_MatrixVP * pos;}');
13701
13804
  return {
13702
- fragment: createShaderWithMarcos(marcos, fragment, exports.ShaderType.fragment, level),
13703
- vertex: createShaderWithMarcos(marcos, vertex, exports.ShaderType.vertex, level),
13805
+ fragment: fragment,
13806
+ vertex: vertex,
13704
13807
  glslVersion: level === 1 ? exports.GLSLVersion.GLSL1 : exports.GLSLVersion.GLSL3,
13705
13808
  marcos: marcos,
13706
13809
  shared: true,
@@ -13938,15 +14041,25 @@ var PlayableOutput = /** @class */ (function () {
13938
14041
  };
13939
14042
  return PlayableOutput;
13940
14043
  }());
14044
+ var PlayableAsset = /** @class */ (function () {
14045
+ function PlayableAsset() {
14046
+ }
14047
+ PlayableAsset.prototype.fromData = function (data) {
14048
+ };
14049
+ return PlayableAsset;
14050
+ }());
13941
14051
 
13942
14052
  /**
13943
14053
  * @since 2.0.0
13944
14054
  * @internal
13945
14055
  */
13946
- var Track = /** @class */ (function () {
14056
+ var Track = /** @class */ (function (_super) {
14057
+ __extends(Track, _super);
13947
14058
  function Track() {
13948
- this.clips = [];
13949
- this.clipSeed = 0;
14059
+ var _this = _super !== null && _super.apply(this, arguments) || this;
14060
+ _this.clips = [];
14061
+ _this.clipSeed = 0;
14062
+ return _this;
13950
14063
  }
13951
14064
  Track.prototype.createOutput = function () {
13952
14065
  var output = new PlayableOutput();
@@ -13958,7 +14071,7 @@ var Track = /** @class */ (function () {
13958
14071
  Track.prototype.createMixerPlayable = function () {
13959
14072
  return new Playable();
13960
14073
  };
13961
- Track.prototype.createPlayebleTree = function () {
14074
+ Track.prototype.createPlayable = function () {
13962
14075
  var e_1, _a;
13963
14076
  var defaultMixPlayable = this.createMixerPlayable();
13964
14077
  try {
@@ -14010,7 +14123,7 @@ var Track = /** @class */ (function () {
14010
14123
  this.clips.push(clip);
14011
14124
  };
14012
14125
  return Track;
14013
- }());
14126
+ }(PlayableAsset));
14014
14127
  /**
14015
14128
  * @since 2.0.0
14016
14129
  * @internal
@@ -14066,12 +14179,12 @@ var tempPos = new Vector3();
14066
14179
  * @since 2.0.0
14067
14180
  * @internal
14068
14181
  */
14069
- var AnimationClipPlayable = /** @class */ (function (_super) {
14070
- __extends(AnimationClipPlayable, _super);
14071
- function AnimationClipPlayable() {
14182
+ var TransformAnimationPlayable = /** @class */ (function (_super) {
14183
+ __extends(TransformAnimationPlayable, _super);
14184
+ function TransformAnimationPlayable() {
14072
14185
  return _super !== null && _super.apply(this, arguments) || this;
14073
14186
  }
14074
- AnimationClipPlayable.prototype.processFrame = function (dt) {
14187
+ TransformAnimationPlayable.prototype.processFrame = function (dt) {
14075
14188
  if (this.bindingItem.composition) {
14076
14189
  this.sampleAnimation();
14077
14190
  }
@@ -14079,7 +14192,7 @@ var AnimationClipPlayable = /** @class */ (function (_super) {
14079
14192
  /**
14080
14193
  * 应用时间轴K帧数据到对象
14081
14194
  */
14082
- AnimationClipPlayable.prototype.sampleAnimation = function () {
14195
+ TransformAnimationPlayable.prototype.sampleAnimation = function () {
14083
14196
  var _this = this;
14084
14197
  var duration = this.bindingItem.duration;
14085
14198
  var life = this.time / duration;
@@ -14124,7 +14237,7 @@ var AnimationClipPlayable = /** @class */ (function (_super) {
14124
14237
  // this.animationStream.setCurveValue('transform', 'position.z', pos.z);
14125
14238
  }
14126
14239
  };
14127
- AnimationClipPlayable.prototype.fromData = function (data) {
14240
+ TransformAnimationPlayable.prototype.fromData = function (data) {
14128
14241
  var _a;
14129
14242
  var scale = this.bindingItem.transform.scale;
14130
14243
  this.originalTransform = {
@@ -14195,30 +14308,45 @@ var AnimationClipPlayable = /** @class */ (function (_super) {
14195
14308
  this.velocity = this.direction.clone();
14196
14309
  this.velocity.multiply(this.startSpeed);
14197
14310
  };
14198
- return AnimationClipPlayable;
14311
+ return TransformAnimationPlayable;
14199
14312
  }(AnimationPlayable));
14313
+ var TransformAnimationPlayableAsset = /** @class */ (function (_super) {
14314
+ __extends(TransformAnimationPlayableAsset, _super);
14315
+ function TransformAnimationPlayableAsset() {
14316
+ return _super !== null && _super.apply(this, arguments) || this;
14317
+ }
14318
+ TransformAnimationPlayableAsset.prototype.createPlayable = function () {
14319
+ var transformAnimationPlayable = new TransformAnimationPlayable();
14320
+ transformAnimationPlayable.fromData(this.transformAnimationData);
14321
+ return transformAnimationPlayable;
14322
+ };
14323
+ TransformAnimationPlayableAsset.prototype.fromData = function (data) {
14324
+ this.transformAnimationData = data;
14325
+ };
14326
+ return TransformAnimationPlayableAsset;
14327
+ }(PlayableAsset));
14200
14328
  /**
14201
14329
  * @since 2.0.0
14202
14330
  * @internal
14203
14331
  */
14204
- var ActivationClipPlayable = /** @class */ (function (_super) {
14205
- __extends(ActivationClipPlayable, _super);
14206
- function ActivationClipPlayable() {
14332
+ var ActivationPlayable = /** @class */ (function (_super) {
14333
+ __extends(ActivationPlayable, _super);
14334
+ function ActivationPlayable() {
14207
14335
  return _super !== null && _super.apply(this, arguments) || this;
14208
14336
  }
14209
- ActivationClipPlayable.prototype.onGraphStart = function () {
14337
+ ActivationPlayable.prototype.onGraphStart = function () {
14210
14338
  this.bindingItem.transform.setValid(false);
14211
14339
  this.hideRendererComponents();
14212
14340
  };
14213
- ActivationClipPlayable.prototype.onPlayablePlay = function () {
14341
+ ActivationPlayable.prototype.onPlayablePlay = function () {
14214
14342
  this.bindingItem.transform.setValid(true);
14215
14343
  this.showRendererComponents();
14216
14344
  };
14217
- ActivationClipPlayable.prototype.onPlayableDestroy = function () {
14345
+ ActivationPlayable.prototype.onPlayableDestroy = function () {
14218
14346
  this.bindingItem.transform.setValid(false);
14219
14347
  this.hideRendererComponents();
14220
14348
  };
14221
- ActivationClipPlayable.prototype.hideRendererComponents = function () {
14349
+ ActivationPlayable.prototype.hideRendererComponents = function () {
14222
14350
  var e_1, _a;
14223
14351
  try {
14224
14352
  for (var _b = __values$1(this.bindingItem.rendererComponents), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -14236,7 +14364,7 @@ var ActivationClipPlayable = /** @class */ (function (_super) {
14236
14364
  finally { if (e_1) throw e_1.error; }
14237
14365
  }
14238
14366
  };
14239
- ActivationClipPlayable.prototype.showRendererComponents = function () {
14367
+ ActivationPlayable.prototype.showRendererComponents = function () {
14240
14368
  var e_2, _a;
14241
14369
  try {
14242
14370
  for (var _b = __values$1(this.bindingItem.rendererComponents), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -14254,7 +14382,7 @@ var ActivationClipPlayable = /** @class */ (function (_super) {
14254
14382
  finally { if (e_2) throw e_2.error; }
14255
14383
  }
14256
14384
  };
14257
- return ActivationClipPlayable;
14385
+ return ActivationPlayable;
14258
14386
  }(Playable));
14259
14387
 
14260
14388
  /**
@@ -14509,7 +14637,7 @@ var TimelineComponent = /** @class */ (function (_super) {
14509
14637
  try {
14510
14638
  for (var _b = __values$1(this.tracks), _c = _b.next(); !_c.done; _c = _b.next()) {
14511
14639
  var track = _c.value;
14512
- var trackMixPlayable = track.createPlayebleTree();
14640
+ var trackMixPlayable = track.createPlayable();
14513
14641
  var trackOutput = track.createOutput();
14514
14642
  graph.addOutput(trackOutput);
14515
14643
  trackOutput.setSourcePlayeble(trackMixPlayable);
@@ -14524,6 +14652,7 @@ var TimelineComponent = /** @class */ (function (_super) {
14524
14652
  }
14525
14653
  };
14526
14654
  TimelineComponent.prototype.fromData = function (data) {
14655
+ var e_13, _a, e_14, _b;
14527
14656
  _super.prototype.fromData.call(this, data);
14528
14657
  this.options = {
14529
14658
  start: this.item.start,
@@ -14534,7 +14663,47 @@ var TimelineComponent = /** @class */ (function (_super) {
14534
14663
  this.id = this.item.id;
14535
14664
  this.name = this.item.name;
14536
14665
  var activationTrack = this.createTrack(Track, 'ActivationTrack');
14537
- activationTrack.createClip(ActivationClipPlayable, 'ActivationTimelineClip');
14666
+ activationTrack.createClip(ActivationPlayable, 'ActivationTimelineClip');
14667
+ //@ts-expect-error
14668
+ if (data.tracks) {
14669
+ //@ts-expect-error
14670
+ var tracks = data.tracks;
14671
+ try {
14672
+ for (var tracks_1 = __values$1(tracks), tracks_1_1 = tracks_1.next(); !tracks_1_1.done; tracks_1_1 = tracks_1.next()) {
14673
+ var track = tracks_1_1.value;
14674
+ var newTrack = this.createTrack(Track);
14675
+ try {
14676
+ for (var _c = (e_14 = void 0, __values$1(track.clips)), _d = _c.next(); !_d.done; _d = _c.next()) {
14677
+ var clipAsset = _d.value;
14678
+ switch (clipAsset.dataType) {
14679
+ case 'TransformAnimationPlayableAsset':
14680
+ newTrack.name = 'AnimationTrack';
14681
+ newTrack.createClip(TransformAnimationPlayable, 'AnimationTimelineClip').playable.fromData(clipAsset.animationClip);
14682
+ break;
14683
+ case 'SpriteColorAnimationPlayableAsset':
14684
+ newTrack.name = 'SpriteColorTrack';
14685
+ newTrack.createClip(SpriteColorPlayable, 'SpriteColorClip').playable.fromData(clipAsset.animationClip);
14686
+ break;
14687
+ }
14688
+ }
14689
+ }
14690
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
14691
+ finally {
14692
+ try {
14693
+ if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
14694
+ }
14695
+ finally { if (e_14) throw e_14.error; }
14696
+ }
14697
+ }
14698
+ }
14699
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
14700
+ finally {
14701
+ try {
14702
+ if (tracks_1_1 && !tracks_1_1.done && (_a = tracks_1.return)) _a.call(tracks_1);
14703
+ }
14704
+ finally { if (e_13) throw e_13.error; }
14705
+ }
14706
+ }
14538
14707
  };
14539
14708
  TimelineComponent.prototype.toData = function () {
14540
14709
  _super.prototype.toData.call(this);
@@ -14948,9 +15117,6 @@ var SpriteComponent = /** @class */ (function (_super) {
14948
15117
  this.material.setVector4('_Color', new Vector4().setFromArray(startColor));
14949
15118
  this.material.setVector4('_TexOffset', new Vector4().setFromArray([0, 0, 1, 1]));
14950
15119
  this.setItem();
14951
- // 添加K帧动画
14952
- var colorTrack = this.item.getComponent(TimelineComponent).createTrack(Track, 'SpriteColorTrack');
14953
- colorTrack.createClip(SpriteColorPlayable, 'SpriteColorClip').playable.fromData({ colorOverLifetime: data.colorOverLifetime, startColor: data.options.startColor });
14954
15120
  };
14955
15121
  SpriteComponent.prototype.toData = function () {
14956
15122
  _super.prototype.toData.call(this);
@@ -15117,8 +15283,8 @@ var ParticleMesh = /** @class */ (function () {
15117
15283
  var originalVertex = "#define LOOKUP_TEXTURE_CURVE ".concat(vertex_lookup_texture, "\n").concat(particleVert);
15118
15284
  var vertex = originalVertex;
15119
15285
  var shader = {
15120
- fragment: createShaderWithMarcos(marcos, fragment, exports.ShaderType.fragment, level),
15121
- vertex: createShaderWithMarcos(marcos, vertex, exports.ShaderType.vertex, level),
15286
+ fragment: fragment,
15287
+ vertex: vertex,
15122
15288
  glslVersion: level === 1 ? exports.GLSLVersion.GLSL1 : exports.GLSLVersion.GLSL3,
15123
15289
  shared: true,
15124
15290
  cacheId: shaderCache,
@@ -15673,8 +15839,8 @@ var TrailMesh = /** @class */ (function () {
15673
15839
  else {
15674
15840
  uniformValues.uVCurveValues = CurveValue.getAllData(keyFrameMeta);
15675
15841
  }
15676
- var vertex = createShaderWithMarcos(marcos, trailVert, exports.ShaderType.vertex, level);
15677
- var fragment = createShaderWithMarcos(marcos, particleFrag, exports.ShaderType.fragment, level);
15842
+ var vertex = trailVert;
15843
+ var fragment = particleFrag;
15678
15844
  var mtl = ({
15679
15845
  shader: {
15680
15846
  vertex: vertex,
@@ -16361,7 +16527,7 @@ var TextureShape = /** @class */ (function () {
16361
16527
  return TextureShape;
16362
16528
  }());
16363
16529
 
16364
- var _a$1;
16530
+ var _a$2;
16365
16531
  var ShapeNone = /** @class */ (function () {
16366
16532
  function ShapeNone() {
16367
16533
  }
@@ -16373,18 +16539,18 @@ var ShapeNone = /** @class */ (function () {
16373
16539
  };
16374
16540
  return ShapeNone;
16375
16541
  }());
16376
- var map = (_a$1 = {},
16377
- _a$1[ShapeType$1.NONE] = ShapeNone,
16378
- _a$1[ShapeType$1.CONE] = Cone,
16379
- _a$1[ShapeType$1.SPHERE] = Sphere,
16380
- _a$1[ShapeType$1.HEMISPHERE] = Hemisphere,
16381
- _a$1[ShapeType$1.CIRCLE] = Circle,
16382
- _a$1[ShapeType$1.DONUT] = Donut,
16383
- _a$1[ShapeType$1.RECTANGLE] = Rectangle,
16384
- _a$1[ShapeType$1.EDGE] = Edge,
16385
- _a$1[ShapeType$1.RECTANGLE_EDGE] = RectangleEdge,
16386
- _a$1[ShapeType$1.TEXTURE] = TextureShape,
16387
- _a$1);
16542
+ var map = (_a$2 = {},
16543
+ _a$2[ShapeType$1.NONE] = ShapeNone,
16544
+ _a$2[ShapeType$1.CONE] = Cone,
16545
+ _a$2[ShapeType$1.SPHERE] = Sphere,
16546
+ _a$2[ShapeType$1.HEMISPHERE] = Hemisphere,
16547
+ _a$2[ShapeType$1.CIRCLE] = Circle,
16548
+ _a$2[ShapeType$1.DONUT] = Donut,
16549
+ _a$2[ShapeType$1.RECTANGLE] = Rectangle,
16550
+ _a$2[ShapeType$1.EDGE] = Edge,
16551
+ _a$2[ShapeType$1.RECTANGLE_EDGE] = RectangleEdge,
16552
+ _a$2[ShapeType$1.TEXTURE] = TextureShape,
16553
+ _a$2);
16388
16554
  function createShape(shapeOptions) {
16389
16555
  if (!shapeOptions) {
16390
16556
  return new ShapeNone();
@@ -17713,7 +17879,7 @@ var ParticleSystem = /** @class */ (function (_super) {
17713
17879
  }));
17714
17880
  p.delay += meshTime;
17715
17881
  cursor++;
17716
- (_a = p.transform).translate.apply(_a, __spreadArray$2([], __read$3(burstOffset), false));
17882
+ (_a = p.transform).translate.apply(_a, __spreadArray$3([], __read$3(burstOffset), false));
17717
17883
  this.addParticle(p, maxCount_1);
17718
17884
  }
17719
17885
  }
@@ -18485,7 +18651,9 @@ var TextStyle = /** @class */ (function () {
18485
18651
  this.fontOffset = 0;
18486
18652
  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;
18487
18653
  this.textColor = textColor;
18654
+ //@ts-expect-error
18488
18655
  this.textWeight = fontWeight;
18656
+ //@ts-expect-error
18489
18657
  this.fontStyle = fontStyle;
18490
18658
  this.fontFamily = fontFamily;
18491
18659
  this.fontSize = fontSize; // 暂时取消字号限制 Math.min(fontSize, this.maxFontSize);
@@ -20553,7 +20721,10 @@ var VFXItem = /** @class */ (function (_super) {
20553
20721
  try {
20554
20722
  for (var _e = __values$1(this.children), _f = _e.next(); !_f.done; _f = _e.next()) {
20555
20723
  var child = _f.value;
20556
- return child.find(name);
20724
+ var res = child.find(name);
20725
+ if (res) {
20726
+ return res;
20727
+ }
20557
20728
  }
20558
20729
  }
20559
20730
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
@@ -20570,6 +20741,7 @@ var VFXItem = /** @class */ (function (_super) {
20570
20741
  _super.prototype.fromData.call(this, data);
20571
20742
  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;
20572
20743
  this.props = data;
20744
+ //@ts-expect-error
20573
20745
  this.type = data.type;
20574
20746
  this.id = id.toString(); // TODO 老数据 id 是 number,需要转换
20575
20747
  this.name = name;
@@ -20607,10 +20779,6 @@ var VFXItem = /** @class */ (function (_super) {
20607
20779
  }
20608
20780
  var timelineComponent = this.getComponent(TimelineComponent);
20609
20781
  timelineComponent.fromData(data.content);
20610
- if (this.type !== ItemType$1.particle) {
20611
- var track = timelineComponent.createTrack(Track, 'AnimationTrack');
20612
- track.createClip(AnimationClipPlayable, 'AnimationTimelineClip').playable.fromData(data.content);
20613
- }
20614
20782
  if (duration <= 0) {
20615
20783
  throw Error("Item duration can't be less than 0, see ".concat(HELP_LINK['Item duration can\'t be less than 0']));
20616
20784
  }
@@ -20669,10 +20837,10 @@ var VFXItem = /** @class */ (function (_super) {
20669
20837
  };
20670
20838
  VFXItem.prototype.translateByPixel = function (x, y) {
20671
20839
  if (this.composition) {
20840
+ // @ts-expect-error
20841
+ var _a = this.composition.renderer.canvas.getBoundingClientRect(), width = _a.width, height = _a.height;
20672
20842
  var z = this.transform.getWorldPosition().z;
20673
- var _a = this.composition.camera.getInverseVPRatio(z), rx = _a.x, ry = _a.y;
20674
- var width = this.composition.renderer.getWidth() / 2;
20675
- var height = this.composition.renderer.getHeight() / 2;
20843
+ var _b = this.composition.camera.getInverseVPRatio(z), rx = _b.x, ry = _b.y;
20676
20844
  this.transform.translate(2 * x * rx / width, -2 * y * ry / height, 0);
20677
20845
  }
20678
20846
  };
@@ -20777,7 +20945,6 @@ function createVFXItem(props, composition) {
20777
20945
  if (!pluginName) {
20778
20946
  switch (type) {
20779
20947
  case ItemType$1.null:
20780
- case ItemType$1.base:
20781
20948
  pluginName = 'cal';
20782
20949
  break;
20783
20950
  case ItemType$1.sprite:
@@ -20898,7 +21065,7 @@ var PluginSystem = /** @class */ (function () {
20898
21065
  plugin = plugins[i];
20899
21066
  ctrl = pluginLoaderMap[plugin.name];
20900
21067
  if (name in ctrl) {
20901
- pendings.push(Promise.resolve(ctrl[name].apply(ctrl, __spreadArray$2([], __read$3(args), false))));
21068
+ pendings.push(Promise.resolve(ctrl[name].apply(ctrl, __spreadArray$3([], __read$3(args), false))));
20902
21069
  }
20903
21070
  }
20904
21071
  return [2 /*return*/, Promise.all(pendings)];
@@ -20939,12 +21106,77 @@ function getPluginUsageInfo(name) {
20939
21106
  }
20940
21107
  }
20941
21108
 
20942
- /*!
20943
- * Name: @galacean/effects-specification
20944
- * Description: Galacean Effects JSON Specification
20945
- * Author: Ant Group CO., Ltd.
20946
- * Version: v1.0.1
20947
- */
21109
+ /*!
21110
+ * Name: @galacean/effects-specification
21111
+ * Description: Galacean Effects JSON Specification
21112
+ * Author: Ant Group CO., Ltd.
21113
+ * Version: v2.0.0-alpha.2
21114
+ */
21115
+
21116
+ const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
21117
+ var native = {
21118
+ randomUUID
21119
+ };
21120
+
21121
+ // Unique ID creation requires a high quality random # generator. In the browser we therefore
21122
+ // require the crypto API and do not support built-in fallback to lower quality random number
21123
+ // generators (like Math.random()).
21124
+ let getRandomValues;
21125
+ const rnds8 = new Uint8Array(16);
21126
+ function rng() {
21127
+ // lazy load so that environments that need to polyfill have a chance to do so
21128
+ if (!getRandomValues) {
21129
+ // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
21130
+ getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
21131
+
21132
+ if (!getRandomValues) {
21133
+ throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
21134
+ }
21135
+ }
21136
+
21137
+ return getRandomValues(rnds8);
21138
+ }
21139
+
21140
+ /**
21141
+ * Convert array of 16 byte values to UUID string format of the form:
21142
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
21143
+ */
21144
+
21145
+ const byteToHex = [];
21146
+
21147
+ for (let i = 0; i < 256; ++i) {
21148
+ byteToHex.push((i + 0x100).toString(16).slice(1));
21149
+ }
21150
+
21151
+ function unsafeStringify(arr, offset = 0) {
21152
+ // Note: Be careful editing this code! It's been tuned for performance
21153
+ // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
21154
+ 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]];
21155
+ }
21156
+
21157
+ function v4(options, buf, offset) {
21158
+ if (native.randomUUID && !buf && !options) {
21159
+ return native.randomUUID();
21160
+ }
21161
+
21162
+ options = options || {};
21163
+ const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
21164
+
21165
+ rnds[6] = rnds[6] & 0x0f | 0x40;
21166
+ rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
21167
+
21168
+ if (buf) {
21169
+ offset = offset || 0;
21170
+
21171
+ for (let i = 0; i < 16; ++i) {
21172
+ buf[offset + i] = rnds[i];
21173
+ }
21174
+
21175
+ return buf;
21176
+ }
21177
+
21178
+ return unsafeStringify(rnds);
21179
+ }
20948
21180
 
20949
21181
  /*********************************************/
20950
21182
  /* 元素属性参数类型 */
@@ -21208,6 +21440,10 @@ var ItemType;
21208
21440
  * 天空盒元素
21209
21441
  */
21210
21442
  ItemType["skybox"] = "skybox";
21443
+ /**
21444
+ * 特效元素
21445
+ */
21446
+ ItemType["effect"] = "effect";
21211
21447
  })(ItemType || (ItemType = {}));
21212
21448
  /**
21213
21449
  * 渲染模式
@@ -21320,6 +21556,10 @@ var CompositionEndBehavior;
21320
21556
  * 销毁并保留最后一帧
21321
21557
  */
21322
21558
  CompositionEndBehavior[CompositionEndBehavior["pause_destroy"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = "pause_destroy";
21559
+ /**
21560
+ * 冻结
21561
+ */
21562
+ CompositionEndBehavior[CompositionEndBehavior["freeze"] = END_BEHAVIOR_FREEZE] = "freeze";
21323
21563
  })(CompositionEndBehavior || (CompositionEndBehavior = {}));
21324
21564
 
21325
21565
  /*********************************************/
@@ -21456,12 +21696,38 @@ var ShapeArcMode;
21456
21696
  ShapeArcMode[ShapeArcMode["UNIFORM_BURST"] = 3] = "UNIFORM_BURST";
21457
21697
  })(ShapeArcMode || (ShapeArcMode = {}));
21458
21698
 
21699
+ var LightType;
21700
+ (function (LightType) {
21701
+ /**
21702
+ * 点光源
21703
+ */
21704
+ LightType["point"] = "point";
21705
+ /**
21706
+ * 聚光灯
21707
+ */
21708
+ LightType["spot"] = "spot";
21709
+ /**
21710
+ * 方向光
21711
+ */
21712
+ LightType["directional"] = "directional";
21713
+ /**
21714
+ * 环境光
21715
+ */
21716
+ LightType["ambient"] = "ambient";
21717
+ })(LightType || (LightType = {}));
21718
+
21459
21719
  var ModelBoundingType;
21460
21720
  (function (ModelBoundingType) {
21461
21721
  ModelBoundingType[ModelBoundingType["box"] = 2] = "box";
21462
21722
  ModelBoundingType[ModelBoundingType["sphere"] = 3] = "sphere";
21463
21723
  })(ModelBoundingType || (ModelBoundingType = {}));
21464
21724
 
21725
+ var CameraType;
21726
+ (function (CameraType) {
21727
+ CameraType["orthographic"] = "orthographic";
21728
+ CameraType["perspective"] = "perspective";
21729
+ })(CameraType || (CameraType = {}));
21730
+
21465
21731
  // 材质类型
21466
21732
  var MaterialType;
21467
21733
  (function (MaterialType) {
@@ -21607,6 +21873,28 @@ var FontStyle;
21607
21873
  FontStyle["oblique"] = "oblique";
21608
21874
  })(FontStyle || (FontStyle = {}));
21609
21875
 
21876
+ var DataType;
21877
+ (function (DataType) {
21878
+ DataType["VFXItemData"] = "VFXItemData";
21879
+ DataType["EffectComponent"] = "EffectComponent";
21880
+ DataType["Material"] = "Material";
21881
+ DataType["Shader"] = "Shader";
21882
+ DataType["SpriteComponent"] = "SpriteComponent";
21883
+ DataType["ParticleSystem"] = "ParticleSystem";
21884
+ DataType["InteractComponent"] = "InteractComponent";
21885
+ DataType["CameraController"] = "CameraController";
21886
+ DataType["Geometry"] = "Geometry";
21887
+ DataType["Texture"] = "Texture";
21888
+ DataType["TextComponent"] = "TextComponent";
21889
+ // FIXME: 先完成ECS的场景转换,后面移到spec中
21890
+ DataType["MeshComponent"] = "MeshComponent";
21891
+ DataType["SkyboxComponent"] = "SkyboxComponent";
21892
+ DataType["LightComponent"] = "LightComponent";
21893
+ DataType["CameraComponent"] = "CameraComponent";
21894
+ DataType["ModelPluginComponent"] = "ModelPluginComponent";
21895
+ DataType["TreeComponent"] = "TreeComponent";
21896
+ })(DataType || (DataType = {}));
21897
+
21610
21898
  /******************************************************************************
21611
21899
  Copyright (c) Microsoft Corporation.
21612
21900
 
@@ -21662,11 +21950,22 @@ function __read(o, n) {
21662
21950
  return ar;
21663
21951
  }
21664
21952
 
21953
+ function __spreadArray(to, from, pack) {
21954
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
21955
+ if (ar || !(i in from)) {
21956
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21957
+ ar[i] = from[i];
21958
+ }
21959
+ }
21960
+ return to.concat(ar || Array.prototype.slice.call(from));
21961
+ }
21962
+
21665
21963
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
21666
21964
  var e = new Error(message);
21667
21965
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
21668
21966
  };
21669
21967
 
21968
+ var _a$1;
21670
21969
  function arrAdd(arr, item) {
21671
21970
  if (!arr.includes(item)) {
21672
21971
  arr.push(item);
@@ -21902,6 +22201,34 @@ function rotationZYXFromQuat(out, quat) {
21902
22201
  }
21903
22202
  return out;
21904
22203
  }
22204
+ function generateGUID() {
22205
+ return v4().replace(/-/g, '');
22206
+ }
22207
+ /**
22208
+ * 提取并转换 JSON 数据中的 anchor 值
22209
+ */
22210
+ function convertAnchor$1(anchor, particleOrigin) {
22211
+ if (anchor) {
22212
+ return [anchor[0] - 0.5, 0.5 - anchor[1]];
22213
+ }
22214
+ else if (particleOrigin) {
22215
+ return particleOriginTranslateMap[particleOrigin];
22216
+ }
22217
+ else {
22218
+ return [0, 0];
22219
+ }
22220
+ }
22221
+ var particleOriginTranslateMap = (_a$1 = {},
22222
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_CENTER] = [0, 0],
22223
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM] = [0, -0.5],
22224
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP] = [0, 0.5],
22225
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP] = [-0.5, 0.5],
22226
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER] = [-0.5, 0],
22227
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM] = [-0.5, -0.5],
22228
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER] = [0.5, 0],
22229
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],
22230
+ _a$1[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],
22231
+ _a$1);
21905
22232
 
21906
22233
  function getStandardParticleContent(particle) {
21907
22234
  var _a;
@@ -22313,6 +22640,309 @@ function version22Migration(json) {
22313
22640
  });
22314
22641
  return json;
22315
22642
  }
22643
+ /**
22644
+ * 3.0 以下版本数据适配(runtime 2.0及以上版本支持)
22645
+ */
22646
+ function version30Migration(json) {
22647
+ var e_1, _a;
22648
+ var _b, _c, _d, _e;
22649
+ var result = Object.assign({}, json, {
22650
+ items: [],
22651
+ components: [],
22652
+ materials: [],
22653
+ shaders: [],
22654
+ geometries: [],
22655
+ });
22656
+ // 兼容老版本数据中不存在textures的情况
22657
+ (_b = result.textures) !== null && _b !== void 0 ? _b : (result.textures = []);
22658
+ result.textures.forEach(function (textureOptions) {
22659
+ Object.assign(textureOptions, {
22660
+ id: generateGUID(),
22661
+ dataType: DataType.Texture,
22662
+ });
22663
+ });
22664
+ if (result.textures.length < result.images.length) {
22665
+ for (var i = result.textures.length; i < result.images.length; i++) {
22666
+ result.textures.push({
22667
+ //@ts-expect-error
22668
+ id: generateGUID(),
22669
+ dataType: DataType.Texture,
22670
+ source: i,
22671
+ flipY: true,
22672
+ });
22673
+ }
22674
+ }
22675
+ var _loop_1 = function (composition) {
22676
+ var e_2, _h, e_3, _j;
22677
+ // composition 的 endbehaviour 兼容
22678
+ if (composition.endBehavior === END_BEHAVIOR_PAUSE_AND_DESTROY || composition.endBehavior === END_BEHAVIOR_PAUSE) {
22679
+ composition.endBehavior = END_BEHAVIOR_FREEZE;
22680
+ }
22681
+ var itemGuidMap = {};
22682
+ try {
22683
+ for (var _k = (e_2 = void 0, __values(composition.items)), _l = _k.next(); !_l.done; _l = _k.next()) {
22684
+ var item = _l.value;
22685
+ itemGuidMap[item.id] = generateGUID();
22686
+ // TODO: 编辑器测试用,上线后删除
22687
+ //@ts-expect-error
22688
+ item.oldId = item.id;
22689
+ item.id = itemGuidMap[item.id];
22690
+ }
22691
+ }
22692
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
22693
+ finally {
22694
+ try {
22695
+ if (_l && !_l.done && (_h = _k.return)) _h.call(_k);
22696
+ }
22697
+ finally { if (e_2) throw e_2.error; }
22698
+ }
22699
+ composition.items.forEach(function (item, index) {
22700
+ if (item.parentId) {
22701
+ if (item.parentId.includes('^')) {
22702
+ var parentId = (item.parentId).split('^')[0];
22703
+ var nodeId = (item.parentId).split('^')[1];
22704
+ item.parentId = itemGuidMap[parentId] + '^' + nodeId;
22705
+ }
22706
+ else {
22707
+ item.parentId = itemGuidMap[item.parentId];
22708
+ }
22709
+ }
22710
+ // @ts-expect-error fix item type
22711
+ result.items.push(item);
22712
+ // @ts-expect-error fix item type
22713
+ composition.items[index] = { id: item.id };
22714
+ });
22715
+ try {
22716
+ for (var _m = (e_3 = void 0, __values(result.items)), _o = _m.next(); !_o.done; _o = _m.next()) {
22717
+ var item = _o.value;
22718
+ // 原 texture 索引转为统一 guid 索引
22719
+ if (item.content) {
22720
+ if (item.content.renderer) {
22721
+ if (item.content.renderer.texture !== undefined) {
22722
+ var oldTextureId = item.content.renderer.texture;
22723
+ //@ts-expect-error
22724
+ item.content.renderer.texture = { id: result.textures[oldTextureId].id };
22725
+ }
22726
+ }
22727
+ if (item.content.trails) {
22728
+ if (item.content.trails.texture !== undefined) {
22729
+ var oldTextureId = item.content.trails.texture;
22730
+ //@ts-expect-error
22731
+ item.content.trails.texture = { id: result.textures[oldTextureId].id };
22732
+ }
22733
+ }
22734
+ }
22735
+ // item 的 transform 属性由数组转为 {x:n, y:n, z:n}
22736
+ if (item.transform) {
22737
+ //@ts-expect-error
22738
+ var position = __spreadArray([], __read((_c = item.transform.position) !== null && _c !== void 0 ? _c : [0, 0, 0]), false);
22739
+ //@ts-expect-error
22740
+ var rotation = __spreadArray([], __read((_d = item.transform.rotation) !== null && _d !== void 0 ? _d : [0, 0, 0]), false);
22741
+ //@ts-expect-error
22742
+ var scale = __spreadArray([], __read((_e = item.transform.scale) !== null && _e !== void 0 ? _e : [1, 1, 1]), false);
22743
+ Object.assign(item, {
22744
+ transform: {
22745
+ position: { x: position[0], y: position[1], z: position[2] },
22746
+ rotation: { x: rotation[0], y: rotation[1], z: rotation[2] },
22747
+ scale: { x: scale[0], y: scale[1], z: scale[0] },
22748
+ },
22749
+ });
22750
+ // sprite 的 scale 转为 size
22751
+ if (item.type === ItemType.sprite) {
22752
+ item.transform.size = { x: scale[0], y: scale[1] };
22753
+ item.transform.scale = { x: 1, y: 1, z: 1 };
22754
+ }
22755
+ // sprite 的 anchor 修正
22756
+ if (item.type === ItemType.sprite) {
22757
+ var content = item.content;
22758
+ if (!content.renderer) {
22759
+ content.renderer = {};
22760
+ }
22761
+ var renderer = content.renderer;
22762
+ var realAnchor = convertAnchor$1(renderer.anchor, renderer.particleOrigin);
22763
+ var startSize = item.transform.size;
22764
+ // 兼容旧JSON(anchor和particleOrigin可能同时存在)
22765
+ if (!renderer.anchor && renderer.particleOrigin !== undefined) {
22766
+ //@ts-expect-error
22767
+ item.transform.position.x += -realAnchor[0] * startSize.x;
22768
+ //@ts-expect-error
22769
+ item.transform.position.y += -realAnchor[1] * startSize.y;
22770
+ }
22771
+ //@ts-expect-error
22772
+ item.transform.anchor = { x: realAnchor[0] * startSize.x, y: realAnchor[1] * startSize.y };
22773
+ }
22774
+ }
22775
+ if (item.type === ItemType.particle) {
22776
+ var content = item.content;
22777
+ if (!content.renderer) {
22778
+ content.renderer = {};
22779
+ }
22780
+ var renderer = content.renderer;
22781
+ content.renderer.anchor = convertAnchor$1(renderer.anchor, renderer.particleOrigin);
22782
+ }
22783
+ // 动画数据转化 TODO: 动画数据移到 TimelineComponentData
22784
+ item.content.tracks = [];
22785
+ var tracks = item.content.tracks;
22786
+ if (item.type !== ItemType.particle) {
22787
+ tracks.push({
22788
+ clips: [
22789
+ {
22790
+ dataType: 'TransformAnimationPlayableAsset',
22791
+ animationClip: {
22792
+ sizeOverLifetime: item.content.sizeOverLifetime,
22793
+ rotationOverLifetime: item.content.rotationOverLifetime,
22794
+ positionOverLifetime: item.content.positionOverLifetime,
22795
+ },
22796
+ },
22797
+ ],
22798
+ });
22799
+ }
22800
+ if (item.type === ItemType.sprite) {
22801
+ tracks.push({
22802
+ clips: [
22803
+ {
22804
+ dataType: 'SpriteColorAnimationPlayableAsset',
22805
+ animationClip: {
22806
+ colorOverLifetime: item.content.colorOverLifetime,
22807
+ startColor: item.content.options.startColor,
22808
+ },
22809
+ },
22810
+ ],
22811
+ });
22812
+ }
22813
+ // gizmo 的 target id 转换为新的 item guid
22814
+ if (item.content.options.target) {
22815
+ item.content.options.target = itemGuidMap[item.content.options.target];
22816
+ }
22817
+ // item 的 content 转为 component data 加入 JSONScene.components
22818
+ var uuid = generateGUID();
22819
+ if (item.type === ItemType.sprite) {
22820
+ item.components = [];
22821
+ result.components.push(item.content);
22822
+ item.content.id = uuid;
22823
+ item.content.dataType = DataType.SpriteComponent;
22824
+ item.content.item = { id: item.id };
22825
+ item.dataType = DataType.VFXItemData;
22826
+ //@ts-expect-error
22827
+ item.components.push({ id: item.content.id });
22828
+ }
22829
+ else if (item.type === ItemType.particle) {
22830
+ item.components = [];
22831
+ result.components.push(item.content);
22832
+ item.content.id = uuid;
22833
+ item.content.dataType = DataType.ParticleSystem;
22834
+ item.content.item = { id: item.id };
22835
+ item.dataType = DataType.VFXItemData;
22836
+ //@ts-expect-error
22837
+ item.components.push({ id: item.content.id });
22838
+ }
22839
+ else if (item.type === ItemType.mesh) {
22840
+ item.components = [];
22841
+ result.components.push(item.content);
22842
+ item.content.id = uuid;
22843
+ item.content.dataType = DataType.MeshComponent;
22844
+ item.content.item = { id: item.id };
22845
+ item.dataType = DataType.VFXItemData;
22846
+ //@ts-expect-error
22847
+ item.components.push({ id: item.content.id });
22848
+ }
22849
+ else if (item.type === ItemType.skybox) {
22850
+ item.components = [];
22851
+ result.components.push(item.content);
22852
+ item.content.id = uuid;
22853
+ item.content.dataType = DataType.SkyboxComponent;
22854
+ item.content.item = { id: item.id };
22855
+ item.dataType = DataType.VFXItemData;
22856
+ //@ts-expect-error
22857
+ item.components.push({ id: item.content.id });
22858
+ }
22859
+ else if (item.type === ItemType.light) {
22860
+ item.components = [];
22861
+ result.components.push(item.content);
22862
+ item.content.id = uuid;
22863
+ item.content.dataType = DataType.LightComponent;
22864
+ item.content.item = { id: item.id };
22865
+ item.dataType = DataType.VFXItemData;
22866
+ //@ts-expect-error
22867
+ item.components.push({ id: item.content.id });
22868
+ }
22869
+ else if (item.type === 'camera') {
22870
+ item.components = [];
22871
+ result.components.push(item.content);
22872
+ item.content.id = uuid;
22873
+ item.content.dataType = DataType.CameraComponent;
22874
+ item.content.item = { id: item.id };
22875
+ item.dataType = DataType.VFXItemData;
22876
+ //@ts-expect-error
22877
+ item.components.push({ id: item.content.id });
22878
+ }
22879
+ else if (item.type === ItemType.tree) {
22880
+ item.components = [];
22881
+ result.components.push(item.content);
22882
+ item.content.id = uuid;
22883
+ item.content.dataType = DataType.TreeComponent;
22884
+ item.content.item = { id: item.id };
22885
+ item.dataType = DataType.VFXItemData;
22886
+ //@ts-expect-error
22887
+ item.components.push({ id: item.content.id });
22888
+ }
22889
+ else if (item.type === ItemType.interact) {
22890
+ item.components = [];
22891
+ result.components.push(item.content);
22892
+ item.content.id = uuid;
22893
+ item.content.dataType = DataType.InteractComponent;
22894
+ item.content.item = { id: item.id };
22895
+ item.dataType = DataType.VFXItemData;
22896
+ //@ts-expect-error
22897
+ item.components.push({ id: item.content.id });
22898
+ }
22899
+ else if (item.type === ItemType.camera) {
22900
+ item.components = [];
22901
+ result.components.push(item.content);
22902
+ item.content.id = uuid;
22903
+ item.content.dataType = DataType.CameraController;
22904
+ item.content.item = { id: item.id };
22905
+ item.dataType = DataType.VFXItemData;
22906
+ //@ts-expect-error
22907
+ item.components.push({ id: item.content.id });
22908
+ }
22909
+ else if (item.type === ItemType.text) {
22910
+ item.components = [];
22911
+ result.components.push(item.content);
22912
+ item.content.id = uuid;
22913
+ item.content.dataType = DataType.TextComponent;
22914
+ item.content.item = { id: item.id };
22915
+ item.dataType = DataType.VFXItemData;
22916
+ //@ts-expect-error
22917
+ item.components.push({ id: item.content.id });
22918
+ }
22919
+ }
22920
+ }
22921
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
22922
+ finally {
22923
+ try {
22924
+ if (_o && !_o.done && (_j = _m.return)) _j.call(_m);
22925
+ }
22926
+ finally { if (e_3) throw e_3.error; }
22927
+ }
22928
+ };
22929
+ try {
22930
+ // 更正Composition.endBehavior
22931
+ for (var _f = __values(json.compositions), _g = _f.next(); !_g.done; _g = _f.next()) {
22932
+ var composition = _g.value;
22933
+ _loop_1(composition);
22934
+ }
22935
+ }
22936
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
22937
+ finally {
22938
+ try {
22939
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
22940
+ }
22941
+ finally { if (e_1) throw e_1.error; }
22942
+ }
22943
+ result.version = '3.0';
22944
+ return result;
22945
+ }
22316
22946
 
22317
22947
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
22318
22948
  var standardVersion = /^(\d+)\.(\d+)$/;
@@ -22322,16 +22952,16 @@ function getStandardJSON(json) {
22322
22952
  if (!json || typeof json !== 'object') {
22323
22953
  throw Error('expect a json object');
22324
22954
  }
22325
- // 修正老版本数据中,meshItem以及lightItem结束行为错误问题
22955
+ // 修正老版本数据中,meshItem 以及 lightItem 结束行为错误问题
22326
22956
  version22Migration(json);
22327
22957
  if (v0.test(json.version)) {
22328
22958
  reverseParticle = ((_a = (/^(\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';
22329
- return version21Migration(getStandardJSONFromV0(json));
22959
+ return version30Migration(version21Migration(getStandardJSONFromV0(json)));
22330
22960
  }
22331
22961
  var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];
22332
22962
  if (mainVersion) {
22333
- if (Number(mainVersion) < 2) {
22334
- return version21Migration(json);
22963
+ if (Number(mainVersion) < 3) {
22964
+ return version30Migration(version21Migration(json));
22335
22965
  }
22336
22966
  return json;
22337
22967
  }
@@ -22655,7 +23285,7 @@ function version3Migration(scene) {
22655
23285
  try {
22656
23286
  for (var _j = __values$1(ecScene.items), _k = _j.next(); !_k.done; _k = _j.next()) {
22657
23287
  var item = _k.value;
22658
- itemGuidMap[item.id] = generateGUID();
23288
+ itemGuidMap[item.id] = generateGUID$1();
22659
23289
  // TODO: 编辑器测试用,上线后删除
22660
23290
  //@ts-expect-error
22661
23291
  item.oldId = item.id;
@@ -22711,7 +23341,7 @@ function version3Migration(scene) {
22711
23341
  // texture 增加 id 和 dataType
22712
23342
  for (var _q = __values$1(scene.textureOptions), _r = _q.next(); !_r.done; _r = _q.next()) {
22713
23343
  var texture = _r.value;
22714
- texture.id = generateGUID();
23344
+ texture.id = generateGUID$1();
22715
23345
  texture.dataType = exports.DataType.Texture;
22716
23346
  }
22717
23347
  }
@@ -22731,23 +23361,15 @@ function version3Migration(scene) {
22731
23361
  var item = _t.value;
22732
23362
  // 原 texture 索引转为统一 guid 索引
22733
23363
  if (item.content) {
22734
- //@ts-expect-error
22735
23364
  if (item.content.renderer) {
22736
- //@ts-expect-error
22737
23365
  if (item.content.renderer.texture !== undefined) {
22738
- //@ts-expect-error
22739
23366
  var oldTextureId = item.content.renderer.texture;
22740
- //@ts-expect-error
22741
23367
  item.content.renderer.texture = { id: scene.textureOptions[oldTextureId].id };
22742
23368
  }
22743
23369
  }
22744
- //@ts-expect-error
22745
23370
  if (item.content.trails) {
22746
- //@ts-expect-error
22747
23371
  if (item.content.trails.texture !== undefined) {
22748
- //@ts-expect-error
22749
23372
  var oldTextureId = item.content.trails.texture;
22750
- //@ts-expect-error
22751
23373
  item.content.trails.texture = { id: scene.textureOptions[oldTextureId].id };
22752
23374
  }
22753
23375
  }
@@ -22758,12 +23380,14 @@ function version3Migration(scene) {
22758
23380
  var rotation = item.transform.rotation;
22759
23381
  var scale = item.transform.scale;
22760
23382
  if (!position) {
23383
+ //@ts-expect-error
22761
23384
  position = [0, 0, 0];
22762
23385
  }
22763
23386
  if (!rotation) {
22764
23387
  rotation = [0, 0, 0];
22765
23388
  }
22766
23389
  if (!scale) {
23390
+ //@ts-expect-error
22767
23391
  scale = [1, 1, 1];
22768
23392
  }
22769
23393
  item.transform = {
@@ -22784,12 +23408,9 @@ function version3Migration(scene) {
22784
23408
  // sprite 的 anchor 修正
22785
23409
  if (item.type === ItemType$1.sprite) {
22786
23410
  var content = item.content;
22787
- //@ts-expect-error
22788
23411
  if (!content.renderer) {
22789
- //@ts-expect-error
22790
23412
  content.renderer = {};
22791
23413
  }
22792
- //@ts-expect-error
22793
23414
  var renderer = content.renderer;
22794
23415
  var realAnchor = convertAnchor(renderer.anchor, renderer.particleOrigin);
22795
23416
  //@ts-expect-error
@@ -22807,14 +23428,10 @@ function version3Migration(scene) {
22807
23428
  }
22808
23429
  if (item.type === ItemType$1.particle) {
22809
23430
  var content = item.content;
22810
- //@ts-expect-error
22811
23431
  if (!content.renderer) {
22812
- //@ts-expect-error
22813
23432
  content.renderer = {};
22814
23433
  }
22815
- //@ts-expect-error
22816
23434
  var renderer = content.renderer;
22817
- //@ts-expect-error
22818
23435
  content.renderer.anchor = convertAnchor(renderer.anchor, renderer.particleOrigin);
22819
23436
  }
22820
23437
  // item 的 endbehaviour 兼容
@@ -22822,164 +23439,138 @@ function version3Migration(scene) {
22822
23439
  if (item.endBehavior === END_BEHAVIOR_PAUSE_AND_DESTROY$1 || item.endBehavior === END_BEHAVIOR_PAUSE$1) {
22823
23440
  item.endBehavior = END_BEHAVIOR_FREEZE$1;
22824
23441
  }
23442
+ // 动画数据转化 TODO: 动画数据移到 TimelineComponentData
23443
+ item.content.tracks = [];
23444
+ var tracks = item.content.tracks;
23445
+ if (item.type !== ItemType$1.particle) {
23446
+ tracks.push({
23447
+ clips: [
23448
+ {
23449
+ dataType: 'TransformAnimationPlayableAsset',
23450
+ animationClip: {
23451
+ sizeOverLifetime: item.content.sizeOverLifetime,
23452
+ rotationOverLifetime: item.content.rotationOverLifetime,
23453
+ positionOverLifetime: item.content.positionOverLifetime,
23454
+ },
23455
+ },
23456
+ ],
23457
+ });
23458
+ }
23459
+ if (item.type === ItemType$1.sprite) {
23460
+ tracks.push({
23461
+ clips: [
23462
+ {
23463
+ dataType: 'SpriteColorAnimationPlayableAsset',
23464
+ animationClip: {
23465
+ colorOverLifetime: item.content.colorOverLifetime,
23466
+ startColor: item.content.options.startColor,
23467
+ },
23468
+ },
23469
+ ],
23470
+ });
23471
+ }
23472
+ // gizmo 的 target id 转换为新的 item guid
23473
+ if (item.content && item.content.options && item.content.options.target) {
23474
+ item.content.options.target = itemGuidMap[item.content.options.target];
23475
+ }
22825
23476
  // item 的 content 转为 component data 加入 JSONScene.components
22826
- var uuid = v4().replace(/-/g, '');
23477
+ var uuid = v4$1().replace(/-/g, '');
22827
23478
  if (item.type === ItemType$1.sprite) {
22828
- //@ts-expect-error
22829
23479
  item.components = [];
22830
- //@ts-expect-error
22831
23480
  components.push(item.content);
22832
- //@ts-expect-error
22833
23481
  item.content.id = uuid;
22834
- //@ts-expect-error
22835
23482
  item.content.dataType = exports.DataType.SpriteComponent;
22836
- //@ts-expect-error
22837
23483
  item.content.item = { id: item.id };
22838
- //@ts-expect-error
22839
23484
  item.dataType = exports.DataType.VFXItemData;
22840
23485
  //@ts-expect-error
22841
23486
  item.components.push({ id: item.content.id });
22842
23487
  }
22843
23488
  else if (item.type === ItemType$1.particle) {
22844
- //@ts-expect-error
22845
23489
  item.components = [];
22846
- //@ts-expect-error
22847
23490
  components.push(item.content);
22848
- //@ts-expect-error
22849
23491
  item.content.id = uuid;
22850
- //@ts-expect-error
22851
23492
  item.content.dataType = exports.DataType.ParticleSystem;
22852
- //@ts-expect-error
22853
23493
  item.content.item = { id: item.id };
22854
- //@ts-expect-error
22855
23494
  item.dataType = exports.DataType.VFXItemData;
22856
23495
  //@ts-expect-error
22857
23496
  item.components.push({ id: item.content.id });
22858
23497
  }
22859
23498
  else if (item.type === ItemType$1.mesh) {
22860
- //@ts-expect-error
22861
23499
  item.components = [];
22862
- //@ts-expect-error
22863
23500
  components.push(item.content);
22864
- //@ts-expect-error
22865
23501
  item.content.id = uuid;
22866
- //@ts-expect-error
22867
23502
  item.content.dataType = exports.DataType.MeshComponent;
22868
- //@ts-expect-error
22869
23503
  item.content.item = { id: item.id };
22870
- //@ts-expect-error
22871
23504
  item.dataType = exports.DataType.VFXItemData;
22872
23505
  //@ts-expect-error
22873
23506
  item.components.push({ id: item.content.id });
22874
23507
  }
22875
23508
  else if (item.type === ItemType$1.skybox) {
22876
- //@ts-expect-error
22877
23509
  item.components = [];
22878
- //@ts-expect-error
22879
23510
  components.push(item.content);
22880
- //@ts-expect-error
22881
23511
  item.content.id = uuid;
22882
- //@ts-expect-error
22883
23512
  item.content.dataType = exports.DataType.SkyboxComponent;
22884
- //@ts-expect-error
22885
23513
  item.content.item = { id: item.id };
22886
- //@ts-expect-error
22887
23514
  item.dataType = exports.DataType.VFXItemData;
22888
23515
  //@ts-expect-error
22889
23516
  item.components.push({ id: item.content.id });
22890
23517
  }
22891
23518
  else if (item.type === ItemType$1.light) {
22892
- //@ts-expect-error
22893
23519
  item.components = [];
22894
- //@ts-expect-error
22895
23520
  components.push(item.content);
22896
- //@ts-expect-error
22897
23521
  item.content.id = uuid;
22898
- //@ts-expect-error
22899
23522
  item.content.dataType = exports.DataType.LightComponent;
22900
- //@ts-expect-error
22901
23523
  item.content.item = { id: item.id };
22902
- //@ts-expect-error
22903
23524
  item.dataType = exports.DataType.VFXItemData;
22904
23525
  //@ts-expect-error
22905
23526
  item.components.push({ id: item.content.id });
22906
23527
  }
22907
23528
  else if (item.type === 'camera') {
22908
- //@ts-expect-error
22909
23529
  item.components = [];
22910
- //@ts-expect-error
22911
23530
  components.push(item.content);
22912
- //@ts-expect-error
22913
23531
  item.content.id = uuid;
22914
- //@ts-expect-error
22915
23532
  item.content.dataType = exports.DataType.CameraComponent;
22916
- //@ts-expect-error
22917
23533
  item.content.item = { id: item.id };
22918
- //@ts-expect-error
22919
23534
  item.dataType = exports.DataType.VFXItemData;
22920
23535
  //@ts-expect-error
22921
23536
  item.components.push({ id: item.content.id });
22922
23537
  }
22923
23538
  else if (item.type === ItemType$1.tree) {
22924
- //@ts-expect-error
22925
23539
  item.components = [];
22926
- //@ts-expect-error
22927
23540
  components.push(item.content);
22928
- //@ts-expect-error
22929
23541
  item.content.id = uuid;
22930
- //@ts-expect-error
22931
23542
  item.content.dataType = exports.DataType.TreeComponent;
22932
- //@ts-expect-error
22933
23543
  item.content.item = { id: item.id };
22934
- //@ts-expect-error
22935
23544
  item.dataType = exports.DataType.VFXItemData;
22936
23545
  //@ts-expect-error
22937
23546
  item.components.push({ id: item.content.id });
22938
23547
  }
22939
23548
  else if (item.type === ItemType$1.interact) {
22940
- //@ts-expect-error
22941
23549
  item.components = [];
22942
- //@ts-expect-error
22943
23550
  components.push(item.content);
22944
- //@ts-expect-error
22945
23551
  item.content.id = uuid;
22946
- //@ts-expect-error
22947
23552
  item.content.dataType = exports.DataType.InteractComponent;
22948
- //@ts-expect-error
22949
23553
  item.content.item = { id: item.id };
22950
- //@ts-expect-error
22951
23554
  item.dataType = exports.DataType.VFXItemData;
22952
23555
  //@ts-expect-error
22953
23556
  item.components.push({ id: item.content.id });
22954
23557
  }
22955
23558
  else if (item.type === ItemType$1.camera) {
22956
- //@ts-expect-error
22957
23559
  item.components = [];
22958
- //@ts-expect-error
22959
23560
  components.push(item.content);
22960
- //@ts-expect-error
22961
23561
  item.content.id = uuid;
22962
- //@ts-expect-error
22963
23562
  item.content.dataType = exports.DataType.CameraController;
22964
- //@ts-expect-error
22965
23563
  item.content.item = { id: item.id };
22966
- //@ts-expect-error
22967
23564
  item.dataType = exports.DataType.VFXItemData;
22968
23565
  //@ts-expect-error
22969
23566
  item.components.push({ id: item.content.id });
22970
23567
  }
22971
23568
  else if (item.type === ItemType$1.text) {
22972
- //@ts-expect-error
22973
23569
  item.components = [];
22974
- //@ts-expect-error
22975
23570
  components.push(item.content);
22976
- //@ts-expect-error
22977
23571
  item.content.id = uuid;
22978
- //@ts-expect-error
22979
23572
  item.content.dataType = exports.DataType.TextComponent;
22980
- //@ts-expect-error
22981
23573
  item.content.item = { id: item.id };
22982
- //@ts-expect-error
22983
23574
  item.dataType = exports.DataType.VFXItemData;
22984
23575
  //@ts-expect-error
22985
23576
  item.components.push({ id: item.content.id });
@@ -23003,7 +23594,7 @@ function convertAnchor(anchor, particleOrigin) {
23003
23594
  return [anchor[0] - 0.5, 0.5 - anchor[1]];
23004
23595
  }
23005
23596
  else if (particleOrigin) {
23006
- return particleOriginTranslateMap[particleOrigin];
23597
+ return particleOriginTranslateMap$1[particleOrigin];
23007
23598
  }
23008
23599
  else {
23009
23600
  return [0, 0];
@@ -23281,16 +23872,17 @@ var AssetManager = /** @class */ (function () {
23281
23872
  };
23282
23873
  AssetManager.prototype.processBins = function (bins) {
23283
23874
  return __awaiter(this, void 0, void 0, function () {
23284
- var renderLevel, jobs;
23875
+ var renderLevel, baseUrl, jobs;
23285
23876
  var _this = this;
23286
23877
  return __generator(this, function (_a) {
23287
23878
  renderLevel = this.options.renderLevel;
23879
+ baseUrl = this.baseUrl;
23288
23880
  jobs = bins.map(function (bin) {
23289
23881
  if (bin instanceof ArrayBuffer) {
23290
23882
  return bin;
23291
23883
  }
23292
23884
  if (passRenderLevel(bin.renderLevel, renderLevel)) {
23293
- return _this.loadBins(bin.url);
23885
+ return _this.loadBins(new URL(bin.url, baseUrl).href);
23294
23886
  }
23295
23887
  throw new Error("Invalid bins source: ".concat(JSON.stringify(bins)));
23296
23888
  });
@@ -23308,13 +23900,14 @@ var AssetManager = /** @class */ (function () {
23308
23900
  return [2 /*return*/];
23309
23901
  }
23310
23902
  jobs = fonts.map(function (font) { return __awaiter(_this, void 0, void 0, function () {
23311
- var fontFace;
23903
+ var url, fontFace;
23312
23904
  var _a;
23313
23905
  return __generator(this, function (_b) {
23314
23906
  switch (_b.label) {
23315
23907
  case 0:
23316
23908
  if (!(font.fontURL && !AssetManager.fonts.has(font.fontFamily))) return [3 /*break*/, 4];
23317
- fontFace = new FontFace((_a = font.fontFamily) !== null && _a !== void 0 ? _a : '', 'url(' + font.fontURL + ')');
23909
+ url = new URL(font.fontURL, this.baseUrl).href;
23910
+ fontFace = new FontFace((_a = font.fontFamily) !== null && _a !== void 0 ? _a : '', 'url(' + url + ')');
23318
23911
  _b.label = 1;
23319
23912
  case 1:
23320
23913
  _b.trys.push([1, 3, , 4]);
@@ -23327,7 +23920,7 @@ var AssetManager = /** @class */ (function () {
23327
23920
  return [3 /*break*/, 4];
23328
23921
  case 3:
23329
23922
  _b.sent();
23330
- logger.warn("Invalid fonts source: ".concat(JSON.stringify(font.fontURL)));
23923
+ logger.warn("Invalid fonts source: ".concat(JSON.stringify(url)));
23331
23924
  return [3 /*break*/, 4];
23332
23925
  case 4: return [2 /*return*/];
23333
23926
  }
@@ -23576,7 +24169,7 @@ function createTextureOptionsBySource(image, sourceFrom) {
23576
24169
  return image.source;
23577
24170
  }
23578
24171
  else if (image instanceof HTMLImageElement ||
23579
- image instanceof HTMLCanvasElement) {
24172
+ isCanvas(image)) {
23580
24173
  return {
23581
24174
  image: image,
23582
24175
  sourceType: exports.TextureSourceType.image,
@@ -23638,6 +24231,11 @@ function base64ToFile(base64, filename, contentType) {
23638
24231
  var file = new File([blob], filename, { type: contentType });
23639
24232
  return file;
23640
24233
  }
24234
+ function isCanvas(cavnas) {
24235
+ var _a;
24236
+ // 小程序 Canvas 无法使用 instanceof HTMLCanvasElement 判断
24237
+ return typeof cavnas === 'object' && cavnas !== null && ((_a = cavnas.tagName) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === 'CANVAS';
24238
+ }
23641
24239
 
23642
24240
  var tmpScale = new Vector3(1, 1, 1);
23643
24241
  /**
@@ -23857,8 +24455,9 @@ var Camera = /** @class */ (function () {
23857
24455
  Camera.prototype.getInverseVPRatio = function (z) {
23858
24456
  var pos = new Vector3(0, 0, z);
23859
24457
  var mat = this.getViewProjectionMatrix();
23860
- var nz = pos.applyMatrix(mat).z;
23861
- return new Vector3(1, 1, nz).applyMatrix(mat);
24458
+ var inverseVP = this.getInverseViewProjectionMatrix();
24459
+ var nz = mat.projectPoint(pos).z;
24460
+ return inverseVP.projectPoint(new Vector3(1, 1, nz));
23862
24461
  };
23863
24462
  /**
23864
24463
  * 设置相机的旋转四元数
@@ -23870,7 +24469,6 @@ var Camera = /** @class */ (function () {
23870
24469
  this.dirty = true;
23871
24470
  }
23872
24471
  else {
23873
- this.options.quat;
23874
24472
  if (!this.options.quat.equals(value)) {
23875
24473
  this.options.quat.copyFrom(value);
23876
24474
  this.dirty = true;
@@ -24038,8 +24636,7 @@ var CompositionComponent = /** @class */ (function (_super) {
24038
24636
  }
24039
24637
  item.getComponent(CompositionComponent).createContent();
24040
24638
  }
24041
- else if (itemData.type === 'ECS' ||
24042
- itemData.type === ItemType$1.sprite ||
24639
+ else if (itemData.type === ItemType$1.sprite ||
24043
24640
  itemData.type === ItemType$1.text ||
24044
24641
  itemData.type === ItemType$1.particle ||
24045
24642
  itemData.type === ItemType$1.mesh ||
@@ -24057,20 +24654,7 @@ var CompositionComponent = /** @class */ (function (_super) {
24057
24654
  item = new VFXItem(this.engine, itemData);
24058
24655
  item.composition = this.item.composition;
24059
24656
  // 兼容老的数据代码,json 更新后可移除
24060
- switch (itemData.type) {
24061
- case ItemType$1.text: {
24062
- // 添加文本组件
24063
- var textItem = new TextComponent(this.engine, itemData.content);
24064
- textItem.item = item;
24065
- item.components.push(textItem);
24066
- item.rendererComponents.push(textItem);
24067
- item._content = textItem;
24068
- break;
24069
- }
24070
- default: {
24071
- item = createVFXItem(itemData, this.item.composition);
24072
- }
24073
- }
24657
+ item = createVFXItem(itemData, this.item.composition);
24074
24658
  }
24075
24659
  item.parent = this.item;
24076
24660
  // 相机不跟随合成移动
@@ -25460,10 +26044,8 @@ var Engine = /** @class */ (function () {
25460
26044
  Engine.prototype.addPackageDatas = function (scene) {
25461
26045
  var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f;
25462
26046
  var jsonScene = scene.jsonScene;
25463
- //@ts-expect-error
25464
26047
  if (jsonScene.items) {
25465
26048
  try {
25466
- //@ts-expect-error
25467
26049
  for (var _g = __values$1(jsonScene.items), _h = _g.next(); !_h.done; _h = _g.next()) {
25468
26050
  var vfxItemData = _h.value;
25469
26051
  this.addEffectsObjectData(vfxItemData);
@@ -25477,10 +26059,8 @@ var Engine = /** @class */ (function () {
25477
26059
  finally { if (e_1) throw e_1.error; }
25478
26060
  }
25479
26061
  }
25480
- //@ts-expect-error
25481
26062
  if (jsonScene.materials) {
25482
26063
  try {
25483
- //@ts-expect-error
25484
26064
  for (var _j = __values$1(jsonScene.materials), _k = _j.next(); !_k.done; _k = _j.next()) {
25485
26065
  var materialData = _k.value;
25486
26066
  this.addEffectsObjectData(materialData);
@@ -25494,10 +26074,8 @@ var Engine = /** @class */ (function () {
25494
26074
  finally { if (e_2) throw e_2.error; }
25495
26075
  }
25496
26076
  }
25497
- //@ts-expect-error
25498
26077
  if (jsonScene.shaders) {
25499
26078
  try {
25500
- //@ts-expect-error
25501
26079
  for (var _l = __values$1(jsonScene.shaders), _m = _l.next(); !_m.done; _m = _l.next()) {
25502
26080
  var shaderData = _m.value;
25503
26081
  this.addEffectsObjectData(shaderData);
@@ -25511,10 +26089,8 @@ var Engine = /** @class */ (function () {
25511
26089
  finally { if (e_3) throw e_3.error; }
25512
26090
  }
25513
26091
  }
25514
- //@ts-expect-error
25515
26092
  if (jsonScene.geometries) {
25516
26093
  try {
25517
- //@ts-expect-error
25518
26094
  for (var _o = __values$1(jsonScene.geometries), _p = _o.next(); !_p.done; _p = _o.next()) {
25519
26095
  var geometryData = _p.value;
25520
26096
  this.addEffectsObjectData(geometryData);
@@ -25528,10 +26104,8 @@ var Engine = /** @class */ (function () {
25528
26104
  finally { if (e_4) throw e_4.error; }
25529
26105
  }
25530
26106
  }
25531
- //@ts-expect-error
25532
26107
  if (jsonScene.components) {
25533
26108
  try {
25534
- //@ts-expect-error
25535
26109
  for (var _q = __values$1(jsonScene.components), _r = _q.next(); !_r.done; _r = _q.next()) {
25536
26110
  var componentData = _r.value;
25537
26111
  this.addEffectsObjectData(componentData);
@@ -25886,8 +26460,7 @@ registerPlugin('interact', InteractLoader, VFXItem, true);
25886
26460
  // registerFilters(filters);
25887
26461
 
25888
26462
  exports.AbstractPlugin = AbstractPlugin;
25889
- exports.ActivationClipPlayable = ActivationClipPlayable;
25890
- exports.AnimationClipPlayable = AnimationClipPlayable;
26463
+ exports.ActivationPlayable = ActivationPlayable;
25891
26464
  exports.AssetLoader = AssetLoader;
25892
26465
  exports.AssetManager = AssetManager;
25893
26466
  exports.BYTES_TYPE_MAP = BYTES_TYPE_MAP;
@@ -25972,6 +26545,7 @@ exports.SPRITE_VERTEX_STRIDE = SPRITE_VERTEX_STRIDE;
25972
26545
  exports.SemanticMap = SemanticMap;
25973
26546
  exports.SerializationHelper = SerializationHelper;
25974
26547
  exports.Shader = Shader;
26548
+ exports.ShaderVariant = ShaderVariant;
25975
26549
  exports.SpriteColorPlayable = SpriteColorPlayable;
25976
26550
  exports.SpriteComponent = SpriteComponent;
25977
26551
  exports.SpriteLoader = SpriteLoader;
@@ -25986,6 +26560,8 @@ exports.TimelineClip = TimelineClip;
25986
26560
  exports.TimelineComponent = TimelineComponent;
25987
26561
  exports.Track = Track;
25988
26562
  exports.Transform = Transform;
26563
+ exports.TransformAnimationPlayable = TransformAnimationPlayable;
26564
+ exports.TransformAnimationPlayableAsset = TransformAnimationPlayableAsset;
25989
26565
  exports.VFXItem = VFXItem;
25990
26566
  exports.ValueGetter = ValueGetter;
25991
26567
  exports.addByOrder = addByOrder;
@@ -26039,7 +26615,7 @@ exports.gaussianDownHFrag = gaussianDownHFrag;
26039
26615
  exports.gaussianDownVFrag = gaussianDownVFrag;
26040
26616
  exports.gaussianUpFrag = gaussianUpFrag;
26041
26617
  exports.generateEmptyTypedArray = generateEmptyTypedArray;
26042
- exports.generateGUID = generateGUID;
26618
+ exports.generateGUID = generateGUID$1;
26043
26619
  exports.generateHalfFloatTexture = generateHalfFloatTexture;
26044
26620
  exports.getBackgroundImage = getBackgroundImage;
26045
26621
  exports.getColorFromGradientStops = getColorFromGradientStops;
@@ -26095,7 +26671,7 @@ exports.nearestPowerOfTwo = nearestPowerOfTwo;
26095
26671
  exports.noop = noop;
26096
26672
  exports.parsePercent = parsePercent$1;
26097
26673
  exports.particleFrag = particleFrag;
26098
- exports.particleOriginTranslateMap = particleOriginTranslateMap;
26674
+ exports.particleOriginTranslateMap = particleOriginTranslateMap$1;
26099
26675
  exports.particleVert = particleVert;
26100
26676
  exports.pluginLoaderMap = pluginLoaderMap;
26101
26677
  exports.random = random;