#pragma once #include "Vector.h" #include "Particle.h" class ParticleEmitter { public: ParticleEmitter(void); ~ParticleEmitter(void); private: float m_Radius;//emitter type=point if radius=0 /* float m_Transparency[3]; float albedo; float symmetry; */ Vector* m_ScriptPositions; int m_ScriptPositionCount; float m_Offset; int m_Type; Vector m_Position; float m_Velocity; float m_VelocityVariation; Vector m_Direction; unsigned int m_TimeToLive; //if 0 live forever float m_Size; float m_Sizevariation; unsigned int m_TTLvariation; unsigned int m_EmissionRate; //particles/sec; if 0 emits as much as possible bool m_isDirectionSet; unsigned int m_EmittedInSecond; //number of particles allready emitted in this second public: unsigned int Emit(unsigned int Dt,unsigned int maxcount,Particle* particles,Vector CamPos=Vector()); void setPosition(Vector pos){m_Position=pos;} void setRadius(float radius){m_Radius=radius;} void setVelocity(float vel){m_Velocity=vel;} void setVelocityVariation(float vel){m_VelocityVariation=vel;} void setDirection(Vector dir){m_Direction=dir;m_isDirectionSet=true;} void setTimeToLive(unsigned int ttl){m_TimeToLive=ttl;} void setTimeToLiveVariation(unsigned int ttl){m_TTLvariation=ttl;} void setSize(float size){m_Size=size;} void setSizevariation(float var){m_Sizevariation=var;} void setEmissionRate(unsigned int rate){m_EmissionRate=rate;} void setPositionsFile(char* filename); void setOffset(float o){m_Offset=o;} float getSize(){return m_Size;} };