import * as THREE from 'three'; import { TweenKeyframe } from './utils'; type ParticleType = 'CUBE' | 'SPHERE'; /** * GPU粒子系统初始化参数 */ interface ParticleArgs { /** 粒子的初始位置坐标 */ positionBase: THREE.Vector3; /** 粒子坐标的抖动计算形式 */ positionStyle: ParticleType; /** 粒子坐标的抖动`CUBE`计算形式下的扩散值 */ positionCubeSpread: THREE.Vector3; /** 粒子坐标的抖动`SPHERE`计算形式下的扩散值 */ positionSphereSpread: number; /** 粒子速度的抖动计算形式 */ velocityStyle: ParticleType; /** 粒子速度的`CUBE`计算形式下的速度值 */ velocityCubeBase: THREE.Vector3; /** 粒子速度的`CUBE`计算形式下的扩散值 */ velocityCubeSpread: THREE.Vector3; /** 粒子速度的`SPHERE`计算形式下的速度值 */ velocitySphereBase: number; /** 粒子速度的`SPHERE`计算形式下的扩散值 */ velocitySphereSpread: number; /** 粒子加速度 */ accelerationBase: THREE.Vector3; /** 粒子加速度扩散值 */ accelerationSpread: THREE.Vector3; /** 旋转角度初始值 */ angleBase: number; /** 旋转角度初始值的扩散值 */ angleSpread: number; /** 旋转角度速度值 */ angleVelocityBase: number; /** 旋转角度速度值的扩散值 */ angleVelocitySpread: number; /** 粒子大小 */ sizeBase: number; /** 粒子大小的扩散值 */ sizeSpread: number; /** 粒子大小增长率 */ sizeGrowth: number; /** 颜色(hsl) */ colorBase: THREE.Vector3; /** 颜色(hsl)的扩散值 */ colorSpread: THREE.Vector3; /** 透明度 */ opacityBase: number; /** 透明度的扩散值 */ opacitySpread: number; /** 贴图素材 */ texture: THREE.Texture; /** 材质混合方式 */ blending: THREE.Blending; /** 一秒产生多少粒子 */ particlesPerSecond: number; /** 粒子存活时长 */ particleDeathAge: number; /** 重力 */ gravity: THREE.Vector3; /** 噪声强度 */ noiseStrength: number; /** 阻尼系数 */ damping: number; } declare class Particle extends THREE.Points { needsRender: boolean; paused: boolean; private disposed; private startTime; private particleCount; particlesPerSecond: number; particleDeathAge: number; constructor(args: Partial); /** 贴图素材 */ get texture(): THREE.Texture | null; set texture(value: THREE.Texture | null); /** 材质混合方式 */ get blending(): THREE.Blending; set blending(value: THREE.Blending); /** 暂停 */ pause(): void; /** 开始 */ play(): void; /** * 通过 Five 默认调用的 setTime 方法 * @param time - 毫秒 */ setTime(time: number): void; /** 析构 */ dispose(): void; } export { Particle }; export type { ParticleArgs, ParticleType, TweenKeyframe as ParticleTweenKeyframe };