@galacean/effects-threejs 2.1.0-alpha.7 → 2.1.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Description: Galacean Effects runtime threejs plugin for the web
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
6
- * Version: v2.1.0-alpha.7
6
+ * Version: v2.1.0-alpha.8
7
7
  */
8
8
 
9
9
  'use strict';
@@ -978,7 +978,6 @@ var PluginSystem = /*#__PURE__*/ function() {
978
978
  var pluginInfoMap = {
979
979
  "alipay-downgrade": "@galacean/effects-plugin-alipay-downgrade",
980
980
  "editor-gizmo": "@galacean/effects-plugin-editor-gizmo",
981
- "tree": "@galacean/effects-plugin-model",
982
981
  "model": "@galacean/effects-plugin-model",
983
982
  "orientation-transformer": "@galacean/effects-plugin-orientation-transformer",
984
983
  "spine": "@galacean/effects-plugin-spine"
@@ -1410,6 +1409,12 @@ var CameraClipMode;
1410
1409
  /**
1411
1410
  * 贝塞尔曲线四元数
1412
1411
  */ ValueType[ValueType["BEZIER_CURVE_QUAT"] = 23] = "BEZIER_CURVE_QUAT";
1412
+ /**
1413
+ * 颜色曲线
1414
+ */ ValueType[ValueType["COLOR_CURVE"] = 24] = "COLOR_CURVE";
1415
+ /**
1416
+ * Vector4 曲线
1417
+ */ ValueType[ValueType["VECTOR4_CURVE"] = 25] = "VECTOR4_CURVE";
1413
1418
  })(ValueType || (ValueType = {}));
1414
1419
  /**
1415
1420
  * 关键帧类型
@@ -1646,10 +1651,15 @@ var DataType;
1646
1651
  DataType["SpriteColorTrack"] = "SpriteColorTrack";
1647
1652
  DataType["ActivationTrack"] = "ActivationTrack";
1648
1653
  DataType["SubCompositionTrack"] = "SubCompositionTrack";
1654
+ DataType["FloatPropertyTrack"] = "FloatPropertyTrack";
1655
+ DataType["ColorPropertyTrack"] = "ColorPropertyTrack";
1656
+ DataType["Vector4PropertyTrack"] = "Vector4PropertyTrack";
1649
1657
  DataType["TransformPlayableAsset"] = "TransformPlayableAsset";
1650
1658
  DataType["SpriteColorPlayableAsset"] = "SpriteColorPlayableAsset";
1651
1659
  DataType["ActivationPlayableAsset"] = "ActivationPlayableAsset";
1652
1660
  DataType["SubCompositionPlayableAsset"] = "SubCompositionPlayableAsset";
1661
+ DataType["FloatPropertyPlayableAsset"] = "FloatPropertyPlayableAsset";
1662
+ DataType["ColorPropertyPlayableAsset"] = "ColorPropertyPlayableAsset";
1653
1663
  // FIXME: 先完成ECS的场景转换,后面移到spec中
1654
1664
  DataType["MeshComponent"] = "MeshComponent";
1655
1665
  DataType["SkyboxComponent"] = "SkyboxComponent";
@@ -5269,9 +5279,8 @@ exports.PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
5269
5279
  function PostProcessVolume() {
5270
5280
  var _this;
5271
5281
  _this = Behaviour.apply(this, arguments) || this;
5272
- _this.useHDR = true;
5273
5282
  // Bloom
5274
- _this.useBloom = true;
5283
+ _this.bloomEnabled = true;
5275
5284
  _this.threshold = 1.0;
5276
5285
  _this.bloomIntensity = 1.0;
5277
5286
  // ColorAdjustments
@@ -5283,7 +5292,7 @@ exports.PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
5283
5292
  _this.vignetteSmoothness = 0.4;
5284
5293
  _this.vignetteRoundness = 1.0;
5285
5294
  // ToneMapping
5286
- _this.useToneMapping = true // 1: true, 0: false
5295
+ _this.toneMappingEnabled = true // 1: true, 0: false
5287
5296
  ;
5288
5297
  return _this;
5289
5298
  }
@@ -5291,18 +5300,14 @@ exports.PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
5291
5300
  _proto.onStart = function onStart() {
5292
5301
  var composition = this.item.composition;
5293
5302
  if (composition) {
5294
- composition.globalVolume = this;
5295
- composition.createRenderFrame();
5303
+ composition.renderFrame.globalVolume = this;
5296
5304
  }
5297
5305
  };
5298
5306
  return PostProcessVolume;
5299
5307
  }(Behaviour);
5300
5308
  __decorate([
5301
5309
  serialize()
5302
- ], exports.PostProcessVolume.prototype, "useHDR", void 0);
5303
- __decorate([
5304
- serialize()
5305
- ], exports.PostProcessVolume.prototype, "useBloom", void 0);
5310
+ ], exports.PostProcessVolume.prototype, "bloomEnabled", void 0);
5306
5311
  __decorate([
5307
5312
  serialize()
5308
5313
  ], exports.PostProcessVolume.prototype, "threshold", void 0);
@@ -5329,7 +5334,7 @@ __decorate([
5329
5334
  ], exports.PostProcessVolume.prototype, "vignetteRoundness", void 0);
5330
5335
  __decorate([
5331
5336
  serialize()
5332
- ], exports.PostProcessVolume.prototype, "useToneMapping", void 0);
5337
+ ], exports.PostProcessVolume.prototype, "toneMappingEnabled", void 0);
5333
5338
  exports.PostProcessVolume = __decorate([
5334
5339
  effectsClass("PostProcessVolume")
5335
5340
  ], exports.PostProcessVolume);
@@ -10366,13 +10371,15 @@ var BloomThresholdPass = /*#__PURE__*/ function(RenderPass) {
10366
10371
  renderer.setFramebuffer(this.framebuffer);
10367
10372
  };
