Abstract base class for particle emitters. More...
Classes | |
struct | Adder |
Class that connects emitters with their corresponding particle system. More... | |
Public Types | |
typedef std::tr1::shared_ptr < Emitter > | Ptr |
Shared pointer type referring to derivates of Emitter. | |
typedef MovedPtr< Zone, VirtualClone > | ZonePtr |
Movable smart pointer to Zone derivates. | |
Public Member Functions | |
virtual | ~Emitter () |
Virtual destructor. | |
virtual void | Emit (Adder &system, sf::Time dt)=0 |
Emits particles into a particle system. | |
void | SetEmissionZone (Emitter::ZonePtr zone) |
Sets the zone inside which particles are created. | |
Zone & | GetEmissionZone () |
Returns the zone inside which particles are created. | |
const Zone & | GetEmissionZone () const |
Returns the zone inside which particles are created (const overload). | |
void | SetEmissionRate (float particlesPerSecond) |
Sets the particle emission rate. | |
float | GetEmissionRate () const |
Returns the particle emission rate. | |
void | SetParticleScale (sf::Vector2f scale) |
Sets the initial particle scale. | |
sf::Vector2f | GetParticleScale () const |
Returns the initial particle velocity. | |
void | SetParticleColor (const sf::Color &color) |
Sets the initial particle color. | |
const sf::Color & | GetParticleColor () const |
Returns the initial particle color. | |
void | SetParticleLifetime (sf::Time lifetime) |
Sets the lifetime (time between emission and death) of the particle. | |
sf::Time | GetParticleLifetime () const |
Returns the lifetime (time between emission and death) of the particle. | |
Protected Member Functions | |
Emitter (float particlesPerSecond, sf::Time particleLifetime) | |
Constructor. | |
unsigned int | ComputeNbParticles (sf::Time dt) |
Helper function for emission: Computes how many particles should be emitted in this frame. | |
Particle | CreateParticlePrototype () const |
Creates a prototype of a particle. |
Abstract base class for particle emitters.
Emitters are classes which create particles (using particular initial conditions) and insert them into a particle system.
Inherit from this class and override Emit() to implement custom emitters.
typedef MovedPtr<Zone, VirtualClone> thor::Emitter::ZonePtr |
Movable smart pointer to Zone derivates.
Is used to pass polymorphic zones around. Note that this pointer doesn't have shared ownership semantics, it rather transfers ownership when copied. To create a copy, you can use thor::Copy().
thor::Emitter::Emitter | ( | float | particlesPerSecond, |
sf::Time | particleLifetime | ||
) | [protected] |
Constructor.
particlesPerSecond | How many particles are emitted in 1 second. The type is not integral to allow more flexibility (e.g. 0.5 yields one particle every 2 seconds). |
particleLifetime | How long the particles live until they are removed. |
unsigned int thor::Emitter::ComputeNbParticles | ( | sf::Time | dt | ) | [protected] |
Helper function for emission: Computes how many particles should be emitted in this frame.
Saves the user from calculations, takes care of too short times to emit particles. This function shall be called exactly once each frame.
dt | Frame time. |
Particle thor::Emitter::CreateParticlePrototype | ( | ) | const [protected] |
Creates a prototype of a particle.
Applies the initial particle settings (position, rotation, scale, color, lifetime).
virtual void thor::Emitter::Emit | ( | Adder & | system, |
sf::Time | dt | ||
) | [pure virtual] |
Emits particles into a particle system.
Override this method in your emitter class to implement your own functionality. If your emitter does only emit the particles in a different area, you should have a look at RandomOffset().
system | Indirection to the particle system that stores the particles. |
dt | Time interval during which particles are emitted. |
Implemented in thor::TargetEmitter, and thor::DirectionalEmitter.
float thor::Emitter::GetEmissionRate | ( | ) | const |
Returns the particle emission rate.
Returns the zone inside which particles are created.
const Zone& thor::Emitter::GetEmissionZone | ( | ) | const |
Returns the zone inside which particles are created (const overload).
void thor::Emitter::SetEmissionRate | ( | float | particlesPerSecond | ) |
Sets the particle emission rate.
particlesPerSecond | How many particles are emitted in 1 second. The type is not integral to allow more flexibility (e.g. 0.5 yields one particle every 2 seconds). |
void thor::Emitter::SetEmissionZone | ( | Emitter::ZonePtr | zone | ) |
Sets the zone inside which particles are created.
zone | MovedPtr<Zone, VirtualClone> to concrete zone object. |