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, int maxParticles=256)
 Construct a new ParticleEmitter.
 
void setEmissionRate (float rate)
 Set emission rate (particles per second), 0 to disable auto-emit.
 
void emit (int count)
 Emit a burst of particles at current position.
 
void start ()
 Start continuous emission.
 
void stop ()
 Stop continuous emission.
 
void update (float deltaTime) override
 Update particles.
 
void draw () override
 Draw alive particles.
 
int getAliveCount () const
 Get the number of alive particles.
 
- Public Member Functions inherited from asw::game::GameObject
 GameObject ()=default
 
virtual ~GameObject ()=default
 
const asw::Quad< float > & getTransform () const
 Get transform.
 

Private Member Functions

void spawnParticle ()
 

Private Attributes

ParticleConfig config
 
std::vector< Particleparticles
 
int aliveCount {0}
 
float emissionRate {0.0F}
 
float emissionAccumulator {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 zIndex {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,
int 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 68 of file particles.cpp.

◆ emit()

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

Emit a burst of particles at current position.

Parameters
countNumber of particles to emit.

Definition at line 27 of file particles.cpp.

◆ getAliveCount()

int asw::ParticleEmitter::getAliveCount ( ) const

Get the number of alive particles.

Returns
The alive particle count.

Definition at line 106 of file particles.cpp.

◆ setEmissionRate()

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

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

Parameters
rateParticles per second.

Definition at line 23 of file particles.cpp.

◆ spawnParticle()

void asw::ParticleEmitter::spawnParticle ( )
private

Definition at line 110 of file particles.cpp.

◆ start()

void asw::ParticleEmitter::start ( )

Start continuous emission.

Definition at line 33 of file particles.cpp.

◆ stop()

void asw::ParticleEmitter::stop ( )

Stop continuous emission.

Definition at line 37 of file particles.cpp.

◆ update()

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

Update particles.

Parameters
deltaTimeThe time in seconds since the last update.

Reimplemented from asw::game::GameObject.

Definition at line 41 of file particles.cpp.

Member Data Documentation

◆ aliveCount

int asw::ParticleEmitter::aliveCount {0}
private

Definition at line 118 of file particles.h.

◆ config

ParticleConfig asw::ParticleEmitter::config
private

Definition at line 116 of file particles.h.

◆ emissionAccumulator

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

Definition at line 122 of file particles.h.

◆ emissionRate

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

Definition at line 121 of file particles.h.

◆ emitting

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

Definition at line 123 of file particles.h.

◆ particles

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

Definition at line 117 of file particles.h.


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