#ifndef cparticle_h
#define cparticle_h

#include "ForwardDeclarations.h"
#include "cVector.h"
#include "cColor.h"
#include "OGLPlatformSpecific.h"
#include "cIntersectionResult.h"
#include "cStaticTriangleMesh.h"
#include "cTriangle.h"
#include "cBoundingBox.h"
#include "cParticleSystem.h"
#include <iostream>
#include <vector>
using namespace std;

class cParticle
{
public:
    cParticleSystem* ps_;
    bool dead_;		// set this flag if you want the particle system to erase
                        // this particle in the next update
                        
    cVector position_, velocity_;
    float age_;
    
    cParticle(cParticleSystem* ps) : ps_(ps), dead_(false), age_(0) {}
    
    virtual void update(float dt, vector<cTriangle*>& tlist) = 0;
    
    virtual void draw() = 0;
};

#endif