ASW Lib
A.D.S. Games SDL Wrapper Library. A library targeted at Allegro4 users who want to switch to SDL3 and use modern c++.
Loading...
Searching...
No Matches
asw::ParticleEmitter Class Reference

Particle emitter that integrates with the scene system. More...

#include <particles.h>

Inheritance diagram for asw::ParticleEmitter:
[legend]
Collaboration diagram for asw::ParticleEmitter:
[legend]

Classes

struct  Particle
 

Public Member Functions

 ParticleEmitter ()=default
 Create a default ParticleEmitter with no particles.
 
 ParticleEmitter (const ParticleConfig &config, uint32_t maxParticles=256)
 Construct a new ParticleEmitter.
 
void set_emission_rate (float rate)
 Set emission rate (particles per second), 0 to disable auto-emit.
 
void emit (uint32_t count)
 Emit a burst of particles at current position.
 
void start ()
 Start continuous emission.
 
void stop ()
 Stop continuous emission.
 
void update (float dt) override
 Update particles.
 
void draw () override
 Draw alive particles.
 
uint32_t get_alive_count () const
 Get the number of alive particles.
 
- Public Member Functions inherited from asw::game::GameObject
 GameObject ()=default
 
virtual ~GameObject ()=default
 
const asw::Quad< float > & get_transform () const
 Get transform.
 

Private Member Functions

void spawn_particle ()
 

Private Attributes

ParticleConfig config
 
std::vector< Particleparticles
 
uint32_t alive_count { 0 }
 
float emission_rate { 0.0F }
 
float emission_accumulator { 0.0F }
 
bool emitting { false }
 

Additional Inherited Members

- Public Attributes inherited from asw::game::GameObject
asw::Quad< float > transform
 The transform of the object.
 
float rotation { 0.0F }
 The rotation of the object in radians.
 
int z_index { 0 }
 The layer that the object is on.
 
bool active { true }
 Whether or not the object is active.
 
float alpha { 1.0F }
 Opacity of the object.
 
Physics body
 Physics body of the object.
 
bool alive { true }
 Alive state.
 

Detailed Description

Particle emitter that integrates with the scene system.

Definition at line 53 of file particles.h.

Constructor & Destructor Documentation

◆ ParticleEmitter() [1/2]

asw::ParticleEmitter::ParticleEmitter ( )
default

Create a default ParticleEmitter with no particles.

◆ ParticleEmitter() [2/2]

asw::ParticleEmitter::ParticleEmitter ( const ParticleConfig & config,
uint32_t maxParticles = 256 )
explicit

Construct a new ParticleEmitter.

Parameters
configThe particle configuration.
maxParticlesMaximum number of particles in the pool.

Definition at line 19 of file particles.cpp.

Member Function Documentation

◆ draw()

void asw::ParticleEmitter::draw ( )
overridevirtual

Draw alive particles.

Reimplemented from asw::game::GameObject.

Definition at line 75 of file particles.cpp.

◆ emit()

void asw::ParticleEmitter::emit ( uint32_t count)

Emit a burst of particles at current position.

Parameters
countNumber of particles to emit.

Definition at line 30 of file particles.cpp.

◆ get_alive_count()

uint32_t asw::ParticleEmitter::get_alive_count ( ) const

Get the number of alive particles.

Returns
The alive particle count.

Definition at line 110 of file particles.cpp.

◆ set_emission_rate()

void asw::ParticleEmitter::set_emission_rate ( float rate)

Set emission rate (particles per second), 0 to disable auto-emit.

Parameters
rateParticles per second.

Definition at line 25 of file particles.cpp.

◆ spawn_particle()

void asw::ParticleEmitter::spawn_particle ( )
private

Definition at line 115 of file particles.cpp.

◆ start()

void asw::ParticleEmitter::start ( )

Start continuous emission.

Definition at line 37 of file particles.cpp.

◆ stop()

void asw::ParticleEmitter::stop ( )

Stop continuous emission.

Definition at line 42 of file particles.cpp.

◆ update()

void asw::ParticleEmitter::update ( float dt)
overridevirtual

Update particles.

Parameters
dtThe time in seconds since the last update.

Reimplemented from asw::game::GameObject.

Definition at line 47 of file particles.cpp.

Member Data Documentation

◆ alive_count

uint32_t asw::ParticleEmitter::alive_count { 0 }
private

Definition at line 117 of file particles.h.

◆ config

ParticleConfig asw::ParticleEmitter::config
private

Definition at line 115 of file particles.h.

◆ emission_accumulator

float asw::ParticleEmitter::emission_accumulator { 0.0F }
private

Definition at line 121 of file particles.h.

◆ emission_rate

float asw::ParticleEmitter::emission_rate { 0.0F }
private

Definition at line 120 of file particles.h.

◆ emitting

bool asw::ParticleEmitter::emitting { false }
private

Definition at line 122 of file particles.h.

◆ particles

std::vector<Particle> asw::ParticleEmitter::particles
private

Definition at line 116 of file particles.h.


The documentation for this class was generated from the following files: