@galacean/effects-core 2.9.0-alpha.1 → 2.9.0-alpha.2

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.
@@ -2,6 +2,7 @@ import type * as spec from '@galacean/effects-specification';
2
2
  import type { Matrix3, Matrix4, Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';
3
3
  import type { Texture } from '../texture';
4
4
  import type { DestroyOptions } from '../utils';
5
+ import type { VFXItem } from '../vfx-item';
5
6
  export type UniformSemantic = 'VIEW' | 'MODEL' | 'MODELVIEW' | 'PROJECTION' | 'VIEWPROJECTION' | 'VIEWINVERSE' | 'EDITOR_TRANSFORM' | 'MODELVIEWPROJECTION';
6
7
  export interface MaterialBlendingStates {
7
8
  blending?: boolean;
@@ -63,6 +64,7 @@ export declare enum ShaderType {
63
64
  *
64
65
  */
65
66
  export interface Maskable {
67
+ item: VFXItem;
66
68
  drawStencilMask(maskRef: number): void;
67
69
  }
68
70
  /**
@@ -1 +1 @@
1
- export declare function buildAdaptiveBezier(points: number[], sX: number, sY: number, cp1x: number, cp1y: number, cp2x: number, cp2y: number, eX: number, eY: number, smoothness?: number): number[];
1
+ export declare function buildAdaptiveBezier(points: number[], sX: number, sY: number, cp1x: number, cp1y: number, cp2x: number, cp2y: number, eX: number, eY: number, smoothness?: number, scale?: number): number[];
@@ -191,6 +191,6 @@ export declare class Circle extends ShapePrimitive {
191
191
  * @see {@link Circle.clone} For creating new circle copy
192
192
  */
193
193
  copyTo(circle: Circle): Circle;
194
- build(points: number[]): void;
194
+ build(points: number[], screenScale?: number): void;
195
195
  triangulate(points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;
196
196
  }
@@ -74,6 +74,6 @@ export declare class Ellipse extends ShapePrimitive {
74
74
  copyTo(ellipse: Ellipse): Ellipse;
75
75
  getX(): number;
76
76
  getY(): number;
77
- build(points: number[]): number[];
77
+ build(points: number[], screenScale?: number): number[];
78
78
  triangulate(points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;
79
79
  }
@@ -23,7 +23,7 @@ export declare class GraphicsPath {
23
23
  * @param smoothness - Optional parameter to adjust the smoothness of the curve.
24
24
  * @returns The instance of the current object for chaining.
25
25
  */
26
- bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, smoothness?: number): GraphicsPath;
26
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, smoothness?: number, scale?: number): GraphicsPath;
27
27
  /**
28
28
  * Connects the current point to a new point with a straight line. This method updates the current path.
29
29
  * @param x - The x-coordinate of the new point to connect to.
@@ -35,7 +35,7 @@ export declare class PolyStar extends ShapePrimitive {
35
35
  clone(): ShapePrimitive;
36
36
  copyFrom(source: PolyStar): void;
37
37
  copyTo(destination: PolyStar): void;
38
- build(points: number[]): void;
38
+ build(points: number[], screenScale?: number): void;
39
39
  triangulate(points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;
40
40
  private buildStarPath;
41
41
  private buildPolygonPath;
@@ -58,7 +58,7 @@ export declare class Polygon extends ShapePrimitive {
58
58
  * @readonly
59
59
  */
60
60
  getY(): number;
61
- build(points: number[]): void;
61
+ build(points: number[], screenScale?: number): void;
62
62
  triangulate(points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;
63
63
  /**
64
64
  * 获取直线上最远的两个端点坐标组成的三角形
@@ -57,6 +57,6 @@ export declare class Rectangle extends ShapePrimitive {
57
57
  * @returns Returns given parameter.
58
58
  */
59
59
  copyTo(rectangle: Rectangle): Rectangle;
60
- build(points: number[]): void;
60
+ build(points: number[], screenScale?: number): void;
61
61
  triangulate(points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;
62
62
  }
@@ -26,7 +26,7 @@ export declare class ShapePath {
26
26
  * @param smoothness - Optional parameter to adjust the smoothness of the curve.
27
27
  * @returns The instance of the current object for chaining.
28
28
  */
29
- bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, smoothness?: number): ShapePath;
29
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, smoothness?: number, scale?: number): ShapePath;
30
30
  moveTo(x: number, y: number): ShapePath;
31
31
  /**
32
32
  * Connects the current point to a new point with a straight line. This method updates the current path.
@@ -10,6 +10,6 @@ export declare abstract class ShapePrimitive {
10
10
  /** Returns the framing rectangle of the ShapePrimitive as a Rectangle object. */
11
11
  /** The X coordinate of the shape */
12
12
  /** The Y coordinate of the shape */
13
- abstract build(points: number[]): void;
13
+ abstract build(points: number[], screenScale?: number): void;
14
14
  abstract triangulate(points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;
15
15
  }
@@ -84,6 +84,6 @@ export declare class Triangle extends ShapePrimitive {
84
84
  getBounds(out?: Rectangle): Rectangle;
85
85
  getX(): number;
86
86
  getY(): number;
87
- build(points: number[]): void;
87
+ build(points: number[], screenScale?: number): void;
88
88
  triangulate(points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;
89
89
  }
@@ -3,6 +3,7 @@ import { Vector2 } from '@galacean/effects-math/es/core/vector2';
3
3
  import type * as spec from '@galacean/effects-specification';
4
4
  import type { VFXItem } from '../../vfx-item';
5
5
  import type { Composition } from '../../composition';
6
+ import type { Maskable } from '../../material';
6
7
  export declare enum HitTestType {
7
8
  triangle = 1,
8
9
  box = 2,
@@ -28,23 +29,27 @@ export interface HitTestTriangleParams {
28
29
  type: HitTestType.triangle;
29
30
  triangles: TriangleLike[];
30
31
  backfaceCulling?: boolean;
32
+ clipMasks: Maskable[];
31
33
  behavior?: spec.InteractBehavior;
32
34
  }
33
35
  export interface HitTestBoxParams {
34
36
  type: HitTestType.box;
35
37
  center: Vector3;
36
38
  size: Vector3;
39
+ clipMasks: Maskable[];
37
40
  behavior?: spec.InteractBehavior;
38
41
  }
39
42
  export interface HitTestSphereParams {
40
43
  type: HitTestType.sphere;
41
44
  center: Vector3;
42
45
  radius: number;
46
+ clipMasks: Maskable[];
43
47
  behavior?: spec.InteractBehavior;
44
48
  }
45
49
  export interface HitTestCustomParams {
46
50
  type: HitTestType.custom;
47
51
  collect(ray: Ray, pointInCanvas: Vector2): Vector3[] | void;
52
+ clipMasks: Maskable[];
48
53
  behavior?: spec.InteractBehavior;
49
54
  }
50
55
  export type Region = {
@@ -133,7 +133,7 @@ export declare class TextComponent extends MaskableGraphic {
133
133
  *
134
134
  * 说明:
135
135
  * - 使用 Canvas 2D 的 measureText,并按当前实现的逐字符排版规则累加宽度(与 updateTexture 保持一致)。
136
- * - 结果为"逻辑宽度"(已除去 fontScale,并扣除 fontOffset),可直接写回 options.textWidth。
136
+ * - 结果为"逻辑宽度"(扣除 fontOffset),可直接写回 options.textWidth。,可直接写回 options.textWidth
137
137
  * - 通过 padding 追加少量冗余像素,用于降低边缘裁切风险。
138
138
  *
139
139
  * @returns 文本宽度(>= 0)
package/dist/scene.d.ts CHANGED
@@ -79,7 +79,6 @@ export interface SceneLoadOptions {
79
79
  /**
80
80
  * 渲染分级。
81
81
  * 分级之后,只会加载当前渲染等级的资源。
82
- * 当渲染等级被设置为 B 后,player 的 fps 会降到 30 帧
83
82
  * @default 'S'
84
83
  */
85
84
  renderLevel?: SceneRenderLevel;
@@ -1,11 +1,12 @@
1
+ import type { Ray } from '@galacean/effects-math/es/core/ray';
1
2
  import { Vector3 } from '@galacean/effects-math/es/core/vector3';
2
3
  import * as spec from '@galacean/effects-specification';
3
4
  import type { Component } from './components';
4
- import type { Composition } from './composition';
5
+ import type { Composition, CompositionHitTestOptions } from './composition';
5
6
  import { EffectsObject } from './effects-object';
6
7
  import type { Engine } from './engine';
7
8
  import type { EventEmitterListener, EventEmitterOptions, ItemEvent } from './events';
8
- import type { BoundingBoxData, HitTestBoxParams, HitTestCustomParams, HitTestSphereParams, HitTestTriangleParams } from './plugins';
9
+ import type { BoundingBoxData, HitTestBoxParams, HitTestCustomParams, HitTestSphereParams, HitTestTriangleParams, Region } from './plugins';
9
10
  import { Transform } from './transform';
10
11
  import type { Constructor, Disposable } from './utils';
11
12
  /**
@@ -54,7 +55,7 @@ export declare class VFXItem extends EffectsObject implements Disposable {
54
55
  */
55
56
  type: spec.ItemType;
56
57
  /**
57
- * @deprecated 2.9.0 Please use `defination` instead
58
+ * @deprecated 2.9.0 Please use `definition` instead
58
59
  */
59
60
  props: spec.VFXItemData;
60
61
  /**
@@ -275,6 +276,19 @@ export declare class VFXItem extends EffectsObject implements Disposable {
275
276
  * @param force - 元素没有开启交互也返回参数
276
277
  */
277
278
  getHitTestParams(force?: boolean): void | HitTestBoxParams | HitTestTriangleParams | HitTestSphereParams | HitTestCustomParams;
279
+ /**
280
+ * 对当前元素及其子节点进行射线命中测试
281
+ *
282
+ * @param ray - 射线
283
+ * @param x - 归一化屏幕坐标 x
284
+ * @param y - 归一化屏幕坐标 y
285
+ * @param regions - 命中结果收集数组
286
+ * @param hitPositions - 共享的命中位置数组,所有 region 共享同一引用
287
+ * @param force - 是否强制测试无交互信息的元素
288
+ * @param options - 额外选项(maxCount、stop、skip)
289
+ * @returns 是否有任何命中
290
+ */
291
+ hitTest(ray: Ray, x: number, y: number, regions: Region[], hitPositions: Vector3[], force?: boolean, options?: CompositionHitTestOptions): boolean;
278
292
  /**
279
293
  * 获取元素当前世界坐标
280
294
  */
@@ -286,6 +300,7 @@ export declare class VFXItem extends EffectsObject implements Disposable {
286
300
  * @returns 复制的新 VFXItem
287
301
  */
288
302
  duplicate(): VFXItem;
303
+ private onParentChanged;
289
304
  fromData(data: spec.VFXItemData): void;
290
305
  toData(): void;
291
306
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/effects-core",
3
- "version": "2.9.0-alpha.1",
3
+ "version": "2.9.0-alpha.2",
4
4
  "description": "Galacean Effects runtime core for the web",
5
5
  "module": "./dist/index.mjs",
6
6
  "main": "./dist/index.js",