import * as THREE from 'three'; import { FivePass } from './pass'; import { type Camera } from '../../../core/camera'; type FireworksLine = { id?: string; points: THREE.Vector3[]; totalLength: number; color: THREE.Color; opacity?: number; tailLengthRatio?: number; duration?: number; startTime?: number; particleCount?: number; emissionRate?: number; spread?: number; particleSize?: number; particleLife?: number; gravity?: THREE.Vector3; leadRatio?: number; }; /** * FlowingFireworks3DPass * * 与 FlowingLight3DPass 配套使用:在每条流光线条的「尾部位置」持续喷射出 * 烟花状向四周发散的粒子。粒子的运动周期、尾部位置计算与 FlowingLight3DPass * 完全一致(共用 points / totalLength / duration / startTime / tailLengthRatio), * 因此把本 Pass 与 FlowingLight3DPass 配置同样的线条数据即可获得「流光拖尾烟花」效果。 */ export declare class FlowingFireworks3DPass extends FivePass { private camera; private points; private material; private uTime; private lines; private blocks; private geometry; private arrPosition; private arrVelocity; private arrAccel; private arrColor; private arrBirthTime; private arrMaxLife; private arrSeed; private arrSize; private particleScene; private orthoCamera; private particleRenderTarget; private blendMaterial; private blendQuad; private _tmpTail; constructor(camera: Camera); /** 批量设置线条(替换现有全部线条) */ setLines(lines: FireworksLine[]): void; /** 追加一条或多条线,返回生成的 id 数组 */ addLine(...lines: FireworksLine[]): string[]; /** 按 id 移除一条或多条线,返回实际移除的数量 */ removeLine(...ids: string[]): number; /** * 通过 id 修改单条线的参数(部分更新)。 * 大多数字段(points、color、totalLength、duration 等)会在下一帧发射时即时生效, * 无需重建;仅当 particleCount 改变时才会重建粒子缓冲。 */ setLine(params: { id: string; } & Partial>): void; private _rebuild; private _samplePointAtLength; private _emitParticle; private _emit; render(renderer: THREE.WebGLRenderer, writeBuffer: THREE.WebGLRenderTarget, readBuffer: THREE.WebGLRenderTarget, deltaTime: number, _maskActive?: boolean): void; dispose(): void; private _disposeParticles; } export {};