Skip to content

ParticleEmitter ​

Pooled 2D particles.

ts
import { ParticleEmitter, EmitterConfig, Range } from "willow";

ParticleEmitter ​

ts
class ParticleEmitter extends Node

Extends Node.

Particle emitter node managing a pool of simulated 2D particles.

ParticleEmitter: constructors ​

ts
new ParticleEmitter(name?: string, config?: EmitterConfig)

Constructs a new particle emitter node with optional name and config.

ParticleEmitter: properties ​

MemberDescription
config: EmitterConfigEmitter configuration controlling particle spawning and physics.
readonly particleCount: intCurrent number of active particles alive in the simulation.
readonly aliveCount: intAlias for particleCount. Current number of active alive particles.
readonly active: booleanWhether the emitter is currently active and spawning particles.
seed: intDeterministic RNG seed state for particle variations.

ParticleEmitter: methods ​

MemberDescription
start(): voidBegins emitting particles according to the emitter config rate.
stop(): voidStops emitting new particles; live particles continue until death.
reset(): voidStops emission and immediately clears all active particles.
burst(count: int): voidSpawns a burst of particles immediately.
update(dt: float): voidAdvances particle simulation and quad rendering by dt seconds.
setSeed(seed: int): voidSets the random seed for reproducible particle variation.
bounds(): RectAxis-aligned bounding box covering all currently alive particles.

ParticleEmitter: static methods ​

MemberDescription
static create(name: string, config: EmitterConfig): ParticleEmitterFactory creating a new particle emitter node.

EmitterConfig ​

ts
class EmitterConfig

Configuration options for particle emitter simulation and visuals.

EmitterConfig: constructors ​

ts
new EmitterConfig()

Constructs an EmitterConfig with default settings.

EmitterConfig: properties ​

MemberDescription
maxParticles: intMaximum pool size of concurrent particles. Defaults to 128.
emitRate: floatEmission rate in particles spawned per second. Defaults to 10.0.
lifetime: RangeLifetime range of spawned particles in seconds.
lifetimeMin: floatMinimum particle lifetime in seconds. Defaults to 1.0.
lifetimeMax: floatMaximum particle lifetime in seconds. Defaults to 1.0.
speed: RangeInitial particle speed range in pixels per second.
speedMin: floatMinimum initial speed in pixels per second. Defaults to 50.0.
speedMax: floatMaximum initial speed in pixels per second. Defaults to 50.0.
angle: RangeEmission angle range in radians. Defaults to full circle [0, 2*PI].
angleMin: floatMinimum emission angle in radians. Defaults to 0.0.
angleMax: floatMaximum emission angle in radians. Defaults to 2*PI.
gravityX: floatConstant horizontal acceleration applied to particles. Defaults to 0.0.
gravityY: floatConstant vertical acceleration applied to particles. Defaults to 0.0.
startScale: floatScale factor at particle birth. Defaults to 1.0.
endScale: floatScale factor at particle death. Defaults to 1.0.
scaleStart: floatAlias for startScale. Scale factor at particle birth. Defaults to 1.0.
scaleEnd: floatAlias for endScale. Scale factor at particle death. Defaults to 1.0.
startAlpha: floatAlpha multiplier at particle birth. Defaults to 1.0.
endAlpha: floatAlpha multiplier at particle death. Defaults to 0.0.
alphaStart: floatAlias for startAlpha. Alpha multiplier at particle birth. Defaults to 1.0.
alphaEnd: floatAlias for endAlpha. Alpha multiplier at particle death. Defaults to 0.0.
startColor: ColorTint color at particle birth. Defaults to white.
endColor: ColorTint color at particle death. Defaults to white.
colorStart: ColorAlias for startColor. Tint color at particle birth.
colorEnd: ColorAlias for endColor. Tint color at particle death.
blendMode: stringCompositor blend mode for particles. Defaults to "add".
worldSpace: booleanWhen true, emitted particles remain in world space rather than following node. Defaults to false.

Range ​

ts
class Range

A min/max range of numbers. EmitterConfig uses it for lifetime, speed and angle.

Range: constructors ​

ts
new Range(min: float, max: float)

Range: properties ​

MemberDescription
min: floatLower bound, inclusive.
max: floatUpper bound, inclusive.

Range: methods ​

MemberDescription
random(): floatA uniformly-distributed random value in [min, max]. Returns min when min === max.