[╯°□°]╯︵┻━┻
Goldberg Simulator 20000
|
00001 #ifndef PRJ_SYSTEM_H 00002 #define PRJ_SYSTEM_H 00003 00004 #include "Force.h" 00005 #include "Spring.h" 00006 #include "Obj.h" 00007 #include "Ball.h" 00008 #include "Special.h" 00009 #include "Collision.h" 00010 #include "Archimed.h" 00011 00012 #include "Disp.h" 00013 00014 #include <set> 00015 #include <map> 00016 #include <typeinfo>//dsol 00017 00018 using namespace std; 00019 00020 class System:public ObjCG{//on peut dplacer un systme 00021 protected: 00022 int scale;// n=> 1=(10^n)m 00023 set<Obj*> tabObj; 00024 //tableau dont la numerotation est un pointeur map ? pour table de collision 00025 map<Obj*,map<Obj*, bool> > collisionTable; 00026 set<Force*> tabF;//Spring + Temp + Charg + Grav 00027 set<ObjC*> tabCharg; 00028 set<Obstacle*> tabObstacle; 00029 Collision collision; 00030 Archimed archimed; 00031 00032 //vector<Spring*> tabSpring; 00033 set<System*> tabSys;// Il n'y a pas de Sys dans tabObj !!! 00034 00035 Vect acceleration; 00036 Vect elecField; 00037 Vect magnetField; 00038 00039 set<Disp*> tabDisp; 00040 00041 bool collisionSoundBoolean; 00042 public: 00043 Archimed* getArchimed(); 00044 Collision* getCollision(); 00045 void collisionSound(bool b); 00046 bool collisionBool; 00047 bool archimedBool; 00048 00049 void clear(); 00050 00051 void update(); 00052 00053 void force(); 00054 00055 void init(); 00056 00057 void disp(vector<bool> options=vector<bool>(10,false)); 00058 ostream& cdisp(ostream&); 00059 //add/del/mthode pour gnrer des objets dformables 00060 Obstacle* addObstacle(Vect const& pos, Vect const& dim, double mass, Vect const& ang=Vect(3)); 00061 ObjCG* addObj(Vect const& pos, Vect const& vit, double mass, double const& size,bool const& grav=false, double const& charg=0,bool const& disp=true); 00062 Ball* addObjLife(Vect const& pos, Vect const& vit, double mass, double size,double life); 00063 Force* addSpringAttach(Obj& o1,Obj& o2,Vect const& attache1,Vect const& attache2,double const& k1,double const& l0,bool const& amorti); 00064 Force* addSpring(Obj&,Obj&,double const& k1,double const& l0,bool const& amorti=false,int const& breakDeform=0,double const& k2=0, double const& l1=0,double const& fmax=0); 00065 System* addSys(Vect const& pos, double const& scale); 00066 vector<Obj*> generate(Vect const& pos,Vect const& dim,double const& space,double const& mass,int const& meshtype=0,double const& K=100,bool const& breakable=false,double const& charg=0,bool const& dispBall=true,bool const& amorti=false,Vect const& vit=Vect(3)); 00067 Obj* generatePendulum(Vect const& pos, double const& length, double const& mass, double const& rayon); 00068 vector<Obj*> generatePendulum2(Vect const& pos, double const& length, double const& mass, double const& rayon); 00069 vector<Obj*> generatePendulum3(Vect const& pos, double const& length, double const& mass, double const& rayon); 00070 Ventillateur* addVentillateur(Vect const& pos,double forceStrength=10, double mass=1,double rayon=1); 00071 00072 Disp* addDisp(Disp*); 00073 //void addPortal(Portal& portal, Vect const& pos, Vect const& ang); 00074 //space = espace entre 2 boules 00075 //dim = longueur x, y et z 00076 00077 void delObj(Obj* obj); 00078 void delF(Force* f);//spring_break 00079 00080 00082 00083 double frottement; 00084 00085 //CONSTR--- 00086 System(int const& scale,set<Obj*> & tabObj,set<ObjC*> & tabC,Vect const& pos, Vect const& ang=Vect(3),bool const& collision=false); 00087 private: System(System const&)=delete; 00088 private: System operator=(System const&)=delete; 00089 public: virtual ~System(); 00090 }; 00091 00092 #endif //PRJ_SYSTEM_H 00093