@galacean/effects-core 2.1.0-alpha.10 → 2.1.0-alpha.11

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.1.0-alpha.10
6
+ * Version: v2.1.0-alpha.11
7
7
  */
8
8
 
9
9
  'use strict';
@@ -2023,7 +2023,7 @@ function getDirectStore(target) {
2023
2023
  this.onAwake();
2024
2024
  this.isAwakeCalled = true;
2025
2025
  }
2026
- if (item.getVisible() && this.enabled) {
2026
+ if (item.isActive && this.enabled) {
2027
2027
  this.start();
2028
2028
  this.enable();
2029
2029
  }
@@ -2068,7 +2068,7 @@ function getDirectStore(target) {
2068
2068
  get: /**
2069
2069
  * 组件是否可以更新,true 更新,false 不更新
2070
2070
  */ function get() {
2071
- return this.item.getVisible() && this.enabled;
2071
+ return this.item.isActive && this.enabled;
2072
2072
  }
2073
2073
  },
2074
2074
  {
@@ -3770,24 +3770,29 @@ exports.EffectComponent = __decorate([
3770
3770
 
3771
3771
  exports.PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
3772
3772
  _inherits(PostProcessVolume, Behaviour);
3773
- function PostProcessVolume() {
3773
+ function PostProcessVolume(engine) {
3774
3774
  var _this;
3775
- _this = Behaviour.apply(this, arguments) || this;
3776
- // Bloom
3777
- _this.bloomEnabled = true;
3778
- _this.threshold = 1.0;
3779
- _this.bloomIntensity = 1.0;
3780
- // ColorAdjustments
3781
- _this.brightness = 1.0;
3782
- _this.saturation = 1.0;
3783
- _this.contrast = 1.0;
3784
- // Vignette
3785
- _this.vignetteIntensity = 0.2;
3786
- _this.vignetteSmoothness = 0.4;
3787
- _this.vignetteRoundness = 1.0;
3788
- // ToneMapping
3789
- _this.toneMappingEnabled = true // 1: true, 0: false
3790
- ;
3775
+ _this = Behaviour.call(this, engine) || this;
3776
+ _this.bloom = {
3777
+ threshold: 0,
3778
+ intensity: 0,
3779
+ active: false
3780
+ };
3781
+ _this.vignette = {
3782
+ intensity: 0,
3783
+ smoothness: 0,
3784
+ roundness: 0,
3785
+ active: false
3786
+ };
3787
+ _this.tonemapping = {
3788
+ active: false
3789
+ };
3790
+ _this.colorAdjustments = {
3791
+ brightness: 0,
3792
+ saturation: 0,
3793
+ contrast: 0,
3794
+ active: false
3795
+ };
3791
3796
  return _this;
3792
3797
  }
3793
3798
  var _proto = PostProcessVolume.prototype;
@@ -3801,36 +3806,18 @@ exports.PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
3801
3806
  }(Behaviour);
3802
3807
  __decorate([
3803
3808
  serialize()
3804
- ], exports.PostProcessVolume.prototype, "bloomEnabled", void 0);
3805
- __decorate([
3806
- serialize()
3807
- ], exports.PostProcessVolume.prototype, "threshold", void 0);
3808
- __decorate([
3809
- serialize()
3810
- ], exports.PostProcessVolume.prototype, "bloomIntensity", void 0);
3811
- __decorate([
3812
- serialize()
3813
- ], exports.PostProcessVolume.prototype, "brightness", void 0);
3814
- __decorate([
3815
- serialize()
3816
- ], exports.PostProcessVolume.prototype, "saturation", void 0);
3817
- __decorate([
3818
- serialize()
3819
- ], exports.PostProcessVolume.prototype, "contrast", void 0);
3820
- __decorate([
3821
- serialize()
3822
- ], exports.PostProcessVolume.prototype, "vignetteIntensity", void 0);
3809
+ ], exports.PostProcessVolume.prototype, "bloom", void 0);
3823
3810
  __decorate([
3824
3811
  serialize()
3825
- ], exports.PostProcessVolume.prototype, "vignetteSmoothness", void 0);
3812
+ ], exports.PostProcessVolume.prototype, "vignette", void 0);
3826
3813
  __decorate([
3827
3814
  serialize()
3828
- ], exports.PostProcessVolume.prototype, "vignetteRoundness", void 0);
3815
+ ], exports.PostProcessVolume.prototype, "tonemapping", void 0);
3829
3816
  __decorate([
3830
3817
  serialize()
3831
- ], exports.PostProcessVolume.prototype, "toneMappingEnabled", void 0);
3818
+ ], exports.PostProcessVolume.prototype, "colorAdjustments", void 0);
3832
3819
  exports.PostProcessVolume = __decorate([
3833
- effectsClass("PostProcessVolume")
3820
+ effectsClass(DataType.PostProcessVolume)
3834
3821
  ], exports.PostProcessVolume);
3835
3822
 
