| /* |
| * This program is under the GNU GPL. |
| * Use at your own risk. |
| * |
| * written by David Bucciarelli (humanware@plus.it) |
| * Humanware s.r.l. |
| */ |
| |
| #ifndef PARTICLES_H |
| #define PARTICLES_H |
| |
| #include <GL/gl.h> |
| |
| class particle { |
| protected: |
| float age; // in seconds |
| float acc[3]; |
| float vel[3]; |
| float pos[3]; |
| |
| public: |
| particle(); |
| virtual ~particle() {}; |
| |
| virtual void beginDraw(void) {}; |
| virtual void draw(void)=0; |
| virtual void endDraw(void) {}; |
| |
| virtual void elapsedTime(float); |
| virtual void checkAge(void) {}; |
| }; |
| |
| class particleSystem { |
| protected: |
| particle **part; |
| |
| float t; |
| |
| unsigned long particleNum; |
| public: |
| particleSystem(); |
| ~particleSystem(); |
| |
| void addParticle(particle *); |
| |
| void reset(void); |
| |
| void draw(void); |
| |
| void addTime(float); |
| }; |
| |
| class rainParticle : public particle { |
| protected: |
| static float min[3]; |
| static float max[3]; |
| static float partLength; |
| |
| float oldpos[3]; |
| |
| void init(void); |
| public: |
| rainParticle(); |
| |
| static void setRainingArea(float, float, float, |
| float, float, float); |
| static void setLength(float); |
| static float getLength(void) { return partLength; }; |
| |
| void beginDraw(void) { glBegin(GL_LINES); }; |
| void draw(void); |
| void endDraw(void) { glEnd(); }; |
| |
| void elapsedTime(float); |
| |
| void checkAge(void); |
| |
| void randomHeight(void); |
| }; |
| |
| #endif |