#pragma once #include "Vector.h" class Particle { public: Particle(void); ~Particle(void); Vector m_Color; bool refrcol; int m_ID; private: Vector m_Position; Vector m_Velocity; float m_Size; float m_D_Size; public: unsigned int m_Time_to_Live; //if 0 live forever unsigned int m_Age; void setPosition(Vector position); void setPosition(double x, double y, double z); Vector& getPosition(void); void getPosition(double& x, double& y, double& z); void setVelocity(Vector velocity){m_Velocity=velocity;} void setTimetoLive(unsigned int ttl){m_Time_to_Live=ttl;} void setSize(double size){m_Size=size;} double getSize(){return m_Size;} double m_Distance; bool operator < (Particle& op){return(m_Distance (Particle& op){return(m_Distance>=op.m_Distance);} bool LiveMore(unsigned int Dt) { if(m_Time_to_Live==0)//live forever return true; m_Age+=Dt; if(m_Age>m_Time_to_Live) { return false; } else { return true; } } void Refresh(unsigned int Dt) { Vector dir=m_Velocity*(((double)Dt)/1000); m_Position+=dir; if(m_Time_to_Live!=0) { float live=float(((float)(m_Age))/((float)(m_Time_to_Live))); m_Color.w=sin(live*M_PI); } } Particle *m_NextParticle; };