3836
3823
  function _assert_this_initialized(self) {
@@ -6917,6 +6904,7 @@ exports.MaterialRenderType = void 0;
6917
6904
  _this.enabledMacros = {};
6918
6905
  _this.destroyed = false;
6919
6906
  _this.initialized = false;
6907
+ _this.shaderDirty = true;
6920
6908
  if (props) {
6921
6909
  var _props_name = props.name, name = _props_name === void 0 ? "Material" + seed$8++ : _props_name, _props_renderType = props.renderType, renderType = _props_renderType === void 0 ? 0 : _props_renderType, shader = props.shader, uniformSemantics = props.uniformSemantics;
6922
6910
  _this.name = name;
@@ -6944,6 +6932,19 @@ exports.MaterialRenderType = void 0;
6944
6932
  // OVERRIDE
6945
6933
  };
6946
6934
  _create_class(Material, [
6935
+ {
6936
+ key: "shader",
6937
+ get: function get() {
6938
+ return this._shader;
6939
+ },
6940
+ set: function set(value) {
6941
+ if (this._shader === value) {
6942
+ return;
6943
+ }
6944
+ this._shader = value;
6945
+ this.shaderDirty = true;
6946
+ }
6947
+ },
6947
6948
  {
6948
6949
  key: "blending",
6949
6950
  set: /******** effects-core 中会调用 引擎必须实现 ***********************/ /**
@@ -10311,15 +10312,15 @@ var BloomThresholdPass = /*#__PURE__*/ function(RenderPass) {
10311
10312
  renderer.setFramebuffer(this.framebuffer);
10312
10313
  };
10313
10314
  _proto.execute = function execute(renderer) {
10314
- var _renderer_renderingData_currentFrame_globalVolume;
10315
+ var _renderer_renderingData_currentFrame_globalVolume_bloom, _renderer_renderingData_currentFrame_globalVolume;
10315
10316
  renderer.clear({
10316
10317
  colorAction: exports.TextureStoreAction.clear,
10317
10318
  depthAction: exports.TextureStoreAction.clear,
10318
10319
  stencilAction: exports.TextureStoreAction.clear
10319
10320
  });
10320
10321
  this.screenMesh.material.setTexture("_MainTex", this.mainTexture);
10321
- var _renderer_renderingData_currentFrame_globalVolume_threshold;
10322
- 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;
10322
+ var _renderer_renderingData_currentFrame_globalVolume_bloom_threshold;
10323
+ var threshold = (_renderer_renderingData_currentFrame_globalVolume_bloom_threshold = (_renderer_renderingData_currentFrame_globalVolume = renderer.renderingData.currentFrame.globalVolume) == null ? void 0 : (_renderer_renderingData_currentFrame_globalVolume_bloom = _renderer_renderingData_currentFrame_globalVolume.bloom) == null ? void 0 : _renderer_renderingData_currentFrame_globalVolume_bloom.threshold) != null ? _renderer_renderingData_currentFrame_globalVolume_bloom_threshold : 1.0;
10323
10324
  this.screenMesh.material.setFloat("_Threshold", threshold);
10324
10325
  renderer.renderMeshes([
10325
10326
  this.screenMesh
@@ -10532,25 +10533,44 @@ var ToneMappingPass = /*#__PURE__*/ function(RenderPass) {
10532
10533
  depthAction: exports.TextureStoreAction.clear,
10533
10534
  stencilAction: exports.TextureStoreAction.clear
10534
10535
  });
10535
- var _renderer_renderingData_currentFrame_globalVolume;
10536
- 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;
10536
+ var globalVolume = renderer.renderingData.currentFrame.globalVolume;
10537
+ var bloom = _extends({
10538
+ threshold: 0,
10539
+ intensity: 0,
10540
+ active: false
10541
+ }, globalVolume == null ? void 0 : globalVolume.bloom);
10542
+ var vignette = _extends({
10543
+ intensity: 0,
10544
+ smoothness: 0,
10545
+ roundness: 0,
10546
+ active: false
10547
+ }, globalVolume == null ? void 0 : globalVolume.vignette);
10548
+ var colorAdjustments = _extends({
10549
+ brightness: 0,
10550
+ saturation: 0,
10551
+ contrast: 0,
10552
+ active: false
10553
+ }, globalVolume == null ? void 0 : globalVolume.colorAdjustments);
10554
+ var tonemapping = _extends({
10555
+ active: false
10556
+ }, globalVolume == null ? void 0 : globalVolume.tonemapping);
10537
10557
  this.screenMesh.material.setTexture("_SceneTex", this.sceneTextureHandle.texture);
10538
- this.screenMesh.material.setFloat("_Brightness", brightness);
10539
- this.screenMesh.material.setFloat("_Saturation", saturation);
10540
- this.screenMesh.material.setFloat("_Contrast", contrast);
10541
- this.screenMesh.material.setInt("_UseBloom", Number(bloomEnabled));
10542
- if (bloomEnabled) {
10558
+ this.screenMesh.material.setFloat("_Brightness", Math.pow(2, colorAdjustments.brightness));
10559
+ this.screenMesh.material.setFloat("_Saturation", colorAdjustments.saturation * 0.01 + 1);
10560
+ this.screenMesh.material.setFloat("_Contrast", colorAdjustments.contrast * 0.01 + 1);
10561
+ this.screenMesh.material.setInt("_UseBloom", Number(bloom.active));
10562
+ if (bloom.active) {
10543
10563
  this.screenMesh.material.setTexture("_GaussianTex", this.mainTexture);
10544
- this.screenMesh.material.setFloat("_BloomIntensity", bloomIntensity);
10564
+ this.screenMesh.material.setFloat("_BloomIntensity", bloom.intensity);
10545
10565
  }
10546
- if (vignetteIntensity > 0) {
10547
- this.screenMesh.material.setFloat("_VignetteIntensity", vignetteIntensity);
10548
- this.screenMesh.material.setFloat("_VignetteSmoothness", vignetteSmoothness);
10549
- this.screenMesh.material.setFloat("_VignetteRoundness", vignetteRoundness);
10566
+ if (vignette.intensity > 0) {
10567
+ this.screenMesh.material.setFloat("_VignetteIntensity", vignette.intensity);
10568
+ this.screenMesh.material.setFloat("_VignetteSmoothness", vignette.smoothness);
10569
+ this.screenMesh.material.setFloat("_VignetteRoundness", vignette.roundness);
10550
10570
  this.screenMesh.material.setVector2("_VignetteCenter", new Vector2(0.5, 0.5));
10551
10571
  this.screenMesh.material.setVector3("_VignetteColor", new Vector3(0.0, 0.0, 0.0));
10552
10572
  }
10553
- this.screenMesh.material.setInt("_UseToneMapping", Number(toneMappingEnabled));
10573
+ this.screenMesh.material.setInt("_UseToneMapping", Number(tonemapping.active));
10554
10574
  renderer.renderMeshes([
10555
10575
  this.screenMesh
10556
10576
  ]);
@@ -15761,70 +15781,79 @@ exports.ShapeComponent = /*#__PURE__*/ function(MeshComponent) {
15761
15781
  };
15762
15782
  _proto.buildPath = function buildPath(data) {
15763
15783
  this.path.clear();
15764
- for(var _iterator = _create_for_of_iterator_helper_loose(data.shapeDatas), _step; !(_step = _iterator()).done;){
15765
- var shapeData = _step.value;
15766
- switch(shapeData.type){
15767
- case 0:
15768
- {
15769
- var customData = shapeData;
15770
- var points = customData.points;
15771
- var easingIns = customData.easingIns;
15772
- var easingOuts = customData.easingOuts;
15773
- this.curveValues = [];
15774
- for(var _iterator1 = _create_for_of_iterator_helper_loose(customData.shapes), _step1; !(_step1 = _iterator1()).done;){
15775
- var shape = _step1.value;
15776
- var indices = shape.indexes;
15777
- for(var i = 1; i < indices.length; i++){
15778
- var pointIndex = indices[i];
15779
- var lastPointIndex = indices[i - 1];
15780
- this.curveValues.push({
15781
- point: points[pointIndex.point],
15782
- controlPoint1: easingOuts[lastPointIndex.easingOut],
15783
- controlPoint2: easingIns[pointIndex.easingIn]
15784
- });
15785
- }
15786
- // Push the last curve
15784
+ var shapeData = data;
15785
+ switch(shapeData.type){
15786
+ case 0:
15787
+ {
15788
+ var customData = shapeData;
15789
+ var points = customData.points;
15790
+ var easingIns = customData.easingIns;
15791
+ var easingOuts = customData.easingOuts;
15792
+ this.curveValues = [];
15793
+ for(var _iterator = _create_for_of_iterator_helper_loose(customData.shapes), _step; !(_step = _iterator()).done;){
15794
+ var shape = _step.value;
15795
+ this.setFillColor(shape.fill);
15796
+ var indices = shape.indexes;
15797
+ for(var i = 1; i < indices.length; i++){
15798
+ var pointIndex = indices[i];
15799
+ var lastPointIndex = indices[i - 1];
15787
15800
  this.curveValues.push({
15788
- point: points[indices[0].point],
15789
- controlPoint1: easingOuts[indices[indices.length - 1].easingOut],
15790
- controlPoint2: easingIns[indices[0].easingIn]
15801
+ point: points[pointIndex.point],
15802
+ controlPoint1: easingOuts[lastPointIndex.easingOut],
15803
+ controlPoint2: easingIns[pointIndex.easingIn]
15791
15804
  });
15792
15805
  }
15793
- this.path.moveTo(this.curveValues[this.curveValues.length - 1].point.x, this.curveValues[this.curveValues.length - 1].point.y);
15794
- for(var _iterator2 = _create_for_of_iterator_helper_loose(this.curveValues), _step2; !(_step2 = _iterator2()).done;){
15795
- var curveValue = _step2.value;
15796
- var point = curveValue.point;
15797
- var control1 = curveValue.controlPoint1;
15798
- var control2 = curveValue.controlPoint2;
15799
- this.path.bezierCurveTo(control1.x, control1.y, control2.x, control2.y, point.x, point.y, 1);
15800
- }
15801
- break;
15802
- }
15803
- case 2:
15804
- {
15805
- var ellipseData = shapeData;
15806
- this.path.ellipse(0, 0, ellipseData.xRadius, ellipseData.yRadius);
15807
- break;
15808
- }
15809
- case 1:
15810
- {
15811
- var rectangleData = shapeData;
15812
- this.path.rect(-rectangleData.width / 2, rectangleData.height / 2, rectangleData.width, rectangleData.height);
15813
- break;
15814
- }
15815
- case 4:
15816
- {
15817
- var starData = shapeData;
15818
- this.path.polyStar(starData.pointCount, starData.outerRadius, starData.innerRadius, starData.outerRoundness, starData.innerRoundness, StarType.Star);
15819
- break;
15806
+ // Push the last curve
15807
+ this.curveValues.push({
15808
+ point: points[indices[0].point],
15809
+ controlPoint1: easingOuts[indices[indices.length - 1].easingOut],
15810
+ controlPoint2: easingIns[indices[0].easingIn]
15811
+ });
15820
15812
  }
15821
- case 3:
15822
- {
15823
- var polygonData = shapeData;
15824
- this.path.polyStar(polygonData.pointCount, polygonData.radius, polygonData.radius, polygonData.roundness, polygonData.roundness, StarType.Polygon);
15825
- break;
15813
+ this.path.moveTo(this.curveValues[this.curveValues.length - 1].point.x, this.curveValues[this.curveValues.length - 1].point.y);
15814
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(this.curveValues), _step1; !(_step1 = _iterator1()).done;){
15815
+ var curveValue = _step1.value;
15816
+ var point = curveValue.point;
15817
+ var control1 = curveValue.controlPoint1;
15818
+ var control2 = curveValue.controlPoint2;
15819
+ this.path.bezierCurveTo(control1.x, control1.y, control2.x, control2.y, point.x, point.y, 1);
15826
15820
  }
15827
- }
15821
+ break;
15822
+ }
15823
+ case 2:
15824
+ {
15825
+ var ellipseData = shapeData;
15826
+ this.path.ellipse(0, 0, ellipseData.xRadius, ellipseData.yRadius);
15827
+ this.setFillColor(ellipseData.fill);
15828
+ break;
15829
+ }
15830
+ case 1:
15831
+ {
15832
+ var rectangleData = shapeData;
15833
+ this.path.rect(-rectangleData.width / 2, rectangleData.height / 2, rectangleData.width, rectangleData.height);
15834
+ this.setFillColor(rectangleData.fill);
15835
+ break;
15836
+ }
15837
+ case 4:
15838
+ {
15839
+ var starData = shapeData;
15840
+ this.path.polyStar(starData.pointCount, starData.outerRadius, starData.innerRadius, starData.outerRoundness, starData.innerRoundness, StarType.Star);
15841
+ this.setFillColor(starData.fill);
15842
+ break;
15843
+ }
15844
+ case 3:
15845
+ {
15846
+ var polygonData = shapeData;
15847
+ this.path.polyStar(polygonData.pointCount, polygonData.radius, polygonData.radius, polygonData.roundness, polygonData.roundness, StarType.Polygon);
15848
+ this.setFillColor(polygonData.fill);
15849
+ break;
15850
+ }
15851
+ }
15852
+ };
15853
+ _proto.setFillColor = function setFillColor(fill) {
15854
+ if (fill) {
15855
+ var color = fill.color;
15856
+ this.material.setColor("_Color", new Color(color.r, color.g, color.b, color.a));
15828
15857
  }
15829
15858
  };
15830
15859
  _proto.fromData = function fromData(data) {
@@ -15844,26 +15873,24 @@ exports.ShapeComponent = /*#__PURE__*/ function(MeshComponent) {
15844
15873
  exports.ShapeComponent = __decorate([
15845
15874
  effectsClass("ShapeComponent")
15846
15875
  ], exports.ShapeComponent);
15847
- exports.ShapeType = void 0;
15848
- (function(ShapeType) {
15876
+ exports.ShapePrimitiveType = void 0;
15877
+ (function(ShapePrimitiveType) {
15849
15878
  /**
15850
15879
  * 自定义图形
15851
- */ ShapeType[ShapeType["Custom"] = 0] = "Custom";
15880
+ */ ShapePrimitiveType[ShapePrimitiveType["Custom"] = 0] = "Custom";
15852
15881
  /**
15853
15882
  * 矩形
15854
- */ ShapeType[ShapeType["Rectangle"] = 1] = "Rectangle";
15883
+ */ ShapePrimitiveType[ShapePrimitiveType["Rectangle"] = 1] = "Rectangle";
15855
15884
  /**
15856
15885
  * 椭圆
15857
- */ ShapeType[ShapeType["Ellipse"] = 2] = "Ellipse";
15886
+ */ ShapePrimitiveType[ShapePrimitiveType["Ellipse"] = 2] = "Ellipse";
15858
15887
  /**
15859
15888
  * 多边形
15860
- */ ShapeType[ShapeType["Polygon"] = 3] = "Polygon";
15889
+ */ ShapePrimitiveType[ShapePrimitiveType["Polygon"] = 3] = "Polygon";
15861
15890
  /**
15862
15891
  * 星形
15863
- */ ShapeType[ShapeType["Star"] = 4] = "Star";
15864
- })(exports.ShapeType || (exports.ShapeType = {}));
15865
- var ShapeData = function ShapeData() {
15866
- };
15892
+ */ ShapePrimitiveType[ShapePrimitiveType["Star"] = 4] = "Star";
15893
+ })(exports.ShapePrimitiveType || (exports.ShapePrimitiveType = {}));
15867
15894
  exports.ShapeConnectType = void 0;
15868
15895
  (function(ShapeConnectType) {})(exports.ShapeConnectType || (exports.ShapeConnectType = {}));
15869
15896
  exports.ShapePointType = void 0;
@@ -16366,7 +16393,6 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16366
16393
  ]
16367
16394
  };
16368
16395
  /** 是否响应点击和拖拽交互事件 */ _this._interactive = true;
16369
- _this.hasBeenAddedToComposition = false;
16370
16396
  _this.getHitTestParams = function(force) {
16371
16397
  if (!_this.clickable) {
16372
16398
  return;
@@ -16403,7 +16429,6 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16403
16429
  ];
16404
16430
  };
16405
16431
  _proto.onStart = function onStart() {
16406
- var _this = this;
16407
16432
  var options = this.item.props.content.options;
16408
16433
  var env = this.item.engine.renderer.env;
16409
16434
  var composition = this.item.composition;
@@ -16427,16 +16452,25 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16427
16452
  this.materials = this.previewContent.mesh.materials;
16428
16453
  }
16429
16454
  this.item.getHitTestParams = this.getHitTestParams;
16430
- this.item.onEnd = function() {
16431
- if (_this.item && _this.item.composition) {
16432
- var _this_previewContent;
16433
- _this.item.composition.removeInteractiveItem(_this.item, _this.item.props.content.options.type);
16434
- _this.clickable = false;
16435
- _this.hasBeenAddedToComposition = false;
16436
- (_this_previewContent = _this.previewContent) == null ? void 0 : _this_previewContent.mesh.dispose();
16437
- _this.endDragTarget();
16438
- }
16439
- };
16455
+ };
16456
+ _proto.onDisable = function onDisable() {
16457
+ if (this.item && this.item.composition) {
16458
+ var _this_previewContent;
16459
+ this.item.composition.removeInteractiveItem(this.item, this.item.props.content.options.type);
16460
+ this.clickable = false;
16461
+ (_this_previewContent = this.previewContent) == null ? void 0 : _this_previewContent.mesh.dispose();
16462
+ this.endDragTarget();
16463
+ }
16464
+ };
16465
+ _proto.onEnable = function onEnable() {
16466
+ var type = this.interactData.options.type;
16467
+ if (type === InteractType.CLICK) {
16468
+ this.clickable = true;
16469
+ }
16470
+ var options = this.item.props.content.options;
16471
+ if (this.item.composition) {
16472
+ this.item.composition.addInteractiveItem(this.item, options.type);
16473
+ }
16440
16474
  };
16441
16475
  _proto.onUpdate = function onUpdate(dt) {
16442
16476
  var _this_previewContent;
@@ -16444,15 +16478,6 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16444
16478
  return;
16445
16479
  }
16446
16480
  (_this_previewContent = this.previewContent) == null ? void 0 : _this_previewContent.updateMesh();
16447
- if (!this.hasBeenAddedToComposition && this.item.composition) {
16448
- var type = this.interactData.options.type;
16449
- if (type === InteractType.CLICK) {
16450
- this.clickable = true;
16451
- }
16452
- var options = this.item.props.content.options;
16453
- this.item.composition.addInteractiveItem(this.item, options.type);
16454
- this.hasBeenAddedToComposition = true;
16455
- }
16456
16481
  if (!this.dragEvent || !this.bouncingArg) {
16457
16482
  return;
16458
16483
  }
@@ -16866,6 +16891,7 @@ var SpriteLoader = /*#__PURE__*/ function(AbstractPlugin) {
16866
16891
  if (inputCount === void 0) inputCount = 0;
16867
16892
  this.onPlayablePlayFlag = true;
16868
16893
  this.onPlayablePauseFlag = false;
16894
+ this.duration = 0;
16869
16895
  this.destroyed = false;
16870
16896
  this.inputs = [];
16871
16897
  this.inputOuputPorts = [];
@@ -16958,6 +16984,12 @@ var SpriteLoader = /*#__PURE__*/ function(AbstractPlugin) {
16958
16984
  _proto.getTime = function getTime() {
16959
16985
  return this.time;
16960
16986
  };
16987
+ _proto.setDuration = function setDuration(duration) {
16988
+ this.duration = duration;
16989
+ };
16990
+ _proto.getDuration = function getDuration() {
16991
+ return this.duration;
16992
+ };
16961
16993
  _proto.getPlayState = function getPlayState() {
16962
16994
  return this.playState;
16963
16995
  };
@@ -17674,17 +17706,15 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17674
17706
  /**
17675
17707
  * 元素动画结束时行为(如何处理元素)
17676
17708
  */ _this.endBehavior = EndBehavior.forward;
17677
- /**
17678
- * 元素是否可用
17679
- */ _this.ended = false;
17680
- _this.reusable = false;
17681
17709
  _this.type = ItemType.base;
17682
17710
  _this.isDuringPlay = false;
17683
17711
  _this.components = [];
17684
17712
  _this.rendererComponents = [];
17685
17713
  /**
17686
- * 元素可见性,该值的改变会触发 `handleVisibleChanged` 回调
17687
- * @protected
17714
+ * 元素是否激活
17715
+ */ _this.active = true;
17716
+ /**
17717
+ * 元素组件是否显示,用于批量开关元素组件
17688
17718
  */ _this.visible = true;
17689
17719
  /**
17690
17720
  * 元素动画的速度
@@ -17815,12 +17845,6 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17815
17845
  }
17816
17846
  };
17817
17847
  /**
17818
- * 元素动画结束播放时回调函数
17819
- * @override
17820
- */ _proto.onEnd = function onEnd() {
17821
- // OVERRIDE
17822
- };
17823
- /**
17824
17848
  * 通过指定 r、g、b、a 值设置元素的颜色
17825
17849
  * @param {number} r
17826
17850
  * @param {number} g
@@ -17833,17 +17857,27 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17833
17857
  * @param opacity - 透明度值,范围 [0,1]
17834
17858
  */ _proto.setOpacity = function setOpacity(opacity) {};
17835
17859
  /**
17836
- * 获取元素显隐属性
17837
- */ _proto.getVisible = function getVisible() {
17838
- return this.visible;
17860
+ * 激活或停用 VFXItem
17861
+ */ _proto.setActive = function setActive(value) {
17862
+ if (this.active !== value) {
17863
+ this.active = !!value;
17864
+ this.onActiveChanged();
17865
+ }
17839
17866
  };
17840
17867
  /**
17841
- * 设置元素显隐属性 会触发 `handleVisibleChanged` 回调
17868
+ * 设置元素的显隐,该设置会批量开关元素组件
17842
17869
  */ _proto.setVisible = function setVisible(visible) {
17843
- if (this.visible !== visible) {
17844
- this.visible = !!visible;
17845
- this.onActiveChanged();
17870
+ for(var _iterator = _create_for_of_iterator_helper_loose(this.components), _step; !(_step = _iterator()).done;){
17871
+ var component = _step.value;
17872
+ component.enabled = visible;
17846
17873
  }
17874
+ this.visible = visible;
17875
+ };
17876
+ /**
17877
+ * 元素组件显隐状态
17878
+ * @deprecated use isVisible instead
17879
+ */ _proto.getVisible = function getVisible() {
17880
+ return this.visible;
17847
17881
  };
17848
17882
  /**
17849
17883
  * 获取元素变换包括位置、旋转、缩放
@@ -17925,14 +17959,6 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17925
17959
  this.transform.assignWorldTRS(pos);
17926
17960
  return pos;
17927
17961
  };
17928
- /**
17929
- * 是否到达元素的结束时间
17930
- * @param now
17931
- * @returns
17932
- */ _proto.isEnded = function isEnded(now) {
17933
- // at least 1 ms
17934
- return now - this.duration > 0.001;
17935
- };
17936
17962
  _proto.find = function find(name) {
17937
17963
  var _queue;
17938
17964
  if (this.name === name) {
@@ -17956,7 +17982,7 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17956
17982
  * @internal
17957
17983
  */ _proto.beginPlay = function beginPlay() {
17958
17984
  this.isDuringPlay = true;
17959
- if (this.composition && this.visible && !this.isEnabled) {
17985
+ if (this.composition && this.active && !this.isEnabled) {
17960
17986
  this.onEnable();
17961
17987
  }
17962
17988
  for(var _iterator = _create_for_of_iterator_helper_loose(this.children), _step; !(_step = _iterator()).done;){
@@ -18232,6 +18258,22 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
18232
18258
  }
18233
18259
  }
18234
18260
  }
18261
+ },
18262
+ {
18263
+ key: "isActive",
18264
+ get: /**
18265
+ * 当前 VFXItem 是否激活
18266
+ */ function get() {
18267
+ return this.active;
18268
+ }
18269
+ },
18270
+ {
18271
+ key: "isVisible",
18272
+ get: /**
18273
+ * 元素组件显隐状态
18274
+ */ function get() {
18275
+ return this.visible;
18276
+ }
18235
18277
  }
18236
18278
  ]);
18237
18279
  return VFXItem;
@@ -22996,6 +23038,7 @@ exports.TrackAsset = /*#__PURE__*/ function(PlayableAsset) {
22996
23038
  for(var _iterator = _create_for_of_iterator_helper_loose(timelineClips), _step; !(_step = _iterator()).done;){
22997
23039
  var timelineClip = _step.value;
22998
23040
  var clipPlayable = this.createClipPlayable(graph, timelineClip);
23041
+ clipPlayable.setDuration(timelineClip.duration);
22999
23042
  var clip = new RuntimeClip(timelineClip, clipPlayable, mixer, this);
23000
23043
  runtimeClips.push(clip);
23001
23044
  mixer.addInput(clipPlayable, 0);
@@ -23099,14 +23142,6 @@ var RuntimeClip = /*#__PURE__*/ function() {
23099
23142
  this.playable.setTime(clipTime);
23100
23143
  // 判断动画是否结束
23101
23144
  if (ended) {
23102
- if (_instanceof1(boundObject, exports.VFXItem) && !boundObject.ended) {
23103
- boundObject.ended = true;
23104
- boundObject.onEnd();
23105
- if (!boundObject.compositionReusable && !boundObject.reusable) {
23106
- boundObject.dispose();
23107
- this.playable.dispose();
23108
- }
23109
- }
23110
23145
  if (this.playable.getPlayState() === PlayState.Playing) {
23111
23146
  this.playable.pause();
23112
23147
  }
@@ -23149,26 +23184,10 @@ var ActivationMixerPlayable = /*#__PURE__*/ function(Playable) {
23149
23184
  }
23150
23185
  if (hasInput) {
23151
23186
  boundItem.transform.setValid(true);
23152
- this.showRendererComponents(boundItem);
23187
+ boundItem.setActive(true);
23153
23188
  } else {
23154
23189
  boundItem.transform.setValid(false);
23155
- this.hideRendererComponents(boundItem);
23156
- }
23157
- };
23158
- _proto.hideRendererComponents = function hideRendererComponents(item) {
23159
- for(var _iterator = _create_for_of_iterator_helper_loose(item.rendererComponents), _step; !(_step = _iterator()).done;){
23160
- var rendererComponent = _step.value;
23161
- if (rendererComponent.enabled) {
23162
- rendererComponent.enabled = false;
23163
- }
23164
- }
23165
- };
23166
- _proto.showRendererComponents = function showRendererComponents(item) {
23167
- for(var _iterator = _create_for_of_iterator_helper_loose(item.rendererComponents), _step; !(_step = _iterator()).done;){
23168
- var rendererComponent = _step.value;
23169
- if (!rendererComponent.enabled) {
23170
- rendererComponent.enabled = true;
23171
- }
23190
+ boundItem.setActive(false);
23172
23191
  }
23173
23192
  };
23174
23193
  return ActivationMixerPlayable;
@@ -23196,7 +23215,7 @@ var PropertyClipPlayable = /*#__PURE__*/ function(Playable) {
23196
23215
  }
23197
23216
  var _proto = PropertyClipPlayable.prototype;
23198
23217
  _proto.processFrame = function processFrame(context) {
23199
- this.value = this.curve.getValue(this.time);
23218
+ this.value = this.curve.getValue(this.time / this.getDuration());
23200
23219
  };
23201
23220
  return PropertyClipPlayable;
23202
23221
  }(Playable);
@@ -23714,9 +23733,6 @@ var SerializationHelper = /*#__PURE__*/ function() {
23714
23733
  var track = _step.value;
23715
23734
  var boundObject = track.boundObject;
23716
23735
  if (_instanceof1(boundObject, exports.VFXItem)) {
23717
- if (_instanceof1(track, exports.ObjectBindingTrack)) {
23718
- boundObject.reusable = value;
23719
- }
23720
23736
  var subCompositionComponent = boundObject.getComponent(CompositionComponent);
23721
23737
  if (subCompositionComponent) {
23722
23738
  subCompositionComponent.setReusable(value);
@@ -23761,16 +23777,16 @@ var SerializationHelper = /*#__PURE__*/ function() {
23761
23777
  }
23762
23778
  }
23763
23779
  };
23764
- _proto.showItems = function showItems() {
23780
+ _proto.onEnable = function onEnable() {
23765
23781
  for(var _iterator = _create_for_of_iterator_helper_loose(this.items), _step; !(_step = _iterator()).done;){
23766
23782
  var item = _step.value;
23767
- item.setVisible(true);
23783
+ item.setActive(true);
23768
23784
  }
23769
23785
  };
23770
- _proto.hideItems = function hideItems() {
23786
+ _proto.onDisable = function onDisable() {
23771
23787
  for(var _iterator = _create_for_of_iterator_helper_loose(this.items), _step; !(_step = _iterator()).done;){
23772
23788
  var item = _step.value;
23773
- item.setVisible(false);
23789
+ item.setActive(false);
23774
23790
  }
23775
23791
  };
23776
23792
  _proto.onDestroy = function onDestroy() {
@@ -23786,7 +23802,7 @@ var SerializationHelper = /*#__PURE__*/ function() {
23786
23802
  _proto.hitTest = function hitTest(ray, x, y, regions, force, options) {
23787
23803
  var _this, _loop = function(i) {
23788
23804
  var item = _this.items[i];
23789
- if (item.getVisible() && item.transform.getValid() && !exports.VFXItem.isComposition(item) && !skip(item)) {
23805
+ if (item.isActive && item.transform.getValid() && !exports.VFXItem.isComposition(item) && !skip(item)) {
23790
23806
  var hitParams = item.getHitTestParams(force);
23791
23807
  if (hitParams) {
23792
23808
  var success = false;
@@ -23928,9 +23944,9 @@ var SubCompositionMixerPlayable = /*#__PURE__*/ function(Playable) {
23928
23944
  }
23929
23945
  }
23930
23946
  if (hasInput) {
23931
- compositionComponent.showItems();
23947
+ compositionComponent.item.setActive(true);
23932
23948
  } else {
23933
- compositionComponent.hideItems();
23949
+ compositionComponent.item.setActive(false);
23934
23950
  }
23935
23951
  };
23936
23952
  return SubCompositionMixerPlayable;
@@ -28385,6 +28401,9 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28385
28401
  * 动画播放速度
28386
28402
  */ _this.speed = 1;
28387
28403
  /**
28404
+ * 合成是否结束
28405
+ */ _this.isEnded = false;
28406
+ /**
28388
28407
  * 用于保存与当前合成相关的插件数据
28389
28408
  */ _this.loaderData = {};
28390
28409
  /**
@@ -28406,6 +28425,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28406
28425
  * 合成暂停/播放 标识
28407
28426
  */ _this.paused = false;
28408
28427
  _this.lastVideoUpdateTime = 0;
28428
+ _this.isEndCalled = false;
28409
28429
  var _props_reusable = props.reusable, reusable = _props_reusable === void 0 ? false : _props_reusable, _props_speed = props.speed, speed = _props_speed === void 0 ? 1 : _props_speed, _props_baseRenderOrder = props.baseRenderOrder, baseRenderOrder = _props_baseRenderOrder === void 0 ? 0 : _props_baseRenderOrder, renderer = props.renderer, event = props.event, width = props.width, height = props.height, handleItemMessage = props.handleItemMessage;
28410
28430
  _this.compositionSourceManager = new CompositionSourceManager(scene, renderer.engine);
28411
28431
  if (reusable) {
@@ -28495,7 +28515,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28495
28515
  * @param visible - 是否可见
28496
28516
  */ _proto.setVisible = function setVisible(visible) {
28497
28517
  this.items.forEach(function(item) {
28498
- item.setVisible(visible);
28518
+ item.setActive(visible);
28499
28519
  });
28500
28520
  };
28501
28521
  /**
@@ -28505,7 +28525,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28505
28525
  return this.speed;
28506
28526
  };
28507
28527
  _proto.play = function play() {
28508
- if (this.rootItem.ended && this.reusable) {
28528
+ if (this.isEnded && this.reusable) {
28509
28529
  this.restart();
28510
28530
  }
28511
28531
  if (this.rootComposition.isStartCalled) {
@@ -28596,7 +28616,8 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28596
28616
  * 重置状态函数
28597
28617
  */ _proto.reset = function reset() {
28598
28618
  this.rendererOptions = null;
28599
- this.rootItem.ended = false;
28619
+ this.isEnded = false;
28620
+ this.isEndCalled = false;
28600
28621
  this.rootComposition.time = 0;
28601
28622
  this.pluginSystem.resetComposition(this, this.renderFrame);
28602
28623
  };
@@ -28648,12 +28669,18 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28648
28669
  this.sceneTicking.lateUpdate.tick(dt);
28649
28670
  this.updateCamera();
28650
28671
  this.prepareRender();
28672
+ if (this.isEnded && !this.isEndCalled) {
28673
+ this.isEndCalled = true;
28674
+ this.emit("end", {
28675
+ composition: this
28676
+ });
28677
+ }
28651
28678
  if (this.shouldDispose()) {
28652
28679
  this.dispose();
28653
28680
  }
28654
28681
  };
28655
28682
  _proto.shouldDispose = function shouldDispose() {
28656
- return this.rootItem.ended && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
28683
+ return this.isEnded && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
28657
28684
  };
28658
28685
  _proto.getUpdateTime = function getUpdateTime(t) {
28659
28686
  var startTimeInMs = this.startTime * 1000;
@@ -28744,11 +28771,11 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28744
28771
  */ _proto.updateRootComposition = function updateRootComposition(deltaTime) {
28745
28772
  if (this.rootComposition.isActiveAndEnabled) {
28746
28773
  var localTime = this.time + deltaTime - this.rootItem.start;
28747
- var ended = false;
28774
+ var isEnded = false;
28748
28775
  var duration = this.rootItem.duration;
28749
28776
  var endBehavior = this.rootItem.endBehavior;
28750
28777
  if (localTime - duration > 0.001) {
28751
- ended = true;
28778
+ isEnded = true;
28752
28779
  switch(endBehavior){
28753
28780
  case EndBehavior.restart:
28754
28781
  {
@@ -28772,11 +28799,14 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28772
28799
  }
28773
28800
  }
28774
28801
  this.rootComposition.time = localTime;
28775
- if (ended && !this.rootItem.ended) {
28776
- this.rootItem.ended = true;
28777
- this.emit("end", {
28778
- composition: this
28779
- });
28802
+ // end state changed, handle onEnd flags
28803
+ if (this.isEnded !== isEnded) {
28804
+ if (isEnded) {
28805
+ this.isEnded = true;
28806
+ } else {
28807
+ this.isEnded = false;
28808
+ this.isEndCalled = false;
28809
+ }
28780
28810
  }
28781
28811
  }
28782
28812
  };
@@ -31102,7 +31132,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem, true);
31102
31132
  registerPlugin("particle", ParticleLoader, exports.VFXItem, true);
31103
31133
  registerPlugin("cal", CalculateLoader, exports.VFXItem, true);
31104
31134
  registerPlugin("interact", InteractLoader, exports.VFXItem, true);
31105
- var version = "2.1.0-alpha.10";
31135
+ var version = "2.1.0-alpha.11";
31106
31136
  logger.info("Core version: " + version + ".");
31107
31137
 
31108
31138
  exports.AbstractPlugin = AbstractPlugin;
@@ -31194,7 +31224,6 @@ exports.SemanticMap = SemanticMap;
31194
31224
  exports.SerializationHelper = SerializationHelper;
31195
31225
  exports.ShaderFactory = ShaderFactory;
31196
31226
  exports.ShaderVariant = ShaderVariant;
31197
- exports.ShapeData = ShapeData;
31198
31227
  exports.SpriteLoader = SpriteLoader;
31199
31228
  exports.StaticValue = StaticValue;
31200
31229
  exports.TEMPLATE_USE_OFFSCREEN_CANVAS = TEMPLATE_USE_OFFSCREEN_CANVAS;