tiramisu/particle_emitter
Types
Particle emitter configuration for creating particle effects.
Particle emitters spawn particles over time with configurable properties. Particles are rendered efficiently using Three.js Points with automatic lifetime management, velocity integration, and color fading.
Example
let assert Ok(emitter) = scene.particle_emitter(
rate: 50.0,
lifetime: 2.0,
velocity: vec3.Vec3(0.0, 5.0, 0.0),
velocity_variance: vec3.Vec3(2.0, 1.0, 2.0),
size: 0.1,
size_variance: 0.05,
color: 0xffff00,
color_end: option.Some(0xff0000),
gravity_scale: 1.0,
max_particles: 1000,
)
pub opaque type ParticleEmitter
Builder for particle emitter with sensible defaults.
Start with new_particle_emitter()
, chain setter methods, then call build_emitter()
.
Example
let emitter = scene.new_particle_emitter()
|> scene.emitter_rate(100.0)
|> scene.emitter_lifetime(2.0)
|> scene.emitter_velocity(vec3.Vec3(0.0, 5.0, 0.0))
|> scene.emitter_color(0xffff00)
|> scene.emitter_fade_to(0xff0000)
|> scene.build_emitter()
pub opaque type ParticleEmitterBuilder
pub type ParticleError {
NegativeRate(Float)
NegativeLifetime(Float)
NegativeSize(Float)
NegativeSizeVariance(Float)
OutOfBoundsColor(Int)
OutOfBoundsColorEnd(Int)
NegativeMaxParticles(Int)
}
Constructors
-
NegativeRate(Float)
-
NegativeLifetime(Float)
-
NegativeSize(Float)
-
NegativeSizeVariance(Float)
-
OutOfBoundsColor(Int)
-
OutOfBoundsColorEnd(Int)
-
NegativeMaxParticles(Int)
Values
pub fn build(
builder: ParticleEmitterBuilder,
) -> Result(ParticleEmitter, ParticleError)
Build the particle emitter from the builder (validates parameters).
pub fn color(
builder: ParticleEmitterBuilder,
color: Int,
) -> ParticleEmitterBuilder
Set the start color for particles.
pub fn fade_to(
builder: ParticleEmitterBuilder,
color: Int,
) -> ParticleEmitterBuilder
Set the end color for particles (for fading effect).
pub fn gravity(
builder: ParticleEmitterBuilder,
scale: Float,
) -> ParticleEmitterBuilder
Set gravity multiplier (1.0 = normal, 0.0 = no gravity).
pub fn lifetime(
builder: ParticleEmitterBuilder,
lifetime: Float,
) -> ParticleEmitterBuilder
Set how long particles live (in seconds).
pub fn max_particles(
builder: ParticleEmitterBuilder,
max: Int,
) -> ParticleEmitterBuilder
Set maximum number of active particles.
pub fn new() -> ParticleEmitterBuilder
Create a new particle emitter builder with default values.
Defaults:
- rate: 50.0 particles/sec
- lifetime: 1.0 seconds
- velocity: upward (0, 2, 0)
- velocity_variance: (1, 1, 1)
- size: 0.1
- size_variance: 0.05
- color: white (0xffffff)
- color_end: None
- gravity_scale: 1.0
- max_particles: 1000
pub fn rate(
builder: ParticleEmitterBuilder,
rate: Float,
) -> ParticleEmitterBuilder
Set the emission rate (particles per second).
pub fn size(
builder: ParticleEmitterBuilder,
size: Float,
) -> ParticleEmitterBuilder
Set the base particle size.
pub fn size_variance(
builder: ParticleEmitterBuilder,
variance: Float,
) -> ParticleEmitterBuilder
Set random variance added to size.
pub fn velocity(
builder: ParticleEmitterBuilder,
velocity: vec3.Vec3(Float),
) -> ParticleEmitterBuilder
Set the base velocity for new particles.
pub fn velocity_variance(
builder: ParticleEmitterBuilder,
variance: vec3.Vec3(Float),
) -> ParticleEmitterBuilder
Set random variance added to velocity (per axis).