Particle.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef PARTICLE_H
  2. #define PARTICLE_H
  3. #include <OgrePrerequisites.h>
  4. #include <OgreVector3.h>
  5. #include "ParticleAdditionalData.h"
  6. class ParticleEmitter;
  7. class Particle
  8. {
  9. public:
  10. enum ParticleType
  11. {
  12. PT_VISUAL,
  13. PT_EMITTER
  14. };
  15. Particle();
  16. virtual ~Particle() = 0;
  17. virtual void InitForEmission() {};
  18. virtual void InitForExpiration() {};
  19. virtual void Update(Ogre::Real time_elapsed);
  20. virtual void CopyAttributesTo(Particle* particle);
  21. ParticleType GetParticleType() const {return m_ParticleType;};
  22. void SetParentEmitter(ParticleEmitter* parent_emitter) {m_ParentEmitter = parent_emitter;};
  23. ParticleEmitter* GetParentEmitter() const {return m_ParentEmitter;};
  24. void SetEnabled(bool enabled) {m_Enabled = enabled;};
  25. bool IsEnabled() const {return m_Enabled;};
  26. void SetEmittable(bool emittable) {m_Emittable = emittable;};
  27. bool IsEmittable() const {return m_Emittable;};
  28. ParticleAdditionalData* additional_data;
  29. Ogre::Vector3 position;
  30. Ogre::Vector3 direction;
  31. float time_to_live;
  32. float total_time_to_live;
  33. protected:
  34. ParticleEmitter* m_ParentEmitter;
  35. ParticleType m_ParticleType;
  36. bool m_Enabled;
  37. bool m_Emittable;
  38. };
  39. #endif // PARTICLE_H