Page principale | Liste des namespaces | Hiérarchie des classes | Liste par ordre alphabétique | Liste des composants | Liste des fichiers | Composants | Déclarations

Simulator.h

Aller à la documentation de ce fichier.
00001 #ifndef __SIM_SIMULATOR_H__
00002 #define __SIM_SIMULATOR_H__
00003 
00004 #include "nommgr.h"
00005 #include <ode/ode.h>
00006 
00007 #ifdef GCC295
00008 #include <hash_map>
00009 #else
00010 #include <ext/hash_map>
00011 #endif
00012 
00013 #include "mmgr.h"
00014 
00015 #include "Math.h"
00021 class Collision;
00022 class RigidBody;
00023 
00024 struct RigidBodyHash : std::unary_function<RigidBody *, RigidBody *>
00025 {
00026     size_t operator () (const RigidBody* rigidBody) const
00027     {
00028         return (size_t)rigidBody;
00029     }
00030 };
00031 
00032 class Simulator
00033 {
00034     public:
00035         static Simulator* getInstance ();
00036     
00037     public:
00038         ~Simulator ();
00039 
00040     public:
00041         void initialize ();
00042         void shutdown   ();
00043         
00044     public:
00045         dWorldID      getWorld        ();
00046         dJointGroupID getContactGroup ();
00047 
00048         void setTargetFps (Real targetFps);
00049 
00050     public:
00051         void beginFrame ();
00052         void frame      ();
00053         void endFrame   ();
00054 
00055         bool getIsCollisionHandled (RigidBody* rigidBody1, RigidBody* rigidBody2);
00056         
00057         void addCollision (RigidBody* rigidBody, Collision& collision);
00058         void addCollision (RigidBody* rigidBody1, RigidBody* rigidBody2, Collision& collision);
00059     
00060     protected:
00061         Simulator ();
00062         
00063     protected:
00064         bool isInitialized;
00065         bool isShutdown;
00066 
00067         dWorldID      world;
00068         dJointGroupID contactGroup;
00069 
00070         Real simStep;
00071 
00072 #ifdef GCC295
00073         typedef std::hash_multimap<RigidBody*, RigidBody*, RigidBodyHash> CollisionSet;
00074 #else
00075         typedef __gnu_cxx::hash_multimap<RigidBody*, RigidBody*, RigidBodyHash> CollisionSet;
00076 #endif
00077         CollisionSet collisionSet;
00078 };
00079 
00080 #endif

Généré le Mon Mar 1 01:29:41 2004 par doxygen 1.3.3