@galacean/effects-threejs 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 threejs plugin 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';
@@ -2045,7 +2045,7 @@ function getDirectStore(target) {
2045
2045
  this.onAwake();
2046
2046
  this.isAwakeCalled = true;
2047
2047
  }
2048
- if (item.getVisible() && this.enabled) {
2048
+ if (item.isActive && this.enabled) {
2049
2049
  this.start();
2050
2050
  this.enable();
2051
2051
  }
@@ -2090,7 +2090,7 @@ function getDirectStore(target) {
2090
2090
  get: /**
2091
2091
  * 组件是否可以更新,true 更新,false 不更新
2092
2092
  */ function get() {
2093
- return this.item.getVisible() && this.enabled;
2093
+ return this.item.isActive && this.enabled;
2094
2094
  }
2095
2095
  },
2096
2096
  {
@@ -3792,24 +3792,29 @@ exports.EffectComponent = __decorate([
3792
3792
 
3793
3793
  exports.PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
3794
3794
  _inherits(PostProcessVolume, Behaviour);
3795
- function PostProcessVolume() {
3795
+ function PostProcessVolume(engine) {
3796
3796
  var _this;
3797
- _this = Behaviour.apply(this, arguments) || this;
3798
- // Bloom
3799
- _this.bloomEnabled = true;
3800
- _this.threshold = 1.0;
3801
- _this.bloomIntensity = 1.0;
3802
- // ColorAdjustments
3803
- _this.brightness = 1.0;
3804
- _this.saturation = 1.0;
3805
- _this.contrast = 1.0;
3806
- // Vignette
3807
- _this.vignetteIntensity = 0.2;
3808
- _this.vignetteSmoothness = 0.4;
3809
- _this.vignetteRoundness = 1.0;
3810
- // ToneMapping
3811
- _this.toneMappingEnabled = true // 1: true, 0: false
3812
- ;
3797
+ _this = Behaviour.call(this, engine) || this;
3798
+ _this.bloom = {
3799
+ threshold: 0,
3800
+ intensity: 0,
3801
+ active: false
3802
+ };
3803
+ _this.vignette = {
3804
+ intensity: 0,
3805
+ smoothness: 0,
3806
+ roundness: 0,
3807
+ active: false
3808
+ };
3809
+ _this.tonemapping = {
3810
+ active: false
3811
+ };
3812
+ _this.colorAdjustments = {
3813
+ brightness: 0,
3814
+ saturation: 0,
3815
+ contrast: 0,
3816
+ active: false
3817
+ };
3813
3818
  return _this;
3814
3819
  }
3815
3820
  var _proto = PostProcessVolume.prototype;
@@ -3823,36 +3828,18 @@ exports.PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
3823
3828
  }(Behaviour);
3824
3829
  __decorate([
3825
3830
  serialize()
3826
- ], exports.PostProcessVolume.prototype, "bloomEnabled", void 0);
3827
- __decorate([
3828
- serialize()
3829
- ], exports.PostProcessVolume.prototype, "threshold", void 0);
3830
- __decorate([
3831
- serialize()
3832
- ], exports.PostProcessVolume.prototype, "bloomIntensity", void 0);
3833
- __decorate([
3834
- serialize()
3835
- ], exports.PostProcessVolume.prototype, "brightness", void 0);
3836
- __decorate([
3837
- serialize()
3838
- ], exports.PostProcessVolume.prototype, "saturation", void 0);
3839
- __decorate([
3840
- serialize()
3841
- ], exports.PostProcessVolume.prototype, "contrast", void 0);
3842
- __decorate([
3843
- serialize()
3844
- ], exports.PostProcessVolume.prototype, "vignetteIntensity", void 0);
3831
+ ], exports.PostProcessVolume.prototype, "bloom", void 0);
3845
3832
  __decorate([
3846
3833
  serialize()
3847
- ], exports.PostProcessVolume.prototype, "vignetteSmoothness", void 0);
3834
+ ], exports.PostProcessVolume.prototype, "vignette", void 0);
3848
3835
  __decorate([
3849
3836
  serialize()
3850
- ], exports.PostProcessVolume.prototype, "vignetteRoundness", void 0);
3837
+ ], exports.PostProcessVolume.prototype, "tonemapping", void 0);
3851
3838
  __decorate([
3852
3839
  serialize()
3853
- ], exports.PostProcessVolume.prototype, "toneMappingEnabled", void 0);
3840
+ ], exports.PostProcessVolume.prototype, "colorAdjustments", void 0);
3854
3841
  exports.PostProcessVolume = __decorate([
3855
- effectsClass("PostProcessVolume")
3842
+ effectsClass(DataType.PostProcessVolume)
3856
3843
  ], exports.PostProcessVolume);
3857
3844
 
