@galacean/effects-core 2.10.0-alpha.0 → 2.10.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.
Files changed (47) hide show
  1. package/dist/components/base-render-component.d.ts +4 -0
  2. package/dist/components/frame-component.d.ts +10 -0
  3. package/dist/components/mesh-component.d.ts +1 -1
  4. package/dist/composition.d.ts +9 -8
  5. package/dist/engine.d.ts +43 -8
  6. package/dist/fallback/migration.d.ts +13 -0
  7. package/dist/index.js +3045 -1139
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +3032 -1140
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/material/types.d.ts +4 -0
  12. package/dist/material/utils.d.ts +4 -0
  13. package/dist/math/value-getters/index.d.ts +1 -0
  14. package/dist/math/value-getters/reference-curve.d.ts +19 -0
  15. package/dist/math/value-getters/value-getter-map.d.ts +5 -0
  16. package/dist/plugin-system.d.ts +6 -4
  17. package/dist/plugins/index.d.ts +1 -0
  18. package/dist/plugins/particle/particle-mesh.d.ts +4 -3
  19. package/dist/plugins/particle/particle-system.d.ts +7 -0
  20. package/dist/plugins/particle/trail-mesh.d.ts +4 -2
  21. package/dist/plugins/plugin.d.ts +14 -0
  22. package/dist/plugins/shape/shape-component.d.ts +1 -0
  23. package/dist/plugins/sprite/sprite-item.d.ts +32 -5
  24. package/dist/plugins/sprite/sprite.d.ts +42 -0
  25. package/dist/plugins/text/index.d.ts +1 -0
  26. package/dist/plugins/text/line-break.d.ts +29 -0
  27. package/dist/plugins/timeline/playable-assets/index.d.ts +1 -0
  28. package/dist/plugins/timeline/playable-assets/sprite-property-playable-asset.d.ts +23 -0
  29. package/dist/plugins/timeline/playables/index.d.ts +1 -0
  30. package/dist/plugins/timeline/playables/sprite-property-mixer-playable.d.ts +11 -0
  31. package/dist/plugins/timeline/playables/transform-mixer-playable.d.ts +6 -0
  32. package/dist/plugins/timeline/playables/transform-playable.d.ts +17 -2
  33. package/dist/plugins/timeline/tracks/index.d.ts +1 -0
  34. package/dist/plugins/timeline/tracks/sprite-property-track.d.ts +11 -0
  35. package/dist/plugins/timeline/transform-clip-mixer.d.ts +33 -0
  36. package/dist/render/buffer.d.ts +33 -0
  37. package/dist/render/data-buffer.d.ts +39 -0
  38. package/dist/render/geometry.d.ts +72 -94
  39. package/dist/render/gpu-capability.d.ts +2 -0
  40. package/dist/render/graphics.d.ts +3 -2
  41. package/dist/render/index.d.ts +3 -0
  42. package/dist/render/shader.d.ts +2 -1
  43. package/dist/render/text-cache.d.ts +22 -14
  44. package/dist/render/vertex-buffer.d.ts +72 -0
  45. package/dist/scene.d.ts +7 -4
  46. package/dist/utils/index.d.ts +1 -1
  47. package/package.json +2 -2
@@ -80,6 +80,10 @@ export interface MaskReference {
80
80
  */
81
81
  inverted: boolean;
82
82
  }
