#pragma once #include "ParticleCube.h" #include "Node.h" #include "Vector.h" #include "SoundNode.h" #include class ParticleGroup; class ParticleEmitter : public ParticleCube { public: ParticleEmitter(void); ~ParticleEmitter(void); void setEMBirthRate(float _birthRate); void setEMEmissionDuration(float _emissionDur); void setEMParticleVelocity(float _velocity); void setEMHorizontalDegree(float _horDegree); void setEMVerticalDegree(float _verDegree); void setEMRotationalDegree(float _rX, float _rY, float _rZ); void setEMParticleLifeTime(float _particleLifeTime); void setDeleteMeAfterEmission(bool _deleteMe); void addRefNode(Node &node); void setParticleGroup(ParticleGroup* _particleGroup); virtual void update(float dt); void restartEmitting(); bool isEmitting(); virtual void killMe(); virtual Node* clone(); void setUseHeatHaze(bool _use); bool getUseHeatHaze(); void addEmittingSound(SoundNode* _sound); protected: bool useHeatHaze; bool emitting; float birthRate; float lifeTime; float emissionDur; float particleLifeTime; float nextEmit; float velocity; float horDegree; float verDegree; unsigned int pid; bool deleteMe; std::vector refNodeVector; bool firstFrame; int particleEmitted; Vector rotDegree; ParticleGroup* myParticleGroup; SoundNode* sound; };