[╯°□°]╯︵┻━┻
Goldberg Simulator 20000
 All Classes Functions Variables
System.h
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