ParticleEmitter.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef PARTICLE_EMITTER_H
  2. #define PARTICLE_EMITTER_H
  3. #include <OgreStringInterface.h>
  4. #include "Particle.h"
  5. #include "ParticleEmitterDictionary.h"
  6. class ParticleTechnique;
  7. class ParticleEmitter : public Ogre::StringInterface, public Particle
  8. {
  9. public:
  10. ParticleEmitter();
  11. virtual ~ParticleEmitter();
  12. virtual void CopyAttributesTo(ParticleEmitter* emitter);
  13. virtual void InitForEmission();
  14. virtual int CalculateRequestedParticles(Ogre::Real time_elapsed);
  15. virtual void InitParticleForEmission(Particle* particle);
  16. void SetParentTechnique(ParticleTechnique* tech) {m_ParentTechnique = tech;};
  17. ParticleTechnique* GetParentTechnique() const {return m_ParentTechnique;};
  18. void SetName(const Ogre::String& name) {m_Name = name;};
  19. const Ogre::String& GetName() const {return m_Name;};
  20. void SetEmitterType(const Ogre::String& emitter_type) {m_EmitterType = emitter_type;};
  21. const Ogre::String& GetEmitterType() const {return m_EmitterType;};
  22. void SetEmitsName(const Ogre::String& emitsName);
  23. const Ogre::String& GetEmitsName() const {return m_EmitsName;};
  24. void SetEmitsType(ParticleType emits_type) {m_EmitsType = emits_type;};
  25. ParticleType GetEmitsType() const {return m_EmitsType;};
  26. void SetEmissionRate(int rate) {m_EmissionRate = rate;};
  27. int GetEmissionRate() const {return m_EmissionRate;};
  28. // EMIT PARTICLE SETTINGS
  29. void SetEmitDirection(const Ogre::Vector3& dir) {m_EmitDirection1 = dir; m_EmitDirection2 = dir;};
  30. void SetEmitDirectionRange(const Ogre::Vector3& dir1, const Ogre::Vector3& dir2) {m_EmitDirection1 = dir1; m_EmitDirection2 = dir2;};
  31. void SetEmitTotalTimeToLive(float time) {m_EmitTotalTimeToLive = time;};
  32. protected:
  33. ParticleTechnique* m_ParentTechnique;
  34. Ogre::String m_Name;
  35. Ogre::String m_EmitterType;
  36. Ogre::String m_EmitsName;
  37. ParticleType m_EmitsType;
  38. static ParticleEmitterDictionary::EmissionRate m_EmissionRateDictionary;
  39. int m_EmissionRate;
  40. Ogre::Real m_EmissionRemainder;
  41. static ParticleEmitterDictionary::Direction m_DirectionDictionary;
  42. Ogre::Vector3 m_EmitDirection1;
  43. Ogre::Vector3 m_EmitDirection2;
  44. static ParticleEmitterDictionary::TotalTimeToLive m_TotalTimeToLiveDictionary;
  45. float m_EmitTotalTimeToLive;
  46. };
  47. #endif // PARTICLE_EMITTER_H