@galacean/effects-threejs 2.8.7 → 2.8.9

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.8.7
6
+ * Version: v2.8.9
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -17843,14 +17843,14 @@ var CompositionComponent = /*#__PURE__*/ function(Component) {
17843
17843
  }
17844
17844
  }
17845
17845
  }
17846
- if (VFXItem.isComposition(hitTestItem)) {
17847
- if (hitTestItem.getComponent(CompositionComponent).hitTest(ray, x, y, regions, force, options)) {
17848
- hitTestSuccess = true;
17849
- }
17850
- } else {
17851
- if (_this.hitTestRecursive(hitTestItem, ray, x, y, regions, force, options)) {
17852
- hitTestSuccess = true;
17853
- }
17846
+ }
17847
+ if (VFXItem.isComposition(hitTestItem)) {
17848
+ if (hitTestItem.getComponent(CompositionComponent).hitTest(ray, x, y, regions, force, options)) {
17849
+ hitTestSuccess = true;
17850
+ }
17851
+ } else {
17852
+ if (_this.hitTestRecursive(hitTestItem, ray, x, y, regions, force, options)) {
17853
+ hitTestSuccess = true;
17854
17854
  }
17855
17855
  }
17856
17856
  };
@@ -28983,8 +28983,8 @@ var TextComponentBase = /*#__PURE__*/ function() {
28983
28983
  };
