@galacean/effects-threejs 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.
package/dist/index.mjs 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.4
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -16622,8 +16622,16 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
16622
16622
  _proto.onEnable = function onEnable() {
16623
16623
  RendererComponent.prototype.onEnable.call(this);
16624
16624
  var type = this.interactData.options.type;
16625
+ var env = this.item.engine.renderer.env;
16625
16626
  if (type === InteractType.CLICK) {
16626
16627
  this.clickable = true;
16628
+ } else if (type === InteractType.DRAG) {
16629
+ var options = this.interactData.options;
16630
+ var enableInEditor = options.enableInEditor;
16631
+ if (env !== PLAYER_OPTIONS_ENV_EDITOR || enableInEditor) {
16632
+ var _this_item_composition;
16633
+ ((_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.event) && this.beginDragTarget(options, this.item.composition.event);
16634
+ }
16627
16635
  }
16628
16636
  };
16629
16637
  _proto.onUpdate = function onUpdate(dt) {
@@ -17159,6 +17167,83 @@ var PlayState;
17159
17167
  PlayState[PlayState["Paused"] = 1] = "Paused";
17160
17168
  })(PlayState || (PlayState = {}));
17161
17169
 
17170
+ /**
17171
+ *
17172
+ */ /**
17173
+ * 事件监听器
17174
+ */ var EventEmitter = function EventEmitter() {
17175
+ var _this = this;
17176
+ var _this1 = this;
17177
+ this.listeners = {};
17178
+ /**
17179
+ * 移除事件监听器
17180
+ * @param eventName - 事件名称
17181
+ * @param listener - 事件监听器
17182
+ * @returns
17183
+ */ this.off = function(eventName, listener) {
17184
+ if (!_this.listeners[eventName]) {
17185
+ return;
17186
+ }
17187
+ _this.listeners[eventName] = _this.listeners[eventName].filter(function(param) {
17188
+ var l = param.listener;
17189
+ return l !== listener;
17190
+ });
17191
+ };
17192
+ /**
17193
+ * 监听事件
17194
+ * @param eventName - 事件名称
17195
+ * @param listener - 事件监听器
17196
+ * @param options - 事件监听器选项
17197
+ * @returns
17198
+ */ this.on = function(eventName, listener, options) {
17199
+ _this.listeners[eventName] = _this.listeners[eventName] || [];
17200
+ _this.listeners[eventName].push({
17201
+ listener: listener,
17202
+ options: options
17203
+ });
17204
+ return function() {
17205
+ return _this.off(eventName, listener);
17206
+ };
17207
+ };
17208
+ /**
17209
+ * 一次性监听事件
17210
+ * @param eventName - 事件名称
17211
+ * @param listener - 事件监听器
17212
+ */ this.once = function(eventName, listener) {
17213
+ _this.on(eventName, listener, {
17214
+ once: true
17215
+ });
17216
+ };
17217
+ /**
17218
+ * 触发事件
17219
+ * @param eventName - 事件名称
17220
+ * @param args - 事件参数
17221
+ */ this.emit = function(eventName) {
17222
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17223
+ args[_key - 1] = arguments[_key];
17224
+ }
17225
+ var _this_listeners_eventName;
17226
+ (_this_listeners_eventName = _this1.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.forEach(function(param) {
17227
+ var listener = param.listener, options = param.options;
17228
+ listener.apply(void 0, [].concat(args));
17229
+ if (options == null ? void 0 : options.once) {
17230
+ _this1.off(eventName, listener);
17231
+ }
17232
+ });
17233
+ };
17234
+ /**
17235
+ * 获取事件名称对应的所有监听器
17236
+ * @param eventName - 事件名称
17237
+ * @returns - 返回事件名称对应的所有监听器
17238
+ */ this.getListeners = function(eventName) {
17239
+ var _this_listeners_eventName;
17240
+ return ((_this_listeners_eventName = _this.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.map(function(param) {
17241
+ var listener = param.listener;
17242
+ return listener;
17243
+ })) || [];
17244
+ };
17245
+ };
17246
+
17162
17247
  var tempQuat$1 = new Quaternion();
17163
17248
  var seed$4 = 1;
17164
17249
  // TODO 继承 Component
@@ -17629,83 +17714,6 @@ var seed$4 = 1;
17629
17714
  return Transform;
17630
17715
  }();
17631
17716
 
