@galacean/effects-core 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 core 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
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
@@ -17841,14 +17841,14 @@ var CompositionComponent = /*#__PURE__*/ function(Component) {
17841
17841
  }
17842
17842
  }
17843
17843
  }
17844
- if (VFXItem.isComposition(hitTestItem)) {
17845
- if (hitTestItem.getComponent(CompositionComponent).hitTest(ray, x, y, regions, force, options)) {
17846
- hitTestSuccess = true;
17847
- }
17848
- } else {
17849
- if (_this.hitTestRecursive(hitTestItem, ray, x, y, regions, force, options)) {
17850
- hitTestSuccess = true;
17851
- }
17844
+ }
17845
+ if (VFXItem.isComposition(hitTestItem)) {
17846
+ if (hitTestItem.getComponent(CompositionComponent).hitTest(ray, x, y, regions, force, options)) {
17847
+ hitTestSuccess = true;
17848
+ }
17849
+ } else {
17850
+ if (_this.hitTestRecursive(hitTestItem, ray, x, y, regions, force, options)) {
17851
+ hitTestSuccess = true;
17852
17852
  }
17853
17853
  }
17854
17854
  };
@@ -28981,8 +28981,8 @@ var TextComponentBase = /*#__PURE__*/ function() {
28981
28981
  };
