Clone of mesa.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

particles.h 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * This program is under the GNU GPL.
  3. * Use at your own risk.
  4. *
  5. * written by David Bucciarelli (humanware@plus.it)
  6. * Humanware s.r.l.
  7. */
  8. #ifndef PARTICLES_H
  9. #define PARTICLES_H
  10. #include <GL/gl.h>
  11. class particle {
  12. protected:
  13. float age; // in seconds
  14. float acc[3];
  15. float vel[3];
  16. float pos[3];
  17. public:
  18. particle();
  19. virtual ~particle() {};
  20. virtual void beginDraw(void) {};
  21. virtual void draw(void)=0;
  22. virtual void endDraw(void) {};
  23. virtual void elapsedTime(float);
  24. virtual void checkAge(void) {};
  25. };
  26. class particleSystem {
  27. protected:
  28. particle **part;
  29. float t;
  30. unsigned long particleNum;
  31. public:
  32. particleSystem();
  33. ~particleSystem();
  34. void addParticle(particle *);
  35. void reset(void);
  36. void draw(void);
  37. void addTime(float);
  38. };
  39. class rainParticle : public particle {
  40. protected:
  41. static float min[3];
  42. static float max[3];
  43. static float partLength;
  44. float oldpos[3];
  45. void init(void);
  46. public:
  47. rainParticle();
  48. static void setRainingArea(float, float, float,
  49. float, float, float);
  50. static void setLength(float);
  51. static float getLength(void) { return partLength; };
  52. void beginDraw(void) { glBegin(GL_LINES); };
  53. void draw(void);
  54. void endDraw(void) { glEnd(); };
  55. void elapsedTime(float);
  56. void checkAge(void);
  57. void randomHeight(void);
  58. };
  59. #endif