import type { UILayer } from "../../core"; import { UIAnchor } from "../../core/elements/UIAnchor/UIAnchor"; import type { UIAnchorOptions } from "../../core/elements/UIAnchor/UIAnchor.Internal"; import type { UIBehaviorModule } from "../behaviorModules/UIBehaviorModule"; import type { UIRenderingModule } from "../renderingModules/UIRenderingModule"; import type { UISpawnModule } from "../spawnModules/UISpawnModule"; import type { UIEmitterMode, UIEmitterPlayOptions } from "./UIEmitter.Internal"; export interface UIEmitterOptions extends UIAnchorOptions { mode: UIEmitterMode; expectedCapacity: number; capacityStep: number; automaticallyDestroyModules: boolean; } /** * Particle emitter element. * * Spawns, updates, and renders particles using modular spawn/behavior/rendering pipeline. */ export declare class UIEmitter extends UIAnchor { private readonly spawnSequence; private readonly behaviorSequence; private readonly renderingSequence; /** Whether to call destroy() on all modules when emitter is destroyed */ automaticallyDestroyModules: boolean; private readonly mesh; private readonly catcherHandler; private emissionRate; private emissionAccumulator; private emissionDuration; private emissionElapsed; private modeInternal; /** * @param layer - Layer containing this emitter * @param spawnSequence - Modules that initialize new particles * @param behaviorSequence - Modules that update particles each frame * @param renderingSequence - Modules that control particle appearance * @param options - Configuration options */ constructor(layer: UILayer, spawnSequence: UISpawnModule[], behaviorSequence: readonly UIBehaviorModule[], renderingSequence: readonly UIRenderingModule[], options?: Partial); /** Visibility mode */ get mode(): UIEmitterMode; /** Rendering order. Higher values draw on top */ get zIndex(): number; /** Visibility mode */ set mode(value: UIEmitterMode); /** Rendering order. Higher values draw on top */ set zIndex(value: number); /** Removes emitter and optionally destroys modules */ destroy(): void; /** * Spawns a specific number of particles immediately. * * @param count - Number of particles to create */ burst(count: number): void; /** Removes all active particles */ clear(): void; /** * Starts continuous particle emission. * * @param rate - Particles per second * @param options - Emission duration and other settings */ play(rate: number, options?: Partial): void; /** Stops continuous particle emission */ stop(): void; private readonly onRendering; }