00001
00007 #ifndef PARTICLE_H_UMW285
00008 #define PARTICLE_H_UMW285
00009
00010 #include "IsoBomb.h"
00011 #include "Effect.h"
00012 #include "Point3D.h"
00013 #include "Rect.h"
00014 #include "Vector3D.h"
00015
00019 class Particle : public Effect {
00020 public:
00028 Particle( const Point3D& initPos, const Vector3D& initVect, float life );
00029
00033 virtual ~Particle();
00034
00039 static void initTextures( GraphicsDevice dev );
00040
00045 static void releaseTextures();
00046
00050 void setColor( DWORD color );
00051
00055 void setSize( float size );
00056
00062 void setBounceFactor( float fact );
00063
00064 virtual bool update( float dt );
00065
00066 virtual void draw( const Point& anchor );
00067
00068 virtual float getHeight() const;
00069
00070 virtual bool needsTransform() const;
00071
00072 virtual const Rect& getPosition() const;
00073
00074 private:
00079 struct ParticleVertex {
00080 float x, y, z;
00081 float rhw;
00082 DWORD color;
00083 float u, v;
00084 };
00085
00086 static ParticleVertex v[4];
00087
00091 Particle();
00092
00093 float life;
00094
00095 Point3D pos;
00096
00100 Vector3D vect;
00101
00106 Rect cached;
00107
00111 DWORD color;
00112
00116 float size;
00117
00121 float bounceF;
00122
00123 static Texture tex;
00124 };
00125
00126 #endif