/*==================================================================
| 
| Name: Particle.h
|
|===================================================================
|
| Author: Ben Vinegar
| Contact: benvinegar () hotmail ! com
|
|
| Last Modified: 03/08/04
|
| Overview: A single particle, currently only utilized by
|           CParticleEmitter. Public variables are for performance
|           reasons.
|
|
| Usage: Instantiate a particle, set public variables, then call
|        Frame() every frame.
|
| To do: TBA
|
| More Information: TBA
|
==================================================================*/

#ifndef PARTICLE_H
#define PARTICLE_H

//--------------------------------------------------------
//  Includes / Compiler directives
//--------------------------------------------------------

#include "Vector3D.h"
#include "Sprite.h"

//--------------------------------------------------------
//  Declarations
//--------------------------------------------------------

class CParticle 
{
public:
	CParticle();
	~CParticle();

	// necessary pre-processing immediately before first update call
	void Init();

	void Frame();
	void Update();
	void Render();

	void Reset();

	void SetColour(float r, float g, float b, float a);

	CSprite * m_sprite;

	float m_duration;
	double m_timeOfLastFrame;
	double m_timeElapsedTotal;

	CVector3D m_position;
	CVector3D m_velocity;
	CVector3D m_gravity;

	float m_colour[4];
	float m_colourInc[3];
};


#endif // PARTICLE_H