Go to the documentation of this file.00001 #pragma once
00002 #include "GSingletonManager.h"
00003 #include "GVec4f.h"
00004 #include "GParticleEmitter.h"
00005 #include "types.h"
00006 #include <vector>
00007
00008 #include <string>
00009
00010 class GParticleEngine : public GSingletonManager<GParticleEngine>
00011 {
00012 protected:
00013 vector<GParticleEmitter *> emitters;
00014
00015 float vertices[12];
00016 float texcoords[8];
00017 unsigned short indices[6];
00018 unsigned int vboId[2];
00019 public:
00020 GParticleEngine();
00021 ~GParticleEngine();
00022
00023 int CreateEmitter(std::string name, ParticleType t, std::string texture, GVec4f pos, bool isRandom, GVec4f dir, float v, float dur, float spawn, float min, float max, int numParticles, GParticleEmitter **emitter);
00024
00025 int CreateEmitter(ParticleType t, GParticleEmitter **emitter);
00026
00027 GParticleEmitter *GetEmitterByName(std::string name);
00028
00029 GParticleEmitter *GetEmitterByType(ParticleType t);
00030
00031 int EnableEmitter(std::string name);
00032
00033 int DisableEmitter(std::string name);
00034
00035 int UpdateEmitters(double time, double dtime);
00036
00037 int DrawEmitters(double time, double dtime, GMatrix16 *viewmatrix, int FLAGS);
00038
00039 int DestroyEmitter(std::string name);
00040
00041 int Destroy();
00042
00043 int SetupVBO();
00044
00045 int GetVBAData(float **verts, float **tex, unsigned short **ind);
00046 int GetVBOData(unsigned int **vboIds);
00047 };