Confetti  0.1.0
A C++ particle system using Vulkan
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Confetti::Particle Class Referenceabstract

A particle base class. More...

#include <Confetti/Particle.h>

Inheritance diagram for Confetti::Particle:
Inheritance graph
[legend]

Public Member Functions

 Particle ()=default
 Constructor.
 
 Particle (float lifetime, float age, glm::vec3 const &position, glm::vec3 const &velocity, glm::vec4 const &color)
 Constructor. More...
 
virtual ~Particle ()=default
 Destructor.
 
virtual bool update (float dt)
 Updates the particle. Returns true if the particle was reborn. More...
 
virtual void draw (std::shared_ptr< Vkx::Device > device) const =0
 Draws the particle. More...
 
void bind (BasicEmitter *pEmitter)
 Binds to an emitter.
 
float age () const
 Returns the age of the particle.
 
glm::vec3 position () const
 Returns the particle's current position.
 
glm::vec3 velocity () const
 Returns the particle's current velocity.
 
glm::vec4 color () const
 Returns the particle's current velocity.
 

Protected Member Functions

void initialize (float lifetime, float age, glm::vec3 const &position, glm::vec3 const &velocity, glm::vec4 const &color)
 Initializes after using the default constructor. More...
 

Protected Attributes

BasicEmitter const * emitter_
 This particle's emitter.
 
float lifetime_
 Max age.
 
float age_
 Current age.
 
glm::vec3 initialPosition_
 Position at birth relative to emitter.
 
glm::vec3 initialVelocity_
 Velocity at birth relative to emitter.
 
glm::vec3 position_
 Current position.
 
glm::vec3 velocity_
 Current velocity.
 
glm::vec4 initialColor_
 Color at birth.
 
glm::vec4 color_
 Current color.
 

Detailed Description

A particle base class.

A Particle is a point with a lifetime, age, position, and velocity. It has no size, shape, orientation, color, or texture.

Note
This is an abstract base class. You must derive from this class in order to use it.

Constructor & Destructor Documentation

◆ Particle()

Confetti::Particle::Particle ( float  lifetime,
float  age,
glm::vec3 const &  position,
glm::vec3 const &  velocity,
glm::vec4 const &  color 
)

Constructor.

Parameters
lifetimeHow long the particle lives.
ageInitial age.
positionPosition at birth.
velocityVelocity at birth.

Member Function Documentation

◆ draw()

virtual void Confetti::Particle::draw ( std::shared_ptr< Vkx::Device >  device) const
pure virtual

Draws the particle.

Note
This method must be overridden.

Implemented in Confetti::TexturedParticle, Confetti::PointParticle, Confetti::SphereParticle, and Confetti::StreakParticle.

◆ initialize()

void Confetti::Particle::initialize ( float  lifetime,
float  age,
glm::vec3 const &  position,
glm::vec3 const &  velocity,
glm::vec4 const &  color 
)
protected

Initializes after using the default constructor.

Parameters
lifetimeHow long the particle lives.
ageInitial age.
positionPosition at birth.
velocityVelocity at birth.
colorColor at birth

◆ update()

bool Confetti::Particle::update ( float  dt)
virtual

Updates the particle. Returns true if the particle was reborn.

Parameters
dtThe amount of time that has passed since the last update.
Note
Methods overriding this method must call this first in order to determine the particle's age and if it has been reborn or not.

Reimplemented in Confetti::TexturedParticle, Confetti::PointParticle, Confetti::SphereParticle, and Confetti::StreakParticle.