@galacean/effects-threejs 2.2.2 → 2.2.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.2.2
6
+ * Version: v2.2.3
7
7
  */
8
8
 
9
9
  'use strict';
@@ -16646,8 +16646,16 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16646
16646
  _proto.onEnable = function onEnable() {
16647
16647
  RendererComponent.prototype.onEnable.call(this);
16648
16648
  var type = this.interactData.options.type;
16649
+ var env = this.item.engine.renderer.env;
16649
16650
  if (type === InteractType.CLICK) {
16650
16651
  this.clickable = true;
16652
+ } else if (type === InteractType.DRAG) {
16653
+ var options = this.interactData.options;
16654
+ var enableInEditor = options.enableInEditor;
16655
+ if (env !== PLAYER_OPTIONS_ENV_EDITOR || enableInEditor) {
16656
+ var _this_item_composition;
16657
+ ((_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.event) && this.beginDragTarget(options, this.item.composition.event);
16658
+ }
16651
16659
  }
16652
16660
  };
16653
16661
  _proto.onUpdate = function onUpdate(dt) {
@@ -17183,6 +17191,83 @@ var PlayState;
17183
17191
  PlayState[PlayState["Paused"] = 1] = "Paused";
17184
17192
  })(PlayState || (PlayState = {}));
17185
17193
 
17194
+ /**
17195
+ *
17196
+ */ /**
17197
+ * 事件监听器
17198
+ */ var EventEmitter = function EventEmitter() {
17199
+ var _this = this;
17200
+ var _this1 = this;
17201
+ this.listeners = {};
17202
+ /**
17203
+ * 移除事件监听器
17204
+ * @param eventName - 事件名称
17205
+ * @param listener - 事件监听器
17206
+ * @returns
17207
+ */ this.off = function(eventName, listener) {
17208
+ if (!_this.listeners[eventName]) {
17209
+ return;
17210
+ }
17211
+ _this.listeners[eventName] = _this.listeners[eventName].filter(function(param) {
17212
+ var l = param.listener;
17213
+ return l !== listener;
17214
+ });
17215
+ };
17216
+ /**
17217
+ * 监听事件
17218
+ * @param eventName - 事件名称
17219
+ * @param listener - 事件监听器
17220
+ * @param options - 事件监听器选项
17221
+ * @returns
17222
+ */ this.on = function(eventName, listener, options) {
17223
+ _this.listeners[eventName] = _this.listeners[eventName] || [];
17224
+ _this.listeners[eventName].push({
17225
+ listener: listener,
17226
+ options: options
17227
+ });
17228
+ return function() {
17229
+ return _this.off(eventName, listener);
17230
+ };
17231
+ };
17232
+ /**
17233
+ * 一次性监听事件
17234
+ * @param eventName - 事件名称
17235
+ * @param listener - 事件监听器
17236
+ */ this.once = function(eventName, listener) {
17237
+ _this.on(eventName, listener, {
17238
+ once: true
17239
+ });
17240
+ };
17241
+ /**
17242
+ * 触发事件
17243
+ * @param eventName - 事件名称
17244
+ * @param args - 事件参数
17245
+ */ this.emit = function(eventName) {
17246
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17247
+ args[_key - 1] = arguments[_key];
17248
+ }
17249
+ var _this_listeners_eventName;
17250
+ (_this_listeners_eventName = _this1.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.forEach(function(param) {
17251
+ var listener = param.listener, options = param.options;
17252
+ listener.apply(void 0, [].concat(args));
17253
+ if (options == null ? void 0 : options.once) {
17254
+ _this1.off(eventName, listener);
17255
+ }
17256
+ });
17257
+ };
17258
+ /**
17259
+ * 获取事件名称对应的所有监听器
17260
+ * @param eventName - 事件名称
17261
+ * @returns - 返回事件名称对应的所有监听器
17262
+ */ this.getListeners = function(eventName) {
17263
+ var _this_listeners_eventName;
17264
+ return ((_this_listeners_eventName = _this.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.map(function(param) {
17265
+ var listener = param.listener;
17266
+ return listener;
17267
+ })) || [];
17268
+ };
17269
+ };
17270
+
17186
17271
  var tempQuat$1 = new Quaternion();
17187
17272
  var seed$4 = 1;
17188
17273
  // TODO 继承 Component
@@ -17653,83 +17738,6 @@ var seed$4 = 1;
17653
17738
  return Transform;
17654
17739
  }();