17632
- /**
17633
- *
17634
- */ /**
17635
- * 事件监听器
17636
- */ var EventEmitter = function EventEmitter() {
17637
- var _this = this;
17638
- var _this1 = this;
17639
- this.listeners = {};
17640
- /**
17641
- * 移除事件监听器
17642
- * @param eventName - 事件名称
17643
- * @param listener - 事件监听器
17644
- * @returns
17645
- */ this.off = function(eventName, listener) {
17646
- if (!_this.listeners[eventName]) {
17647
- return;
17648
- }
17649
- _this.listeners[eventName] = _this.listeners[eventName].filter(function(param) {
17650
- var l = param.listener;
17651
- return l !== listener;
17652
- });
17653
- };
17654
- /**
17655
- * 监听事件
17656
- * @param eventName - 事件名称
17657
- * @param listener - 事件监听器
17658
- * @param options - 事件监听器选项
17659
- * @returns
17660
- */ this.on = function(eventName, listener, options) {
17661
- _this.listeners[eventName] = _this.listeners[eventName] || [];
17662
- _this.listeners[eventName].push({
17663
- listener: listener,
17664
- options: options
17665
- });
17666
- return function() {
17667
- return _this.off(eventName, listener);
17668
- };
17669
- };
17670
- /**
17671
- * 一次性监听事件
17672
- * @param eventName - 事件名称
17673
- * @param listener - 事件监听器
17674
- */ this.once = function(eventName, listener) {
17675
- _this.on(eventName, listener, {
17676
- once: true
17677
- });
17678
- };
17679
- /**
17680
- * 触发事件
17681
- * @param eventName - 事件名称
17682
- * @param args - 事件参数
17683
- */ this.emit = function(eventName) {
17684
- for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17685
- args[_key - 1] = arguments[_key];
17686
- }
17687
- var _this_listeners_eventName;
17688
- (_this_listeners_eventName = _this1.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.forEach(function(param) {
17689
- var listener = param.listener, options = param.options;
17690
- listener.apply(void 0, [].concat(args));
17691
- if (options == null ? void 0 : options.once) {
17692
- _this1.off(eventName, listener);
17693
- }
17694
- });
17695
- };
17696
- /**
17697
- * 获取事件名称对应的所有监听器
17698
- * @param eventName - 事件名称
17699
- * @returns - 返回事件名称对应的所有监听器
17700
- */ this.getListeners = function(eventName) {
17701
- var _this_listeners_eventName;
17702
- return ((_this_listeners_eventName = _this.listeners[eventName]) == null ? void 0 : _this_listeners_eventName.map(function(param) {
17703
- var listener = param.listener;
17704
- return listener;
17705
- })) || [];
17706
- };
17707
- };
17708
-
17709
17717
  var VFXItem = /*#__PURE__*/ function(EffectsObject) {
17710
17718
  _inherits(VFXItem, EffectsObject);
17711
17719
  function VFXItem(engine, props) {
@@ -18055,42 +18063,36 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
18055
18063
  EffectsObject.prototype.fromData.call(this, data);
18056
18064
  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;
18057
18065
  this.props = data;
18058
- //@ts-expect-error
18059
18066
  this.type = data.type;
18060
18067
  this.id = id.toString(); // TODO 老数据 id 是 number,需要转换
18061
18068
  this.name = name;
18062
18069
  this.start = delay ? delay : this.start;
18070
+ var transformProps = {};
18063
18071
  if (transform) {
18064
- //@ts-expect-error TODO 数据改造后移除 expect-error
18065
- transform.position = new Vector3().copyFrom(transform.position);
18072
+ transformProps.position = new Vector3().copyFrom(transform.position);
18066
18073
  // FIXME: transform.rotation待删除
18074
+ //@ts-expect-error
18067
18075
  if (transform.quat) {
18068
18076
  //@ts-expect-error
18069
- transform.quat = new Quaternion(transform.quat.x, transform.quat.y, transform.quat.z, transform.quat.w);
18077
+ transformProps.quat = new Quaternion(transform.quat.x, transform.quat.y, transform.quat.z, transform.quat.w);
18070
18078
  } else {
18071
18079
  var _transform_eulerHint;
18072
18080
  //@ts-expect-error
18073
- transform.rotation = new Euler().copyFrom((_transform_eulerHint = transform.eulerHint) != null ? _transform_eulerHint : transform.rotation);
18081
+ transformProps.rotation = new Euler().copyFrom((_transform_eulerHint = transform.eulerHint) != null ? _transform_eulerHint : transform.rotation);
18074
18082
  }
18075
- //@ts-expect-error
18076
- transform.scale = new Vector3().copyFrom(transform.scale);
18077
- //@ts-expect-error
18083
+ transformProps.scale = new Vector3().copyFrom(transform.scale);
18078
18084
  if (transform.size) {
18079
- //@ts-expect-error
18080
- transform.size = new Vector2().copyFrom(transform.size);
18085
+ transformProps.size = new Vector2().copyFrom(transform.size);
18081
18086
  }
18082
- //@ts-expect-error
18083
18087
  if (transform.anchor) {
18084
- //@ts-expect-error
18085
- transform.anchor = new Vector2().copyFrom(transform.anchor);
18088
+ transformProps.anchor = new Vector2().copyFrom(transform.anchor);
18086
18089
  }
18087
- this.transform.setTransform(transform);
18090
+ this.transform.setTransform(transformProps);
18088
18091
  }
18089
18092
  this.transform.name = this.name;
18090
18093
  this.transform.engine = this.engine;
18091
18094
  this.parentId = parentId;
18092
18095
  this.duration = duration;
18093
- // TODO spec endbehavior 类型修正
18094
18096
  this.endBehavior = endBehavior;
18095
18097
  if (!data.content) {
18096
18098
  data.content = {
@@ -24882,9 +24884,23 @@ var TextComponent = /*#__PURE__*/ function(BaseRenderComponent) {
24882
24884
  order: listIndex
24883
24885
  };
24884
24886
  this.interaction = interaction;
24887
+ this.cachePrefix = "-";
24888
+ this.renderInfo = getImageItemRenderInfo(this);
24889
+ var material = this.createMaterial(this.renderInfo, 2);
24890
+ this.worldMatrix = Matrix4.fromIdentity();
24891
+ this.material = material;
24892
+ this.material.setVector4("_TexOffset", new Vector4().setFromArray([
24893
+ 0,
24894
+ 0,
24895
+ 1,
24896
+ 1
24897
+ ]));
24898
+ // TextComponentBase
24885
24899
  this.updateWithOptions(options);
24886
- // Text
24887
24900
  this.updateTexture();
24901
+ this.setItem();
24902
+ // 恢复默认颜色
24903
+ this.material.setVector4("_Color", new Vector4(1, 1, 1, 1));
24888
24904
  };
24889
24905
  _proto.updateWithOptions = function updateWithOptions(options) {
24890
24906
  // OVERRIDE by mixins
@@ -25202,7 +25218,7 @@ var TextComponentBase = /*#__PURE__*/ function() {
25202
25218
  }
25203
25219
  //与 toDataURL() 两种方式都需要像素读取操作
25204
25220
  var imageData = context.getImageData(0, 0, this.canvas.width, this.canvas.height);
25205
- this.material.setTexture("_MainTex", Texture.createWithData(this.engine, {
25221
+ var texture = Texture.createWithData(this.engine, {
25206
25222
  data: new Uint8Array(imageData.data),
25207
25223
  width: imageData.width,
25208
25224
  height: imageData.height
@@ -25212,7 +25228,9 @@ var TextComponentBase = /*#__PURE__*/ function() {
25212
25228
  minFilter: glContext.LINEAR,
25213
25229
  wrapS: glContext.CLAMP_TO_EDGE,
25214
25230
  wrapT: glContext.CLAMP_TO_EDGE
25215
- }));
25231
+ });
25232
+ this.renderer.texture = texture;
25233
+ this.material.setTexture("_MainTex", texture);
25216
25234
  this.isDirty = false;
25217
25235
  };
25218
25236
  _proto.getFontDesc = function getFontDesc() {
@@ -28400,7 +28418,7 @@ var tmpScale = new Vector3(1, 1, 1);
28400
28418
  var sourceItemData = this.engine.jsonSceneData[itemDataPath.id];
28401
28419
  var itemProps = sourceItemData;
28402
28420
  if (passRenderLevel(sourceItemData.renderLevel, this.renderLevel)) {
28403
- if (itemProps.type === ItemType.sprite || itemProps.type === ItemType.particle || itemProps.type === ItemType.spine || //@ts-expect-error
28421
+ if (itemProps.type === ItemType.sprite || itemProps.type === ItemType.particle || itemProps.type === ItemType.spine || itemProps.type === ItemType.text || itemProps.type === ItemType.video || //@ts-expect-error
28404
28422
  itemProps.type === ItemType.shape) {
28405
28423
  for(var _iterator2 = _create_for_of_iterator_helper_loose(itemProps.components), _step2; !(_step2 = _iterator2()).done;){
28406
28424
  var componentPath = _step2.value;
@@ -28421,6 +28439,13 @@ var tmpScale = new Vector3(1, 1, 1);
28421
28439
  }
28422
28440
  }
28423
28441
  items.push(itemDataPath);
28442
+ } else {
28443
+ // 非预合成元素未达到渲染等级的转化为空节点。
28444
+ // 预合成元素有根据 item type 的子元素加载判断,没法保留空节点,这边先整体过滤掉。
28445
+ if (itemProps.type !== ItemType.composition) {
28446
+ itemProps.components = [];
28447
+ items.push(itemDataPath);
28448
+ }
28424
28449
  }
28425
28450
  }
28426
28451
  composition.items = items;
@@ -28665,10 +28690,13 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
28665
28690
  assertExist(sourceContent);
28666
28691
  _this.renderer = renderer;
28667
28692
  _this.refCompositionProps = refCompositionProps;
28668
- _this.rootItem = new VFXItem(_this.getEngine(), sourceContent);
28693
+ // Instantiate composition rootItem
28694
+ _this.rootItem = new VFXItem(_this.getEngine());
28669
28695
  _this.rootItem.name = "rootItem";
28696
+ _this.rootItem.duration = sourceContent.duration;
28697
+ _this.rootItem.endBehavior = sourceContent.endBehavior;
28670
28698
  _this.rootItem.composition = _assert_this_initialized(_this);
28671
- // Spawn rootCompositionComponent
28699
+ // Create rootCompositionComponent
28672
28700
  _this.rootComposition = _this.rootItem.addComponent(CompositionComponent);
28673
28701
  _this.width = width;
28674
28702
  _this.height = height;
@@ -31342,7 +31370,7 @@ registerPlugin("sprite", SpriteLoader, VFXItem, true);
31342
31370
  registerPlugin("particle", ParticleLoader, VFXItem, true);
31343
31371
  registerPlugin("cal", CalculateLoader, VFXItem, true);
31344
31372
  registerPlugin("interact", InteractLoader, VFXItem, true);
31345
- var version$1 = "2.2.2";
31373
+ var version$1 = "2.2.4";
31346
31374
  logger.info("Core version: " + version$1 + ".");
31347
31375
 
31348
31376
  var _obj;
@@ -32975,7 +33003,7 @@ setMaxSpriteMeshItemCount(8);
32975
33003
  */ Mesh.create = function(engine, props) {
32976
33004
  return new ThreeMesh(engine, props);
32977
33005
  };
32978
- var version = "2.2.2";
33006
+ var version = "2.2.4";
32979
33007
  logger.info("THREEJS plugin version: " + version + ".");
32980
33008
 
32981
33009
  export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, BYTES_TYPE_MAP, BaseRenderComponent, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, COMPRESSED_TEXTURE, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, CalculateLoader, Camera, CameraController, CameraVFXItemLoader, ColorCurve, ColorPropertyPlayableAsset, ColorPropertyTrack, Component, Composition, CompositionComponent, CompositionSourceManager, DEFAULT_FONTS, DEFAULT_FPS, Database, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectsObject, EffectsPackage, Engine, EventEmitter, EventSystem, Fake3DAnimationMode, Fake3DComponent, FilterMode, Float16ArrayWrapper, FloatPropertyPlayableAsset, FloatPropertyTrack, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, Item, KTXTexture, LineSegments, LinearValue, Material, MaterialDataBlock, MaterialRenderType, MaterialTrack, Mesh, MeshCollider, ObjectBindingTrack, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleSystem, ParticleSystemRenderer, ParticleTrack, PassTextureCache, PathSegments, PluginSystem, PostProcessVolume, PropertyTrack, RENDER_PASS_NAME_PREFIX, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTextureFormat, Renderbuffer, Renderer, RendererComponent, RuntimeClip, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0, SEMANTIC_PRE_COLOR_ATTACHMENT_0, SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0, SPRITE_VERTEX_STRIDE, Scene, SemanticMap, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderFactory, ShaderType, ShaderVariant, ShapeComponent, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteLoader, StaticValue, SubCompositionPlayableAsset, SubCompositionTrack, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeEngine, ThreeMaterial, ThreeSpriteComponent, ThreeTextComponent, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelinePlayable, TrackAsset, TrackSortWrapper, TrackType, Transform, TransformAnimationPlayable, TransformPlayableAsset, TransformTrack, VFXItem, ValueGetter, Vector4Curve, Vector4PropertyPlayableAsset, Vector4PropertyTrack, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, blend, calculateTranslation, canvasPool, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, createCopyShader, createGLContext, createKeyFrameMeta, createShape, createValueGetter, decimalEqual, defaultPlugins, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getImageItemRenderInfo, getKTXTextureOptions, getKeyFrameMetaByRawValue, getMergedStore, getParticleMeshShader, getPixelRatio, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, glType2VertexFormatType, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAlipayMiniApp, isAndroid, isArray, isCanvas, isFunction, isIOS, isIOSByUA, isMiniProgram, isObject, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, isWechatMiniApp, itemFrag, itemFrameFrag, itemVert, loadAVIFOptional, loadBinary, loadBlob, loadImage, loadMedia, loadVideo, loadWebPOptional, logger, index as math, maxSpriteMeshItemCount, modifyMaxKeyframeShader, nearestPowerOfTwo, noop, normalizeColor, numberToFix, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap$1 as particleOriginTranslateMap, particleUniformTypeMap, particleVert, passRenderLevel, pluginLoaderMap, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, spriteMeshShaderFromFilter, spriteMeshShaderFromRenderInfo, spriteMeshShaderIdFromRenderInfo, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };