@opentui/core
Version:
OpenTUI is a TypeScript library for building terminal user interfaces (TUIs)
63 lines (62 loc) • 2.12 kB
TypeScript
import * as THREE from "three";
import { NodeMaterial } from "three/webgpu";
import type { SpriteResource } from "../SpriteResourceManager";
export interface ParticleEffectParameters {
resource: SpriteResource;
animNumFrames?: number;
animFrameOffset?: number;
frameDuration?: number;
loop?: boolean;
scale?: number;
renderOrder?: number;
depthWrite?: boolean;
maxParticles: number;
lifetimeMsMin: number;
lifetimeMsMax: number;
origins: THREE.Vector3[];
spawnRadius: number | THREE.Vector3;
initialVelocityMin: THREE.Vector3;
initialVelocityMax: THREE.Vector3;
angularVelocityMin: THREE.Vector3;
angularVelocityMax: THREE.Vector3;
gravity?: THREE.Vector3;
randomGravityFactorMinMax?: THREE.Vector2;
scaleOverLifeMinMax?: THREE.Vector2;
fadeOut?: boolean;
materialFactory?: () => NodeMaterial;
}
export declare class SpriteParticleGenerator {
private scene;
private baseConfig;
private autoSpawnConfig;
private _currentOriginIndex;
private instanceManager;
private material;
private texture;
private particleDataAttribute;
private velocityAttribute;
private angularVelAttribute;
private scaleDataAttribute;
private timeUniform;
private gravityUniform;
private animationUniform;
private sheetNumFramesUniform;
private particleSlots;
private currentTime;
private maxParticles;
private isInitialized;
constructor(scene: THREE.Scene, initialBaseConfig: ParticleEffectParameters);
private _ensureInitialized;
private _initializeGPUParticleSystem;
private _createGPUMaterial;
private _resolveCurrentOrigin;
getActiveParticleCount(): number;
private _resolveSpawnRadius;
private _spawnParticle;
spawnParticles(count: number, overrides?: Partial<ParticleEffectParameters>): Promise<void>;
setAutoSpawn(ratePerSecond: number, autoSpawnParamOverrides?: Partial<ParticleEffectParameters>): void;
hasAutoSpawn(): boolean;
stopAutoSpawn(): void;
update(deltaTimeMs: number): Promise<void>;
dispose(): void;
}