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. Positions are in screen space.
 
void draw (const Camera &camera)
 Draw alive particles with positions in world space.
 
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 draw_offset (const Vec2< float > &offset)
 
void spawn_particle ()
 

Private Attributes

ParticleConfig config
 
std::vector< Particle > particles
 
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 54 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 20 of file particles.cpp.

Member Function Documentation

◆ draw() [1/2]

void asw::ParticleEmitter::draw ( )
overridevirtual

Draw alive particles. Positions are in screen space.

Reimplemented from asw::game::GameObject.

Definition at line 76 of file particles.cpp.

◆ draw() [2/2]

void asw::ParticleEmitter::draw ( const Camera & camera)

Draw alive particles with positions in world space.

Parameters
cameraThe camera to view the particles through.

Definition at line 81 of file particles.cpp.

◆ draw_offset()

void asw::ParticleEmitter::draw_offset ( const Vec2< float > & offset)
private

Definition at line 86 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 31 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 125 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 26 of file particles.cpp.

◆ spawn_particle()

void asw::ParticleEmitter::spawn_particle ( )
private

Definition at line 130 of file particles.cpp.

◆ start()

void asw::ParticleEmitter::start ( )

Start continuous emission.

Definition at line 38 of file particles.cpp.

◆ stop()

void asw::ParticleEmitter::stop ( )

Stop continuous emission.

Definition at line 43 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 48 of file particles.cpp.

Member Data Documentation

◆ alive_count

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

Definition at line 126 of file particles.h.

◆ config

ParticleConfig asw::ParticleEmitter::config
private

Definition at line 124 of file particles.h.

◆ emission_accumulator

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

Definition at line 130 of file particles.h.

◆ emission_rate

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

Definition at line 129 of file particles.h.

◆ emitting

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

Definition at line 131 of file particles.h.

◆ particles

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

Definition at line 125 of file particles.h.


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