00001 00006 #ifndef __PARTICLESYSTEM_H__ 00007 #define __PARTICLESYSTEM_H__ 00008 00009 #ifdef __APPLE__ 00010 #include <GraphicsLib/Point3.h> 00011 #include <GraphicsLib/Material.h> 00012 #else 00013 #include "Material.h" 00014 #include "Point3.h" 00015 #endif 00016 00017 #include <vector> 00018 #include "Debugger.h" 00019 00020 #include "Particle.h" 00021 #include "Solver.h" 00022 #include "Emitter.h" 00023 #include "DataStructure.h" 00024 #include "Force.h" 00025 #include "Texture.h" 00026 00027 00028 00029 00030 namespace ParticleSystems { 00032 00035 typedef int SYSTEMID; 00036 00038 00044 class ParticleSystem { 00045 00046 public: 00048 00058 ParticleSystem(int ident, Emitter *emit, DataStructure *dataStruc, Solver *s, int num, int var); 00059 00061 00064 ~ParticleSystem(); 00065 00067 00070 void die(); 00071 00073 00076 void restart(); 00077 00079 00082 void pause(); 00083 00085 00088 void evolve(); 00089 00091 00096 void createNewParticles(int number); 00097 00099 00104 void newParticle(void); 00105 00107 00110 void killParticles(void); 00111 00113 00117 void addSolver(Solver *s); 00118 00120 00123 void draw(); 00124 00126 00130 bool stillAlive(void); 00131 00133 00136 GraphicsLib::Material texture; 00137 00139 00142 SYSTEMID identify; 00143 00145 00148 bool alive; 00149 00151 00154 int numInitParticles; 00155 00157 00160 int varNewParticles; 00161 00163 00166 GraphicsLib::Point3 position; 00167 00169 00172 Emitter *em; 00173 00175 00178 DataStructure *data; 00179 00181 00184 std::vector<Solver *> sList; 00185 00187 00190 std::vector<Solver *>::iterator sListItt; 00191 00193 00196 bool paused; 00197 }; 00198 } 00199 #endif 00200