10368
10373
  _proto.execute = function execute(renderer) {
10374
+ var _renderer_renderingData_currentFrame_globalVolume;
10369
10375
  renderer.clear({
10370
10376
  colorAction: exports.TextureStoreAction.clear,
10371
10377
  depthAction: exports.TextureStoreAction.clear,
10372
10378
  stencilAction: exports.TextureStoreAction.clear
10373
10379
  });
10374
10380
  this.screenMesh.material.setTexture("_MainTex", this.mainTexture);
10375
- var threshold = renderer.renderingData.currentFrame.globalVolume.threshold;
10381
+ var _renderer_renderingData_currentFrame_globalVolume_threshold;
10382
+ var threshold = (_renderer_renderingData_currentFrame_globalVolume_threshold = (_renderer_renderingData_currentFrame_globalVolume = renderer.renderingData.currentFrame.globalVolume) == null ? void 0 : _renderer_renderingData_currentFrame_globalVolume.threshold) != null ? _renderer_renderingData_currentFrame_globalVolume_threshold : 1.0;
10376
10383
  this.screenMesh.material.setFloat("_Threshold", threshold);
10377
10384
  renderer.renderMeshes([
10378
10385
  this.screenMesh
@@ -10585,13 +10592,14 @@ var ToneMappingPass = /*#__PURE__*/ function(RenderPass) {
10585
10592
  depthAction: exports.TextureStoreAction.clear,
10586
10593
  stencilAction: exports.TextureStoreAction.clear
10587
10594
  });
10588
- var _renderer_renderingData_currentFrame_globalVolume = renderer.renderingData.currentFrame.globalVolume, useBloom = _renderer_renderingData_currentFrame_globalVolume.useBloom, bloomIntensity = _renderer_renderingData_currentFrame_globalVolume.bloomIntensity, brightness = _renderer_renderingData_currentFrame_globalVolume.brightness, saturation = _renderer_renderingData_currentFrame_globalVolume.saturation, contrast = _renderer_renderingData_currentFrame_globalVolume.contrast, useToneMapping = _renderer_renderingData_currentFrame_globalVolume.useToneMapping, vignetteIntensity = _renderer_renderingData_currentFrame_globalVolume.vignetteIntensity, vignetteSmoothness = _renderer_renderingData_currentFrame_globalVolume.vignetteSmoothness, vignetteRoundness = _renderer_renderingData_currentFrame_globalVolume.vignetteRoundness;
10595
+ var _renderer_renderingData_currentFrame_globalVolume;
10596
+ var _ref = (_renderer_renderingData_currentFrame_globalVolume = renderer.renderingData.currentFrame.globalVolume) != null ? _renderer_renderingData_currentFrame_globalVolume : {}, _ref_bloomEnabled = _ref.bloomEnabled, bloomEnabled = _ref_bloomEnabled === void 0 ? false : _ref_bloomEnabled, _ref_bloomIntensity = _ref.bloomIntensity, bloomIntensity = _ref_bloomIntensity === void 0 ? 1.0 : _ref_bloomIntensity, _ref_brightness = _ref.brightness, brightness = _ref_brightness === void 0 ? 1.0 : _ref_brightness, _ref_saturation = _ref.saturation, saturation = _ref_saturation === void 0 ? 1.0 : _ref_saturation, _ref_contrast = _ref.contrast, contrast = _ref_contrast === void 0 ? 1.0 : _ref_contrast, _ref_toneMappingEnabled = _ref.toneMappingEnabled, toneMappingEnabled = _ref_toneMappingEnabled === void 0 ? true : _ref_toneMappingEnabled, _ref_vignetteIntensity = _ref.vignetteIntensity, vignetteIntensity = _ref_vignetteIntensity === void 0 ? 0.2 : _ref_vignetteIntensity, _ref_vignetteSmoothness = _ref.vignetteSmoothness, vignetteSmoothness = _ref_vignetteSmoothness === void 0 ? 0.4 : _ref_vignetteSmoothness, _ref_vignetteRoundness = _ref.vignetteRoundness, vignetteRoundness = _ref_vignetteRoundness === void 0 ? 1.0 : _ref_vignetteRoundness;
10589
10597
  this.screenMesh.material.setTexture("_SceneTex", this.sceneTextureHandle.texture);
10590
10598
  this.screenMesh.material.setFloat("_Brightness", brightness);
10591
10599
  this.screenMesh.material.setFloat("_Saturation", saturation);
10592
10600
  this.screenMesh.material.setFloat("_Contrast", contrast);
10593
- this.screenMesh.material.setInt("_UseBloom", Number(useBloom));
10594
- if (useBloom) {
10601
+ this.screenMesh.material.setInt("_UseBloom", Number(bloomEnabled));
10602
+ if (bloomEnabled) {
10595
10603
  this.screenMesh.material.setTexture("_GaussianTex", this.mainTexture);
10596
10604
  this.screenMesh.material.setFloat("_BloomIntensity", bloomIntensity);
10597
10605
  }
@@ -10602,7 +10610,7 @@ var ToneMappingPass = /*#__PURE__*/ function(RenderPass) {
10602
10610
  this.screenMesh.material.setVector2("_VignetteCenter", new Vector2(0.5, 0.5));
10603
10611
  this.screenMesh.material.setVector3("_VignetteColor", new Vector3(0.0, 0.0, 0.0));
10604
10612
  }
10605
- this.screenMesh.material.setInt("_UseToneMapping", Number(useToneMapping));
10613
+ this.screenMesh.material.setInt("_UseToneMapping", Number(toneMappingEnabled));
10606
10614
  renderer.renderMeshes([
10607
10615
  this.screenMesh
10608
10616
  ]);
@@ -10626,7 +10634,7 @@ var seed$6 = 1;
10626
10634
  1,
10627
10635
  0,
10628
10636
  0
10629
- ] : _options_editorTransform, globalVolume = options.globalVolume, _options_clearAction = options.clearAction, clearAction = _options_clearAction === void 0 ? {
10637
+ ] : _options_editorTransform, globalVolume = options.globalVolume, _options_postProcessingEnabled = options.postProcessingEnabled, postProcessingEnabled = _options_postProcessingEnabled === void 0 ? false : _options_postProcessingEnabled, _options_clearAction = options.clearAction, clearAction = _options_clearAction === void 0 ? {
10630
10638
  colorAction: exports.TextureLoadAction.whatever,
10631
10639
  stencilAction: exports.TextureLoadAction.clear,
10632
10640
  depthAction: exports.TextureLoadAction.whatever
@@ -10640,10 +10648,10 @@ var seed$6 = 1;
10640
10648
  var depthStencilAttachment;
10641
10649
  var drawObjectPassClearAction = {};
10642
10650
  this.renderer = renderer;
10643
- if (this.globalVolume) {
10644
- var useHDR = this.globalVolume.useHDR;
10651
+ if (postProcessingEnabled) {
10652
+ var enableHDR = true;
10645
10653
  // 使用HDR浮点纹理,FLOAT在IOS上报错,使用HALF_FLOAT
10646
- var textureType = useHDR ? glContext.HALF_FLOAT : glContext.UNSIGNED_BYTE;
10654
+ var textureType = enableHDR ? glContext.HALF_FLOAT : glContext.UNSIGNED_BYTE;
10647
10655
  attachments = [
10648
10656
  {
10649
10657
  texture: {
@@ -10675,7 +10683,7 @@ var seed$6 = 1;
10675
10683
  })
10676
10684
  ];
10677
10685
  this.setRenderPasses(renderPasses);
10678
- if (this.globalVolume) {
10686
+ if (postProcessingEnabled) {
10679
10687
  var sceneTextureHandle = new RenderTargetHandle(engine); //保存后处理前的屏幕图像
10680
10688
  var gaussianStep = 7; // 高斯模糊的迭代次数,次数越高模糊范围越大
10681
10689
  var viewport = [
@@ -10685,7 +10693,8 @@ var seed$6 = 1;
10685
10693
  this.renderer.getHeight() / 2
10686
10694
  ];
10687
10695
  var gaussianDownResults = new Array(gaussianStep); //存放多个高斯Pass的模糊结果,用于Bloom
10688
- var textureType1 = this.globalVolume.useHDR ? glContext.HALF_FLOAT : glContext.UNSIGNED_BYTE;
10696
+ var enableHDR1 = true;
10697
+ var textureType1 = enableHDR1 ? glContext.HALF_FLOAT : glContext.UNSIGNED_BYTE;
10689
10698
  var bloomThresholdPass = new BloomThresholdPass(renderer, {
10690
10699
  name: "BloomThresholdPass",
10691
10700
  attachments: [
@@ -11681,28 +11690,6 @@ var Renderer = /*#__PURE__*/ function() {
11681
11690
  return Renderer;
11682
11691
  }();
11683
11692
 
11684
- /**
11685
- * 后处理配置
11686
- */ var defaultGlobalVolume = {
11687
- useHDR: false,
11688
- /***** Material Uniform *****/ // Bloom
11689
- useBloom: true,
11690
- threshold: 1.0,
11691
- bloomIntensity: 1.0,
11692
- // ColorAdjustments
11693
- brightness: 1.0,
11694
- saturation: 1.0,
11695
- contrast: 1.0,
11696
- // Vignette
11697
- // vignetteColor: new math.Color(0, 0, 0, 1),
11698
- // vignetteCenter: new math.Vector2(0.5, 0.5),
11699
- vignetteIntensity: 0.2,
11700
- vignetteSmoothness: 0.4,
11701
- vignetteRoundness: 1.0,
11702
- // ToneMapping
11703
- useToneMapping: true
11704
- };
11705
-
11706
11693
  var toHalf = function() {
11707
11694
  var floatView = new Float32Array(1);
11708
11695
  var int32View = new Int32Array(floatView.buffer);
@@ -11941,35 +11928,6 @@ function numberToFix(a, fixed) {
11941
11928
  return Math.floor(a * base) / base;
11942
11929
  }
11943
11930
 
11944
- function _is_native_reflect_construct() {
11945
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
11946
- if (Reflect.construct.sham) return false;
11947
- if (typeof Proxy === "function") return true;
11948
- try {
11949
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
11950
- return true;
11951
- } catch (e) {
11952
- return false;
11953
- }
11954
- }
11955
-
11956
- function _construct(Parent, args, Class) {
11957
- if (_is_native_reflect_construct()) _construct = Reflect.construct;
11958
- else {
11959
- _construct = function construct(Parent, args, Class) {
11960
- var a = [
11961
- null
11962
- ];
11963
- a.push.apply(a, args);
11964
- var Constructor = Function.bind.apply(Parent, a);
11965
- var instance = new Constructor();
11966
- if (Class) _set_prototype_of(instance, Class.prototype);
11967
- return instance;
11968
- };
11969
- }
11970
- return _construct.apply(null, arguments);
11971
- }
11972
-
11973
11931
  var keyframeInfo = {
11974
11932
  /**
11975
11933
  * 根据不同关键帧类型,获取位于曲线上的点
@@ -12513,17 +12471,6 @@ var QuaternionInner = /*#__PURE__*/ function() {
12513
12471
  return QuaternionInner;
12514
12472
  }();
12515
12473
 
12516
- var SPRITE_VERTEX_STRIDE = 6;
12517
- var SEMANTIC_PRE_COLOR_ATTACHMENT_0 = "PRE_COLOR_0";
12518
- var SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0 = "PRE_COLOR_SIZE_0";
12519
- var SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0 = "PRE_MAIN_COLOR_0";
12520
- var SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0 = "PRE_MAIN_COLOR_SIZE_0";
12521
- var PLAYER_OPTIONS_ENV_EDITOR = "editor";
12522
- var HELP_LINK = {
12523
- "Item duration can't be less than 0": "https://galacean.antgroup.com/effects/user/gasrv4ka5sacrwpg#AOnQS",
12524
- "ValueType: 21/22 is not supported": "https://galacean.antgroup.com/effects/user/gasrv4ka5sacrwpg#smO1b"
12525
- };
12526
-
12527
12474
  var CURVE_PRO_TIME = 0;
12528
12475
  var CURVE_PRO_VALUE = 1;
12529
12476
  var CURVE_PRO_IN_TANGENT = 2;
@@ -13214,67 +13161,6 @@ var BezierCurveQuat = /*#__PURE__*/ function(ValueGetter) {
13214
13161
  };
13215
13162
  return BezierCurveQuat;
13216
13163
  }(ValueGetter);
13217
- var _obj$4;
13218
- var map$1 = (_obj$4 = {}, _obj$4[ValueType.RANDOM] = function(props) {
13219
- if (_instanceof1(props[0], Array)) {
13220
- return new RandomVectorValue(props);
13221
- }
13222
- return new RandomValue(props);
13223
- }, _obj$4[ValueType.CONSTANT] = function(props) {
13224
- return new StaticValue(props);
13225
- }, _obj$4[ValueType.CONSTANT_VEC2] = function(props) {
13226
- return new StaticValue(props);
13227
- }, _obj$4[ValueType.CONSTANT_VEC3] = function(props) {
13228
- return new StaticValue(props);
13229
- }, _obj$4[ValueType.CONSTANT_VEC4] = function(props) {
13230
- return new StaticValue(props);
13231
- }, _obj$4[ValueType.RGBA_COLOR] = function(props) {
13232
- return new StaticValue(props);
13233
- }, _obj$4[ValueType.COLORS] = function(props) {
13234
- return new RandomSetValue(props.map(function(c) {
13235
- return colorToArr$1(c, false);
13236
- }));
13237
- }, _obj$4[ValueType.LINE] = function(props) {
13238
- if (props.length === 2 && props[0][0] === 0 && props[1][0] === 1) {
13239
- return new LinearValue([
13240
- props[0][1],
13241
- props[1][1]
13242
- ]);
13243
- }
13244
- return new LineSegments(props);
13245
- }, _obj$4[ValueType.GRADIENT_COLOR] = function(props) {
13246
- return new GradientValue(props);
13247
- }, _obj$4[ValueType.LINEAR_PATH] = function(pros) {
13248
- return new PathSegments(pros);
13249
- }, _obj$4[ValueType.BEZIER_CURVE] = function(props) {
13250
- if (props.length === 1) {
13251
- return new StaticValue(props[0][1][1]);
13252
- }
13253
- return new BezierCurve(props);
13254
- }, _obj$4[ValueType.BEZIER_CURVE_PATH] = function(props) {
13255
- if (props[0].length === 1) {
13256
- return new StaticValue(_construct(Vector3, [].concat(props[1][0])));
13257
- }
13258
- return new BezierCurvePath(props);
13259
- }, _obj$4[ValueType.BEZIER_CURVE_QUAT] = function(props) {
13260
- if (props[0].length === 1) {
13261
- return new StaticValue(_construct(Quaternion, [].concat(props[1][0])));
13262
- }
13263
- return new BezierCurveQuat(props);
13264
- }, _obj$4);
13265
- function createValueGetter(args) {
13266
- if (!args || !isNaN(+args)) {
13267
- return new StaticValue(args || 0);
13268
- }
13269
- if (_instanceof1(args, ValueGetter)) {
13270
- return args;
13271
- }
13272
- if (isFunction(map$1[args[0]])) {
13273
- return map$1[args[0]](args[1]);
13274
- } else {
13275
- throw new Error("ValueType: " + args[0] + " is not supported, see " + HELP_LINK["ValueType: 21/22 is not supported"] + ".");
13276
- }
13277
- }
13278
13164
  function lineSegIntegrate(t, t0, t1, y0, y1) {
13279
13165
  var h = t - t0;
13280
13166
  return (y0 + y0 + (y1 - y0) * h / (t1 - t0)) * h / 2;
@@ -13351,6 +13237,164 @@ function createKeyFrameMeta() {
13351
13237
  };
13352
13238
  }
13353
13239
 
13240
+ function _is_native_reflect_construct() {
13241
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
13242
+ if (Reflect.construct.sham) return false;
13243
+ if (typeof Proxy === "function") return true;
13244
+ try {
13245
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
13246
+ return true;
13247
+ } catch (e) {
13248
+ return false;
13249
+ }
13250
+ }
13251
+
13252
+ function _construct(Parent, args, Class) {
13253
+ if (_is_native_reflect_construct()) _construct = Reflect.construct;
13254
+ else {
13255
+ _construct = function construct(Parent, args, Class) {
13256
+ var a = [
13257
+ null
13258
+ ];
13259
+ a.push.apply(a, args);
13260
+ var Constructor = Function.bind.apply(Parent, a);
13261
+ var instance = new Constructor();
13262
+ if (Class) _set_prototype_of(instance, Class.prototype);
13263
+ return instance;
13264
+ };
13265
+ }
13266
+ return _construct.apply(null, arguments);
13267
+ }
13268
+
13269
+ var Vector4Curve = /*#__PURE__*/ function(ValueGetter) {
13270
+ _inherits(Vector4Curve, ValueGetter);
13271
+ function Vector4Curve() {
13272
+ var _this;
13273
+ _this = ValueGetter.apply(this, arguments) || this;
13274
+ _this.value = new Vector4();
13275
+ return _this;
13276
+ }
13277
+ var _proto = Vector4Curve.prototype;
13278
+ _proto.onCreate = function onCreate(arg) {
13279
+ this.xCurve = createValueGetter(arg.x);
13280
+ this.yCurve = createValueGetter(arg.y);
13281
+ this.zCurve = createValueGetter(arg.z);
13282
+ this.wCurve = createValueGetter(arg.w);
13283
+ };
13284
+ _proto.getValue = function getValue(t) {
13285
+ var x = this.xCurve.getValue(t);
13286
+ var y = this.yCurve.getValue(t);
13287
+ var z = this.zCurve.getValue(t);
13288
+ var w = this.wCurve.getValue(t);
13289
+ this.value.set(x, y, z, w);
13290
+ return this.value;
13291
+ };
13292
+ return Vector4Curve;
13293
+ }(ValueGetter);
13294
+
13295
+ var SPRITE_VERTEX_STRIDE = 6;
13296
+ var SEMANTIC_PRE_COLOR_ATTACHMENT_0 = "PRE_COLOR_0";
13297
+ var SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0 = "PRE_COLOR_SIZE_0";
13298
+ var SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0 = "PRE_MAIN_COLOR_0";
13299
+ var SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0 = "PRE_MAIN_COLOR_SIZE_0";
13300
+ var PLAYER_OPTIONS_ENV_EDITOR = "editor";
13301
+ var HELP_LINK = {
13302
+ "Item duration can't be less than 0": "https://galacean.antgroup.com/effects/user/gasrv4ka5sacrwpg#AOnQS",
13303
+ "ValueType: 21/22 is not supported": "https://galacean.antgroup.com/effects/user/gasrv4ka5sacrwpg#smO1b"
13304
+ };
13305
+
13306
+ var _obj$4;
13307
+ var map$1 = (_obj$4 = {}, _obj$4[ValueType.RANDOM] = function(props) {
13308
+ if (_instanceof1(props[0], Array)) {
13309
+ return new RandomVectorValue(props);
13310
+ }
13311
+ return new RandomValue(props);
13312
+ }, _obj$4[ValueType.CONSTANT] = function(props) {
13313
+ return new StaticValue(props);
13314
+ }, _obj$4[ValueType.CONSTANT_VEC2] = function(props) {
13315
+ return new StaticValue(props);
13316
+ }, _obj$4[ValueType.CONSTANT_VEC3] = function(props) {
13317
+ return new StaticValue(props);
13318
+ }, _obj$4[ValueType.CONSTANT_VEC4] = function(props) {
13319
+ return new StaticValue(props);
13320
+ }, _obj$4[ValueType.RGBA_COLOR] = function(props) {
13321
+ return new StaticValue(props);
13322
+ }, _obj$4[ValueType.COLORS] = function(props) {
13323
+ return new RandomSetValue(props.map(function(c) {
13324
+ return colorToArr$1(c, false);
13325
+ }));
13326
+ }, _obj$4[ValueType.LINE] = function(props) {
13327
+ if (props.length === 2 && props[0][0] === 0 && props[1][0] === 1) {
13328
+ return new LinearValue([
13329
+ props[0][1],
13330
+ props[1][1]
13331
+ ]);
13332
+ }
13333
+ return new LineSegments(props);
13334
+ }, _obj$4[ValueType.GRADIENT_COLOR] = function(props) {
13335
+ return new GradientValue(props);
13336
+ }, _obj$4[ValueType.LINEAR_PATH] = function(pros) {
13337
+ return new PathSegments(pros);
13338
+ }, _obj$4[ValueType.BEZIER_CURVE] = function(props) {
13339
+ if (props.length === 1) {
13340
+ return new StaticValue(props[0][1][1]);
13341
+ }
13342
+ return new BezierCurve(props);
13343
+ }, _obj$4[ValueType.BEZIER_CURVE_PATH] = function(props) {
13344
+ if (props[0].length === 1) {
13345
+ return new StaticValue(_construct(Vector3, [].concat(props[1][0])));
13346
+ }
13347
+ return new BezierCurvePath(props);
13348
+ }, _obj$4[ValueType.BEZIER_CURVE_QUAT] = function(props) {
13349
+ if (props[0].length === 1) {
13350
+ return new StaticValue(_construct(Quaternion, [].concat(props[1][0])));
13351
+ }
13352
+ return new BezierCurveQuat(props);
13353
+ }, _obj$4[ValueType.COLOR_CURVE] = function(props) {
13354
+ return new ColorCurve(props);
13355
+ }, _obj$4[ValueType.VECTOR4_CURVE] = function(props) {
13356
+ return new Vector4Curve(props);
13357
+ }, _obj$4);
13358
+ function createValueGetter(args) {
13359
+ if (!args || !isNaN(+args)) {
13360
+ return new StaticValue(args || 0);
13361
+ }
13362
+ if (_instanceof1(args, ValueGetter)) {
13363
+ return args;
13364
+ }
13365
+ if (isFunction(map$1[args[0]])) {
13366
+ return map$1[args[0]](args[1]);
13367
+ } else {
13368
+ throw new Error("ValueType: " + args[0] + " is not supported, see " + HELP_LINK["ValueType: 21/22 is not supported"] + ".");
13369
+ }
13370
+ }
13371
+
13372
+ var ColorCurve = /*#__PURE__*/ function(ValueGetter) {
13373
+ _inherits(ColorCurve, ValueGetter);
13374
+ function ColorCurve() {
13375
+ var _this;
13376
+ _this = ValueGetter.apply(this, arguments) || this;
13377
+ _this.value = new Color();
13378
+ return _this;
13379
+ }
13380
+ var _proto = ColorCurve.prototype;
13381
+ _proto.onCreate = function onCreate(arg) {
13382
+ this.rCurve = createValueGetter(arg.r);
13383
+ this.gCurve = createValueGetter(arg.g);
13384
+ this.bCurve = createValueGetter(arg.b);
13385
+ this.aCurve = createValueGetter(arg.a);
13386
+ };
13387
+ _proto.getValue = function getValue(t) {
13388
+ var r = this.rCurve.getValue(t);
13389
+ var g = this.gCurve.getValue(t);
13390
+ var b = this.bCurve.getValue(t);
13391
+ var a = this.aCurve.getValue(t);
13392
+ this.value.set(r, g, b, a);
13393
+ return this.value;
13394
+ };
13395
+ return ColorCurve;
13396
+ }(ValueGetter);
13397
+
13354
13398
  var BaseRenderComponent = /*#__PURE__*/ function(RendererComponent) {
13355
13399
  _inherits(BaseRenderComponent, RendererComponent);
13356
13400
  function BaseRenderComponent(engine) {
@@ -15386,7 +15430,12 @@ var GraphicsPath = /*#__PURE__*/ function() {
15386
15430
  this.dirty = true;
15387
15431
  return this;
15388
15432
  };
15389
- _proto.moveTo = function moveTo(x, y) {
15433
+ /**
15434
+ * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.
15435
+ * @param x - The x-coordinate for the starting point.
15436
+ * @param y - The y-coordinate for the starting point.
15437
+ * @returns The instance of the current object for chaining.
15438
+ */ _proto.moveTo = function moveTo(x, y) {
15390
15439
  this.instructions.push({
15391
15440
  action: "moveTo",
15392
15441
  data: [
@@ -15397,7 +15446,16 @@ var GraphicsPath = /*#__PURE__*/ function() {
15397
15446
  this.dirty = true;
15398
15447
  return this;
15399
15448
  };
15400
- _proto.ellipse = function ellipse(x, y, radiusX, radiusY, matrix) {
15449
+ /**
15450
+ * Draws an ellipse at the specified location and with the given x and y radii.
15451
+ * An optional transformation can be applied, allowing for rotation, scaling, and translation.
15452
+ * @param x - The x-coordinate of the center of the ellipse.
15453
+ * @param y - The y-coordinate of the center of the ellipse.
15454
+ * @param radiusX - The horizontal radius of the ellipse.
15455
+ * @param radiusY - The vertical radius of the ellipse.
15456
+ * @param transform - An optional `Matrix` object to apply a transformation to the ellipse. This can include rotations.
15457
+ * @returns The instance of the current object for chaining.
15458
+ */ _proto.ellipse = function ellipse(x, y, radiusX, radiusY, transform) {
15401
15459
  this.instructions.push({
15402
15460
  action: "ellipse",
15403
15461
  data: [
@@ -15405,7 +15463,29 @@ var GraphicsPath = /*#__PURE__*/ function() {
15405
15463
  y,
15406
15464
  radiusX,
15407
15465
  radiusY,
15408
- matrix
15466
+ transform
15467
+ ]
15468
+ });
15469
+ this.dirty = true;
15470
+ return this;
15471
+ };
15472
+ /**
15473
+ * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.
15474
+ * @param x - The x-coordinate of the top-left corner of the rectangle.
15475
+ * @param y - The y-coordinate of the top-left corner of the rectangle.
15476
+ * @param w - The width of the rectangle.
15477
+ * @param h - The height of the rectangle.
15478
+ * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.
15479
+ * @returns The instance of the current object for chaining.
15480
+ */ _proto.rect = function rect(x, y, w, h, transform) {
15481
+ this.instructions.push({
15482
+ action: "rect",
15483
+ data: [
15484
+ x,
15485
+ y,
15486
+ w,
15487
+ h,
15488
+ transform
15409
15489
  ]
15410
15490
  });
15411
15491
  this.dirty = true;
@@ -15444,9 +15524,9 @@ exports.ShapeComponent = /*#__PURE__*/ function(RendererComponent) {
15444
15524
  _this = RendererComponent.call(this, engine) || this;
15445
15525
  _this.path = new GraphicsPath();
15446
15526
  _this.curveValues = [];
15447
- _this.dirty = false;
15448
- _this.vert = "\nprecision highp float;\n\nattribute vec3 aPos;//x y\n\nvarying vec4 vColor;\n\nuniform vec4 _Color;\nuniform mat4 effects_MatrixVP;\nuniform mat4 effects_MatrixInvV;\nuniform mat4 effects_ObjectToWorld;\n\nvoid main() {\n vColor = _Color;\n vec4 pos = vec4(aPos.xyz, 1.0);\n gl_Position = effects_MatrixVP * effects_ObjectToWorld * pos;\n}\n";
15449
- _this.frag = "\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main() {\n vec4 color = vec4(1.0,1.0,1.0,1.0);\n gl_FragColor = color;\n}\n";
15527
+ _this.animated = false;
15528
+ _this.vert = "\nprecision highp float;\n\nattribute vec3 aPos;//x y\n\nuniform mat4 effects_MatrixVP;\nuniform mat4 effects_MatrixInvV;\nuniform mat4 effects_ObjectToWorld;\n\nvoid main() {\n vec4 pos = vec4(aPos.xyz, 1.0);\n gl_Position = effects_MatrixVP * effects_ObjectToWorld * pos;\n}\n";
15529
+ _this.frag = "\nprecision highp float;\n\nuniform vec4 _Color;\n\nvoid main() {\n vec4 color = _Color;\n gl_FragColor = color;\n}\n";
15450
15530
  if (!_this.geometry) {
15451
15531
  _this.geometry = Geometry.create(engine, {
15452
15532
  attributes: {
@@ -15496,10 +15576,9 @@ exports.ShapeComponent = /*#__PURE__*/ function(RendererComponent) {
15496
15576
  }
15497
15577
  var _proto = ShapeComponent.prototype;
15498
15578
  _proto.onUpdate = function onUpdate(dt) {
15499
- if (this.dirty) {
15579
+ if (this.animated) {
15500
15580
  this.buildPath(this.data);
15501
15581
  this.buildGeometryFromPath(this.path.shapePath);
15502
- // this.dirty = false;
15503
15582
  }
15504
15583
  };
15505
15584
  _proto.render = function render(renderer) {
@@ -15606,7 +15685,7 @@ exports.ShapeComponent = /*#__PURE__*/ function(RendererComponent) {
15606
15685
  _proto.fromData = function fromData(data) {
15607
15686
  RendererComponent.prototype.fromData.call(this, data);
15608
15687
  this.data = data;
15609
- this.dirty = true;
15688
+ this.animated = true;
15610
15689
  };
15611
15690
  return ShapeComponent;
15612
15691
  }(RendererComponent);
@@ -15994,6 +16073,18 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
15994
16073
  1,
15995
16074
  1
15996
16075
  ];
16076
+ /**
16077
+ * 拖拽X范围
16078
+ */ _this.dragRange = {
16079
+ dxRange: [
16080
+ 0,
16081
+ 0
16082
+ ],
16083
+ dyRange: [
16084
+ 0,
16085
+ 0
16086
+ ]
16087
+ };
15997
16088
  /** 是否响应点击和拖拽交互事件 */ _this._interactive = true;
15998
16089
  _this.hasBeenAddedToComposition = false;
15999
16090
  _this.getHitTestParams = function(force) {
@@ -16013,6 +16104,24 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16013
16104
  return _this;
16014
16105
  }
16015
16106
  var _proto = InteractComponent.prototype;
16107
+ _proto.getDragRangeX = function getDragRangeX() {
16108
+ return this.dragRange.dxRange;
16109
+ };
16110
+ _proto.setDragRangeX = function setDragRangeX(min, max) {
16111
+ this.dragRange.dxRange = [
16112
+ min,
16113
+ max
16114
+ ];
16115
+ };
16116
+ _proto.getDragRangeY = function getDragRangeY() {
16117
+ return this.dragRange.dyRange;
16118
+ };
16119
+ _proto.setDragRangeY = function setDragRangeY(min, max) {
16120
+ this.dragRange.dyRange = [
16121
+ min,
16122
+ max
16123
+ ];
16124
+ };
16016
16125
  _proto.onStart = function onStart() {
16017
16126
  var _this = this;
16018
16127
  var options = this.item.props.content.options;
@@ -16056,6 +16165,10 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16056
16165
  }
16057
16166
  (_this_previewContent = this.previewContent) == null ? void 0 : _this_previewContent.updateMesh();
16058
16167
  if (!this.hasBeenAddedToComposition && this.item.composition) {
16168
+ var type = this.interactData.options.type;
16169
+ if (type === InteractType.CLICK) {
16170
+ this.clickable = true;
16171
+ }
16059
16172
  var options = this.item.props.content.options;
16060
16173
  this.item.composition.addInteractiveItem(this.item, options.type);
16061
16174
  this.hasBeenAddedToComposition = true;
@@ -16087,7 +16200,6 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16087
16200
  if (!(evt == null ? void 0 : evt.cameraParam) || !this.canInteract() || !this.item.composition) {
16088
16201
  return;
16089
16202
  }
16090
- var options = this.item.props.content.options;
16091
16203
  var _evt_cameraParam = evt.cameraParam, position = _evt_cameraParam.position, fov = _evt_cameraParam.fov;
16092
16204
  var dy = event.dy;
16093
16205
  var dx = event.dx * event.width / event.height;
@@ -16095,23 +16207,20 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16095
16207
  var sp = Math.tan(fov * Math.PI / 180 / 2) * Math.abs(depth);
16096
16208
  var height = dy * sp;
16097
16209
  var width = dx * sp;
16210
+ var _this_dragRange = this.dragRange, dxRange = _this_dragRange.dxRange, dyRange = _this_dragRange.dyRange;
16098
16211
  var nx = position[0] - this.dragRatio[0] * width;
16099
16212
  var ny = position[1] - this.dragRatio[1] * height;
16100
- if (options.dxRange) {
16101
- var _options_dxRange = options.dxRange, min = _options_dxRange[0], max = _options_dxRange[1];
16102
- nx = clamp$1(nx, min, max);
16103
- if (nx !== min && nx !== max && min !== max) {
16104
- var _event_origin;
16105
- (_event_origin = event.origin) == null ? void 0 : _event_origin.preventDefault();
16106
- }
16107
- }
16108
- if (options.dyRange) {
16109
- var _options_dyRange = options.dyRange, min1 = _options_dyRange[0], max1 = _options_dyRange[1];
16110
- ny = clamp$1(ny, min1, max1);
16111
- if (ny !== min1 && ny !== max1 && min1 !== max1) {
16112
- var _event_origin1;
16113
- (_event_origin1 = event.origin) == null ? void 0 : _event_origin1.preventDefault();
16114
- }
16213
+ var xMin = dxRange[0], xMax = dxRange[1];
16214
+ var yMin = dyRange[0], yMax = dyRange[1];
16215
+ nx = clamp$1(nx, xMin, xMax);
16216
+ ny = clamp$1(ny, yMin, yMax);
16217
+ if (nx !== xMin && nx !== xMax && xMin !== xMax) {
16218
+ var _event_origin;
16219
+ (_event_origin = event.origin) == null ? void 0 : _event_origin.preventDefault();
16220
+ }
16221
+ if (ny !== yMin && ny !== yMax && yMin !== yMax) {
16222
+ var _event_origin1;
16223
+ (_event_origin1 = event.origin) == null ? void 0 : _event_origin1.preventDefault();
16115
16224
  }
16116
16225
  this.item.composition.camera.position = new Vector3(nx, ny, depth);
16117
16226
  };
@@ -16192,6 +16301,15 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16192
16301
  _proto.fromData = function fromData(data) {
16193
16302
  RendererComponent.prototype.fromData.call(this, data);
16194
16303
  this.interactData = data;
16304
+ if (data.options.type === InteractType.DRAG) {
16305
+ var options = data.options;
16306
+ if (options.dxRange) {
16307
+ this.dragRange.dxRange = options.dxRange;
16308
+ }
16309
+ if (options.dyRange) {
16310
+ this.dragRange.dyRange = options.dyRange;
16311
+ }
16312
+ }
16195
16313
  };
16196
16314
  _proto.canInteract = function canInteract() {
16197
16315
  var _this_item_composition;
@@ -16566,7 +16684,7 @@ var SpriteLoader = /*#__PURE__*/ function(AbstractPlugin) {
16566
16684
  };
16567
16685
  }
16568
16686
  var _proto = PlayableOutput.prototype;
16569
- _proto.setSourcePlayeble = function setSourcePlayeble(playable, port) {
16687
+ _proto.setSourcePlayable = function setSourcePlayable(playable, port) {
16570
16688
  if (port === void 0) port = 0;
16571
16689
  this.sourcePlayable = playable;
16572
16690
  this.sourceOutputPort = port;
@@ -17349,21 +17467,6 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17349
17467
  return tf;
17350
17468
  };
17351
17469
  /**
17352
- * 获取元素内部节点的变换,目前只有场景树元素在使用
17353
- * @param itemId 元素id信息,如果带^就返回内部节点变换,否则返回自己的变换
17354
- * @returns 元素变换或内部节点变换
17355
- */ _proto.getNodeTransform = function getNodeTransform(itemId) {
17356
- for(var i = 0; i < this.components.length; i++){
17357
- var comp = this.components[1];
17358
- // @ts-expect-error
17359
- if (comp.getNodeTransform) {
17360
- // @ts-expect-error
17361
- return comp.getNodeTransform(itemId);
17362
- }
17363
- }
17364
- return this.transform;
17365
- };
17366
- /**
17367
17470
  * 设置元素在 3D 坐标轴上相对移动
17368
17471
  */ _proto.translate = function translate(x, y, z) {
17369
17472
  this.transform.translate(x, y, z);
@@ -17842,7 +17945,7 @@ exports.SpriteColorPlayableAsset = /*#__PURE__*/ function(PlayableAsset) {
17842
17945
  return SpriteColorPlayableAsset;
17843
17946
  }(PlayableAsset);
17844
17947
  exports.SpriteColorPlayableAsset = __decorate([
17845
- effectsClass("SpriteColorPlayableAsset")
17948
+ effectsClass(DataType.SpriteColorPlayableAsset)
17846
17949
  ], exports.SpriteColorPlayableAsset);
17847
17950
  exports.SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
17848
17951
  _inherits(SpriteComponent, BaseRenderComponent);
@@ -17861,6 +17964,7 @@ exports.SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
17861
17964
  }
17862
17965
  var _proto = SpriteComponent.prototype;
17863
17966
  _proto.onUpdate = function onUpdate(dt) {
17967
+ var _this = this;
17864
17968
  if (!this.isManualTimeSet) {
17865
17969
  this.frameAnimationTime += dt / 1000;
17866
17970
  this.isManualTimeSet = false;
@@ -17926,6 +18030,16 @@ exports.SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
17926
18030
  dy
17927
18031
  ]);
17928
18032
  }
18033
+ var video = this.renderer.texture.source.video;
18034
+ if (video) {
18035
+ if (time === 0 || time === this.item.duration) {
18036
+ video.pause();
18037
+ } else {
18038
+ video.play().catch(function(e) {
18039
+ _this.engine.renderErrors.add(e);
18040
+ });
18041
+ }
18042
+ }
17929
18043
  };
17930
18044
  _proto.onDestroy = function onDestroy() {
17931
18045
  if (this.item && this.item.composition) {
@@ -22431,7 +22545,7 @@ exports.TrackAsset = /*#__PURE__*/ function(PlayableAsset) {
22431
22545
  var _proto = TrackAsset.prototype;
22432
22546
  /**
22433
22547
  * 重写该方法以获取自定义对象绑定
22434
- */ _proto.resolveBinding = function resolveBinding() {
22548
+ */ _proto.updateAnimatedObject = function updateAnimatedObject() {
22435
22549
  if (this.parent) {
22436
22550
  this.boundObject = this.parent.boundObject;
22437
22551
  }
@@ -22562,6 +22676,8 @@ var RuntimeClip = /*#__PURE__*/ function() {
22562
22676
  this.playable.play();
22563
22677
  }
22564
22678
  this.parentMixer.setInputWeight(this.playable, weight);
22679
+ var clipTime = clip.toLocalTime(localTime);
22680
+ this.playable.setTime(clipTime);
22565
22681
  // 判断动画是否结束
22566
22682
  if (ended) {
22567
22683
  if (_instanceof1(boundObject, exports.VFXItem) && !boundObject.ended) {
@@ -22576,8 +22692,6 @@ var RuntimeClip = /*#__PURE__*/ function() {
22576
22692
  this.playable.pause();
22577
22693
  }
22578
22694
  }
22579
- var clipTime = clip.toLocalTime(localTime);
22580
- this.playable.setTime(clipTime);
22581
22695
  };
22582
22696
  _create_class(RuntimeClip, [
22583
22697
  {
@@ -22656,16 +22770,16 @@ exports.ActivationTrack = __decorate([
22656
22770
  effectsClass(DataType.ActivationTrack)
22657
22771
  ], exports.ActivationTrack);
22658
22772
 
22659
- var FloatPropertyClipPlayable = /*#__PURE__*/ function(Playable) {
22660
- _inherits(FloatPropertyClipPlayable, Playable);
22661
- function FloatPropertyClipPlayable() {
22773
+ var PropertyClipPlayable = /*#__PURE__*/ function(Playable) {
22774
+ _inherits(PropertyClipPlayable, Playable);
22775
+ function PropertyClipPlayable() {
22662
22776
  return Playable.apply(this, arguments);
22663
22777
  }
22664
- var _proto = FloatPropertyClipPlayable.prototype;
22778
+ var _proto = PropertyClipPlayable.prototype;
22665
22779
  _proto.processFrame = function processFrame(context) {
22666
22780
  this.value = this.curve.getValue(this.time);
22667
22781
  };
22668
- return FloatPropertyClipPlayable;
22782
+ return PropertyClipPlayable;
22669
22783
  }(Playable);
22670
22784
 
22671
22785
  var FloatPropertyMixerPlayable = /*#__PURE__*/ function(Playable) {
@@ -22689,7 +22803,7 @@ var FloatPropertyMixerPlayable = /*#__PURE__*/ function(Playable) {
22689
22803
  var weight = this.getInputWeight(i);
22690
22804
  if (weight > 0) {
22691
22805
  var propertyClipPlayable = this.getInput(i);
22692
- if (!_instanceof1(propertyClipPlayable, FloatPropertyClipPlayable)) {
22806
+ if (!_instanceof1(propertyClipPlayable, PropertyClipPlayable)) {
22693
22807
  console.error("FloatPropertyTrack added non-FloatPropertyPlayableAsset");
22694
22808
  continue;
22695
22809
  }
@@ -23204,11 +23318,11 @@ var SerializationHelper = /*#__PURE__*/ function() {
23204
23318
  for(var _iterator = _create_for_of_iterator_helper_loose(this.items), _step; !(_step = _iterator()).done;){
23205
23319
  var item = _step.value;
23206
23320
  item.composition = this.item.composition;
23207
- var itemData = item.props;
23208
23321
  // 设置预合成作为元素时的时长、结束行为和渲染延时
23209
- if (exports.Item.isComposition(itemData)) {
23322
+ if (exports.VFXItem.isComposition(item)) {
23210
23323
  this.item.composition.refContent.push(item);
23211
- var refId = itemData.content.options.refId;
23324
+ var compositionContent = item.props.content;
23325
+ var refId = compositionContent.options.refId;
23212
23326
  var props = this.item.composition.refCompositionProps.get(refId);
23213
23327
  if (!props) {
23214
23328
  throw new Error("Referenced precomposition with Id: " + refId + " does not exist.");
@@ -23253,7 +23367,7 @@ var SerializationHelper = /*#__PURE__*/ function() {
23253
23367
  _proto.hitTest = function hitTest(ray, x, y, regions, force, options) {
23254
23368
  var _this, _loop = function(i) {
23255
23369
  var item = _this.items[i];
23256
- if (item.getVisible() && item.transform.getValid() && !item.ended && !exports.VFXItem.isComposition(item) && !skip(item)) {
23370
+ if (item.getVisible() && item.transform.getValid() && !exports.VFXItem.isComposition(item) && !skip(item)) {
23257
23371
  var hitParams = item.getHitTestParams(force);
23258
23372
  if (hitParams) {
23259
23373
  var success = false;
@@ -23342,16 +23456,19 @@ var SerializationHelper = /*#__PURE__*/ function() {
23342
23456
  var sceneBinding = _step.value;
23343
23457
  sceneBinding.key.boundObject = sceneBinding.value;
23344
23458
  }
23459
+ // 未了通过帧对比,需要保证和原有的 update 时机一致。
23460
+ // 因此这边更新一次对象绑定,后续 timeline playable 中 sort tracks 的排序才能和原先的版本对上。
23461
+ // 如果不需要严格保证和之前的 updata 时机一致,这边的更新和 timeline playable 中的 sortTracks 都能去掉。
23345
23462
  for(var _iterator1 = _create_for_of_iterator_helper_loose(this.timelineAsset.tracks), _step1; !(_step1 = _iterator1()).done;){
23346
23463
  var masterTrack = _step1.value;
23347
- this.resolveTrackBindingsWithRoot(masterTrack);
23464
+ this.updateTrackAnimatedObject(masterTrack);
23348
23465
  }
23349
23466
  };
23350
- _proto.resolveTrackBindingsWithRoot = function resolveTrackBindingsWithRoot(track) {
23467
+ _proto.updateTrackAnimatedObject = function updateTrackAnimatedObject(track) {
23351
23468
  for(var _iterator = _create_for_of_iterator_helper_loose(track.getChildTracks()), _step; !(_step = _iterator()).done;){
23352
23469
  var subTrack = _step.value;
23353
- subTrack.resolveBinding();
23354
- this.resolveTrackBindingsWithRoot(subTrack);
23470
+ subTrack.updateAnimatedObject();
23471
+ this.updateTrackAnimatedObject(subTrack);
23355
23472
  }
23356
23473
  };
23357
23474
  return CompositionComponent;
@@ -23400,23 +23517,101 @@ var SubCompositionMixerPlayable = /*#__PURE__*/ function(Playable) {
23400
23517
  return SubCompositionMixerPlayable;
23401
23518
  }(Playable);
23402
23519
 
23403
- exports.FloatPropertyTrack = /*#__PURE__*/ function(TrackAsset) {
23404
- _inherits(FloatPropertyTrack, TrackAsset);
23405
- function FloatPropertyTrack() {
23520
+ var Vector4PropertyMixerPlayable = /*#__PURE__*/ function(Playable) {
23521
+ _inherits(Vector4PropertyMixerPlayable, Playable);
23522
+ function Vector4PropertyMixerPlayable() {
23523
+ var _this;
23524
+ _this = Playable.apply(this, arguments) || this;
23525
+ _this.propertyName = "";
23526
+ return _this;
23527
+ }
23528
+ var _proto = Vector4PropertyMixerPlayable.prototype;
23529
+ _proto.processFrame = function processFrame(context) {
23530
+ var boundObject = context.output.getUserData();
23531
+ if (!boundObject) {
23532
+ return;
23533
+ }
23534
+ var hasInput = false;
23535
+ var value = boundObject[this.propertyName];
23536
+ if (!_instanceof1(value, Vector4)) {
23537
+ return;
23538
+ }
23539
+ value.setZero();
23540
+ // evaluate the curve
23541
+ for(var i = 0; i < this.getInputCount(); i++){
23542
+ var weight = this.getInputWeight(i);
23543
+ if (weight > 0) {
23544
+ var propertyClipPlayable = this.getInput(i);
23545
+ if (!_instanceof1(propertyClipPlayable, PropertyClipPlayable)) {
23546
+ console.error("Vector4PropertyTrack added non-Vector4PropertyPlayableAsset");
23547
+ continue;
23548
+ }
23549
+ var curveValue = propertyClipPlayable.value;
23550
+ value.x += curveValue.x * weight;
23551
+ value.y += curveValue.y * weight;
23552
+ value.z += curveValue.z * weight;
23553
+ value.w += curveValue.w * weight;
23554
+ hasInput = true;
23555
+ }
23556
+ }
23557
+ // set value
23558
+ if (hasInput) {
23559
+ boundObject[this.propertyName] = value;
23560
+ }
23561
+ };
23562
+ return Vector4PropertyMixerPlayable;
23563
+ }(Playable);
23564
+
23565
+ var PropertyTrack = /*#__PURE__*/ function(TrackAsset) {
23566
+ _inherits(PropertyTrack, TrackAsset);
23567
+ function PropertyTrack() {
23406
23568
  var _this;
23407
23569
  _this = TrackAsset.apply(this, arguments) || this;
23570
+ _this.propertyNames = [];
23408
23571
  _this.path = "";
23409
- _this.propertyName = "";
23410
23572
  return _this;
23411
23573
  }
23574
+ var _proto = PropertyTrack.prototype;
23575
+ _proto.updateAnimatedObject = function updateAnimatedObject() {
23576
+ var propertyNames = this.propertyNames;
23577
+ var target = this.parent.boundObject;
23578
+ for(var i = 0; i < propertyNames.length - 1; i++){
23579
+ var property = target[propertyNames[i]];
23580
+ if (property === undefined) {
23581
+ console.error("The " + propertyNames[i] + " property of " + target + " was not found");
23582
+ }
23583
+ target = property;
23584
+ }
23585
+ this.boundObject = target;
23586
+ };
23587
+ _proto.fromData = function fromData(data) {
23588
+ TrackAsset.prototype.fromData.call(this, data);
23589
+ var propertyNames = this.path.split(".");
23590
+ this.propertyNames = propertyNames;
23591
+ };
23592
+ return PropertyTrack;
23593
+ }(exports.TrackAsset);
23594
+ __decorate([
23595
+ serialize()
23596
+ ], PropertyTrack.prototype, "path", void 0);
23597
+
23598
+ exports.FloatPropertyTrack = /*#__PURE__*/ function(PropertyTrack) {
23599
+ _inherits(FloatPropertyTrack, PropertyTrack);
23600
+ function FloatPropertyTrack() {
23601
+ return PropertyTrack.apply(this, arguments);
23602
+ }
23412
23603
  var _proto = FloatPropertyTrack.prototype;
23413
23604
  _proto.createTrackMixer = function createTrackMixer(graph) {
23414
23605
  var mixer = new FloatPropertyMixerPlayable(graph);
23415
- mixer.propertyName = this.propertyName;
23606
+ var propertyNames = this.propertyNames;
23607
+ if (propertyNames.length > 0) {
23608
+ var propertyName = propertyNames[propertyNames.length - 1];
23609
+ mixer.propertyName = propertyName;
23610
+ }
23416
23611
  return mixer;
23417
23612
  };
23418
- _proto.resolveBinding = function resolveBinding() {
23419
- var propertyNames = this.path.split(".");
23613
+ _proto.updateAnimatedObject = function updateAnimatedObject() {
23614
+ var propertyNames = this.propertyNames;
23420
23615
  var target = this.parent.boundObject;
23421
23616
  for(var i = 0; i < propertyNames.length - 1; i++){
23422
23617
  var property = target[propertyNames[i]];
@@ -23425,18 +23620,12 @@ exports.FloatPropertyTrack = /*#__PURE__*/ function(TrackAsset) {
23425
23620
  }
23426
23621
  target = property;
23427
23622
  }
23428
- if (propertyNames.length > 0) {
23429
- this.propertyName = propertyNames[propertyNames.length - 1];
23430
- }
23431
23623
  this.boundObject = target;
23432
23624
  };
23433
23625
  return FloatPropertyTrack;
23434
- }(exports.TrackAsset);
23435
- __decorate([
23436
- serialize()
23437
- ], exports.FloatPropertyTrack.prototype, "path", void 0);
23626
+ }(PropertyTrack);
23438
23627
  exports.FloatPropertyTrack = __decorate([
23439
- effectsClass("FloatPropertyTrack")
23628
+ effectsClass(DataType.FloatPropertyTrack)
23440
23629
  ], exports.FloatPropertyTrack);
23441
23630
 
23442
23631
  exports.SpriteColorTrack = /*#__PURE__*/ function(TrackAsset) {
@@ -23456,7 +23645,7 @@ exports.SubCompositionTrack = /*#__PURE__*/ function(TrackAsset) {
23456
23645
  return TrackAsset.apply(this, arguments);
23457
23646
  }
23458
23647
  var _proto = SubCompositionTrack.prototype;
23459
- _proto.resolveBinding = function resolveBinding() {
23648
+ _proto.updateAnimatedObject = function updateAnimatedObject() {
23460
23649
  if (!this.parent || !_instanceof1(this.parent.boundObject, exports.VFXItem)) {
23461
23650
  throw new Error("SubCompositionTrack needs to be set under the VFXItem track.");
23462
23651
  }
@@ -23482,6 +23671,70 @@ exports.TransformTrack = __decorate([
23482
23671
  effectsClass(DataType.TransformTrack)
23483
23672
  ], exports.TransformTrack);
23484
23673
 
23674
+ exports.MaterialTrack = /*#__PURE__*/ function(TrackAsset) {
23675
+ _inherits(MaterialTrack, TrackAsset);
23676
+ function MaterialTrack() {
23677
+ return TrackAsset.apply(this, arguments);
23678
+ }
23679
+ var _proto = MaterialTrack.prototype;
23680
+ _proto.updateAnimatedObject = function updateAnimatedObject() {
23681
+ if (!_instanceof1(this.parent.boundObject, RendererComponent)) {
23682
+ return;
23683
+ }
23684
+ this.parent.boundObject;
23685
+ this.boundObject = this.parent.boundObject.materials[this.index];
23686
+ };
23687
+ return MaterialTrack;
23688
+ }(exports.TrackAsset);
23689
+ __decorate([
23690
+ serialize()
23691
+ ], exports.MaterialTrack.prototype, "index", void 0);
23692
+ exports.MaterialTrack = __decorate([
23693
+ effectsClass("MaterialTrack")
23694
+ ], exports.MaterialTrack);
23695
+
23696
+ exports.Vector4PropertyTrack = /*#__PURE__*/ function(PropertyTrack) {
23697
+ _inherits(Vector4PropertyTrack, PropertyTrack);
23698
+ function Vector4PropertyTrack() {
23699
+ return PropertyTrack.apply(this, arguments);
23700
+ }
23701
+ var _proto = Vector4PropertyTrack.prototype;
23702
+ _proto.createTrackMixer = function createTrackMixer(graph) {
23703
+ var mixer = new Vector4PropertyMixerPlayable(graph);
23704
+ var propertyNames = this.propertyNames;
23705
+ if (propertyNames.length > 0) {
23706
+ var propertyName = propertyNames[propertyNames.length - 1];
23707
+ mixer.propertyName = propertyName;
23708
+ }
23709
+ return mixer;
23710
+ };
23711
+ return Vector4PropertyTrack;
23712
+ }(PropertyTrack);
23713
+ exports.Vector4PropertyTrack = __decorate([
23714
+ effectsClass(DataType.Vector4PropertyTrack)
23715
+ ], exports.Vector4PropertyTrack);
23716
+
23717
+ exports.ColorPropertyTrack = /*#__PURE__*/ function(PropertyTrack) {
23718
+ _inherits(ColorPropertyTrack, PropertyTrack);
23719
+ function ColorPropertyTrack() {
23720
+ return PropertyTrack.apply(this, arguments);
23721
+ }
23722
+ var _proto = ColorPropertyTrack.prototype;
23723
+ _proto.createTrackMixer = function createTrackMixer(graph) {
23724
+ var mixer = new FloatPropertyMixerPlayable(graph);
23725
+ var propertyNames = this.propertyNames;
23726
+ if (propertyNames.length > 0) {
23727
+ var propertyName = propertyNames[propertyNames.length - 1];
23728
+ mixer.propertyName = propertyName;
23729
+ }
23730
+ return mixer;
23731
+ };
23732
+ return ColorPropertyTrack;
23733
+ }(PropertyTrack);
23734
+ exports.ColorPropertyTrack = __decorate([
23735
+ effectsClass(DataType.ColorPropertyTrack)
23736
+ ], exports.ColorPropertyTrack);
23737
+
23485
23738
  exports.FloatPropertyPlayableAsset = /*#__PURE__*/ function(PlayableAsset) {
23486
23739
  _inherits(FloatPropertyPlayableAsset, PlayableAsset);
23487
23740
  function FloatPropertyPlayableAsset() {
@@ -23489,7 +23742,7 @@ exports.FloatPropertyPlayableAsset = /*#__PURE__*/ function(PlayableAsset) {
23489
23742
  }
23490
23743
  var _proto = FloatPropertyPlayableAsset.prototype;
23491
23744
  _proto.createPlayable = function createPlayable(graph) {
23492
- var clipPlayable = new FloatPropertyClipPlayable(graph);
23745
+ var clipPlayable = new PropertyClipPlayable(graph);
23493
23746
  clipPlayable.curve = createValueGetter(this.curveData);
23494
23747
  clipPlayable.value = clipPlayable.curve.getValue(0);
23495
23748
  return clipPlayable;
@@ -23500,7 +23753,7 @@ __decorate([
23500
23753
  serialize()
23501
23754
  ], exports.FloatPropertyPlayableAsset.prototype, "curveData", void 0);
23502
23755
  exports.FloatPropertyPlayableAsset = __decorate([
23503
- effectsClass("FloatPropertyPlayableAsset")
23756
+ effectsClass(DataType.FloatPropertyPlayableAsset)
23504
23757
  ], exports.FloatPropertyPlayableAsset);
23505
23758
 
23506
23759
  exports.SubCompositionPlayableAsset = /*#__PURE__*/ function(PlayableAsset) {
@@ -23518,6 +23771,23 @@ exports.SubCompositionPlayableAsset = __decorate([
23518
23771
  effectsClass(DataType.SubCompositionPlayableAsset)
23519
23772
  ], exports.SubCompositionPlayableAsset);
23520
23773
 
23774
+ /**
23775
+ * A class that stores track assets and the generated mixer playables and playable outputs.
23776
+ * It is used to query the corresponding playable object based on the track asset.
23777
+ */ var TrackInstance = /*#__PURE__*/ function() {
23778
+ function TrackInstance(trackAsset, mixer, output) {
23779
+ this.children = [];
23780
+ this.trackAsset = trackAsset;
23781
+ this.mixer = mixer;
23782
+ this.output = output;
23783
+ }
23784
+ var _proto = TrackInstance.prototype;
23785
+ _proto.addChild = function addChild(trackInstance) {
23786
+ this.children.push(trackInstance);
23787
+ };
23788
+ return TrackInstance;
23789
+ }();
23790
+
23521
23791
  exports.TimelineAsset = /*#__PURE__*/ function(PlayableAsset) {
23522
23792
  _inherits(TimelineAsset, PlayableAsset);
23523
23793
  function TimelineAsset() {
@@ -23560,6 +23830,7 @@ var TimelinePlayable = /*#__PURE__*/ function(Playable) {
23560
23830
  var _this;
23561
23831
  _this = Playable.apply(this, arguments) || this;
23562
23832
  _this.clips = [];
23833
+ _this.masterTrackInstances = [];
23563
23834
  return _this;
23564
23835
  }
23565
23836
  var _proto = TimelinePlayable.prototype;
@@ -23568,6 +23839,8 @@ var TimelinePlayable = /*#__PURE__*/ function(Playable) {
23568
23839
  };
23569
23840
  _proto.evaluate = function evaluate() {
23570
23841
  var time = this.getTime();
23842
+ // update all tracks binding
23843
+ this.updateTrackAnimatedObject(this.masterTrackInstances);
23571
23844
  // TODO search active clips
23572
23845
  for(var _iterator = _create_for_of_iterator_helper_loose(this.clips), _step; !(_step = _iterator()).done;){
23573
23846
  var clip = _step.value;
@@ -23577,19 +23850,50 @@ var TimelinePlayable = /*#__PURE__*/ function(Playable) {
23577
23850
  _proto.compileTracks = function compileTracks(graph, tracks) {
23578
23851
  this.sortTracks(tracks);
23579
23852
  var outputTrack = [];
23853
+ // flatten track tree
23580
23854
  for(var _iterator = _create_for_of_iterator_helper_loose(tracks), _step; !(_step = _iterator()).done;){
23581
23855
  var masterTrack = _step.value;
23582
23856
  outputTrack.push(masterTrack);
23583
23857
  this.addSubTracksRecursive(masterTrack, outputTrack);
23584
23858
  }
23859
+ // map for searching track instance with track asset guid
23860
+ var trackInstanceMap = {};
23585
23861
  for(var _iterator1 = _create_for_of_iterator_helper_loose(outputTrack), _step1; !(_step1 = _iterator1()).done;){
23586
23862
  var track = _step1.value;
23863
+ // create track mixer and track output
23587
23864
  var trackMixPlayable = track.createPlayableGraph(graph, this.clips);
23588
23865
  this.addInput(trackMixPlayable, 0);
23589
23866
  var trackOutput = track.createOutput();
23590
23867
  trackOutput.setUserData(track.boundObject);
23591
23868
  graph.addOutput(trackOutput);
23592
- trackOutput.setSourcePlayeble(this, this.getInputCount() - 1);
23869
+ trackOutput.setSourcePlayable(this, this.getInputCount() - 1);
23870
+ // create track instance
23871
+ var trackInstance = new TrackInstance(track, trackMixPlayable, trackOutput);
23872
+ trackInstanceMap[track.getInstanceId()] = trackInstance;
23873
+ if (!track.parent) {
23874
+ this.masterTrackInstances.push(trackInstance);
23875
+ }
23876
+ }
23877
+ // build trackInstance tree
23878
+ for(var _iterator2 = _create_for_of_iterator_helper_loose(outputTrack), _step2; !(_step2 = _iterator2()).done;){
23879
+ var track1 = _step2.value;
23880
+ var trackInstance1 = trackInstanceMap[track1.getInstanceId()];
23881
+ for(var _iterator3 = _create_for_of_iterator_helper_loose(track1.getChildTracks()), _step3; !(_step3 = _iterator3()).done;){
23882
+ var child = _step3.value;
23883
+ var childTrackInstance = trackInstanceMap[child.getInstanceId()];
23884
+ trackInstance1.addChild(childTrackInstance);
23885
+ }
23886
+ }
23887
+ };
23888
+ _proto.updateTrackAnimatedObject = function updateTrackAnimatedObject(trackInstances) {
23889
+ for(var _iterator = _create_for_of_iterator_helper_loose(trackInstances), _step; !(_step = _iterator()).done;){
23890
+ var trackInstance = _step.value;
23891
+ var trackAsset = trackInstance.trackAsset;
23892
+ // update track binding use custom method
23893
+ trackAsset.updateAnimatedObject();
23894
+ trackInstance.output.setUserData(trackAsset.boundObject);
23895
+ // update children tracks
23896
+ this.updateTrackAnimatedObject(trackInstance.children);
23593
23897
  }
23594
23898
  };
23595
23899
  _proto.sortTracks = function sortTracks(tracks) {
@@ -23641,6 +23945,7 @@ exports.ObjectBindingTrack = /*#__PURE__*/ function(TrackAsset1) {
23641
23945
  return TrackAsset1.apply(this, arguments);
23642
23946
  }
23643
23947
  var _proto = ObjectBindingTrack.prototype;
23948
+ _proto.updateAnimatedObject = function updateAnimatedObject() {};
23644
23949
  _proto.create = function create(timelineAsset) {
23645
23950
  if (!_instanceof1(this.boundObject, exports.VFXItem)) {
23646
23951
  return;
@@ -27641,6 +27946,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
27641
27946
  _inherits(Composition, EventEmitter);
27642
27947
  function Composition(props, scene) {
27643
27948
  var _this;
27949
+ var _scene_jsonScene_renderSettings;
27644
27950
  _this = EventEmitter.call(this) || this;
27645
27951
  _this.sceneTicking = new SceneTicking();
27646
27952
  /**
@@ -27655,6 +27961,9 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
27655
27961
  /**
27656
27962
  * 预合成的合成属性,在 content 中会被其元素属性覆盖
27657
27963
  */ _this.refCompositionProps = new Map();
27964
+ /**
27965
+ * 是否开启后处理
27966
+ */ _this.postProcessingEnabled = false;
27658
27967
  // TODO: 待优化
27659
27968
  _this.assigned = false;
27660
27969
  /**
@@ -27673,6 +27982,8 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
27673
27982
  scene.consumed = true;
27674
27983
  }
27675
27984
  var _this_compositionSourceManager = _this.compositionSourceManager, sourceContent = _this_compositionSourceManager.sourceContent, pluginSystem = _this_compositionSourceManager.pluginSystem, imgUsage = _this_compositionSourceManager.imgUsage, totalTime = _this_compositionSourceManager.totalTime, refCompositionProps = _this_compositionSourceManager.refCompositionProps;
27985
+ var _scene_jsonScene_renderSettings_postProcessingEnabled;
27986
+ _this.postProcessingEnabled = (_scene_jsonScene_renderSettings_postProcessingEnabled = (_scene_jsonScene_renderSettings = scene.jsonScene.renderSettings) == null ? void 0 : _scene_jsonScene_renderSettings.postProcessingEnabled) != null ? _scene_jsonScene_renderSettings_postProcessingEnabled : false;
27676
27987
  assertExist(sourceContent);
27677
27988
  _this.renderer = renderer;
27678
27989
  _this.refCompositionProps = refCompositionProps;
@@ -27713,27 +28024,10 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
27713
28024
  SerializationHelper.deserialize(sourceContent, _this.rootComposition);
27714
28025
  _this.rootComposition.createContent();
27715
28026
  _this.buildItemTree(_this.rootItem);
27716
- _this.rootItem.onEnd = function() {
27717
- window.setTimeout(function() {
27718
- _this.emit("end", {
27719
- composition: _assert_this_initialized(_this)
27720
- });
27721
- }, 0);
27722
- };
27723
28027
  _this.pluginSystem.resetComposition(_assert_this_initialized(_this), _this.renderFrame);
27724
28028
  return _this;
27725
28029
  }
27726
28030
  var _proto = Composition.prototype;
27727
- _proto.initializeSceneTicking = function initializeSceneTicking(item) {
27728
- for(var _iterator = _create_for_of_iterator_helper_loose(item.components), _step; !(_step = _iterator()).done;){
27729
- var component = _step.value;
27730
- this.sceneTicking.addComponent(component);
27731
- }
27732
- for(var _iterator1 = _create_for_of_iterator_helper_loose(item.children), _step1; !(_step1 = _iterator1()).done;){
27733
- var child = _step1.value;
27734
- this.initializeSceneTicking(child);
27735
- }
27736
- };
27737
28031
  /**
27738
28032
  * 获取合成的时长
27739
28033
  */ _proto.getDuration = function getDuration() {
@@ -27822,7 +28116,8 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
27822
28116
  camera: this.camera,
27823
28117
  renderer: this.renderer,
27824
28118
  keepColorBuffer: this.keepColorBuffer,
27825
- globalVolume: this.globalVolume
28119
+ globalVolume: this.globalVolume,
28120
+ postProcessingEnabled: this.postProcessingEnabled
27826
28121
  });
27827
28122
  // TODO 考虑放到构造函数
27828
28123
  this.renderFrame.cachedTextures = this.textures;
@@ -27925,40 +28220,6 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
27925
28220
  this.dispose();
27926
28221
  }
27927
28222
  };
27928
- _proto.toLocalTime = function toLocalTime(time) {
27929
- var localTime = time - this.rootItem.start;
27930
- var duration = this.rootItem.duration;
27931
- if (localTime - duration > 0.001) {
27932
- if (!this.rootItem.ended) {
27933
- this.rootItem.ended = true;
27934
- this.emit("end", {
27935
- composition: this
27936
- });
27937
- }
27938
- switch(this.rootItem.endBehavior){
27939
- case EndBehavior.restart:
27940
- {
27941
- localTime = localTime % duration;
27942
- this.restart();
27943
- break;
27944
- }
27945
- case EndBehavior.freeze:
27946
- {
27947
- localTime = Math.min(duration, localTime);
27948
- break;
27949
- }
27950
- case EndBehavior.forward:
27951
- {
27952
- break;
27953
- }
27954
- case EndBehavior.destroy:
27955
- {
27956
- break;
27957
- }
27958
- }
27959
- }
27960
- return localTime;
27961
- };
27962
28223
  _proto.shouldDispose = function shouldDispose() {
27963
28224
  return this.rootItem.ended && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
27964
28225
  };
@@ -28050,8 +28311,41 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28050
28311
  * 更新主合成组件
28051
28312
  */ _proto.updateRootComposition = function updateRootComposition(deltaTime) {
28052
28313
  if (this.rootComposition.isActiveAndEnabled) {
28053
- var localTime = this.toLocalTime(this.time + deltaTime);
28314
+ var localTime = this.time + deltaTime - this.rootItem.start;
28315
+ var ended = false;
28316
+ var duration = this.rootItem.duration;
28317
+ var endBehavior = this.rootItem.endBehavior;
28318
+ if (localTime - duration > 0.001) {
28319
+ ended = true;
28320
+ switch(endBehavior){
28321
+ case EndBehavior.restart:
28322
+ {
28323
+ localTime = localTime % duration;
28324
+ this.restart();
28325
+ break;
28326
+ }
28327
+ case EndBehavior.freeze:
28328
+ {
28329
+ localTime = Math.min(duration, localTime);
28330
+ break;
28331
+ }
28332
+ case EndBehavior.forward:
28333
+ {
28334
+ break;
28335
+ }
28336
+ case EndBehavior.destroy:
28337
+ {
28338
+ break;
28339
+ }
28340
+ }
28341
+ }
28054
28342
  this.rootComposition.time = localTime;
28343
+ if (ended && !this.rootItem.ended) {
28344
+ this.rootItem.ended = true;
28345
+ this.emit("end", {
28346
+ composition: this
28347
+ });
28348
+ }
28055
28349
  }
28056
28350
  };
28057
28351
  /**
@@ -30376,7 +30670,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem, true);
30376
30670
  registerPlugin("particle", ParticleLoader, exports.VFXItem, true);
30377
30671
  registerPlugin("cal", CalculateLoader, exports.VFXItem, true);
30378
30672
  registerPlugin("interact", InteractLoader, exports.VFXItem, true);
30379
- var version$1 = "2.1.0-alpha.7";
30673
+ var version$1 = "2.1.0-alpha.8";
30380
30674
  logger.info("Core version: " + version$1 + ".");
30381
30675
 
30382
30676
  var _obj;
@@ -31069,6 +31363,7 @@ var seed = 1;
31069
31363
  if (data.length > attributeBuffer.array.length) {
31070
31364
  var buffer = new THREE__namespace.InterleavedBuffer(data, attributeBuffer.stride);
31071
31365
  attributeBuffer = this.attributes[name].attribute.data = buffer;
31366
+ this.attributes[name].buffer = buffer;
31072
31367
  this.geometry.setAttribute(name, this.attributes[name].attribute);
31073
31368
  } else {
31074
31369
  attributeBuffer.set(data, 0);
@@ -31378,6 +31673,7 @@ var seed = 1;
31378
31673
  _this.texture = _this.createTextureByType(options);
31379
31674
  }
31380
31675
  _this.texture.needsUpdate = true;
31676
+ _this.source = {};
31381
31677
  return _this;
31382
31678
  }
31383
31679
  var _proto = ThreeTexture.prototype;
@@ -31390,40 +31686,6 @@ var seed = 1;
31390
31686
  this.texture.needsUpdate = true;
31391
31687
  };
31392
31688
  /**
31393
- * 开始更新视频数据
31394
- *
31395
- */ _proto.startVideo = function startVideo() {
31396
- var _this = this;
31397
- return _async_to_generator(function() {
31398
- var video;
31399
- return __generator(this, function(_state) {
31400
- switch(_state.label){
31401
- case 0:
31402
- if (!(_this.sourceType === exports.TextureSourceType.video)) return [
31403
- 3,
31404
- 2
31405
- ];
31406
- video = _this.texture.source.data;
31407
- if (!video.paused) return [
31408
- 3,
31409
- 2
31410
- ];
31411
- return [
31412
- 4,
31413
- video.play()
31414
- ];
31415
- case 1:
31416
- _state.sent();
31417
- _state.label = 2;
31418
- case 2:
31419
- return [
31420
- 2
31421
- ];
31422
- }
31423
- });
31424
- })();
31425
- };
31426
- /**
31427
31689
  * 组装纹理选项
31428
31690
  * @param options - 纹理选项
31429
31691
  * @returns 组装后的纹理选项
@@ -31520,6 +31782,7 @@ var seed = 1;
31520
31782
  texture.wrapT = THREE__namespace.MirroredRepeatWrapping;
31521
31783
  this.width = this.height = 1;
31522
31784
  }
31785
+ this.source = options;
31523
31786
  if (texture) {
31524
31787
  texture.flipY = !!flipY;
31525
31788
  return texture;
@@ -31563,13 +31826,6 @@ var seed = 1;
31563
31826
  return Composition.call(this, props, scene);
31564
31827
  }
31565
31828
  var _proto = ThreeComposition.prototype;
31566
- /**
31567
- * 更新 video texture 数据
31568
- */ _proto.updateVideo = function updateVideo() {
31569
- void this.textures.map(function(tex) {
31570
- return tex.startVideo();
31571
- });
31572
- };
31573
31829
  _proto.prepareRender = function prepareRender() {
31574
31830
  var render = this.renderer;
31575
31831
  var frame = this.renderFrame;
@@ -32058,7 +32314,7 @@ setMaxSpriteMeshItemCount(8);
32058
32314
  */ Mesh.create = function(engine, props) {
32059
32315
  return new ThreeMesh(engine, props);
32060
32316
  };
32061
- var version = "2.1.0-alpha.7";
32317
+ var version = "2.1.0-alpha.8";
32062
32318
  logger.info("THREEJS plugin version: " + version + ".");
32063
32319
 
32064
32320
  exports.AbstractPlugin = AbstractPlugin;
@@ -32083,6 +32339,7 @@ exports.COPY_VERTEX_SHADER = COPY_VERTEX_SHADER;
32083
32339
  exports.CalculateLoader = CalculateLoader;
32084
32340
  exports.Camera = Camera;
32085
32341
  exports.CameraVFXItemLoader = CameraVFXItemLoader;
32342
+ exports.ColorCurve = ColorCurve;
32086
32343
  exports.Component = Component;
32087
32344
  exports.Composition = Composition;
32088
32345
  exports.CompositionComponent = CompositionComponent;
@@ -32126,6 +32383,7 @@ exports.ParticleSystemRenderer = ParticleSystemRenderer;
32126
32383
  exports.PassTextureCache = PassTextureCache;
32127
32384
  exports.PathSegments = PathSegments;
32128
32385
  exports.PluginSystem = PluginSystem;
32386
+ exports.PropertyTrack = PropertyTrack;
32129
32387
  exports.RENDER_PASS_NAME_PREFIX = RENDER_PASS_NAME_PREFIX;
32130
32388
  exports.RENDER_PREFER_LOOKUP_TEXTURE = RENDER_PREFER_LOOKUP_TEXTURE;
32131
32389
  exports.RUNTIME_ENV = RUNTIME_ENV;
@@ -32173,6 +32431,7 @@ exports.TrackSortWrapper = TrackSortWrapper;
32173
32431
  exports.Transform = Transform;
32174
32432
  exports.TransformAnimationPlayable = TransformAnimationPlayable;
32175
32433
  exports.ValueGetter = ValueGetter;
32434
+ exports.Vector4Curve = Vector4Curve;
32176
32435
  exports.addByOrder = addByOrder;
32177
32436
  exports.addItem = addItem;
32178
32437
  exports.addItemWithOrder = addItemWithOrder;
@@ -32193,7 +32452,6 @@ exports.createKeyFrameMeta = createKeyFrameMeta;
32193
32452
  exports.createShape = createShape;
32194
32453
  exports.createValueGetter = createValueGetter;
32195
32454
  exports.decimalEqual = decimalEqual;
32196
- exports.defaultGlobalVolume = defaultGlobalVolume;
32197
32455
  exports.defaultPlugins = defaultPlugins;
32198
32456
  exports.deserializeMipmapTexture = deserializeMipmapTexture;
32199
32457
  exports.earcut = earcut;