17655
17740
 
17656
- /**
17657
- *
17658
- */ /**
17659
- * 事件监听器
17660
- */ var EventEmitter = function EventEmitter() {
17661
- var _this = this;
17662
- var _this1 = this;
17663
- this.listeners = {};
17664
- /**
17665
- * 移除事件监听器
17666
- * @param eventName - 事件名称
17667
- * @param listener - 事件监听器
17668
- * @returns
17669
- */ this.off = function(eventName, listener) {
17670
- if (!_this.listeners[eventName]) {
17671
- return;
17672
- }
17673
- _this.listeners[eventName] = _this.listeners[eventName].filter(function(param) {
17674
- var l = param.listener;
17675
- return l !== listener;
17676
- });
17677
- };
17678
- /**
17679
- * 监听事件
17680
- * @param eventName - 事件名称
17681
- * @param listener - 事件监听器
17682
- * @param options - 事件监听器选项
17683
- * @returns
17684
- */ this.on = function(eventName, listener, options) {
17685
- _this.listeners[eventName] = _this.listeners[eventName] || [];
17686
- _this.listeners[eventName].push({
17687
- listener: listener,
17688
- options: options
17689
- });
17690
- return function() {
17691
- return _this.off(eventName, listener);
17692
- };
17693
- };
17694
- /**
17695
- * 一次性监听事件
17696
- * @param eventName - 事件名称
17697
- * @param listener - 事件监听器
17698
- */ this.once = function(eventName, listener) {
17699
- _this.on(eventName, listener, {
17700
- once: true
17701
- });
17702
- };
17703
- /**
17704
- * 触发事件
17705
- * @param eventName - 事件名称
17706
- * @param args - 事件参数
17707
- */ this.emit = function(eventName) {
17708
- for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17709
- args[_key - 1] = arguments[_key];
17710
- }
17711
- var _this_listeners_eventName;
17712
- (_this_listeners_eventName = _this1.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.forEach(function(param) {
17713
- var listener = param.listener, options = param.options;
17714
- listener.apply(void 0, [].concat(args));
17715
- if (options == null ? void 0 : options.once) {
17716
- _this1.off(eventName, listener);
17717
- }
17718
- });
17719
- };
17720
- /**
17721
- * 获取事件名称对应的所有监听器
17722
- * @param eventName - 事件名称
17723
- * @returns - 返回事件名称对应的所有监听器
17724
- */ this.getListeners = function(eventName) {
17725
- var _this_listeners_eventName;
17726
- return ((_this_listeners_eventName = _this.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.map(function(param) {
17727
- var listener = param.listener;
17728
- return listener;
17729
- })) || [];
17730
- };
17731
- };
17732
-
17733
17741
  exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17734
17742
  _inherits(VFXItem, EffectsObject);
17735
17743
  function VFXItem(engine, props) {
@@ -18079,42 +18087,36 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
18079
18087
  EffectsObject.prototype.fromData.call(this, data);
18080
18088
  var id = data.id, name = data.name, delay = data.delay, parentId = data.parentId, endBehavior = data.endBehavior, transform = data.transform, _data_duration = data.duration, duration = _data_duration === void 0 ? 0 : _data_duration;
18081
18089
  this.props = data;
18082
- //@ts-expect-error
18083
18090
  this.type = data.type;
18084
18091
  this.id = id.toString(); // TODO 老数据 id 是 number,需要转换
18085
18092
  this.name = name;
18086
18093
  this.start = delay ? delay : this.start;
18094
+ var transformProps = {};
18087
18095
  if (transform) {
18088
- //@ts-expect-error TODO 数据改造后移除 expect-error
18089
- transform.position = new Vector3().copyFrom(transform.position);
18096
+ transformProps.position = new Vector3().copyFrom(transform.position);
18090
18097
  // FIXME: transform.rotation待删除
18098
+ //@ts-expect-error
18091
18099
  if (transform.quat) {
18092
18100
  //@ts-expect-error
18093
- transform.quat = new Quaternion(transform.quat.x, transform.quat.y, transform.quat.z, transform.quat.w);
18101
+ transformProps.quat = new Quaternion(transform.quat.x, transform.quat.y, transform.quat.z, transform.quat.w);
18094
18102
  } else {
18095
18103
  var _transform_eulerHint;
18096
18104
  //@ts-expect-error
18097
- transform.rotation = new Euler().copyFrom((_transform_eulerHint = transform.eulerHint) != null ? _transform_eulerHint : transform.rotation);
18105
+ transformProps.rotation = new Euler().copyFrom((_transform_eulerHint = transform.eulerHint) != null ? _transform_eulerHint : transform.rotation);
18098
18106
  }
18099
- //@ts-expect-error
18100
- transform.scale = new Vector3().copyFrom(transform.scale);
18101
- //@ts-expect-error
18107
+ transformProps.scale = new Vector3().copyFrom(transform.scale);
18102
18108
  if (transform.size) {
18103
- //@ts-expect-error
18104
- transform.size = new Vector2().copyFrom(transform.size);
18109
+ transformProps.size = new Vector2().copyFrom(transform.size);
18105
18110
  }
18106
- //@ts-expect-error
18107
18111
  if (transform.anchor) {
18108
- //@ts-expect-error
18109
- transform.anchor = new Vector2().copyFrom(transform.anchor);
18112
+ transformProps.anchor = new Vector2().copyFrom(transform.anchor);
18110
18113
  }
18111
- this.transform.setTransform(transform);
18114
+ this.transform.setTransform(transformProps);
18112
18115
  }
18113
18116
  this.transform.name = this.name;
18114
18117
  this.transform.engine = this.engine;
18115
18118
  this.parentId = parentId;
18116
18119
  this.duration = duration;
18117
- // TODO spec endbehavior 类型修正
18118
18120
  this.endBehavior = endBehavior;
18119
18121
  if (!data.content) {
18120
18122
  data.content = {
@@ -24906,9 +24908,23 @@ exports.TextComponent = /*#__PURE__*/ function(BaseRenderComponent) {
24906
24908
  order: listIndex
24907
24909
  };
24908
24910
  this.interaction = interaction;
24911
+ this.cachePrefix = "-";
24912
+ this.renderInfo = getImageItemRenderInfo(this);
24913
+ var material = this.createMaterial(this.renderInfo, 2);
24914
+ this.worldMatrix = Matrix4.fromIdentity();
24915
+ this.material = material;
24916
+ this.material.setVector4("_TexOffset", new Vector4().setFromArray([
24917
+ 0,
24918
+ 0,
24919
+ 1,
24920
+ 1
24921
+ ]));
24922
+ // TextComponentBase
24909
24923
  this.updateWithOptions(options);
24910
- // Text
24911
24924
  this.updateTexture();
24925
+ this.setItem();
24926
+ // 恢复默认颜色
24927
+ this.material.setVector4("_Color", new Vector4(1, 1, 1, 1));
24912
24928
  };
24913
24929
  _proto.updateWithOptions = function updateWithOptions(options) {
24914
24930
  // OVERRIDE by mixins
@@ -25226,7 +25242,7 @@ var TextComponentBase = /*#__PURE__*/ function() {
25226
25242
  }
25227
25243
  //与 toDataURL() 两种方式都需要像素读取操作
25228
25244
  var imageData = context.getImageData(0, 0, this.canvas.width, this.canvas.height);
25229
- this.material.setTexture("_MainTex", Texture.createWithData(this.engine, {
25245
+ var texture = Texture.createWithData(this.engine, {
25230
25246
  data: new Uint8Array(imageData.data),
25231
25247
  width: imageData.width,
25232
25248
  height: imageData.height
@@ -25236,7 +25252,8 @@ var TextComponentBase = /*#__PURE__*/ function() {
25236
25252
  minFilter: glContext.LINEAR,
25237
25253
  wrapS: glContext.CLAMP_TO_EDGE,
25238
25254
  wrapT: glContext.CLAMP_TO_EDGE
25239
- }));
25255
+ });
25256
+ this.renderer.texture = texture;
25240
25257
  this.isDirty = false;
25241
25258
  };
25242
25259
  _proto.getFontDesc = function getFontDesc() {
@@ -28424,7 +28441,7 @@ var tmpScale = new Vector3(1, 1, 1);
28424
28441
  var sourceItemData = this.engine.jsonSceneData[itemDataPath.id];
28425
28442
  var itemProps = sourceItemData;
28426
28443
  if (passRenderLevel(sourceItemData.renderLevel, this.renderLevel)) {
28427
- if (itemProps.type === ItemType.sprite || itemProps.type === ItemType.particle || itemProps.type === ItemType.spine || //@ts-expect-error
28444
+ if (itemProps.type === ItemType.sprite || itemProps.type === ItemType.particle || itemProps.type === ItemType.spine || itemProps.type === ItemType.text || itemProps.type === ItemType.video || //@ts-expect-error
28428
28445
  itemProps.type === ItemType.shape) {
28429
28446
  for(var _iterator2 = _create_for_of_iterator_helper_loose(itemProps.components), _step2; !(_step2 = _iterator2()).done;){
28430
28447
  var componentPath = _step2.value;
@@ -28445,6 +28462,13 @@ var tmpScale = new Vector3(1, 1, 1);
28445
28462
  }
28446
28463
  }
28447
28464
  items.push(itemDataPath);
28465
+ } else {
28466
+ // 非预合成元素未达到渲染等级的转化为空节点。
28467
+ // 预合成元素有根据 item type 的子元素加载判断,没法保留空节点,这边先整体过滤掉。
28468
+ if (itemProps.type !== ItemType.composition) {
28469
+ itemProps.components = [];
28470
+ items.push(itemDataPath);
28471
+ }
28448
28472
  }
28449
28473
  }
28450
28474
  composition.items = items;
@@ -28689,10 +28713,13 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28689
28713
  assertExist(sourceContent);
28690
28714
  _this.renderer = renderer;
28691
28715
  _this.refCompositionProps = refCompositionProps;
28692
- _this.rootItem = new exports.VFXItem(_this.getEngine(), sourceContent);
28716
+ // Instantiate composition rootItem
28717
+ _this.rootItem = new exports.VFXItem(_this.getEngine());
28693
28718
  _this.rootItem.name = "rootItem";
28719
+ _this.rootItem.duration = sourceContent.duration;
28720
+ _this.rootItem.endBehavior = sourceContent.endBehavior;
28694
28721
  _this.rootItem.composition = _assert_this_initialized(_this);
28695
- // Spawn rootCompositionComponent
28722
+ // Create rootCompositionComponent
28696
28723
  _this.rootComposition = _this.rootItem.addComponent(CompositionComponent);
28697
28724
  _this.width = width;
28698
28725
  _this.height = height;
@@ -31366,7 +31393,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem, true);
31366
31393
  registerPlugin("particle", ParticleLoader, exports.VFXItem, true);
31367
31394
  registerPlugin("cal", CalculateLoader, exports.VFXItem, true);
31368
31395
  registerPlugin("interact", InteractLoader, exports.VFXItem, true);
31369
- var version$1 = "2.2.2";
31396
+ var version$1 = "2.2.3";
31370
31397
  logger.info("Core version: " + version$1 + ".");
31371
31398
 
31372
31399
  var _obj;
@@ -32999,7 +33026,7 @@ setMaxSpriteMeshItemCount(8);
32999
33026
  */ Mesh.create = function(engine, props) {
33000
33027
  return new ThreeMesh(engine, props);
33001
33028
  };
33002
- var version = "2.2.2";
33029
+ var version = "2.2.3";
33003
33030
  logger.info("THREEJS plugin version: " + version + ".");
33004
33031
 
33005
33032
  exports.AbstractPlugin = AbstractPlugin;