28982
28982
  _proto.setupShadow = function setupShadow() {
28983
28983
  var context = this.context;
28984
- var _this_textStyle = this.textStyle, outlineColor = _this_textStyle.outlineColor, shadowBlur = _this_textStyle.shadowBlur, shadowOffsetX = _this_textStyle.shadowOffsetX, shadowOffsetY = _this_textStyle.shadowOffsetY;
28985
- var r = outlineColor[0], g = outlineColor[1], b = outlineColor[2], a = outlineColor[3];
28984
+ var _this_textStyle = this.textStyle, shadowColor = _this_textStyle.shadowColor, shadowBlur = _this_textStyle.shadowBlur, shadowOffsetX = _this_textStyle.shadowOffsetX, shadowOffsetY = _this_textStyle.shadowOffsetY;
28985
+ var r = shadowColor[0], g = shadowColor[1], b = shadowColor[2], a = shadowColor[3];
28986
28986
  if (context) {
28987
28987
  context.shadowColor = "rgba(" + r * 255 + ", " + g * 255 + ", " + b * 255 + ", " + a + ")";
28988
28988
  context.shadowBlur = shadowBlur;
@@ -29207,11 +29207,11 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29207
29207
  _proto.getLineCount = function getLineCount(text) {
29208
29208
  var context = this.context;
29209
29209
  var _this_textLayout = this.textLayout, letterSpace = _this_textLayout.letterSpace, overflow = _this_textLayout.overflow;
29210
- // const fontScale = init ? this.textStyle.fontSize / 10 : 1 / this.textStyle.fontScale;
29211
29210
  this.maxLineWidth = 0;
29212
29211
  var width = this.textLayout.width + this.textStyle.fontOffset;
29213
29212
  var lineCount = 1;
29214
29213
  var x = 0;
29214
+ var charCountInLine = 0; // 跟踪当前行的字符数
29215
29215
  // 设置 context.font 的字号,确保 measureText 能正确计算字宽
29216
29216
  if (context) {
29217
29217
  context.font = this.getFontDesc(this.textStyle.fontSize);
@@ -29222,14 +29222,19 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29222
29222
  var _context_measureText_width;
29223
29223
  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;
29224
29224
  // 和浏览器行为保持一致
29225
- x += letterSpace;
29225
+ // 字符间距只应用在字符之间,每行第一个字符不加间距
29226
+ if (charCountInLine > 0) {
29227
+ x += letterSpace;
29228
+ }
29226
29229
  // 处理文本结束行为
29227
29230
  if (overflow === TextOverflow.display) {
29228
29231
  if (str === "\n") {
29229
29232
  lineCount++;
29230
29233
  x = 0;
29234
+ charCountInLine = 0; // 重置行字符计数
29231
29235
  } else {
29232
29236
  x += textMetrics;
29237
+ charCountInLine++;
29233
29238
  this.maxLineWidth = Math.max(this.maxLineWidth, x);
29234
29239
  }
29235
29240
  } else {
@@ -29237,9 +29242,11 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29237
29242
  lineCount++;
29238
29243
  this.maxLineWidth = Math.max(this.maxLineWidth, x);
29239
29244
  x = 0;
29245
+ charCountInLine = 0; // 重置行字符计数
29240
29246
  }
29241
29247
  if (str !== "\n") {
29242
29248
  x += textMetrics;
29249
+ charCountInLine++;
29243
29250
  }
29244
29251
  }
29245
29252
  }
@@ -29368,12 +29375,6 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29368
29375
  } else {
29369
29376
  context.font = style.fontDesc;
29370
29377
  }
29371
- if (style.hasShadow) {
29372
- _this.setupShadow();
29373
- }
29374
- if (style.isOutlined) {
29375
- _this.setupOutline();
29376
- }
29377
29378
  // textColor 统一是 0-1,写入 canvas 时乘 255
29378
29379
  var _style_textColor = style.textColor, r = _style_textColor[0], g = _style_textColor[1], b = _style_textColor[2], a = _style_textColor[3];
29379
29380
  context.fillStyle = "rgba(" + r * 255 + ", " + g * 255 + ", " + b * 255 + ", " + a + ")";
@@ -29386,7 +29387,10 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29386
29387
  var str = char[i];
29387
29388
  var textMetrics = context.measureText(str);
29388
29389
  // 和浏览器行为保持一致
29389
- x += layout.letterSpace * fontScale;
29390
+ // 字符间距只应用在字符之间,每行第一个字符不加间距
29391
+ if (charsArray.length > 0) {
29392
+ x += layout.letterSpace * fontScale;
29393
+ }
29390
29394
  if (x + textMetrics.width > baseWidth && i > 0 || str === "\n") {
29391
29395
  charsInfo.push({
29392
29396
  y: y,
@@ -29411,8 +29415,13 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29411
29415
  chars: charsArray,
29412
29416
  charOffsetX: charOffsetX
29413
29417
  });
29414
- // 先描边
29415
- if (style.isOutlined && style.outlineWidth > 0) {
29418
+ var hasOutline = style.isOutlined && style.outlineWidth > 0;
29419
+ if (hasOutline) {
29420
+ // 有描边:在描边时启用阴影
29421
+ if (style.hasShadow) {
29422
+ _this.setupShadow();
29423
+ }
29424
+ _this.setupOutline();
29416
29425
  charsInfo.forEach(function(charInfo) {
29417
29426
  var ox = layout.getOffsetX(style, charInfo.width);
29418
29427
  for(var i = 0; i < charInfo.chars.length; i++){
@@ -29422,8 +29431,15 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29422
29431
  context.strokeText(str, drawX, drawY);
29423
29432
  }
29424
29433
  });
29434
+ // 描边完成后立即禁用阴影,避免填充时重复绘制阴影
29435
+ if (style.hasShadow) {
29436
+ context.shadowColor = "transparent";
29437
+ }
29438
+ }
29439
+ // 填充阶段:无描边时才启用阴影
29440
+ if (!hasOutline && style.hasShadow) {
29441
+ _this.setupShadow();
29425
29442
  }
29426
- // 再填充
29427
29443
  charsInfo.forEach(function(charInfo) {
29428
29444
  var ox = layout.getOffsetX(style, charInfo.width);
29429
29445
  for(var i = 0; i < charInfo.chars.length; i++){
@@ -29433,6 +29449,7 @@ var TextComponent = /*#__PURE__*/ function(MaskableGraphic) {
29433
29449
  context.fillText(str, drawX, drawY);
29434
29450
  }
29435
29451
  });
29452
+ // 清理阴影状态
29436
29453
  if (style.hasShadow) {
29437
29454
  context.shadowColor = "transparent";
29438
29455
  }
@@ -31616,7 +31633,7 @@ function getStandardSpriteContent(sprite, transform) {
31616
31633
  return ret;
31617
31634
  }
31618
31635
 
31619
- var version$1 = "2.8.7";
31636
+ var version$1 = "2.8.9";
31620
31637
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
31621
31638
  var standardVersion = /^(\d+)\.(\d+)$/;
31622
31639
  var reverseParticle = false;
@@ -35316,7 +35333,7 @@ registerPlugin("text", TextLoader);
35316
35333
  registerPlugin("sprite", SpriteLoader);
35317
35334
  registerPlugin("particle", ParticleLoader);
35318
35335
  registerPlugin("interact", InteractLoader);
35319
- var version = "2.8.7";
35336
+ var version = "2.8.9";
35320
35337
  logger.info("Core version: " + version + ".");
35321
35338
 
35322
35339
  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, 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, TangentMode, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TexturePaintScaleMode, TextureSourceType, TextureStoreAction, 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, sortByOrder, index$1 as spec, textureLoaderRegistry, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };