JointAMotor.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #include "StdAfx.h"
  2. #include <ode/ode.h>
  3. #include "JointAMotor.h"
  4. namespace ODEManaged
  5. {
  6. //Constructors
  7. JointAMotor::JointAMotor(void) : Joint(){}
  8. JointAMotor::JointAMotor(World &world)
  9. {
  10. if(this->_id) dJointDestroy(this->_id);
  11. _id = dJointCreateAMotor(world.Id(), 0);
  12. }
  13. JointAMotor::JointAMotor(World &world, JointGroup &jointGroup)
  14. {
  15. if(this->_id) dJointDestroy(this->_id);
  16. _id = dJointCreateAMotor(world.Id(), jointGroup.Id());
  17. }
  18. //Destructor
  19. JointAMotor::~JointAMotor(void){}
  20. //Methods
  21. //Overloaded Create
  22. void JointAMotor::Create(World &world, JointGroup &jointGroup)
  23. {
  24. if(this->_id) dJointDestroy(this->_id);
  25. _id = dJointCreateAMotor(world.Id(), jointGroup.Id());
  26. }
  27. void JointAMotor::Create(World &world)
  28. {
  29. if(this->_id) dJointDestroy(this->_id);
  30. _id = dJointCreateAMotor(world.Id(), 0);
  31. }
  32. //Overloaded Attach
  33. void JointAMotor::Attach(Body &body1, Body &body2)
  34. {
  35. dJointAttach(this->_id, body1.Id(), body2.Id());
  36. }
  37. void JointAMotor::Attach(Body &body1)
  38. {
  39. dJointAttach(this->_id, body1.Id(), 0);
  40. }
  41. //SetNumAxes
  42. void JointAMotor::SetNumAxes(int num)
  43. {
  44. dJointSetAMotorNumAxes(this->_id, num);
  45. }
  46. //GetNumAxes
  47. int JointAMotor::GetNumAxes(void)
  48. {
  49. return dJointGetAMotorNumAxes(this->_id);
  50. }
  51. //SetAxis
  52. void JointAMotor::SetAxis(int anum, int rel, double x, double y ,double z)
  53. {
  54. dJointSetAMotorAxis(this->_id, anum, rel, x, y, z);
  55. }
  56. //GetAxis
  57. Vector3 JointAMotor::GetAxis(int anum)
  58. {
  59. Vector3 retVal;
  60. dVector3 temp;
  61. dJointGetAMotorAxis(this->_id, anum, temp);
  62. retVal.x = temp[0];
  63. retVal.y = temp[1];
  64. retVal.z = temp[2];
  65. return retVal;
  66. }
  67. //SetAngle
  68. void JointAMotor::SetAngle(int anum, double angle)
  69. {
  70. dJointSetAMotorAngle(this->_id, anum, angle);
  71. }
  72. //GetAngle
  73. double JointAMotor::GetAngle(int anum)
  74. {
  75. return dJointGetAMotorAngle(this->_id, anum);
  76. }
  77. //SetParam
  78. void JointAMotor::SetParam(int parameter, double value)
  79. {
  80. dJointSetAMotorParam(this->_id, parameter, value);
  81. }
  82. //GetParam
  83. double JointAMotor::GetParam(int parameter)
  84. {
  85. return dJointGetAMotorParam(this->_id, parameter);
  86. }
  87. //SetMode
  88. void JointAMotor::SetMode(int mode)
  89. {
  90. dJointSetAMotorMode(this->_id, mode);
  91. }
  92. //GetMode
  93. int JointAMotor::GetMode(void)
  94. {
  95. return dJointGetAMotorMode(this->_id);
  96. }
  97. //GetAxisRel
  98. int JointAMotor::GetAxisRel(int anum)
  99. {
  100. return dJointGetAMotorAxisRel(this->_id, anum);
  101. }
  102. //GetAngleRate
  103. double JointAMotor::GetAngleRate(int anum)
  104. {
  105. return dJointGetAMotorAngleRate(this->_id, anum);
  106. }
  107. }