@galacean/effects-threejs 2.0.0-beta.0 → 2.0.0-beta.1

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.0.0-beta.0
6
+ * Version: v2.0.0-beta.1
7
7
  */
8
8
 
9
9
  'use strict';
@@ -4589,97 +4589,15 @@ function getDirectStore(target) {
4589
4589
  return decoratorInitialStore.get(classKey);
4590
4590
  }
4591
4591
 
4592
- function _assert_this_initialized(self) {
4593
- if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
4594
- return self;
4595
- }
4596
-
4597
- var EventEmitter = function EventEmitter() {
4598
- var _this = this;
4599
- var _this1 = this;
4600
- this.listeners = {};
4601
- /**
4602
- * 移除事件监听器
4603
- * @param eventName - 事件名称
4604
- * @param listener - 事件监听器
4605
- * @returns
4606
- */ this.off = function(eventName, listener) {
4607
- if (!_this.listeners[eventName]) {
4608
- return;
4609
- }
4610
- _this.listeners[eventName] = _this.listeners[eventName].filter(function(param) {
4611
- var l = param.listener;
4612
- return l !== listener;
4613
- });
4614
- };
4615
- /**
4616
- * 监听事件
4617
- * @param eventName - 事件名称
4618
- * @param listener - 事件监听器
4619
- * @param options - 事件监听器选项
4620
- * @returns
4621
- */ this.on = function(eventName, listener, options) {
4622
- _this.listeners[eventName] = _this.listeners[eventName] || [];
4623
- _this.listeners[eventName].push({
4624
- listener: listener,
4625
- options: options
4626
- });
4627
- return function() {
4628
- return _this.off(eventName, listener);
4629
- };
4630
- };
4631
- /**
4632
- * 一次性监听事件
4633
- * @param eventName - 事件名称
4634
- * @param listener - 事件监听器
4635
- */ this.once = function(eventName, listener) {
4636
- _this.on(eventName, listener, {
4637
- once: true
4638
- });
4639
- };
4640
- /**
4641
- * 触发事件
4642
- * @param eventName - 事件名称
4643
- * @param args - 事件参数
4644
- */ this.emit = function(eventName) {
4645
- for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
4646
- args[_key - 1] = arguments[_key];
4647
- }
4648
- var _this_listeners_eventName;
4649
- (_this_listeners_eventName = _this1.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.forEach(function(param) {
4650
- var listener = param.listener, options = param.options;
4651
- listener.apply(void 0, [].concat(args));
4652
- if (options == null ? void 0 : options.once) {
4653
- _this1.off(eventName, listener);
4654
- }
4655
- });
4656
- };
4657
- /**
4658
- * 获取事件名称对应的所有监听器
4659
- * @param eventName - 事件名称
4660
- * @returns - 返回事件名称对应的所有监听器
4661
- */ this.getListeners = function(eventName) {
4662
- var _this_listeners_eventName;
4663
- return ((_this_listeners_eventName = _this.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.map(function(param) {
4664
- var listener = param.listener;
4665
- return listener;
4666
- })) || [];
4667
- };
4668
- };
4669
-
4670
4592
  /**
4671
4593
  * @since 2.0.0
4672
4594
  * @internal
4673
- */ var EffectsObject = /*#__PURE__*/ function(EventEmitter) {
4674
- _inherits(EffectsObject, EventEmitter);
4595
+ */ var EffectsObject = /*#__PURE__*/ function() {
4675
4596
  function EffectsObject(engine) {
4676
- var _this;
4677
- _this = EventEmitter.call(this) || this;
4678
- _this.engine = engine;
4679
- _this.guid = generateGUID();
4680
- _this.taggedProperties = {};
4681
- _this.engine.addInstance(_assert_this_initialized(_this));
4682
- return _this;
4597
+ this.engine = engine;
4598
+ this.guid = generateGUID();
4599
+ this.taggedProperties = {};
4600
+ this.engine.addInstance(this);
4683
4601
  }
4684
4602
  var _proto = EffectsObject.prototype;
4685
4603
  _proto.getInstanceId = function getInstanceId() {
@@ -4705,7 +4623,7 @@ var EventEmitter = function EventEmitter() {
4705
4623
  return _instanceof1(obj, EffectsObject) && "guid" in obj;
4706
4624
  };
4707
4625
  return EffectsObject;
4708
- }(EventEmitter);
4626
+ }();
4709
4627
 
4710
4628
  /**
4711
4629
  * @since 2.0.0
@@ -4750,17 +4668,17 @@ var EventEmitter = function EventEmitter() {
4750
4668
  function Behaviour() {
4751
4669
  var _this;
4752
4670
  _this = Component.apply(this, arguments) || this;
4753
- _this._enabled = true;
4671
+ _this.isAwakeCalled = false;
4754
4672
  _this.isStartCalled = false;
4673
+ _this._enabled = true;
4755
4674
  return _this;
4756
4675
  }
4757
4676
  var _proto = Behaviour.prototype;
4758
- // /**
4759
- // * 生命周期函数,初始化后调用,生命周期内只调用一次
4760
- // */
4761
- // awake () {
4762
- // // OVERRIDE
4763
- // }
4677
+ /**
4678
+ * 生命周期函数,初始化后调用,生命周期内只调用一次
4679
+ */ _proto.awake = function awake() {
4680
+ // OVERRIDE
4681
+ };
4764
4682
  /**
4765
4683
  * 在每次设置 enabled 为 true 时触发
4766
4684
  */ _proto.onEnable = function onEnable() {
@@ -4783,6 +4701,10 @@ var EventEmitter = function EventEmitter() {
4783
4701
  };
4784
4702
  _proto.onAttached = function onAttached() {
4785
4703
  this.item.itemBehaviours.push(this);
4704
+ if (!this.isAwakeCalled) {
4705
+ this.awake();
4706
+ this.isAwakeCalled = true;
4707
+ }
4786
4708
  };
4787
4709
  _proto.dispose = function dispose() {
4788
4710
  if (this.item) {
@@ -4807,7 +4729,9 @@ var EventEmitter = function EventEmitter() {
4807
4729
  set: function set(value) {
4808
4730
  this._enabled = value;
4809
4731
  if (value) {
4810
- this.onEnable();
4732
+ if (this.isActiveAndEnabled) {
4733
+ this.onEnable();
4734
+ }
4811
4735
  if (!this.isStartCalled) {
4812
4736
  this.start();
4813
4737
  this.isStartCalled = true;
@@ -13653,6 +13577,11 @@ var SpriteLoader = /*#__PURE__*/ function(AbstractPlugin) {
13653
13577
  return SpriteLoader;
13654
13578
  }(AbstractPlugin);
13655
13579
 
13580
+ function _assert_this_initialized(self) {
13581
+ if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
13582
+ return self;
13583
+ }
13584
+
13656
13585
  /**
13657
13586
  * 动画图,负责更新所有的动画节点
13658
13587
  * @since 2.0.0
@@ -17274,12 +17203,6 @@ exports.ParticleSystem = /*#__PURE__*/ function(Component) {
17274
17203
  area: area
17275
17204
  };
17276
17205
  };
17277
- _proto.onAttached = function onAttached() {
17278
- Component.prototype.onAttached.call(this);
17279
- this.renderer.item = this.item;
17280
- this.item.components.push(this.renderer);
17281
- this.item.rendererComponents.push(this.renderer);
17282
- };
17283
17206
  _proto.fromData = function fromData(data) {
17284
17207
  Component.prototype.fromData.call(this, data);
17285
17208
  var props = data;
@@ -20514,6 +20437,79 @@ exports.PostProcessVolume = __decorate([
20514
20437
  effectsClass("PostProcessVolume")
20515
20438
  ], exports.PostProcessVolume);
20516
20439
 
20440
+ var EventEmitter = function EventEmitter() {
20441
+ var _this = this;
20442
+ var _this1 = this;
20443
+ this.listeners = {};
20444
+ /**
20445
+ * 移除事件监听器
20446
+ * @param eventName - 事件名称
20447
+ * @param listener - 事件监听器
20448
+ * @returns
20449
+ */ this.off = function(eventName, listener) {
20450
+ if (!_this.listeners[eventName]) {
20451
+ return;
20452
+ }
20453
+ _this.listeners[eventName] = _this.listeners[eventName].filter(function(param) {
20454
+ var l = param.listener;
20455
+ return l !== listener;
20456
+ });
20457
+ };
20458
+ /**
20459
+ * 监听事件
20460
+ * @param eventName - 事件名称
20461
+ * @param listener - 事件监听器
20462
+ * @param options - 事件监听器选项
20463
+ * @returns
20464
+ */ this.on = function(eventName, listener, options) {
20465
+ _this.listeners[eventName] = _this.listeners[eventName] || [];
20466
+ _this.listeners[eventName].push({
20467
+ listener: listener,
20468
+ options: options
20469
+ });
20470
+ return function() {
20471
+ return _this.off(eventName, listener);
20472
+ };
20473
+ };
20474
+ /**
20475
+ * 一次性监听事件
20476
+ * @param eventName - 事件名称
20477
+ * @param listener - 事件监听器
20478
+ */ this.once = function(eventName, listener) {
20479
+ _this.on(eventName, listener, {
20480
+ once: true
20481
+ });
20482
+ };
20483
+ /**
20484
+ * 触发事件
20485
+ * @param eventName - 事件名称
20486
+ * @param args - 事件参数
20487
+ */ this.emit = function(eventName) {
20488
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
20489
+ args[_key - 1] = arguments[_key];
20490
+ }
20491
+ var _this_listeners_eventName;
20492
+ (_this_listeners_eventName = _this1.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.forEach(function(param) {
20493
+ var listener = param.listener, options = param.options;
20494
+ listener.apply(void 0, [].concat(args));
20495
+ if (options == null ? void 0 : options.once) {
20496
+ _this1.off(eventName, listener);
20497
+ }
20498
+ });
20499
+ };
20500
+ /**
20501
+ * 获取事件名称对应的所有监听器
20502
+ * @param eventName - 事件名称
20503
+ * @returns - 返回事件名称对应的所有监听器
20504
+ */ this.getListeners = function(eventName) {
20505
+ var _this_listeners_eventName;
20506
+ return ((_this_listeners_eventName = _this.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.map(function(param) {
20507
+ var listener = param.listener;
20508
+ return listener;
20509
+ })) || [];
20510
+ };
20511
+ };
20512
+
20517
20513
  exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
20518
20514
  _inherits(VFXItem, EffectsObject);
20519
20515
  function VFXItem(engine, props) {
@@ -20548,6 +20544,7 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
20548
20544
  * 元素动画的速度
20549
20545
  */ _this.speed = 1;
20550
20546
  _this.listIndex = 0;
20547
+ _this.eventProcessor = new EventEmitter();
20551
20548
  _this.name = "VFXItem";
20552
20549
  _this.transform.name = _this.name;
20553
20550
  _this.transform.engine = engine;
@@ -20558,6 +20555,50 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
20558
20555
  }
20559
20556
  var _proto = VFXItem.prototype;
20560
20557
  /**
20558
+ * 元素监听事件
20559
+ * @param eventName - 事件名称
20560
+ * @param listener - 事件监听器
20561
+ * @param options - 事件监听器选项
20562
+ * @returns
20563
+ */ _proto.on = function on(eventName, listener, options) {
20564
+ this.eventProcessor.on(eventName, listener, options);
20565
+ };
20566
+ /**
20567
+ * 移除事件监听器
20568
+ * @param eventName - 事件名称
20569
+ * @param listener - 事件监听器
20570
+ * @returns
20571
+ */ _proto.off = function off(eventName, listener) {
20572
+ this.eventProcessor.off(eventName, listener);
20573
+ };
20574
+ /**
20575
+ * 一次性监听事件
20576
+ * @param eventName - 事件名称
20577
+ * @param listener - 事件监听器
20578
+ */ _proto.once = function once(eventName, listener) {
20579
+ this.eventProcessor.once(eventName, listener);
20580
+ };
20581
+ /**
20582
+ * 触发事件
20583
+ * @param eventName - 事件名称
20584
+ * @param args - 事件参数
20585
+ */ _proto.emit = function emit(eventName) {
20586
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
20587
+ args[_key - 1] = arguments[_key];
20588
+ }
20589
+ var _this_eventProcessor;
20590
+ (_this_eventProcessor = this.eventProcessor).emit.apply(_this_eventProcessor, [].concat([
20591
+ eventName
20592
+ ], args));
20593
+ };
20594
+ /**
20595
+ * 获取事件名称对应的所有监听器
20596
+ * @param eventName - 事件名称
20597
+ * @returns - 返回事件名称对应的所有监听器
20598
+ */ _proto.getListeners = function getListeners(eventName) {
20599
+ return this.eventProcessor.getListeners(eventName);
20600
+ };
20601
+ /**
20561
20602
  * 设置元素的动画速度
20562
20603
  * @param speed - 速度
20563
20604
  */ _proto.setSpeed = function setSpeed(speed) {
@@ -20827,10 +20868,24 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
20827
20868
  if (duration <= 0) {
20828
20869
  throw new Error("Item duration can't be less than 0, see " + HELP_LINK["Item duration can't be less than 0"] + ".");
20829
20870
  }
20871
+ this.itemBehaviours.length = 0;
20872
+ this.rendererComponents.length = 0;
20830
20873
  for(var _iterator = _create_for_of_iterator_helper_loose(this.components), _step; !(_step = _iterator()).done;){
20831
20874
  var component = _step.value;
20832
20875
  component.item = this;
20833
- component.onAttached();
20876
+ if (_instanceof1(component, Behaviour)) {
20877
+ this.itemBehaviours.push(component);
20878
+ }
20879
+ if (_instanceof1(component, RendererComponent)) {
20880
+ this.rendererComponents.push(component);
20881
+ }
20882
+ // TODO ParticleSystemRenderer 现在是动态生成的,后面需要在 json 中单独表示为一个组件
20883
+ if (_instanceof1(component, exports.ParticleSystem)) {
20884
+ if (!this.components.includes(component.renderer)) {
20885
+ this.components.push(component.renderer);
20886
+ }
20887
+ this.rendererComponents.push(component.renderer);
20888
+ }
20834
20889
  }
20835
20890
  // renderOrder 在 component 初始化后设置。确保能拿到 rendererComponent。
20836
20891
  this.renderOrder = listIndex;
@@ -24468,15 +24523,20 @@ var tmpScale = new Vector3(1, 1, 1);
24468
24523
  return out.multiplyMatrices(this.viewProjectionMatrix, model);
24469
24524
  };
24470
24525
  /**
24471
- * 获取归一化坐标和 3D 世界坐标的换算比例
24526
+ * 获取归一化坐标和 3D 世界坐标的换算比例,使用 ViewProjection 矩阵
24472
24527
  * @param z - 当前的位置 z
24473
24528
  */ _proto.getInverseVPRatio = function getInverseVPRatio(z) {
24474
24529
  var pos = new Vector3(this.position.x, this.position.y, z);
24475
24530
  var mat = this.getViewProjectionMatrix();
24476
- var inverseVP = this.getInverseViewProjectionMatrix();
24531
+ var inverseMat = this.getInverseViewProjectionMatrix();
24532
+ if (!this.viewportMatrix.isIdentity()) {
24533
+ var invertedViewportMatrix = this.viewportMatrix.clone();
24534
+ mat.multiply(invertedViewportMatrix);
24535
+ inverseMat = invertedViewportMatrix.invert().multiply(inverseMat);
24536
+ }
24477
24537
  var _mat_projectPoint = mat.projectPoint(pos), nz = _mat_projectPoint.z;
24478
- var _inverseVP_projectPoint = inverseVP.projectPoint(new Vector3(1, 1, nz)), xMax = _inverseVP_projectPoint.x, yMax = _inverseVP_projectPoint.y;
24479
- var _inverseVP_projectPoint1 = inverseVP.projectPoint(new Vector3(-1, -1, nz)), xMin = _inverseVP_projectPoint1.x, yMin = _inverseVP_projectPoint1.y;
24538
+ var _inverseMat_projectPoint = inverseMat.projectPoint(new Vector3(1, 1, nz)), xMax = _inverseMat_projectPoint.x, yMax = _inverseMat_projectPoint.y;
24539
+ var _inverseMat_projectPoint1 = inverseMat.projectPoint(new Vector3(-1, -1, nz)), xMin = _inverseMat_projectPoint1.x, yMin = _inverseMat_projectPoint1.y;
24480
24540
  return new Vector3((xMax - xMin) / 2, (yMax - yMin) / 2, 0);
24481
24541
  };
24482
24542
  /**
@@ -24903,6 +24963,7 @@ var listOrder = 0;
24903
24963
  _this.rendererOptions = null;
24904
24964
  _this.rootComposition.createContent();
24905
24965
  _this.buildItemTree(_this.rootItem);
24966
+ _this.callAwake(_this.rootItem);
24906
24967
  _this.rootItem.onEnd = function() {
24907
24968
  window.setTimeout(function() {
24908
24969
  _this.emit("end", {
@@ -25147,6 +25208,19 @@ var listOrder = 0;
25147
25208
  }
25148
25209
  return t;
25149
25210
  };
25211
+ _proto.callAwake = function callAwake(item) {
25212
+ for(var _iterator = _create_for_of_iterator_helper_loose(item.itemBehaviours), _step; !(_step = _iterator()).done;){
25213
+ var itemBehaviour = _step.value;
25214
+ if (!itemBehaviour.isAwakeCalled) {
25215
+ itemBehaviour.awake();
25216
+ itemBehaviour.isAwakeCalled = true;
25217
+ }
25218
+ }
25219
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(item.children), _step1; !(_step1 = _iterator1()).done;){
25220
+ var child = _step1.value;
25221
+ this.callAwake(child);
25222
+ }
25223
+ };
25150
25224
  _proto.callStart = function callStart(item) {
25151
25225
  for(var _iterator = _create_for_of_iterator_helper_loose(item.itemBehaviours), _step; !(_step = _iterator()).done;){
25152
25226
  var itemBehaviour = _step.value;
@@ -27634,7 +27708,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem, true);
27634
27708
  registerPlugin("particle", ParticleLoader, exports.VFXItem, true);
27635
27709
  registerPlugin("cal", CalculateLoader, exports.VFXItem, true);
27636
27710
  registerPlugin("interact", InteractLoader, exports.VFXItem, true);
27637
- var version$1 = "2.0.0-beta.0";
27711
+ var version$1 = "2.0.0-beta.1";
27638
27712
  logger.info("Core version: " + version$1 + ".");
27639
27713
 
27640
27714
  var _obj;
@@ -29315,7 +29389,7 @@ setMaxSpriteMeshItemCount(8);
29315
29389
  */ Mesh.create = function(engine, props) {
29316
29390
  return new ThreeMesh(engine, props);
29317
29391
  };
29318
- var version = "2.0.0-beta.0";
29392
+ var version = "2.0.0-beta.1";
29319
29393
  logger.info("THREEJS plugin version: " + version + ".");
29320
29394
 
29321
29395
  exports.AbstractPlugin = AbstractPlugin;