3858
3845
  function _assert_this_initialized(self) {
@@ -6939,6 +6926,7 @@ exports.MaterialRenderType = void 0;
6939
6926
  _this.enabledMacros = {};
6940
6927
  _this.destroyed = false;
6941
6928
  _this.initialized = false;
6929
+ _this.shaderDirty = true;
6942
6930
  if (props) {
6943
6931
  var _props_name = props.name, name = _props_name === void 0 ? "Material" + seed$9++ : _props_name, _props_renderType = props.renderType, renderType = _props_renderType === void 0 ? 0 : _props_renderType, shader = props.shader, uniformSemantics = props.uniformSemantics;
6944
6932
  _this.name = name;
@@ -6966,6 +6954,19 @@ exports.MaterialRenderType = void 0;
6966
6954
  // OVERRIDE
6967
6955
  };
6968
6956
  _create_class(Material, [
6957
+ {
6958
+ key: "shader",
6959
+ get: function get() {
6960
+ return this._shader;
6961
+ },
6962
+ set: function set(value) {
6963
+ if (this._shader === value) {
6964
+ return;
6965
+ }
6966
+ this._shader = value;
6967
+ this.shaderDirty = true;
6968
+ }
6969
+ },
6969
6970
  {
6970
6971
  key: "blending",
6971
6972
  set: /******** effects-core 中会调用 引擎必须实现 ***********************/ /**
@@ -10333,15 +10334,15 @@ var BloomThresholdPass = /*#__PURE__*/ function(RenderPass) {
10333
10334
  renderer.setFramebuffer(this.framebuffer);
10334
10335
  };
10335
10336
  _proto.execute = function execute(renderer) {
10336
- var _renderer_renderingData_currentFrame_globalVolume;
10337
+ var _renderer_renderingData_currentFrame_globalVolume_bloom, _renderer_renderingData_currentFrame_globalVolume;
10337
10338
  renderer.clear({
10338
10339
  colorAction: exports.TextureStoreAction.clear,
10339
10340
  depthAction: exports.TextureStoreAction.clear,
10340
10341
  stencilAction: exports.TextureStoreAction.clear
10341
10342
  });
10342
10343
  this.screenMesh.material.setTexture("_MainTex", this.mainTexture);
10343
- var _renderer_renderingData_currentFrame_globalVolume_threshold;
10344
- 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;
10344
+ var _renderer_renderingData_currentFrame_globalVolume_bloom_threshold;
10345
+ 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;
10345
10346
  this.screenMesh.material.setFloat("_Threshold", threshold);
10346
10347
  renderer.renderMeshes([
10347
10348
  this.screenMesh
@@ -10554,25 +10555,44 @@ var ToneMappingPass = /*#__PURE__*/ function(RenderPass) {
10554
10555
  depthAction: exports.TextureStoreAction.clear,
10555
10556
  stencilAction: exports.TextureStoreAction.clear
10556
10557
  });
10557
- var _renderer_renderingData_currentFrame_globalVolume;
10558
- 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;
10558
+ var globalVolume = renderer.renderingData.currentFrame.globalVolume;
10559
+ var bloom = _extends({
10560
+ threshold: 0,
10561
+ intensity: 0,
10562
+ active: false
10563
+ }, globalVolume == null ? void 0 : globalVolume.bloom);
10564
+ var vignette = _extends({
10565
+ intensity: 0,
10566
+ smoothness: 0,
10567
+ roundness: 0,
10568
+ active: false
10569
+ }, globalVolume == null ? void 0 : globalVolume.vignette);
10570
+ var colorAdjustments = _extends({
10571
+ brightness: 0,
10572
+ saturation: 0,
10573
+ contrast: 0,
10574
+ active: false
10575
+ }, globalVolume == null ? void 0 : globalVolume.colorAdjustments);
10576
+ var tonemapping = _extends({
10577
+ active: false
10578
+ }, globalVolume == null ? void 0 : globalVolume.tonemapping);
10559
10579
  this.screenMesh.material.setTexture("_SceneTex", this.sceneTextureHandle.texture);
10560
- this.screenMesh.material.setFloat("_Brightness", brightness);
10561
- this.screenMesh.material.setFloat("_Saturation", saturation);
10562
- this.screenMesh.material.setFloat("_Contrast", contrast);
10563
- this.screenMesh.material.setInt("_UseBloom", Number(bloomEnabled));
10564
- if (bloomEnabled) {
10580
+ this.screenMesh.material.setFloat("_Brightness", Math.pow(2, colorAdjustments.brightness));
10581
+ this.screenMesh.material.setFloat("_Saturation", colorAdjustments.saturation * 0.01 + 1);
10582
+ this.screenMesh.material.setFloat("_Contrast", colorAdjustments.contrast * 0.01 + 1);
10583
+ this.screenMesh.material.setInt("_UseBloom", Number(bloom.active));
10584
+ if (bloom.active) {
10565
10585
  this.screenMesh.material.setTexture("_GaussianTex", this.mainTexture);
10566
- this.screenMesh.material.setFloat("_BloomIntensity", bloomIntensity);
10586
+ this.screenMesh.material.setFloat("_BloomIntensity", bloom.intensity);
10567
10587
  }
10568
- if (vignetteIntensity > 0) {
10569
- this.screenMesh.material.setFloat("_VignetteIntensity", vignetteIntensity);
10570
- this.screenMesh.material.setFloat("_VignetteSmoothness", vignetteSmoothness);
10571
- this.screenMesh.material.setFloat("_VignetteRoundness", vignetteRoundness);
10588
+ if (vignette.intensity > 0) {
10589
+ this.screenMesh.material.setFloat("_VignetteIntensity", vignette.intensity);
10590
+ this.screenMesh.material.setFloat("_VignetteSmoothness", vignette.smoothness);
10591
+ this.screenMesh.material.setFloat("_VignetteRoundness", vignette.roundness);
10572
10592
  this.screenMesh.material.setVector2("_VignetteCenter", new Vector2(0.5, 0.5));
10573
10593
  this.screenMesh.material.setVector3("_VignetteColor", new Vector3(0.0, 0.0, 0.0));
10574
10594
  }
10575
- this.screenMesh.material.setInt("_UseToneMapping", Number(toneMappingEnabled));
10595
+ this.screenMesh.material.setInt("_UseToneMapping", Number(tonemapping.active));
10576
10596
  renderer.renderMeshes([
10577
10597
  this.screenMesh
10578
10598
  ]);
@@ -15783,70 +15803,79 @@ exports.ShapeComponent = /*#__PURE__*/ function(MeshComponent) {
15783
15803
  };
15784
15804
  _proto.buildPath = function buildPath(data) {
15785
15805
  this.path.clear();
15786
- for(var _iterator = _create_for_of_iterator_helper_loose(data.shapeDatas), _step; !(_step = _iterator()).done;){
15787
- var shapeData = _step.value;
15788
- switch(shapeData.type){
15789
- case 0:
15790
- {
15791
- var customData = shapeData;
15792
- var points = customData.points;
15793
- var easingIns = customData.easingIns;
15794
- var easingOuts = customData.easingOuts;
15795
- this.curveValues = [];
15796
- for(var _iterator1 = _create_for_of_iterator_helper_loose(customData.shapes), _step1; !(_step1 = _iterator1()).done;){
15797
- var shape = _step1.value;
15798
- var indices = shape.indexes;
15799
- for(var i = 1; i < indices.length; i++){
15800
- var pointIndex = indices[i];
15801
- var lastPointIndex = indices[i - 1];
15802
- this.curveValues.push({
15803
- point: points[pointIndex.point],
15804
- controlPoint1: easingOuts[lastPointIndex.easingOut],
15805
- controlPoint2: easingIns[pointIndex.easingIn]
15806
- });
15807
- }
15808
- // Push the last curve
15806
+ var shapeData = data;
15807
+ switch(shapeData.type){
15808
+ case 0:
15809
+ {
15810
+ var customData = shapeData;
15811
+ var points = customData.points;
15812
+ var easingIns = customData.easingIns;
15813
+ var easingOuts = customData.easingOuts;
15814
+ this.curveValues = [];
15815
+ for(var _iterator = _create_for_of_iterator_helper_loose(customData.shapes), _step; !(_step = _iterator()).done;){
15816
+ var shape = _step.value;
15817
+ this.setFillColor(shape.fill);
15818
+ var indices = shape.indexes;
15819
+ for(var i = 1; i < indices.length; i++){
15820
+ var pointIndex = indices[i];
15821
+ var lastPointIndex = indices[i - 1];
15809
15822
  this.curveValues.push({
15810
- point: points[indices[0].point],
15811
- controlPoint1: easingOuts[indices[indices.length - 1].easingOut],
15812
- controlPoint2: easingIns[indices[0].easingIn]
15823
+ point: points[pointIndex.point],
15824
+ controlPoint1: easingOuts[lastPointIndex.easingOut],
15825
+ controlPoint2: easingIns[pointIndex.easingIn]
15813
15826
  });
15814
15827
  }
15815
- this.path.moveTo(this.curveValues[this.curveValues.length - 1].point.x, this.curveValues[this.curveValues.length - 1].point.y);
15816
- for(var _iterator2 = _create_for_of_iterator_helper_loose(this.curveValues), _step2; !(_step2 = _iterator2()).done;){
15817
- var curveValue = _step2.value;
15818
- var point = curveValue.point;
15819
- var control1 = curveValue.controlPoint1;
15820
- var control2 = curveValue.controlPoint2;
15821
- this.path.bezierCurveTo(control1.x, control1.y, control2.x, control2.y, point.x, point.y, 1);
15822
- }
15823
- break;
15824
- }
15825
- case 2:
15826
- {
15827
- var ellipseData = shapeData;
15828
- this.path.ellipse(0, 0, ellipseData.xRadius, ellipseData.yRadius);
15829
- break;
15830
- }
15831
- case 1:
15832
- {
15833
- var rectangleData = shapeData;
15834
- this.path.rect(-rectangleData.width / 2, rectangleData.height / 2, rectangleData.width, rectangleData.height);
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
- break;
15828
+ // Push the last curve
15829
+ this.curveValues.push({
15830
+ point: points[indices[0].point],
15831
+ controlPoint1: easingOuts[indices[indices.length - 1].easingOut],
15832
+ controlPoint2: easingIns[indices[0].easingIn]
15833
+ });
15842
15834
  }
15843
- case 3:
15844
- {
15845
- var polygonData = shapeData;
15846
- this.path.polyStar(polygonData.pointCount, polygonData.radius, polygonData.radius, polygonData.roundness, polygonData.roundness, StarType.Polygon);
15847
- break;
15835
+ this.path.moveTo(this.curveValues[this.curveValues.length - 1].point.x, this.curveValues[this.curveValues.length - 1].point.y);
15836
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(this.curveValues), _step1; !(_step1 = _iterator1()).done;){
15837
+ var curveValue = _step1.value;
15838
+ var point = curveValue.point;
15839
+ var control1 = curveValue.controlPoint1;
15840
+ var control2 = curveValue.controlPoint2;
15841
+ this.path.bezierCurveTo(control1.x, control1.y, control2.x, control2.y, point.x, point.y, 1);
15848
15842
  }
15849
- }
15843
+ break;
15844
+ }
15845
+ case 2:
15846
+ {
15847
+ var ellipseData = shapeData;
15848
+ this.path.ellipse(0, 0, ellipseData.xRadius, ellipseData.yRadius);
15849
+ this.setFillColor(ellipseData.fill);
15850
+ break;
15851
+ }
15852
+ case 1:
15853
+ {
15854
+ var rectangleData = shapeData;
15855
+ this.path.rect(-rectangleData.width / 2, rectangleData.height / 2, rectangleData.width, rectangleData.height);
15856
+ this.setFillColor(rectangleData.fill);
15857
+ break;
15858
+ }
15859
+ case 4:
15860
+ {
15861
+ var starData = shapeData;
15862
+ this.path.polyStar(starData.pointCount, starData.outerRadius, starData.innerRadius, starData.outerRoundness, starData.innerRoundness, StarType.Star);
15863
+ this.setFillColor(starData.fill);
15864
+ break;
15865
+ }
15866
+ case 3:
15867
+ {
15868
+ var polygonData = shapeData;
15869
+ this.path.polyStar(polygonData.pointCount, polygonData.radius, polygonData.radius, polygonData.roundness, polygonData.roundness, StarType.Polygon);
15870
+ this.setFillColor(polygonData.fill);
15871
+ break;
15872
+ }
15873
+ }
15874
+ };
15875
+ _proto.setFillColor = function setFillColor(fill) {
15876
+ if (fill) {
15877
+ var color = fill.color;
15878
+ this.material.setColor("_Color", new Color(color.r, color.g, color.b, color.a));
15850
15879
  }
15851
15880
  };
15852
15881
  _proto.fromData = function fromData(data) {
@@ -15866,26 +15895,24 @@ exports.ShapeComponent = /*#__PURE__*/ function(MeshComponent) {
15866
15895
  exports.ShapeComponent = __decorate([
15867
15896
  effectsClass("ShapeComponent")
15868
15897
  ], exports.ShapeComponent);
15869
- exports.ShapeType = void 0;
15870
- (function(ShapeType) {
15898
+ exports.ShapePrimitiveType = void 0;
15899
+ (function(ShapePrimitiveType) {
15871
15900
  /**
15872
15901
  * 自定义图形
15873
- */ ShapeType[ShapeType["Custom"] = 0] = "Custom";
15902
+ */ ShapePrimitiveType[ShapePrimitiveType["Custom"] = 0] = "Custom";
15874
15903
  /**
15875
15904
  * 矩形
15876
- */ ShapeType[ShapeType["Rectangle"] = 1] = "Rectangle";
15905
+ */ ShapePrimitiveType[ShapePrimitiveType["Rectangle"] = 1] = "Rectangle";
15877
15906
  /**
15878
15907
  * 椭圆
15879
- */ ShapeType[ShapeType["Ellipse"] = 2] = "Ellipse";
15908
+ */ ShapePrimitiveType[ShapePrimitiveType["Ellipse"] = 2] = "Ellipse";
15880
15909
  /**
15881
15910
  * 多边形
15882
- */ ShapeType[ShapeType["Polygon"] = 3] = "Polygon";
15911
+ */ ShapePrimitiveType[ShapePrimitiveType["Polygon"] = 3] = "Polygon";
15883
15912
  /**
15884
15913
  * 星形
15885
- */ ShapeType[ShapeType["Star"] = 4] = "Star";
15886
- })(exports.ShapeType || (exports.ShapeType = {}));
15887
- var ShapeData = function ShapeData() {
15888
- };
15914
+ */ ShapePrimitiveType[ShapePrimitiveType["Star"] = 4] = "Star";
15915
+ })(exports.ShapePrimitiveType || (exports.ShapePrimitiveType = {}));
15889
15916
  exports.ShapeConnectType = void 0;
15890
15917
  (function(ShapeConnectType) {})(exports.ShapeConnectType || (exports.ShapeConnectType = {}));
15891
15918
  exports.ShapePointType = void 0;
@@ -16388,7 +16415,6 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16388
16415
  ]
16389
16416
  };
16390
16417
  /** 是否响应点击和拖拽交互事件 */ _this._interactive = true;
16391
- _this.hasBeenAddedToComposition = false;
16392
16418
  _this.getHitTestParams = function(force) {
16393
16419
  if (!_this.clickable) {
16394
16420
  return;
@@ -16425,7 +16451,6 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16425
16451
  ];
16426
16452
  };
16427
16453
  _proto.onStart = function onStart() {
16428
- var _this = this;
16429
16454
  var options = this.item.props.content.options;
16430
16455
  var env = this.item.engine.renderer.env;
16431
16456
  var composition = this.item.composition;
@@ -16449,16 +16474,25 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16449
16474
  this.materials = this.previewContent.mesh.materials;
16450
16475
  }
16451
16476
  this.item.getHitTestParams = this.getHitTestParams;
16452
- this.item.onEnd = function() {
16453
- if (_this.item && _this.item.composition) {
16454
- var _this_previewContent;
16455
- _this.item.composition.removeInteractiveItem(_this.item, _this.item.props.content.options.type);
16456
- _this.clickable = false;
16457
- _this.hasBeenAddedToComposition = false;
16458
- (_this_previewContent = _this.previewContent) == null ? void 0 : _this_previewContent.mesh.dispose();
16459
- _this.endDragTarget();
16460
- }
16461
- };
16477
+ };
16478
+ _proto.onDisable = function onDisable() {
16479
+ if (this.item && this.item.composition) {
16480
+ var _this_previewContent;
16481
+ this.item.composition.removeInteractiveItem(this.item, this.item.props.content.options.type);
16482
+ this.clickable = false;
16483
+ (_this_previewContent = this.previewContent) == null ? void 0 : _this_previewContent.mesh.dispose();
16484
+ this.endDragTarget();
16485
+ }
16486
+ };
16487
+ _proto.onEnable = function onEnable() {
16488
+ var type = this.interactData.options.type;
16489
+ if (type === InteractType.CLICK) {
16490
+ this.clickable = true;
16491
+ }
16492
+ var options = this.item.props.content.options;
16493
+ if (this.item.composition) {
16494
+ this.item.composition.addInteractiveItem(this.item, options.type);
16495
+ }
16462
16496
  };
16463
16497
  _proto.onUpdate = function onUpdate(dt) {
16464
16498
  var _this_previewContent;
@@ -16466,15 +16500,6 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16466
16500
  return;
16467
16501
  }
16468
16502
  (_this_previewContent = this.previewContent) == null ? void 0 : _this_previewContent.updateMesh();
16469
- if (!this.hasBeenAddedToComposition && this.item.composition) {
16470
- var type = this.interactData.options.type;
16471
- if (type === InteractType.CLICK) {
16472
- this.clickable = true;
16473
- }
16474
- var options = this.item.props.content.options;
16475
- this.item.composition.addInteractiveItem(this.item, options.type);
16476
- this.hasBeenAddedToComposition = true;
16477
- }
16478
16503
  if (!this.dragEvent || !this.bouncingArg) {
16479
16504
  return;
16480
16505
  }
@@ -16888,6 +16913,7 @@ var SpriteLoader = /*#__PURE__*/ function(AbstractPlugin) {
16888
16913
  if (inputCount === void 0) inputCount = 0;
16889
16914
  this.onPlayablePlayFlag = true;
16890
16915
  this.onPlayablePauseFlag = false;
16916
+ this.duration = 0;
16891
16917
  this.destroyed = false;
16892
16918
  this.inputs = [];
16893
16919
  this.inputOuputPorts = [];
@@ -16980,6 +17006,12 @@ var SpriteLoader = /*#__PURE__*/ function(AbstractPlugin) {
16980
17006
  _proto.getTime = function getTime() {
16981
17007
  return this.time;
16982
17008
  };
17009
+ _proto.setDuration = function setDuration(duration) {
17010
+ this.duration = duration;
17011
+ };
17012
+ _proto.getDuration = function getDuration() {
17013
+ return this.duration;
17014
+ };
16983
17015
  _proto.getPlayState = function getPlayState() {
16984
17016
  return this.playState;
16985
17017
  };
@@ -17696,17 +17728,15 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17696
17728
  /**
17697
17729
  * 元素动画结束时行为(如何处理元素)
17698
17730
  */ _this.endBehavior = EndBehavior.forward;
17699
- /**
17700
- * 元素是否可用
17701
- */ _this.ended = false;
17702
- _this.reusable = false;
17703
17731
  _this.type = ItemType.base;
17704
17732
  _this.isDuringPlay = false;
17705
17733
  _this.components = [];
17706
17734
  _this.rendererComponents = [];
17707
17735
  /**
17708
- * 元素可见性,该值的改变会触发 `handleVisibleChanged` 回调
17709
- * @protected
17736
+ * 元素是否激活
17737
+ */ _this.active = true;
17738
+ /**
17739
+ * 元素组件是否显示,用于批量开关元素组件
17710
17740
  */ _this.visible = true;
17711
17741
  /**
17712
17742
  * 元素动画的速度
@@ -17837,12 +17867,6 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17837
17867
  }
17838
17868
  };
17839
17869
  /**
17840
- * 元素动画结束播放时回调函数
17841
- * @override
17842
- */ _proto.onEnd = function onEnd() {
17843
- // OVERRIDE
17844
- };
17845
- /**
17846
17870
  * 通过指定 r、g、b、a 值设置元素的颜色
17847
17871
  * @param {number} r
17848
17872
  * @param {number} g
@@ -17855,17 +17879,27 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17855
17879
  * @param opacity - 透明度值,范围 [0,1]
17856
17880
  */ _proto.setOpacity = function setOpacity(opacity) {};
17857
17881
  /**
17858
- * 获取元素显隐属性
17859
- */ _proto.getVisible = function getVisible() {
17860
- return this.visible;
17882
+ * 激活或停用 VFXItem
17883
+ */ _proto.setActive = function setActive(value) {
17884
+ if (this.active !== value) {
17885
+ this.active = !!value;
17886
+ this.onActiveChanged();
17887
+ }
17861
17888
  };
17862
17889
  /**
17863
- * 设置元素显隐属性 会触发 `handleVisibleChanged` 回调
17890
+ * 设置元素的显隐,该设置会批量开关元素组件
17864
17891
  */ _proto.setVisible = function setVisible(visible) {
17865
- if (this.visible !== visible) {
17866
- this.visible = !!visible;
17867
- this.onActiveChanged();
17892
+ for(var _iterator = _create_for_of_iterator_helper_loose(this.components), _step; !(_step = _iterator()).done;){
17893
+ var component = _step.value;
17894
+ component.enabled = visible;
17868
17895
  }
17896
+ this.visible = visible;
17897
+ };
17898
+ /**
17899
+ * 元素组件显隐状态
17900
+ * @deprecated use isVisible instead
17901
+ */ _proto.getVisible = function getVisible() {
17902
+ return this.visible;
17869
17903
  };
17870
17904
  /**
17871
17905
  * 获取元素变换包括位置、旋转、缩放
@@ -17947,14 +17981,6 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17947
17981
  this.transform.assignWorldTRS(pos);
17948
17982
  return pos;
17949
17983
  };
17950
- /**
17951
- * 是否到达元素的结束时间
17952
- * @param now
17953
- * @returns
17954
- */ _proto.isEnded = function isEnded(now) {
17955
- // at least 1 ms
17956
- return now - this.duration > 0.001;
17957
- };
17958
17984
  _proto.find = function find(name) {
17959
17985
  var _queue;
17960
17986
  if (this.name === name) {
@@ -17978,7 +18004,7 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17978
18004
  * @internal
17979
18005
  */ _proto.beginPlay = function beginPlay() {
17980
18006
  this.isDuringPlay = true;
17981
- if (this.composition && this.visible && !this.isEnabled) {
18007
+ if (this.composition && this.active && !this.isEnabled) {
17982
18008
  this.onEnable();
17983
18009
  }
17984
18010
  for(var _iterator = _create_for_of_iterator_helper_loose(this.children), _step; !(_step = _iterator()).done;){
@@ -18254,6 +18280,22 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
18254
18280
  }
18255
18281
  }
18256
18282
  }
18283
+ },
18284
+ {
18285
+ key: "isActive",
18286
+ get: /**
18287
+ * 当前 VFXItem 是否激活
18288
+ */ function get() {
18289
+ return this.active;
18290
+ }
18291
+ },
18292
+ {
18293
+ key: "isVisible",
18294
+ get: /**
18295
+ * 元素组件显隐状态
18296
+ */ function get() {
18297
+ return this.visible;
18298
+ }
18257
18299
  }
18258
18300
  ]);
18259
18301
  return VFXItem;
@@ -23018,6 +23060,7 @@ exports.TrackAsset = /*#__PURE__*/ function(PlayableAsset) {
23018
23060
  for(var _iterator = _create_for_of_iterator_helper_loose(timelineClips), _step; !(_step = _iterator()).done;){
23019
23061
  var timelineClip = _step.value;
23020
23062
  var clipPlayable = this.createClipPlayable(graph, timelineClip);
23063
+ clipPlayable.setDuration(timelineClip.duration);
23021
23064
  var clip = new RuntimeClip(timelineClip, clipPlayable, mixer, this);
23022
23065
  runtimeClips.push(clip);
23023
23066
  mixer.addInput(clipPlayable, 0);
@@ -23121,14 +23164,6 @@ var RuntimeClip = /*#__PURE__*/ function() {
23121
23164
  this.playable.setTime(clipTime);
23122
23165
  // 判断动画是否结束
23123
23166
  if (ended) {
23124
- if (_instanceof1(boundObject, exports.VFXItem) && !boundObject.ended) {
23125
- boundObject.ended = true;
23126
- boundObject.onEnd();
23127
- if (!boundObject.compositionReusable && !boundObject.reusable) {
23128
- boundObject.dispose();
23129
- this.playable.dispose();
23130
- }
23131
- }
23132
23167
  if (this.playable.getPlayState() === PlayState.Playing) {
23133
23168
  this.playable.pause();
23134
23169
  }
@@ -23171,26 +23206,10 @@ var ActivationMixerPlayable = /*#__PURE__*/ function(Playable) {
23171
23206
  }
23172
23207
  if (hasInput) {
23173
23208
  boundItem.transform.setValid(true);
23174
- this.showRendererComponents(boundItem);
23209
+ boundItem.setActive(true);
23175
23210
  } else {
23176
23211
  boundItem.transform.setValid(false);
23177
- this.hideRendererComponents(boundItem);
23178
- }
23179
- };
23180
- _proto.hideRendererComponents = function hideRendererComponents(item) {
23181
- for(var _iterator = _create_for_of_iterator_helper_loose(item.rendererComponents), _step; !(_step = _iterator()).done;){
23182
- var rendererComponent = _step.value;
23183
- if (rendererComponent.enabled) {
23184
- rendererComponent.enabled = false;
23185
- }
23186
- }
23187
- };
23188
- _proto.showRendererComponents = function showRendererComponents(item) {
23189
- for(var _iterator = _create_for_of_iterator_helper_loose(item.rendererComponents), _step; !(_step = _iterator()).done;){
23190
- var rendererComponent = _step.value;
23191
- if (!rendererComponent.enabled) {
23192
- rendererComponent.enabled = true;
23193
- }
23212
+ boundItem.setActive(false);
23194
23213
  }
23195
23214
  };
23196
23215
  return ActivationMixerPlayable;
@@ -23218,7 +23237,7 @@ var PropertyClipPlayable = /*#__PURE__*/ function(Playable) {
23218
23237
  }
23219
23238
  var _proto = PropertyClipPlayable.prototype;
23220
23239
  _proto.processFrame = function processFrame(context) {
23221
- this.value = this.curve.getValue(this.time);
23240
+ this.value = this.curve.getValue(this.time / this.getDuration());
23222
23241
  };
23223
23242
  return PropertyClipPlayable;
23224
23243
  }(Playable);
@@ -23736,9 +23755,6 @@ var SerializationHelper = /*#__PURE__*/ function() {
23736
23755
  var track = _step.value;
23737
23756
  var boundObject = track.boundObject;
23738
23757
  if (_instanceof1(boundObject, exports.VFXItem)) {
23739
- if (_instanceof1(track, exports.ObjectBindingTrack)) {
23740
- boundObject.reusable = value;
23741
- }
23742
23758
  var subCompositionComponent = boundObject.getComponent(CompositionComponent);
23743
23759
  if (subCompositionComponent) {
23744
23760
  subCompositionComponent.setReusable(value);
@@ -23783,16 +23799,16 @@ var SerializationHelper = /*#__PURE__*/ function() {
23783
23799
  }
23784
23800
  }
23785
23801
  };
23786
- _proto.showItems = function showItems() {
23802
+ _proto.onEnable = function onEnable() {
23787
23803
  for(var _iterator = _create_for_of_iterator_helper_loose(this.items), _step; !(_step = _iterator()).done;){
23788
23804
  var item = _step.value;
23789
- item.setVisible(true);
23805
+ item.setActive(true);
23790
23806
  }
23791
23807
  };
23792
- _proto.hideItems = function hideItems() {
23808
+ _proto.onDisable = function onDisable() {
23793
23809
  for(var _iterator = _create_for_of_iterator_helper_loose(this.items), _step; !(_step = _iterator()).done;){
23794
23810
  var item = _step.value;
23795
- item.setVisible(false);
23811
+ item.setActive(false);
23796
23812
  }
23797
23813
  };
23798
23814
  _proto.onDestroy = function onDestroy() {
@@ -23808,7 +23824,7 @@ var SerializationHelper = /*#__PURE__*/ function() {
23808
23824
  _proto.hitTest = function hitTest(ray, x, y, regions, force, options) {
23809
23825
  var _this, _loop = function(i) {
23810
23826
  var item = _this.items[i];
23811
- if (item.getVisible() && item.transform.getValid() && !exports.VFXItem.isComposition(item) && !skip(item)) {
23827
+ if (item.isActive && item.transform.getValid() && !exports.VFXItem.isComposition(item) && !skip(item)) {
23812
23828
  var hitParams = item.getHitTestParams(force);
23813
23829
  if (hitParams) {
23814
23830
  var success = false;
@@ -23950,9 +23966,9 @@ var SubCompositionMixerPlayable = /*#__PURE__*/ function(Playable) {
23950
23966
  }
23951
23967
  }
23952
23968
  if (hasInput) {
23953
- compositionComponent.showItems();
23969
+ compositionComponent.item.setActive(true);
23954
23970
  } else {
23955
- compositionComponent.hideItems();
23971
+ compositionComponent.item.setActive(false);
23956
23972
  }
23957
23973
  };
23958
23974
  return SubCompositionMixerPlayable;
@@ -28407,6 +28423,9 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28407
28423
  * 动画播放速度
28408
28424
  */ _this.speed = 1;
28409
28425
  /**
28426
+ * 合成是否结束
28427
+ */ _this.isEnded = false;
28428
+ /**
28410
28429
  * 用于保存与当前合成相关的插件数据
28411
28430
  */ _this.loaderData = {};
28412
28431
  /**
@@ -28428,6 +28447,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28428
28447
  * 合成暂停/播放 标识
28429
28448
  */ _this.paused = false;
28430
28449
  _this.lastVideoUpdateTime = 0;
28450
+ _this.isEndCalled = false;
28431
28451
  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;
28432
28452
  _this.compositionSourceManager = new CompositionSourceManager(scene, renderer.engine);
28433
28453
  if (reusable) {
@@ -28517,7 +28537,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28517
28537
  * @param visible - 是否可见
28518
28538
  */ _proto.setVisible = function setVisible(visible) {
28519
28539
  this.items.forEach(function(item) {
28520
- item.setVisible(visible);
28540
+ item.setActive(visible);
28521
28541
  });
28522
28542
  };
28523
28543
  /**
@@ -28527,7 +28547,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28527
28547
  return this.speed;
28528
28548
  };
28529
28549
  _proto.play = function play() {
28530
- if (this.rootItem.ended && this.reusable) {
28550
+ if (this.isEnded && this.reusable) {
28531
28551
  this.restart();
28532
28552
  }
28533
28553
  if (this.rootComposition.isStartCalled) {
@@ -28618,7 +28638,8 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28618
28638
  * 重置状态函数
28619
28639
  */ _proto.reset = function reset() {
28620
28640
  this.rendererOptions = null;
28621
- this.rootItem.ended = false;
28641
+ this.isEnded = false;
28642
+ this.isEndCalled = false;
28622
28643
  this.rootComposition.time = 0;
28623
28644
  this.pluginSystem.resetComposition(this, this.renderFrame);
28624
28645
  };
@@ -28670,12 +28691,18 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28670
28691
  this.sceneTicking.lateUpdate.tick(dt);
28671
28692
  this.updateCamera();
28672
28693
  this.prepareRender();
28694
+ if (this.isEnded && !this.isEndCalled) {
28695
+ this.isEndCalled = true;
28696
+ this.emit("end", {
28697
+ composition: this
28698
+ });
28699
+ }
28673
28700
  if (this.shouldDispose()) {
28674
28701
  this.dispose();
28675
28702
  }
28676
28703
  };
28677
28704
  _proto.shouldDispose = function shouldDispose() {
28678
- return this.rootItem.ended && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
28705
+ return this.isEnded && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
28679
28706
  };
28680
28707
  _proto.getUpdateTime = function getUpdateTime(t) {
28681
28708
  var startTimeInMs = this.startTime * 1000;
@@ -28766,11 +28793,11 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28766
28793
  */ _proto.updateRootComposition = function updateRootComposition(deltaTime) {
28767
28794
  if (this.rootComposition.isActiveAndEnabled) {
28768
28795
  var localTime = this.time + deltaTime - this.rootItem.start;
28769
- var ended = false;
28796
+ var isEnded = false;
28770
28797
  var duration = this.rootItem.duration;
28771
28798
  var endBehavior = this.rootItem.endBehavior;
28772
28799
  if (localTime - duration > 0.001) {
28773
- ended = true;
28800
+ isEnded = true;
28774
28801
  switch(endBehavior){
28775
28802
  case EndBehavior.restart:
28776
28803
  {
@@ -28794,11 +28821,14 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28794
28821
  }
28795
28822
  }
28796
28823
  this.rootComposition.time = localTime;
28797
- if (ended && !this.rootItem.ended) {
28798
- this.rootItem.ended = true;
28799
- this.emit("end", {
28800
- composition: this
28801
- });
28824
+ // end state changed, handle onEnd flags
28825
+ if (this.isEnded !== isEnded) {
28826
+ if (isEnded) {
28827
+ this.isEnded = true;
28828
+ } else {
28829
+ this.isEnded = false;
28830
+ this.isEndCalled = false;
28831
+ }
28802
28832
  }
28803
28833
  }
28804
28834
  };
@@ -31124,7 +31154,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem, true);
31124
31154
  registerPlugin("particle", ParticleLoader, exports.VFXItem, true);
31125
31155
  registerPlugin("cal", CalculateLoader, exports.VFXItem, true);
31126
31156
  registerPlugin("interact", InteractLoader, exports.VFXItem, true);
31127
- var version$1 = "2.1.0-alpha.10";
31157
+ var version$1 = "2.1.0-alpha.11";
31128
31158
  logger.info("Core version: " + version$1 + ".");
31129
31159
 
31130
31160
  var _obj;
@@ -32768,7 +32798,7 @@ setMaxSpriteMeshItemCount(8);
32768
32798
  */ Mesh.create = function(engine, props) {
32769
32799
  return new ThreeMesh(engine, props);
32770
32800
  };
32771
- var version = "2.1.0-alpha.10";
32801
+ var version = "2.1.0-alpha.11";
32772
32802
  logger.info("THREEJS plugin version: " + version + ".");
32773
32803
 
32774
32804
  exports.AbstractPlugin = AbstractPlugin;
@@ -32864,7 +32894,6 @@ exports.SemanticMap = SemanticMap;
32864
32894
  exports.SerializationHelper = SerializationHelper;
32865
32895
  exports.ShaderFactory = ShaderFactory;
32866
32896
  exports.ShaderVariant = ShaderVariant;
32867
- exports.ShapeData = ShapeData;
32868
32897
  exports.SpriteLoader = SpriteLoader;
32869
32898
  exports.StaticValue = StaticValue;
32870
32899
  exports.TEMPLATE_USE_OFFSCREEN_CANVAS = TEMPLATE_USE_OFFSCREEN_CANVAS;