PhysicsEngine.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 PHYSICSENGINE_HH
00028 #define PHYSICSENGINE_HH
00029
00030 #include "Joint.hh"
00031
00032 namespace gazebo
00033 {
00034
00035 class Entity;
00036 class Body;
00037 class XMLConfigNode;
00038
00040
00069
00070 class PhysicsEngine
00071 {
00073 public: PhysicsEngine();
00074
00076 public: virtual ~PhysicsEngine();
00077
00080 public: virtual void Load(XMLConfigNode *node) = 0;
00081
00083 public: virtual void Init() = 0;
00084
00086 public: virtual void Update() = 0;
00087
00089 public: virtual void Fini() = 0;
00090
00092 public: virtual void AddEntity(Entity *entity) = 0;
00093
00095 public: virtual void RemoveEntity(Entity *entity) = 0;
00096
00098 public: virtual Body *CreateBody(Entity *parent) = 0;
00099
00101 public: virtual Joint *CreateJoint(Joint::Type type) = 0;
00102
00105 public: Vector3 GetGravity() const;
00106
00109 public: double GetStepTime() const;
00110
00112 protected: Vector3 gravity;
00113
00115 protected: double stepTime;
00116 };
00117
00119 }
00120 #endif