00001 00006 #ifndef __DATASTRUCTURE_H__ 00007 #define __DATASTRUCTURE_H__ 00008 00009 #ifdef __APPLE__ 00010 #include <GraphicsLib/Point3.h> 00011 #else 00012 #include "Point3.h" 00013 #endif 00014 00015 #include "Particle.h" 00016 #include "CollisionObject.h" 00017 00018 namespace ParticleSystems { 00020 00028 class DataStructure { 00029 public: 00030 00032 00035 DataStructure(); 00036 00038 00041 virtual ~DataStructure(); 00042 00044 00048 virtual void addParticles(Particle *particle) = 0; 00049 00051 00054 virtual void killParticles() = 0; 00055 00057 00061 virtual void addCollisionObject(CollisionObject *co) = 0; 00062 00064 00068 virtual void deleteCollisionObject(CollisionObject *co) = 0; 00069 00071 00077 virtual bool positionCheck(GraphicsLib::Point3 pos) = 0; 00078 00080 00083 virtual void evolve() = 0; 00084 00086 00090 virtual void draw() = 0; 00091 00093 00098 virtual int numParticles() = 0; 00099 00101 00106 virtual bool hasDead() = 0; 00107 00109 00115 virtual Particle* getDead() = 0; 00116 00118 00122 int storageCapacity; 00123 00125 00129 bool collision; 00130 }; 00131 } 00132 #endif 00133 00134