28984
28984
  _proto.setupShadow = function setupShadow() {
28985
28985
  var context = this.context;
28986
- var _this_textStyle = this.textStyle, outlineColor = _this_textStyle.outlineColor, shadowBlur = _this_textStyle.shadowBlur, shadowOffsetX = _this_textStyle.shadowOffsetX, shadowOffsetY = _this_textStyle.shadowOffsetY;
28987
- var r = outlineColor[0], g = outlineColor[1], b = outlineColor[2], a = outlineColor[3];
28986
+ var _this_textStyle = this.textStyle, shadowColor = _this_textStyle.shadowColor, shadowBlur = _this_textStyle.shadowBlur, shadowOffsetX = _this_textStyle.shadowOffsetX, shadowOffsetY = _this_textStyle.shadowOffsetY;
28987
+ var r = shadowColor[0], g = shadowColor[1], b = shadowColor[2], a = shadowColor[3];
28988
28988
  if (context) {
28989
28989
  context.shadowColor = "rgba(" + r * 255 + ", " + g * 255 + ", " + b * 255 + ", " + a + ")";
28990
28990
  context.shadowBlur = shadowBlur;
@@ -29209,11 +29209,11 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29209
29209
  _proto.getLineCount = function getLineCount(text) {
29210
29210
  var context = this.context;
29211
29211
  var _this_textLayout = this.textLayout, letterSpace = _this_textLayout.letterSpace, overflow = _this_textLayout.overflow;
29212
- // const fontScale = init ? this.textStyle.fontSize / 10 : 1 / this.textStyle.fontScale;
29213
29212
  this.maxLineWidth = 0;
29214
29213
  var width = this.textLayout.width + this.textStyle.fontOffset;
29215
29214
  var lineCount = 1;
29216
29215
  var x = 0;
29216
+ var charCountInLine = 0; // 跟踪当前行的字符数
29217
29217
  // 设置 context.font 的字号,确保 measureText 能正确计算字宽
29218
29218
  if (context) {
29219
29219
  context.font = this.getFontDesc(this.textStyle.fontSize);
@@ -29224,14 +29224,19 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29224
29224
  var _context_measureText_width;
29225
29225
  var textMetrics = (_context_measureText_width = context == null ? void 0 : (_context_measureText = context.measureText(str)) == null ? void 0 : _context_measureText.width) != null ? _context_measureText_width : 0;
29226
29226
  // 和浏览器行为保持一致
29227
- x += letterSpace;
29227
+ // 字符间距只应用在字符之间,每行第一个字符不加间距
29228
+ if (charCountInLine > 0) {
29229
+ x += letterSpace;
29230
+ }
29228
29231
  // 处理文本结束行为
29229
29232
  if (overflow === TextOverflow.display) {
29230
29233
  if (str === "\n") {
29231
29234
  lineCount++;
29232
29235
  x = 0;
29236
+ charCountInLine = 0; // 重置行字符计数
29233
29237
  } else {
29234
29238
  x += textMetrics;
29239
+ charCountInLine++;
29235
29240
  this.maxLineWidth = Math.max(this.maxLineWidth, x);
29236
29241
  }
29237
29242
  } else {
@@ -29239,9 +29244,11 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29239
29244
  lineCount++;
29240
29245
  this.maxLineWidth = Math.max(this.maxLineWidth, x);
29241
29246
  x = 0;
29247
+ charCountInLine = 0; // 重置行字符计数
29242
29248
  }
29243
29249
  if (str !== "\n") {
29244
29250
  x += textMetrics;
29251
+ charCountInLine++;
29245
29252
  }
29246
29253
  }
29247
29254
  }
@@ -29370,12 +29377,6 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29370
29377
  } else {
29371
29378
  context.font = style.fontDesc;
29372
29379
  }
29373
- if (style.hasShadow) {
29374
- _this.setupShadow();
29375
- }
29376
- if (style.isOutlined) {
29377
- _this.setupOutline();
29378
- }
29379
29380
  // textColor 统一是 0-1,写入 canvas 时乘 255
29380
29381
  var _style_textColor = style.textColor, r = _style_textColor[0], g = _style_textColor[1], b = _style_textColor[2], a = _style_textColor[3];
29381
29382
  context.fillStyle = "rgba(" + r * 255 + ", " + g * 255 + ", " + b * 255 + ", " + a + ")";
@@ -29388,7 +29389,10 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29388
29389
  var str = char[i];
29389
29390
  var textMetrics = context.measureText(str);
29390
29391
  // 和浏览器行为保持一致
29391
- x += layout.letterSpace * fontScale;
29392
+ // 字符间距只应用在字符之间,每行第一个字符不加间距
29393
+ if (charsArray.length > 0) {
29394
+ x += layout.letterSpace * fontScale;
29395
+ }
29392
29396
  if (x + textMetrics.width > baseWidth && i > 0 || str === "\n") {
29393
29397
  charsInfo.push({
29394
29398
  y: y,
@@ -29413,8 +29417,13 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29413
29417
  chars: charsArray,
29414
29418
  charOffsetX: charOffsetX
29415
29419
  });
29416
- // 先描边
29417
- if (style.isOutlined && style.outlineWidth > 0) {
29420
+ var hasOutline = style.isOutlined && style.outlineWidth > 0;
29421
+ if (hasOutline) {
29422
+ // 有描边:在描边时启用阴影
29423
+ if (style.hasShadow) {
29424
+ _this.setupShadow();
29425
+ }
29426
+ _this.setupOutline();
29418
29427
  charsInfo.forEach(function(charInfo) {
29419
29428
  var ox = layout.getOffsetX(style, charInfo.width);
29420
29429
  for(var i = 0; i < charInfo.chars.length; i++){
@@ -29424,8 +29433,15 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29424
29433
  context.strokeText(str, drawX, drawY);
29425
29434
  }
29426
29435
  });
29436
+ // 描边完成后立即禁用阴影,避免填充时重复绘制阴影
29437
+ if (style.hasShadow) {
29438
+ context.shadowColor = "transparent";
29439
+ }
29440
+ }
29441
+ // 填充阶段:无描边时才启用阴影
29442
+ if (!hasOutline && style.hasShadow) {
29443
+ _this.setupShadow();
29427
29444
  }
29428
- // 再填充
29429
29445
  charsInfo.forEach(function(charInfo) {
29430
29446
  var ox = layout.getOffsetX(style, charInfo.width);
29431
29447
  for(var i = 0; i < charInfo.chars.length; i++){
@@ -29435,6 +29451,7 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29435
29451
  context.fillText(str, drawX, drawY);
29436
29452
  }
29437
29453
  });
29454
+ // 清理阴影状态
29438
29455
  if (style.hasShadow) {
29439
29456
  context.shadowColor = "transparent";
29440
29457
  }
@@ -31618,7 +31635,7 @@ function getStandardSpriteContent(sprite, transform) {
31618
31635
  return ret;
31619
31636
  }
31620
31637
 
31621
- var version$2 = "2.8.7";
31638
+ var version$2 = "2.8.9";
31622
31639
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
31623
31640
  var standardVersion = /^(\d+)\.(\d+)$/;
31624
31641
  var reverseParticle = false;
@@ -35318,7 +35335,7 @@ registerPlugin("text", TextLoader);
35318
35335
  registerPlugin("sprite", SpriteLoader);
35319
35336
  registerPlugin("particle", ParticleLoader);
35320
35337
  registerPlugin("interact", InteractLoader);
35321
- var version$1 = "2.8.7";
35338
+ var version$1 = "2.8.9";
35322
35339
  logger.info("Core version: " + version$1 + ".");
35323
35340
 
35324
35341
  var _obj;
@@ -36895,7 +36912,7 @@ applyMixins(ThreeTextComponent, [
36895
36912
  */ Mesh.create = function(engine, props) {
36896
36913
  return new ThreeMesh(engine, props);
36897
36914
  };
36898
- var version = "2.8.7";
36915
+ var version = "2.8.9";
36899
36916
  logger.info("THREEJS plugin version: " + version + ".");
36900
36917
 
36901
36918
  export { ActivationMixerPlayable, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AndNode, AndNodeData, Animatable, AnimationClip, AnimationClipNode, AnimationClipNodeData, AnimationGraphAsset, Animator, ApplyAdditiveNode, ApplyAdditiveNodeData, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, BlendNode, BlendNodeData, BoolValueNode, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, Camera, CameraController, CameraVFXItemLoader, ColorCurve, ColorPlayable, ColorPropertyMixerPlayable, ColorPropertyPlayableAsset, ColorPropertyTrack, Component, ComponentTimePlayable, ComponentTimePlayableAsset, ComponentTimeTrack, Composition, CompositionComponent, CompressTextureCapabilityType, ConstBoolNode, ConstBoolNodeData, ConstFloatNode, ConstFloatNodeData, ConstraintTarget, ControlParameterBoolNode, ControlParameterBoolNodeData, ControlParameterFloatNode, ControlParameterFloatNodeData, ControlParameterTriggerNode, ControlParameterTriggerNodeData, DEFAULT_FONTS, DEFAULT_FPS, Database, Deferred, DestroyOptions, Downloader, DrawObjectPass, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectComponentTimeTrack, EffectsObject, EffectsPackage, Ellipse, Engine, EqualNodeData, EventEmitter, EventSystem, Fake3DAnimationMode, Fake3DComponent, FilterMode, Float16ArrayWrapper, FloatComparisonNode, FloatComparisonNodeData, FloatPropertyMixerPlayable, FloatPropertyPlayableAsset, FloatPropertyTrack, FloatValueNode, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, GraphInstance, GraphNode, GraphNodeData, GraphicsPath, GreaterNodeData, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, InvalidIndex, Item, LayerBlendNode, LayerBlendNodeData, LessNodeData, LineSegments, LinearValue, MaskMode, MaskProcessor, MaskableGraphic, Material, MaterialDataBlock, MaterialRenderType, MaterialTrack, Mesh, MeshCollider, NodeTransform, NotNode, NotNodeData, ObjectBindingTrack, OrNode, OrNodeData, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleMixerPlayable, ParticleSystem, ParticleSystemRenderer, ParticleTrack, PassTextureCache, PathSegments, PlayState, Playable, PlayableAsset, PlayableOutput, Plugin, PluginSystem, PointerEventData, PointerEventType, PolyStar, Polygon, Pose, PoseNode, PositionConstraint, PostProcessVolume, PropertyClipPlayable, PropertyTrack, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RaycastResult, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTargetPool, 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, SceneLoader, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderFactory, ShaderType, ShaderVariant, ShapeComponent, ShapePath, SourceType, SpriteColorMixerPlayable, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteComponentTimeTrack, SpriteLoader, StarType, StateMachineNode, StateMachineNodeData, StateNode, StateNodeData, StaticValue, SubCompositionClipPlayable, SubCompositionMixerPlayable, SubCompositionPlayableAsset, SubCompositionTrack, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TangentMode, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TexturePaintScaleMode, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeEngine, ThreeMaterial, ThreeSpriteComponent, ThreeTextComponent, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelineInstance, TrackAsset, TrackMixerPlayable, TrackType, Transform, TransformMixerPlayable, TransformPlayable, TransformPlayableAsset, TransformTrack, TransitionNode, TransitionNodeData, TransitionState, VFXItem, ValueGetter, ValueNode, Vector2Curve, Vector2PropertyMixerPlayable, Vector2PropertyPlayableAsset, Vector2PropertyTrack, Vector3Curve, Vector3PropertyMixerPlayable, Vector3PropertyTrack, Vector3ropertyPlayableAsset, Vector4Curve, Vector4PropertyMixerPlayable, Vector4PropertyPlayableAsset, Vector4PropertyTrack, WeightedMode, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, buildLine, calculateTranslation, canUseBOM, canvasPool, closePointEps, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, createGLContext, createKeyFrameMeta, createShape, createValueGetter, curveEps, decimalEqual, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getClass, getColorFromGradientStops, getConfig, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getKeyFrameMetaByRawValue, getMergedStore, getNodeDataClass, getParticleMeshShader, getPixelRatio, getPluginUsageInfo, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, glType2VertexFormatType, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAlipayMiniApp, isAndroid, isArray, isCanvas, isFunction, isIOS, isIOSByUA, isMiniProgram, isObject, isOpenHarmony, isPlainObject, isPowerOfTwo, isSafeFontFamily, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, isWechatMiniApp, itemFrag, itemVert, loadAVIFOptional, loadBinary, loadBlob, loadImage, loadMedia, loadVideo, loadWebPOptional, logger, index as math, modifyMaxKeyframeShader, nearestPowerOfTwo, nodeDataClass, noop, normalizeColor, numberToFix, oldBezierKeyFramesToNew, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap$1 as particleOriginTranslateMap, particleUniformTypeMap, particleVert, passRenderLevel, pluginLoaderMap, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setRayFromCamera, setSideMode, setUniformValue, sortByOrder, index$1 as spec, textureLoaderRegistry, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };