@galacean/effects-threejs 2.4.0-beta.1 → 2.4.0-beta.3

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.4.0-beta.1
6
+ * Version: v2.4.0-beta.3
7
7
  */
8
8
 
9
9
  'use strict';
@@ -6130,8 +6130,7 @@ function setSideMode(material, side) {
6130
6130
  material.cullFace = side === SideMode.BACK ? glContext.BACK : glContext.FRONT;
6131
6131
  }
6132
6132
  }
6133
- function setMaskMode(material, maskMode, colorMask) {
6134
- if (colorMask === void 0) colorMask = false;
6133
+ function setMaskMode(material, maskMode) {
6135
6134
  switch(maskMode){
6136
6135
  case undefined:
6137
6136
  material.stencilTest = false;
@@ -6146,13 +6145,6 @@ function setMaskMode(material, maskMode, colorMask) {
6146
6145
  glContext.REPLACE,
6147
6146
  glContext.REPLACE
6148
6147
  ];
6149
- // 关闭/开启蒙版元素的颜色写入
6150
- material.colorMask = [
6151
- colorMask,
6152
- colorMask,
6153
- colorMask,
6154
- colorMask
6155
- ];
6156
6148
  break;
6157
6149
  case exports.MaskMode.OBSCURED:
6158
6150
  material.stencilTest = true;
@@ -7624,13 +7616,6 @@ exports.MaterialRenderType = void 0;
7624
7616
  set: /**
7625
7617
  * 设置 Material 的通过 alpha 值决定临时覆盖值计算的开关
7626
7618
  * @param value - 是否开启 alpha 抖动
7627
- */ function set(value) {}
7628
- },
7629
- {
7630
- key: "colorMask",
7631
- set: /**
7632
- * 设置 Material 颜色缓冲区的写入开关
7633
- * @param value
7634
7619
  */ function set(value) {}
7635
7620
  },
7636
7621
  {
@@ -7689,10 +7674,15 @@ var MaskProcessor = /*#__PURE__*/ function() {
7689
7674
  } else if (mode === ObscuredMode.OBSCURED || mode === ObscuredMode.REVERSE_OBSCURED) {
7690
7675
  maskMode = mode === ObscuredMode.OBSCURED ? exports.MaskMode.OBSCURED : exports.MaskMode.REVERSE_OBSCURED;
7691
7676
  this.maskRef = ref.maskManager.getRefValue();
7677
+ this.maskable = ref;
7692
7678
  }
7693
7679
  }
7694
7680
  return maskMode;
7695
7681
  };
7682
+ _proto.drawStencilMask = function drawStencilMask(renderer) {
7683
+ var _this_maskable;
7684
+ (_this_maskable = this.maskable) == null ? void 0 : _this_maskable.drawStencilMask(renderer);
7685
+ };
7696
7686
  return MaskProcessor;
7697
7687
  }();
7698
7688
 
@@ -12599,17 +12589,16 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12599
12589
  if (!this.getVisible()) {
12600
12590
  return;
12601
12591
  }
12602
- if (renderer.renderingData.currentFrame.globalUniforms) {
12603
- renderer.setGlobalMatrix("effects_ObjectToWorld", this.transform.getWorldMatrix());
12604
- }
12605
- for(var i = 0; i < this.materials.length; i++){
12606
- var material = this.materials[i];
12607
- material.setVector2("_Size", this.transform.size);
12608
- if (this.renderer.renderMode === RenderMode.BILLBOARD || this.renderer.renderMode === RenderMode.VERTICAL_BILLBOARD || this.renderer.renderMode === RenderMode.HORIZONTAL_BILLBOARD) {
12609
- material.setVector3("_Scale", this.transform.scale);
12610
- }
12611
- renderer.drawGeometry(this.geometry, material, i);
12612
- }
12592
+ this.maskManager.drawStencilMask(renderer);
12593
+ this.draw(renderer);
12594
+ };
12595
+ /**
12596
+ * @internal
12597
+ */ _proto.drawStencilMask = function drawStencilMask(renderer) {
12598
+ var previousColorMask = this.material.colorMask;
12599
+ this.material.colorMask = false;
12600
+ this.draw(renderer);
12601
+ this.material.colorMask = previousColorMask;
12613
12602
  };
12614
12603
  _proto.onStart = function onStart() {
12615
12604
  this.item.getHitTestParams = this.getHitTestParams;
@@ -12727,7 +12716,7 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12727
12716
  ] : undefined;
12728
12717
  setBlendMode(material, blendMode);
12729
12718
  // 兼容旧数据中模板需要渲染的情况
12730
- setMaskMode(material, maskMode, !!this.renderer.shape);
12719
+ setMaskMode(material, maskMode);
12731
12720
  setSideMode(material, side);
12732
12721
  material.shader.shaderData.properties = '_MainTex("_MainTex",2D) = "white" {}';
12733
12722
  material.setColor("_Color", new Color(0, 0, 0, 1));
@@ -12747,6 +12736,19 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12747
12736
  }
12748
12737
  return material;
12749
12738
  };
