00001
00002 #ifndef _VRSODE_PHYSICS_JOINT_H_
00003 #define _VRSODE_PHYSICS_JOINT_H_
00004
00005 #include "PhysicsBody.h"
00006
00007 #include <ode/ode.h>
00008 #include <vrs/sharedobj.h>
00009
00010 namespace vrsode
00011 {
00012
00018 class PhysicsJoint : public VRS::SharedObj
00019 {
00020 dJointID m_jointId;
00021 VRS::SO<PhysicsBody> m_bodyOne;
00022 VRS::SO<PhysicsBody> m_bodyTwo;
00023
00024 unsigned char m_numMotors;
00025
00026
00027 public:
00031 PhysicsJoint(VRS::SO<PhysicsBody>, VRS::SO<PhysicsBody>);
00032
00036 virtual ~PhysicsJoint();
00037
00042 const dJointID jointId() const;
00043
00048 VRS::SO<PhysicsBody> bodyOne() const;
00049
00054 VRS::SO<PhysicsBody> bodyTwo() const;
00055
00068 virtual void setLowStop(double) = 0;
00069
00074 virtual void setHighStop(double) = 0;
00075
00081 virtual void setStopBounce(double) = 0;
00082
00087 virtual void setMotorVelocity(double) = 0;
00088
00094 virtual void setMotorMaxForce(double) = 0;
00095
00099 virtual void setCFM(double) = 0;
00100
00101
00102
00103 protected:
00104 void setJointId(dJointID p_jointId);
00105 void setBodyOne(VRS::SO<PhysicsBody>);
00106 void setBodyTwo(VRS::SO<PhysicsBody>);
00107 };
00108
00109 }
00110
00111 #endif