Joint.cpp
上传用户:gb3593
上传日期:2022-01-07
资源大小:3028k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #pragma once
  2. #include "stdafx.h"
  3. #include "Body.cpp"
  4. #include "JointDef.cpp"
  5. namespace Box2D
  6. {
  7. namespace Net
  8. {
  9. public ref class Joint
  10. {
  11. internal:
  12. b2Joint *joint;
  13. Joint(b2Joint *jointRef) : joint(jointRef) { }
  14. public:
  15. property JointType JointType
  16. {
  17. Box2D::Net::JointType get()
  18. {
  19. return (Box2D::Net::JointType) joint->GetType();
  20. }
  21. }
  22. property Body^ Body1
  23. {
  24. Body^ get()
  25. {
  26. return gcnew Body(joint->GetBody1());
  27. }
  28. }
  29. property Body^ Body2
  30. {
  31. Body^ get()
  32. {
  33. return gcnew Body(joint->GetBody2());
  34. }
  35. }
  36. property Vector^ Anchor1
  37. {
  38. Vector^ get()
  39. {
  40. return gcnew Vector(joint->GetAnchor1());
  41. }
  42. }
  43. property Vector^ Anchor2
  44. {
  45. Vector^ get()
  46. {
  47. return gcnew Vector(joint->GetAnchor2());
  48. }
  49. }
  50. Vector^ GetReactionForce()
  51. {
  52. return gcnew Vector(joint->GetReactionForce());
  53. }
  54. float32 GetReactionTorque()
  55. {
  56. return joint->GetReactionTorque();
  57. }
  58. Joint^ GetNext()
  59. {
  60. return gcnew Joint(joint->GetNext());
  61. }
  62. //TODO:
  63. /*
  64. void* GetUserData();
  65. */
  66. };
  67. public ref class MouseJoint : public Joint
  68. {
  69. internal:
  70. b2MouseJoint *mouseJoint;
  71. MouseJoint(b2MouseJoint *joint) : Joint(joint), mouseJoint(joint) { }
  72. public:
  73. MouseJoint(Joint^ joint) : Joint(joint->joint), mouseJoint(0)
  74. {
  75. if(joint->JointType == Box2D::Net::JointType::e_mouseJoint &&
  76. reinterpret_cast<b2MouseJoint *>(joint->joint))
  77. {
  78. mouseJoint = reinterpret_cast<b2MouseJoint *>(joint->joint);
  79. }
  80. else
  81. {
  82. throw gcnew System::Exception("Attempting to convert a Joint to a MouseJoint, "
  83. "but the joint is not a mouse joint.");
  84. }
  85. }
  86. void SetTarget(Vector^ Target)
  87. {
  88. mouseJoint->SetTarget(Target->getVec2());
  89. }
  90. };
  91. }
  92. }