83
+ /**
84
+ * @deprecated 2.10 起蒙版模式不再通过单一枚举表达,runtime 内部已不再使用此枚举。
85
+ * 仅为兼容旧版本对外导出的接口而保留,请改用 `MaskProcessor` 的多蒙版 API。
86
+ */
83
87
  export declare enum MaskMode {
84
88
  /**
85
89
  * 无
@@ -5,4 +5,8 @@ export declare function valIfUndefined<T>(val: any, def: T): T;
5
5
  export declare function getPreMultiAlpha(blending?: spec.BlendingMode): number;
6
6
  export declare function setBlendMode(material: Material, blendMode?: number): void;
7
7
  export declare function setSideMode(material: Material, side: spec.SideMode): void;
8
+ /**
9
+ * @deprecated 2.10 起 runtime 内部已不再通过 `MaskMode` 设置模板测试参数。
10
+ * 仅为兼容旧版本对外导出的接口而保留,新代码请勿使用。
11
+ */
8
12
  export declare function setMaskMode(material: Material, maskMode: MaskMode): void;
@@ -3,3 +3,4 @@ export * from './color-curve';
3
3
  export * from './vector-curves';
4
4
  export * from './bezier-curve';
5
5
  export * from './value-getter-map';
6
+ export * from './reference-curve';
@@ -0,0 +1,19 @@
1
+ import type { EffectsObject } from '../../effects-object';
2
+ import { ValueGetter } from './value-getter';
3
+ /**
4
+ * 对象引用曲线运行时数据:[time, value][],value 为已解析的 EffectsObject 实例。
5
+ */
6
+ export type ReferenceCurveData<T extends EffectsObject> = [time: number, value: T][];
7
+ /**
8
+ * 通用对象引用阶梯曲线(不插值)。对象引用不可插值,
9
+ * 按时间阶梯采样取 time ≤ t 的最近关键帧。
10
+ *
11
+ * 继承 ValueGetter 以复用 PropertyClipPlayable<T>;数值相关方法
12
+ * (toUniform/toData/getIntegrate*)保留基类 NOT_IMPLEMENT——对象引用 curve
13
+ * 不走 shader 通路。典型用例:T = Sprite(sprite 属性 K 帧切图)。
14
+ */
15
+ export declare class ReferenceCurve<T extends EffectsObject> extends ValueGetter<T> {
16
+ private keyframes;
17
+ onCreate(props: ReferenceCurveData<T>): void;
18
+ getValue(time?: number): T;
19
+ }
@@ -1,2 +1,7 @@
1
1
  import { ValueGetter } from './value-getter';
2
+ /**
3
+ * 对象引用阶梯曲线(spec ValueType.REFERENCE_CURVE)。
4
+ * props 为 [[time, value], ...],value 为已解析的对象引用实例。
5
+ */
6
+ export declare const REFERENCE_CURVE = 28;
2
7
  export declare function createValueGetter(args: any): ValueGetter<any>;
@@ -17,9 +17,11 @@ export declare function registerPlugin(name: string, pluginClass: PluginConstruc
17
17
  export declare function unregisterPlugin(name: string): void;
18
18
  export declare class PluginSystem {
19
19
  static getPlugins(): Plugin[];
20
- static initializeComposition(composition: Composition, scene?: Scene): void;
21
- static destroyComposition(comp: Composition): void;
22
- static onAssetsLoadStart(scene: Scene, options?: SceneLoadOptions): Promise<void[]>;
23
- static onAssetsLoadFinish(scene: Scene, options: SceneLoadOptions, engine: Engine): void;
20
+ static notifyCompositionCreated(composition: Composition, scene?: Scene): void;
21
+ static notifyCompositionDestroy(composition: Composition): void;
22
+ static notifyEngineCreated(engine: Engine): void;
23
+ static notifyEngineDestroy(engine: Engine): void;
24
+ static notifyAssetsLoadStart(scene: Scene, options?: SceneLoadOptions): Promise<void[]>;
25
+ static notifyAssetsLoadFinish(scene: Scene, options: SceneLoadOptions, engine: Engine): void;
24
26
  }
25
27
  export declare function getPluginUsageInfo(name: string): string;
@@ -9,6 +9,7 @@ export * from './interact/interact-vfx-item';
9
9
  export * from './interact/interact-item';
10
10
  export * from './interact/mesh-collider';
11
11
  export * from './sprite/sprite-loader';
12
+ export * from './sprite/sprite';
12
13
  export * from './sprite/sprite-item';
13
14
  export * from './particle/particle-loader';
14
15
  export * from './particle/particle-mesh';
@@ -63,8 +63,6 @@ export interface ParticleMeshData {
63
63
  export interface ParticleMeshProps extends ParticleMeshData {
64
64
  renderMode?: number;
65
65
  blending?: number;
66
- mask: number;
67
- maskMode: number;
68
66
  side: number;
69
67
  transparentOcclusion?: boolean;
70
68
  matrix?: Matrix4;
@@ -141,11 +139,11 @@ export declare class ParticleMesh implements ParticleMeshData {
141
139
  private cachedRotationMatrix;
142
140
  private cachedLinearMove;
143
141
  private tempMatrix3;
142
+ private readonly attributeData;
144
143
  VERT_MAX_KEY_FRAME_COUNT: number;
145
144
  constructor(engine: Engine, props: ParticleMeshProps);
146
145
  getPointColor(index: number): number[];
147
146
  clearPoints(): void;
148
- resetGeometryData(geometry: Geometry): void;
149
147
  onUpdate(dt: number): void;
150
148
  minusTime(time: number): void;
151
149
  removePoint(index: number): void;
@@ -153,6 +151,9 @@ export declare class ParticleMesh implements ParticleMeshData {
153
151
  private applyTranslation;
154
152
  private applyRotation;
155
153
  private applyLinearMove;
154
+ private getAttributeData;
155
+ private setAttributeData;
156
+ private setAttributeSubData;
156
157
  private expandArray;
157
158
  }
158
159
  export declare function getParticleMeshShader(item: spec.ParticleItem, gpuCapability: GPUCapability, env?: string): {
@@ -171,6 +171,13 @@ export declare class ParticleSystem extends Component implements Maskable {
171
171
  private update;
172
172
  drawStencilMask(maskRef: number): void;
173
173
  onDestroy(): void;
174
+ /**
175
+ * @hidden
176
+ * Internal utility.
177
+ * Not part of the public API — do not rely on this in your code.
178
+ */
179
+ rebuild(): void;
180
+ dispose(): void;
174
181
  getParticleBoxes(): {
175
182
  center: Vector3;
176
183
  size: Vector3;
@@ -21,9 +21,7 @@ export type TrailMeshProps = {
21
21
  occlusion: boolean;
22
22
  transparentOcclusion: boolean;
23
23
  lifetime: ValueGetter<number>;
24
- mask: number;
25
24
  shaderCachePrefix: string;
26
- maskMode: number;
27
25
  name: string;
28
26
  };
29
27
  export type TrailPointOptions = {
@@ -43,6 +41,7 @@ export declare class TrailMesh {
43
41
  checkVertexDistance: boolean;
44
42
  private pointStart;
45
43
  private trailCursors;
44
+ private readonly attributeData;
46
45
  constructor(engine: Engine, props: TrailMeshProps);
47
46
  get time(): number;
48
47
  set time(t: number);
@@ -54,5 +53,8 @@ export declare class TrailMesh {
54
53
  getPointStartPos(index: number): Vector3;
55
54
  setPointStartPos(index: number, pos: Vector3): void;
56
55
  onUpdate(escapeTime: number): any;
56
+ private getAttributeData;
57
+ private setAttributeData;
58
+ private setAttributeSubData;
57
59
  }
58
60
  export declare function getTrailMeshShader(trails: spec.ParticleTrail, particleMaxCount: number, name: string, gpuCapability: GPUCapability, env?: string): ShaderWithSource;
@@ -38,4 +38,18 @@ export declare abstract class Plugin {
38
38
  * @param composition - 合成对象
39
39
  */
40
40
  onCompositionDestroy(composition: Composition): void;
41
+ /**
42
+ * 引擎创建完成后触发。
43
+ * 适用于注册引擎级单例、建立以引擎为键的映射、绑定全局监听等场景。
44
+ * @param engine - 引擎实例
45
+ * @since 2.10.0
46
+ */
47
+ onEngineCreated(engine: Engine): void;
48
+ /**
49
+ * 引擎销毁时触发。
50
+ * 适合解绑监听、释放引擎级资源或清理以引擎为键的映射。
51
+ * @param engine - 引擎实例
52
+ * @since 2.10.0
53
+ */
54
+ onEngineDestroy(engine: Engine): void;
41
55
  }
@@ -158,6 +158,7 @@ export declare class ShapeComponent extends RendererComponent implements Maskabl
158
158
  getBoundingBox(): BoundingBoxTriangle;
159
159
  getBoundingBoxInfo(): BoundingBoxInfo;
160
160
  private buildGeometryFromPath;
161
+ private updateAttributeData;
161
162
  private computeScreenScale;
162
163
  private buildPath;
163
164
  private updateMaterials;
@@ -5,6 +5,7 @@ import type { FrameContext } from '../timeline';
5
5
  import { Playable, PlayableAsset, TrackMixerPlayable, TrackAsset } from '../timeline';
6
6
  import type { Geometry } from '../../render';
7
7
  import { MaskableGraphic } from '../../components';
8
+ import type { Sprite } from './sprite';
8
9
  /**
9
10
  * 图层元素基础属性, 经过处理后的 spec.SpriteContent.options
10
11
  */
@@ -12,7 +13,14 @@ export type SpriteItemOptions = {
12
13
  startColor: spec.vec4;
13
14
  renderLevel?: spec.RenderLevel;
14
15
  };
15
- export type splitsDataType = [r: number, x: number, y: number, w: number, h: number | undefined][];
16
+ /**
17
+ * SpriteComponent 数据。扩展 spec.SpriteComponentData,新增可选 sprite 资产引用。
18
+ * spec 包不可改,故本地扩展。
19
+ */
20
+ interface SpriteComponentDataEx extends spec.SpriteComponentData {
21
+ /** 引用的 Sprite 资产(新版数据流);老数据经 version37Migration 迁移而来 */
22
+ sprite?: spec.DataPath;
23
+ }
16
24
  export declare class SpriteColorPlayableAsset extends PlayableAsset {
17
25
  data: ColorPlayableAssetData;
18
26
  createPlayable(): Playable;
@@ -40,15 +48,34 @@ export declare class SpriteComponent extends MaskableGraphic {
40
48
  time: number;
41
49
  duration: number;
42
50
  protected textureSheetAnimation?: spec.TextureSheetAnimation;
43
- constructor(engine: Engine, props?: spec.SpriteComponentData);
51
+ /**
52
+ * 引用的 Sprite 资产(纹理 + 归一化 UV 矩形 + rotation),渲染唯一数据源。
53
+ */
54
+ protected _sprite: Sprite;
55
+ /**
56
+ * 当前 Sprite 资产。设置时同步纹理、重绑 _MainTex 并重建几何体 UV。
57
+ * @since 2.10.0
58
+ */
59
+ get sprite(): Sprite;
60
+ set sprite(sprite: Sprite);
61
+ constructor(engine: Engine, props?: SpriteComponentDataEx);
44
62
  onUpdate(dt: number): void;
45
63
  onDisable(): void;
46
64
  onDestroy(): void;
47
65
  protected updateGeometry(geometry: Geometry): void;
66
+ fromData(data: SpriteComponentDataEx): void;
67
+ /**
68
+ * 应用 Sprite 资产到渲染器:同步纹理并重绑 _MainTex。不重建几何体。
69
+ * fromData(后续自行 updateGeometry)与 sprite setter(随后 updateGeometry)共用。
70
+ * 直接写 _sprite,避免经 setter 触发 updateGeometry。
71
+ */
72
+ protected applySpriteToRenderer(sprite: Sprite): void;
48
73
  /**
49
74
  * @deprecated
50
- * 原有打包纹理拆分逻辑,待移除
75
+ * 原有打包纹理拆分逻辑,仅在老数据 splits.length>1(2x2 纹理打包)时使用,保留向后兼容。
76
+ * 不依赖组件状态,splits 由参数传入(同时存在帧动画与多 split 的数据不存在)。
51
77
  */
52
- protected updateGeometryFromMultiSplit(): void;
53
- fromData(data: spec.SpriteComponentData): void;
78
+ protected updateGeometryFromMultiSplit(splits: spec.SplitParameter[]): void;
79
+ private updateAttributeData;
54
80
  }
81
+ export {};
@@ -0,0 +1,42 @@
1
+ import type * as spec from '@galacean/effects-specification';
2
+ import { EffectsObject } from '../../effects-object';
3
+ import type { Engine } from '../../engine';
4
+ import type { Texture } from '../../texture';
5
+ /**
6
+ * Sprite UV 旋转方式。序列化为整数(兼容老 splits 的 flip 0/1)。
7
+ * None 不旋转、Rotate90 将 UV 顺时针旋转 90°(width/height 互换)。
8
+ */
9
+ export declare enum SpriteRotation {
10
+ /** 不旋转 */
11
+ None = 0,
12
+ /** UV 旋转 90°(对应老 splits flip=1) */
13
+ Rotate90 = 1
14
+ }
15
+ /**
16
+ * Sprite 资产数据
17
+ */
18
+ export interface SpriteData extends spec.EffectsObjectData {
19
+ /** 关联纹理(DataPath 引用) */
20
+ texture?: spec.DataPath;
21
+ /** 归一化 UV 矩形 [x, y, w, h],默认整张纹理 */
22
+ rect?: spec.vec4;
23
+ /** UV 旋转方式(0=None, 1=Rotate90),对齐老 splits 的 flip 语义 */
24
+ rotation?: SpriteRotation;
25
+ }
26
+ /**
27
+ * Sprite 资产:一张纹理 + 一个归一化 UV 矩形区域(不含 border/pivot)。
28
+ * 被 SpriteComponent 引用,替代直接引用 Texture + 散落的 splits。
29
+ *
30
+ * 反序列化全部集中在 fromData 手动解析(与 SpriteComponent 风格一致),
31
+ * 不使用 @serialize 装饰器,避免序列化/反序列化双路径带来的引用覆盖陷阱。
32
+ */
33
+ export declare class Sprite extends EffectsObject {
34
+ /** 关联的纹理对象 */
35
+ texture: Texture;
36
+ /** 归一化 UV 矩形 [x, y, w, h],默认整张纹理 */
37
+ rect: spec.vec4;
38
+ /** UV 旋转方式(对应老 splits 的 flip 0/1) */
39
+ rotation: SpriteRotation;
40
+ constructor(engine: Engine, props?: SpriteData);
41
+ fromData(data: SpriteData): void;
42
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './base-layout';
2
+ export * from './line-break';
2
3
  export * from './text-item';
3
4
  export * from './text-layout';
4
5
  export * from './text-style';
@@ -0,0 +1,29 @@
1
+ /**
2
+ * 文本换行机会判定:UAX #14 风格的"换行机会"模型。
3
+ *
4
+ * - CJK 表意字 / 假名 / 韩文音节:任意两个字之间都是合法断点(字符级)
5
+ * - 空格 / 制表符 / NBSP:可断,且断行时被吞掉(不留在行尾 / 行首)
6
+ * - 西文字母 / 数字:词内不可断;整体超宽时由调用方退化到字符级断(overflow-wrap)
7
+ *
8
+ * 不含 kinsoku 禁则(句号 / 逗号不进行首等留作后续)。
9
+ */
10
+ /** 换行机会类型(断点字符之后):决定断点字符归属及断行时是否吞掉 */
11
+ export type BreakAfter = 'swallow' | 'keep' | false;
12
+ /**
13
+ * 是否为可换行断点字符(空格 / 制表符 / NBSP)。
14
+ * 断在此字符之前,且断行时该字符被吞掉(不进旧行也不进新行)。
15
+ * @param ch - 当前字符
16
+ */
17
+ export declare function isBreakChar(ch: string): boolean;
18
+ /**
19
+ * 是否为 CJK 类字符(中文表意字 / 假名 / 韩文音节)。可在其与相邻字符之间换行。
20
+ * 用码点判定以支持 CJK 扩展 B 等代理对字符(不能用 /u 正则,browserslist 为 iOS 9)。
21
+ * @param ch - 当前字符(须为完整码点,调用方应使用 Array.from 遍历)
22
+ */
23
+ export declare function isCJKLike(ch: string): boolean;
24
+ /**
25
+ * 计算 prev(已推入的字符)之后是否为换行机会。只看 prev,不看后续字符。
26
+ * @param prev - 前一字符(已推入旧行)
27
+ * @returns 'swallow'=prev 是空格类,断行时吞掉 prev;'keep'=prev 是 CJK,prev 留本行末、下行从其后起;false=不可断
28
+ */
29
+ export declare function breakOpportunityAfter(prev: string): BreakAfter;
@@ -1,5 +1,6 @@
1
1
  export * from './activation-playable-asset';
2
2
  export * from './color-property-playable-asset';
3
3
  export * from './float-property-playable-asset';
4
+ export * from './sprite-property-playable-asset';
4
5
  export * from './sub-composition-playable-asset';
5
6
  export * from './vector-property-playable-assets';
@@ -0,0 +1,23 @@
1
+ import type * as spec from '@galacean/effects-specification';
2
+ import type { Playable } from '../playable';
3
+ import { PlayableAsset } from '../playable';
4
+ import type { ReferenceCurveData } from '../../../math';
5
+ import type { Sprite } from '../../sprite/sprite';
6
+ /**
7
+ * 对象引用曲线序列化值:[REFERENCE_CURVE, [time, DataPath][]],value 为 {id} 引用。
8
+ * 序列化形态,无泛型。
9
+ * TODO: update to spec.
10
+ */
11
+ export type ReferenceCurveValue = [number, [number, spec.DataPath][]];
12
+ export interface SpritePropertyAssetData extends spec.EffectsObjectData {
13
+ curveData: ReferenceCurveValue;
14
+ }
15
+ /**
16
+ * Sprite 属性 K 帧 PlayableAsset:curveData 为对象引用阶梯曲线,
17
+ * createPlayable 复用 PropertyClipPlayable<Sprite> + ReferenceCurve(阶梯采样,不插值)。
18
+ */
19
+ export declare class SpritePropertyPlayableAsset extends PlayableAsset {
20
+ curveData: [number, ReferenceCurveData<Sprite>];
21
+ fromData(data: SpritePropertyAssetData): void;
22
+ createPlayable(): Playable;
23
+ }
@@ -5,6 +5,7 @@ export * from './float-property-mixer-playable';
5
5
  export * from './particle-mixer-playable';
6
6
  export * from './property-clip-playable';
7
7
  export * from './sprite-color-mixer-playable';
8
+ export * from './sprite-property-mixer-playable';
8
9
  export * from './sub-composition-clip-playable';
9
10
  export * from './sub-composition-mixer-playable';
10
11
  export * from './track-mixer-playable';
@@ -0,0 +1,11 @@
1
+ import type { FrameContext } from '../playable';
2
+ import { TrackMixerPlayable } from './track-mixer-playable';
3
+ /**
4
+ * Sprite 属性 K 帧 mixer。对象引用不混合:取首个激活 clip 的阶梯采样值,
5
+ * 赋值 boundObject.sprite 触发 setter(同步纹理 + 重建 UV)。
6
+ * 不继承 PropertyMixerPlayable(其 evaluate 开头"读当前值为 null 则 return"
7
+ * 会阻断无初始 sprite 组件的 K 帧)。
8
+ */
9
+ export declare class SpritePropertyMixerPlayable extends TrackMixerPlayable {
10
+ evaluate(context: FrameContext): void;
11
+ }
@@ -1,5 +1,11 @@
1
1
  import type { FrameContext } from '../playable';
2
2
  import { TrackMixerPlayable } from './track-mixer-playable';
3
+ /**
4
+ * TransformTrack 的 mixer。
5
+ * 收集当前激活的 Transform clip contribution,并委托 TransformClipMixer 合成当前帧输出。
6
+ */
3
7
  export declare class TransformMixerPlayable extends TrackMixerPlayable {
8
+ private readonly clipMixer;
9
+ dispose(): void;
4
10
  evaluate(context: FrameContext): void;
5
11
  }
@@ -13,6 +13,14 @@ export type ItemBasicTransform = {
13
13
  scale: Vector3;
14
14
  path?: ValueGetter<Vector3>;
15
15
  };
16
+ export type TransformContribution = {
17
+ hasPosition: boolean;
18
+ position: Vector3;
19
+ hasRotation: boolean;
20
+ rotation: Euler;
21
+ hasScale: boolean;
22
+ scale: Vector3;
23
+ };
16
24
  /**
17
25
  * @since 2.0.0
18
26
  */
@@ -45,15 +53,22 @@ export declare class TransformPlayable extends Playable {
45
53
  gravity: Vector3;
46
54
  direction: Vector3;
47
55
  startSpeed: number;
56
+ pathGetter?: ValueGetter<Vector3>;
48
57
  data: TransformPlayableAssetData;
49
58
  private velocity;
50
- private boundObject;
59
+ private started;
60
+ private readonly contribution;
51
61
  start(): void;
52
62
  processFrame(context: FrameContext): void;
53
63
  /**
54
- * 应用时间轴K帧数据到对象
64
+ * 采样当前帧相对 base pose 的 transform contribution。
65
+ * 返回值为内部复用对象,调用方应在当前帧同步消费,不应缓存。
66
+ * @param basePosition - orbital position 计算 contribution 时使用的参考位置。
55
67
  */
68
+ getContribution(basePosition?: Vector3): TransformContribution;
69
+ private ensureStarted;
56
70
  private sampleAnimation;
71
+ private captureOriginalTransform;
57
72
  }
58
73
  export declare class TransformPlayableAsset extends PlayableAsset {
59
74
  transformAnimationData: TransformPlayableAssetData;
@@ -8,4 +8,5 @@ export * from './particle-track';
8
8
  export * from './property-track';
9
9
  export * from './vector-property-track';
10
10
  export * from './color-property-track';
11
+ export * from './sprite-property-track';
11
12
  export * from './object-binding-track';
@@ -0,0 +1,11 @@
1
+ import type { TrackMixerPlayable } from '../playables';
2
+ import { PropertyTrack } from './property-track';
3
+ /**
4
+ * Sprite 属性 K 帧 track。绑定到 SpriteComponent(updateAnimatedObject),
5
+ * mixer 取激活 clip 的 Sprite 采样值赋值 sprite 属性。
6
+ * path('sprite')为编辑器元数据,mixer 直接写 boundObject.sprite。
7
+ */
8
+ export declare class SpritePropertyTrack extends PropertyTrack {
9
+ createTrackMixer(): TrackMixerPlayable;
10
+ updateAnimatedObject(boundObject: object): object;
11
+ }
@@ -0,0 +1,33 @@
1
+ import { Vector3 } from '@galacean/effects-math/es/core/vector3';
2
+ import type { VFXItem } from '../../vfx-item';
3
+ import type { TransformContribution } from './playables/transform-playable';
4
+ /**
5
+ * 对 TransformTrack 当前激活的 Transform clip contribution 做帧内合成。
6
+ * position 与 rotation 使用增量语义,scale 使用乘子语义;结果由 flush 统一写回。
7
+ */
8
+ export declare class TransformClipMixer {
9
+ private basePose?;
10
+ private boundInstanceId?;
11
+ private hasContribution;
12
+ private hasPosition;
13
+ private hasRotation;
14
+ private hasScale;
15
+ private appliedPosition;
16
+ private appliedRotation;
17
+ private appliedScale;
18
+ private readonly outPos;
19
+ private readonly outRot;
20
+ private readonly outScale;
21
+ private readonly weightedRot;
22
+ captureBasePose(item: VFXItem): void;
23
+ /**
24
+ * orbital position 的 contribution 依赖 base position。
25
+ * 这里返回 mixer 持有的 base,确保采样和合成使用同一份参考姿态。
26
+ */
27
+ getBasePosition(): Vector3 | undefined;
28
+ resetFrame(): void;
29
+ addContribution(item: VFXItem, contribution: TransformContribution, weight: number): void;
30
+ flush(item: VFXItem): void;
31
+ dispose(): void;
32
+ private ensureBasePose;
33
+ }
@@ -0,0 +1,33 @@
1
+ import type { Engine } from '../engine';
2
+ import type { Disposable } from '../utils';
3
+ import type { DataArray } from './data-buffer';
4
+ import { DataBuffer } from './data-buffer';
5
+ import { VertexBuffer } from './vertex-buffer';
6
+ /**
7
+ * 管理顶点数据及其对应的后端缓冲区。
8
+ */
9
+ export declare class Buffer implements Disposable {
10
+ readonly engine: Engine;
11
+ readonly byteStride: number;
12
+ private data?;
13
+ private buffer?;
14
+ private readonly updatable;
15
+ private readonly instanced;
16
+ private readonly divisor;
17
+ private readonly label?;
18
+ private isAlreadyOwned;
19
+ private _isDisposed;
20
+ constructor(engine: Engine, data: DataArray | DataBuffer, updatable: boolean, stride?: number, postponeInternalCreation?: boolean, instanced?: boolean, useBytes?: boolean, divisor?: number, label?: string);
21
+ get isDisposed(): boolean;
22
+ get capacity(): number;
23
+ isUpdatable(): boolean;
24
+ getData(): DataArray | undefined;
25
+ getBuffer(): DataBuffer | undefined;
26
+ getStrideSize(): number;
27
+ createVertexBuffer(kind: string, offset: number, size: number, stride?: number, instanced?: boolean, useBytes?: boolean, divisor?: number): VertexBuffer;
28
+ create(data?: DataArray): void;
29
+ update(data: DataArray): void;
30
+ updateDirectly(data: DataArray, offset: number, vertexCount?: number, useBytes?: boolean): void;
31
+ dispose(): void;
32
+ private getDataBufferOptions;
33
+ }
@@ -0,0 +1,39 @@
1
+ import type * as spec from '@galacean/effects-specification';
2
+ export type DataArray = number[] | ArrayBuffer | ArrayBufferView;
3
+ export type IndicesArray = number[] | Int32Array | Uint32Array | Uint16Array;
4
+ export type IndexData = Int32Array | Uint32Array | Uint16Array;
5
+ export declare enum BufferUsage {
6
+ Stream = 35040,
7
+ Static = 35044,
8
+ Dynamic = 35048
9
+ }
10
+ export declare enum BufferDataType {
11
+ Byte = 5120,
12
+ UnsignedByte = 5121,
13
+ Short = 5122,
14
+ UnsignedShort = 5123,
15
+ Int = 5124,
16
+ UnsignedInt = 5125,
17
+ Float = 5126
18
+ }
19
+ export interface DataBufferOptions {
20
+ usage: number;
21
+ type: number;
22
+ byteStride: number;
23
+ instanceDivisor: number;
24
+ label?: string;
25
+ }
26
+ /**
27
+ * 后端缓冲区的最小抽象,只保存资源状态。
28
+ */
29
+ export declare class DataBuffer {
30
+ references: number;
31
+ capacity: number;
32
+ is32Bits: boolean;
33
+ get underlyingResource(): unknown;
34
+ }
35
+ export declare function getBytesPerElement(type: number): number;
36
+ export declare function getDataType(data: DataArray): BufferDataType;
37
+ export declare function getDataByteLength(data: DataArray): number;
38
+ export declare function toBufferView(data: DataArray): ArrayBufferView;
39
+ export declare function createTypedArray(type: number, length: number): spec.TypedArray;