import type { Matrix4 } from '@galacean/effects-math/es/core/index'; import { Vector3 } from '@galacean/effects-math/es/core/index'; import type * as spec from '@galacean/effects-specification'; import type { GradientStop, vec4 } from '@galacean/effects-specification'; import type { Engine } from '../../engine'; import { ValueGetter } from '../../math'; import type { GPUCapability, ShaderWithSource } from '../../render'; import { Geometry, Mesh } from '../../render'; import { Texture } from '../../texture'; export type TrailMeshProps = { maxTrailCount: number; pointCountPerTrail: number; colorOverLifetime?: Array; texture?: Texture; minimumVertexDistance: number; blending: number; widthOverTrail: ValueGetter; colorOverTrail?: Array; matrix?: Matrix4; opacityOverLifetime: ValueGetter; occlusion: boolean; transparentOcclusion: boolean; lifetime: ValueGetter; mask: number; shaderCachePrefix: string; maskMode: number; textureMap: vec4; name: string; }; export type TrailPointOptions = { lifetime: number; color: number[]; size: number; time: number; }; export declare class TrailMesh { mesh: Mesh; maxTrailCount: number; geometry: Geometry; lifetime: ValueGetter; pointCountPerTrail: number; minimumVertexDistance: number; useAttributeTrailStart: boolean; checkVertexDistance: boolean; private pointStart; private trailCursors; constructor(engine: Engine, props: TrailMeshProps); get time(): number; set time(t: number); addPoint(trailIndex: number, position: Vector3, opt: TrailPointOptions): void; getTrailPosition(trail: number, index: number, out: Vector3): Vector3 | undefined; clearAllTrails(): void; minusTime(time: number): void; clearTrail(index: number): void; getPointStartPos(index: number): Vector3; setPointStartPos(index: number, pos: Vector3): void; onUpdate(escapeTime: number): any; } export declare function getTrailMeshShader(trails: spec.ParticleTrail, particleMaxCount: number, name: string, gpuCapability: GPUCapability, env?: string): ShaderWithSource;