ODEPhysics.hh
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef ODEPHYSICS_HH
00028 #define ODEPHYSICS_HH
00029
00030 #include <ode/ode.h>
00031 #include <map>
00032
00033 #include "PhysicsEngine.hh"
00034
00035
00036 namespace gazebo
00037 {
00038 class SphereGeom;
00039 class PlaneGeom;
00040 class BoxGeom;
00041 class CylinderGeom;
00042 class Entity;
00043 class XMLConfigNode;
00044
00047
00072
00073 class ODEPhysics : public PhysicsEngine
00074 {
00076 public: ODEPhysics();
00077
00079 public: virtual ~ODEPhysics();
00080
00082 public: virtual void Load(XMLConfigNode *node);
00083
00085 public: void Save(XMLConfigNode *node);
00086
00088 public: virtual void Init();
00089
00091 public: virtual void Update();
00092
00094 public: virtual void Fini();
00095
00097 public: virtual void AddEntity(Entity *entity);
00098
00100 public: virtual void RemoveEntity(Entity *entity);
00101
00103 public: virtual Body *CreateBody(Entity *parent);
00104
00106 public: virtual Joint *CreateJoint(Joint::Type type);
00107
00109 public: dSpaceID GetSpaceId() const;
00110
00112 private: static void CollisionCallback( void *data, dGeomID o1, dGeomID o2);
00113
00115 private: dWorldID worldId;
00116
00118 private: dSpaceID spaceId;
00119
00121 private: dJointGroupID contactGroup;
00122
00124 protected: std::map<int, Entity* > entities;
00125
00126 private: double globalCFM;
00127 private: double globalERP;
00128 };
00129
00131
00132 }
00133
00134 #endif