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).

Search Document