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