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
00084 public: virtual void Save(XMLConfigNode *node) =0;
00085
00087 public: virtual void Init() = 0;
00088
00090 public: virtual void Update() = 0;
00091
00093 public: virtual void Fini() = 0;
00094
00096 public: virtual void AddEntity(Entity *entity) = 0;
00097
00099 public: virtual void RemoveEntity(Entity *entity) = 0;
00100
00102 public: virtual Body *CreateBody(Entity *parent) = 0;
00103
00105 public: virtual Joint *CreateJoint(Joint::Type type) = 0;
00106
00109 public: Vector3 GetGravity() const;
00110
00113 public: double GetStepTime() const;
00114
00116 protected: Vector3 gravity;
00117
00119 protected: double stepTime;
00120 };
00121
00123 }
00124 #endif