@galacean/effects-core 2.2.2 → 2.2.4

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.
@@ -1,7 +1,6 @@
1
1
  import * as spec from '@galacean/effects-specification';
2
2
  import type { EffectsObject } from './effects-object';
3
3
  import type { Engine } from './engine';
4
- import type { VFXItemProps } from './vfx-item';
5
4
  /**
6
5
  * @since 2.0.0
7
6
  */
@@ -22,7 +21,7 @@ export interface EffectComponentData extends spec.EffectsObjectData {
22
21
  materials: spec.DataPath[];
23
22
  geometry: spec.DataPath;
24
23
  }
25
- export type VFXItemData = VFXItemProps & {
24
+ export type VFXItemData = spec.Item & {
26
25
  dataType: spec.DataType;
27
26
  components: spec.DataPath[];
28
27
  };
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.2.2
6
+ * Version: v2.2.4
7
7
  */
8
8
 
9
9
  'use strict';
@@ -16624,8 +16624,16 @@ exports.InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16624
16624
  _proto.onEnable = function onEnable() {
16625
16625
  RendererComponent.prototype.onEnable.call(this);
16626
16626
  var type = this.interactData.options.type;
16627
+ var env = this.item.engine.renderer.env;
16627
16628
  if (type === InteractType.CLICK) {
16628
16629
  this.clickable = true;
16630
+ } else if (type === InteractType.DRAG) {
16631
+ var options = this.interactData.options;
16632
+ var enableInEditor = options.enableInEditor;
16633
+ if (env !== PLAYER_OPTIONS_ENV_EDITOR || enableInEditor) {
16634
+ var _this_item_composition;
16635
+ ((_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.event) && this.beginDragTarget(options, this.item.composition.event);
16636
+ }
16629
16637
  }
16630
16638
  };
16631
16639
  _proto.onUpdate = function onUpdate(dt) {
@@ -17161,6 +17169,83 @@ var PlayState;
17161
17169
  PlayState[PlayState["Paused"] = 1] = "Paused";
17162
17170
  })(PlayState || (PlayState = {}));
17163
17171
 
17172
+ /**
17173
+ *
17174
+ */ /**
17175
+ * 事件监听器
17176
+ */ var EventEmitter = function EventEmitter() {
17177
+ var _this = this;
17178
+ var _this1 = this;
17179
+ this.listeners = {};
17180
+ /**
17181
+ * 移除事件监听器
17182
+ * @param eventName - 事件名称
17183
+ * @param listener - 事件监听器
17184
+ * @returns
17185
+ */ this.off = function(eventName, listener) {
17186
+ if (!_this.listeners[eventName]) {
17187
+ return;
17188
+ }
17189
+ _this.listeners[eventName] = _this.listeners[eventName].filter(function(param) {
17190
+ var l = param.listener;
17191
+ return l !== listener;
17192
+ });
17193
+ };
17194
+ /**
17195
+ * 监听事件
17196
+ * @param eventName - 事件名称
17197
+ * @param listener - 事件监听器
17198
+ * @param options - 事件监听器选项
17199
+ * @returns
17200
+ */ this.on = function(eventName, listener, options) {
17201
+ _this.listeners[eventName] = _this.listeners[eventName] || [];
17202
+ _this.listeners[eventName].push({
17203
+ listener: listener,
17204
+ options: options
17205
+ });
17206
+ return function() {
17207
+ return _this.off(eventName, listener);
17208
+ };
17209
+ };
17210
+ /**
17211
+ * 一次性监听事件
17212
+ * @param eventName - 事件名称
17213
+ * @param listener - 事件监听器
17214
+ */ this.once = function(eventName, listener) {
17215
+ _this.on(eventName, listener, {
17216
+ once: true
17217
+ });
17218
+ };
17219
+ /**
17220
+ * 触发事件
17221
+ * @param eventName - 事件名称
17222
+ * @param args - 事件参数
17223
+ */ this.emit = function(eventName) {
17224
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17225
+ args[_key - 1] = arguments[_key];
17226
+ }
17227
+ var _this_listeners_eventName;
17228
+ (_this_listeners_eventName = _this1.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.forEach(function(param) {
17229
+ var listener = param.listener, options = param.options;
17230
+ listener.apply(void 0, [].concat(args));
17231
+ if (options == null ? void 0 : options.once) {
17232
+ _this1.off(eventName, listener);
17233
+ }
17234
+ });
17235
+ };
17236
+ /**
17237
+ * 获取事件名称对应的所有监听器
17238
+ * @param eventName - 事件名称
17239
+ * @returns - 返回事件名称对应的所有监听器
17240
+ */ this.getListeners = function(eventName) {
17241
+ var _this_listeners_eventName;
17242
+ return ((_this_listeners_eventName = _this.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.map(function(param) {
17243
+ var listener = param.listener;
17244
+ return listener;
17245
+ })) || [];
17246
+ };
17247
+ };
17248
+
17164
17249
  var tempQuat$1 = new Quaternion();
17165
17250
  var seed$3 = 1;
17166
17251
  // TODO 继承 Component
@@ -17631,83 +17716,6 @@ var seed$3 = 1;
17631
17716
  return Transform;
17632
17717
  }();
17633
17718
 
17634
- /**
17635
- *
17636
- */ /**
17637
- * 事件监听器
17638
- */ var EventEmitter = function EventEmitter() {
17639
- var _this = this;
17640
- var _this1 = this;
17641
- this.listeners = {};
17642
- /**
17643
- * 移除事件监听器
17644
- * @param eventName - 事件名称
17645
- * @param listener - 事件监听器
17646
- * @returns
17647
- */ this.off = function(eventName, listener) {
17648
- if (!_this.listeners[eventName]) {
17649
- return;
17650
- }
17651
- _this.listeners[eventName] = _this.listeners[eventName].filter(function(param) {
17652
- var l = param.listener;
17653
- return l !== listener;
17654
- });
17655
- };
17656
- /**
17657
- * 监听事件
17658
- * @param eventName - 事件名称
17659
- * @param listener - 事件监听器
17660
- * @param options - 事件监听器选项
17661
- * @returns
17662
- */ this.on = function(eventName, listener, options) {
17663
- _this.listeners[eventName] = _this.listeners[eventName] || [];
17664
- _this.listeners[eventName].push({
17665
- listener: listener,
17666
- options: options
17667
- });
17668
- return function() {
17669
- return _this.off(eventName, listener);
17670
- };
17671
- };
17672
- /**
17673
- * 一次性监听事件
17674
- * @param eventName - 事件名称
17675
- * @param listener - 事件监听器
17676
- */ this.once = function(eventName, listener) {
17677
- _this.on(eventName, listener, {
17678
- once: true
17679
- });
17680
- };
17681
- /**
17682
- * 触发事件
17683
- * @param eventName - 事件名称
17684
- * @param args - 事件参数
17685
- */ this.emit = function(eventName) {
17686
- for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17687
- args[_key - 1] = arguments[_key];
17688
- }
17689
- var _this_listeners_eventName;
17690
- (_this_listeners_eventName = _this1.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.forEach(function(param) {
17691
- var listener = param.listener, options = param.options;
17692
- listener.apply(void 0, [].concat(args));
17693
- if (options == null ? void 0 : options.once) {
17694
- _this1.off(eventName, listener);
17695
- }
17696
- });
17697
- };
17698
- /**
17699
- * 获取事件名称对应的所有监听器
17700
- * @param eventName - 事件名称
17701
- * @returns - 返回事件名称对应的所有监听器
17702
- */ this.getListeners = function(eventName) {
17703
- var _this_listeners_eventName;
17704
- return ((_this_listeners_eventName = _this.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.map(function(param) {
17705
- var listener = param.listener;
17706
- return listener;
17707
- })) || [];
17708
- };
17709
- };
17710
-
17711
17719
  exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
17712
17720
  _inherits(VFXItem, EffectsObject);
17713
17721
  function VFXItem(engine, props) {
@@ -18057,42 +18065,36 @@ exports.VFXItem = /*#__PURE__*/ function(EffectsObject) {
18057
18065
  EffectsObject.prototype.fromData.call(this, data);
18058
18066
  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;
18059
18067
  this.props = data;
18060
- //@ts-expect-error
18061
18068
  this.type = data.type;
18062
18069
  this.id = id.toString(); // TODO 老数据 id 是 number,需要转换
18063
18070
  this.name = name;
18064
18071
  this.start = delay ? delay : this.start;
18072
+ var transformProps = {};
18065
18073
  if (transform) {
18066
- //@ts-expect-error TODO 数据改造后移除 expect-error
18067
- transform.position = new Vector3().copyFrom(transform.position);
18074
+ transformProps.position = new Vector3().copyFrom(transform.position);
18068
18075
  // FIXME: transform.rotation待删除
18076
+ //@ts-expect-error
18069
18077
  if (transform.quat) {
18070
18078
  //@ts-expect-error
18071
- transform.quat = new Quaternion(transform.quat.x, transform.quat.y, transform.quat.z, transform.quat.w);
18079
+ transformProps.quat = new Quaternion(transform.quat.x, transform.quat.y, transform.quat.z, transform.quat.w);
18072
18080
  } else {
18073
18081
  var _transform_eulerHint;
18074
18082
  //@ts-expect-error
18075
- transform.rotation = new Euler().copyFrom((_transform_eulerHint = transform.eulerHint) != null ? _transform_eulerHint : transform.rotation);
18083
+ transformProps.rotation = new Euler().copyFrom((_transform_eulerHint = transform.eulerHint) != null ? _transform_eulerHint : transform.rotation);
18076
18084
  }
18077
- //@ts-expect-error
18078
- transform.scale = new Vector3().copyFrom(transform.scale);
18079
- //@ts-expect-error
18085
+ transformProps.scale = new Vector3().copyFrom(transform.scale);
18080
18086
  if (transform.size) {
18081
- //@ts-expect-error
18082
- transform.size = new Vector2().copyFrom(transform.size);
18087
+ transformProps.size = new Vector2().copyFrom(transform.size);
18083
18088
  }
18084
- //@ts-expect-error
18085
18089
  if (transform.anchor) {
18086
- //@ts-expect-error
18087
- transform.anchor = new Vector2().copyFrom(transform.anchor);
18090
+ transformProps.anchor = new Vector2().copyFrom(transform.anchor);
18088
18091
  }
18089
- this.transform.setTransform(transform);
18092
+ this.transform.setTransform(transformProps);
18090
18093
  }
18091
18094
  this.transform.name = this.name;
18092
18095
  this.transform.engine = this.engine;
18093
18096
  this.parentId = parentId;
18094
18097
  this.duration = duration;
18095
- // TODO spec endbehavior 类型修正
18096
18098
  this.endBehavior = endBehavior;
18097
18099
  if (!data.content) {
18098
18100
  data.content = {
@@ -24884,9 +24886,23 @@ exports.TextComponent = /*#__PURE__*/ function(BaseRenderComponent) {
24884
24886
  order: listIndex
24885
24887
  };
24886
24888
  this.interaction = interaction;
24889
+ this.cachePrefix = "-";
24890
+ this.renderInfo = getImageItemRenderInfo(this);
24891
+ var material = this.createMaterial(this.renderInfo, 2);
24892
+ this.worldMatrix = Matrix4.fromIdentity();
24893
+ this.material = material;
24894
+ this.material.setVector4("_TexOffset", new Vector4().setFromArray([
24895
+ 0,
24896
+ 0,
24897
+ 1,
24898
+ 1
24899
+ ]));
24900
+ // TextComponentBase
24887
24901
  this.updateWithOptions(options);
24888
- // Text
24889
24902
  this.updateTexture();
24903
+ this.setItem();
24904
+ // 恢复默认颜色
24905
+ this.material.setVector4("_Color", new Vector4(1, 1, 1, 1));
24890
24906
  };
24891
24907
  _proto.updateWithOptions = function updateWithOptions(options) {
24892
24908
  // OVERRIDE by mixins
@@ -25204,7 +25220,7 @@ var TextComponentBase = /*#__PURE__*/ function() {
25204
25220
  }
25205
25221
  //与 toDataURL() 两种方式都需要像素读取操作
25206
25222
  var imageData = context.getImageData(0, 0, this.canvas.width, this.canvas.height);
25207
- this.material.setTexture("_MainTex", Texture.createWithData(this.engine, {
25223
+ var texture = Texture.createWithData(this.engine, {
25208
25224
  data: new Uint8Array(imageData.data),
25209
25225
  width: imageData.width,
25210
25226
  height: imageData.height
@@ -25214,7 +25230,9 @@ var TextComponentBase = /*#__PURE__*/ function() {
25214
25230
  minFilter: glContext.LINEAR,
25215
25231
  wrapS: glContext.CLAMP_TO_EDGE,
25216
25232
  wrapT: glContext.CLAMP_TO_EDGE
25217
- }));
25233
+ });
25234
+ this.renderer.texture = texture;
25235
+ this.material.setTexture("_MainTex", texture);
25218
25236
  this.isDirty = false;
25219
25237
  };
25220
25238
  _proto.getFontDesc = function getFontDesc() {
@@ -28402,7 +28420,7 @@ var tmpScale = new Vector3(1, 1, 1);
28402
28420
  var sourceItemData = this.engine.jsonSceneData[itemDataPath.id];
28403
28421
  var itemProps = sourceItemData;
28404
28422
  if (passRenderLevel(sourceItemData.renderLevel, this.renderLevel)) {
28405
- if (itemProps.type === ItemType.sprite || itemProps.type === ItemType.particle || itemProps.type === ItemType.spine || //@ts-expect-error
28423
+ if (itemProps.type === ItemType.sprite || itemProps.type === ItemType.particle || itemProps.type === ItemType.spine || itemProps.type === ItemType.text || itemProps.type === ItemType.video || //@ts-expect-error
28406
28424
  itemProps.type === ItemType.shape) {
28407
28425
  for(var _iterator2 = _create_for_of_iterator_helper_loose(itemProps.components), _step2; !(_step2 = _iterator2()).done;){
28408
28426
  var componentPath = _step2.value;
@@ -28423,6 +28441,13 @@ var tmpScale = new Vector3(1, 1, 1);
28423
28441
  }
28424
28442
  }
28425
28443
  items.push(itemDataPath);
28444
+ } else {
28445
+ // 非预合成元素未达到渲染等级的转化为空节点。
28446
+ // 预合成元素有根据 item type 的子元素加载判断,没法保留空节点,这边先整体过滤掉。
28447
+ if (itemProps.type !== ItemType.composition) {
28448
+ itemProps.components = [];
28449
+ items.push(itemDataPath);
28450
+ }
28426
28451
  }
28427
28452
  }
28428
28453
  composition.items = items;
@@ -28667,10 +28692,13 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28667
28692
  assertExist(sourceContent);
28668
28693
  _this.renderer = renderer;
28669
28694
  _this.refCompositionProps = refCompositionProps;
28670
- _this.rootItem = new exports.VFXItem(_this.getEngine(), sourceContent);
28695
+ // Instantiate composition rootItem
28696
+ _this.rootItem = new exports.VFXItem(_this.getEngine());
28671
28697
  _this.rootItem.name = "rootItem";
28698
+ _this.rootItem.duration = sourceContent.duration;
28699
+ _this.rootItem.endBehavior = sourceContent.endBehavior;
28672
28700
  _this.rootItem.composition = _assert_this_initialized(_this);
28673
- // Spawn rootCompositionComponent
28701
+ // Create rootCompositionComponent
28674
28702
  _this.rootComposition = _this.rootItem.addComponent(CompositionComponent);
28675
28703
  _this.width = width;
28676
28704
  _this.height = height;
@@ -31344,7 +31372,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem, true);
31344
31372
  registerPlugin("particle", ParticleLoader, exports.VFXItem, true);
31345
31373
  registerPlugin("cal", CalculateLoader, exports.VFXItem, true);
31346
31374
  registerPlugin("interact", InteractLoader, exports.VFXItem, true);
31347
- var version = "2.2.2";
31375
+ var version = "2.2.4";
31348
31376
  logger.info("Core version: " + version + ".");
31349
31377
 
31350
31378
  exports.AbstractPlugin = AbstractPlugin;