12739
+ _proto.draw = function draw(renderer) {
12740
+ if (renderer.renderingData.currentFrame.globalUniforms) {
12741
+ renderer.setGlobalMatrix("effects_ObjectToWorld", this.transform.getWorldMatrix());
12742
+ }
12743
+ for(var i = 0; i < this.materials.length; i++){
12744
+ var material = this.materials[i];
12745
+ material.setVector2("_Size", this.transform.size);
12746
+ if (this.renderer.renderMode === RenderMode.BILLBOARD || this.renderer.renderMode === RenderMode.VERTICAL_BILLBOARD || this.renderer.renderMode === RenderMode.HORIZONTAL_BILLBOARD) {
12747
+ material.setVector3("_Scale", this.transform.scale);
12748
+ }
12749
+ renderer.drawGeometry(this.geometry, material, i);
12750
+ }
12751
+ };
12750
12752
  _proto.fromData = function fromData(data) {
12751
12753
  RendererComponent.prototype.fromData.call(this, data);
12752
12754
  var _data_renderer;
@@ -15387,6 +15389,7 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
15387
15389
  };
15388
15390
  _this.duringPlay = false;
15389
15391
  /** 是否响应点击和拖拽交互事件 */ _this._interactive = true;
15392
+ _this.lastTime = -1;
15390
15393
  _this.getHitTestParams = function(force) {
15391
15394
  if (!_this.clickable) {
15392
15395
  return;
@@ -15477,11 +15480,21 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
15477
15480
  var _this_previewContent;
15478
15481
  this.duringPlay = true;
15479
15482
  // trigger messageBegin when item enter
15480
- if (this.item.time > 0 && this.item.time - dt / 1000 <= 0) {
15481
- var _this_item_composition;
15482
- var options = this.item.props.content.options;
15483
- (_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.addInteractiveItem(this.item, options.type);
15483
+ if (this.lastTime <= this.item.time) {
15484
+ if (this.item.time >= 0 && this.lastTime < 0) {
15485
+ var _this_item_composition;
15486
+ var options = this.item.props.content.options;
15487
+ (_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.addInteractiveItem(this.item, options.type);
15488
+ }
15489
+ } else {
15490
+ // loop trigger
15491
+ if (this.item.time >= 0) {
15492
+ var _this_item_composition1;
15493
+ var options1 = this.item.props.content.options;
15494
+ (_this_item_composition1 = this.item.composition) == null ? void 0 : _this_item_composition1.addInteractiveItem(this.item, options1.type);
15495
+ }
15484
15496
  }
15497
+ this.lastTime = this.item.time;
15485
15498
  (_this_previewContent = this.previewContent) == null ? void 0 : _this_previewContent.updateMesh();
15486
15499
  if (!this.dragEvent || !this.bouncingArg) {
15487
15500
  return;
@@ -18613,6 +18626,7 @@ function modifyMaxKeyframeShader(shader, maxVertex, maxFrag) {
18613
18626
  this.particleMesh.mesh.material.setVector4("uParams", uParams.set(time, this.item.duration, 0, 0));
18614
18627
  };
18615
18628
  _proto.render = function render(renderer) {
18629
+ this.maskManager.drawStencilMask(renderer);
18616
18630
  for(var _iterator = _create_for_of_iterator_helper_loose(this.meshes), _step; !(_step = _iterator()).done;){
18617
18631
  var mesh = _step.value;
18618
18632
  mesh.render(renderer);
@@ -19562,6 +19576,7 @@ exports.ParticleSystem = /*#__PURE__*/ function(Component) {
19562
19576
  }
19563
19577
  this.renderer = new ParticleSystemRenderer(this.engine, particleMeshProps, trailMeshProps);
19564
19578
  this.renderer.item = this.item;
19579
+ this.renderer.maskManager = this.maskManager;
19565
19580
  this.meshes = this.renderer.meshes;
19566
19581
  var interaction = props.interaction;
19567
19582
  if (interaction) {
@@ -31645,7 +31660,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem);
31645
31660
  registerPlugin("particle", ParticleLoader, exports.VFXItem);
31646
31661
  registerPlugin("cal", CalculateLoader, exports.VFXItem);
31647
31662
  registerPlugin("interact", InteractLoader, exports.VFXItem);
31648
- var version$1 = "2.4.0-beta.1";
31663
+ var version$1 = "2.4.0-beta.3";
31649
31664
  logger.info("Core version: " + version$1 + ".");
31650
31665
 
31651
31666
  var _obj;
@@ -32238,6 +32253,17 @@ var _obj3;
32238
32253
  this.material.side = THREE__namespace.BackSide;
32239
32254
  }
32240
32255
  }
32256
+ },
32257
+ {
32258
+ key: "colorMask",
32259
+ get: function get() {
32260
+ return this.material.colorWrite;
32261
+ },
32262
+ set: /**
32263
+ * 获取颜色写入开关
32264
+ */ function set(value) {
32265
+ this.material.colorWrite = value;
32266
+ }
32241
32267
  }
32242
32268
  ]);
32243
32269
  return ThreeMaterial;
@@ -33236,7 +33262,7 @@ setMaxSpriteMeshItemCount(8);
33236
33262
  */ Mesh.create = function(engine, props) {
33237
33263
  return new ThreeMesh(engine, props);
33238
33264
  };
33239
- var version = "2.4.0-beta.1";
33265
+ var version = "2.4.0-beta.3";
33240
33266
  logger.info("THREEJS plugin version: " + version + ".");
33241
33267
 
33242
33268
  exports.AbstractPlugin = AbstractPlugin;