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

游戏引擎

开发平台:

Visual C++

  1. #pragma once
  2. #include "stdafx.h"
  3. #include "Body.cpp"
  4. #include "Vector.cpp"
  5. using namespace System::Runtime::InteropServices;
  6. namespace Box2D
  7. {
  8. namespace Net
  9. {
  10. //TODO: is there a way to automatically include the b2JointType as an enum here?
  11. public enum class JointType
  12. {
  13. e_unknownJoint = ::e_unknownJoint,
  14. e_revoluteJoint = ::e_revoluteJoint,
  15. e_prismaticJoint = ::e_prismaticJoint,
  16. e_distanceJoint = ::e_distanceJoint,
  17. e_pulleyJoint = ::e_pulleyJoint,
  18. e_mouseJoint = ::e_mouseJoint,
  19. e_gearJoint = ::e_gearJoint
  20. };
  21. public ref class JointDef
  22. {
  23. internal:
  24. b2JointDef *def;
  25. JointDef() : def(new b2JointDef()) { }
  26. JointDef(b2JointDef *justBuilt) : def(justBuilt) { }
  27. virtual ~JointDef()
  28. {
  29. delete def;
  30. }
  31. public:
  32. property JointType Type
  33. {
  34. JointType get()
  35. {
  36. return (JointType)def->type;
  37. }
  38. void set(JointType value)
  39. {
  40. def->type = (b2JointType)value;
  41. }
  42. }
  43. property Object^ UserData
  44. {
  45. Object^ get()
  46. {
  47. return System::Runtime::InteropServices::GCHandle::FromIntPtr((System::IntPtr)def->userData).Target;
  48. }
  49. void set(Object^ value)
  50. {
  51. GCHandle^ gch = GCHandle::Alloc(value);
  52. def->userData = (void *)gch->ToIntPtr(*gch);
  53. }
  54. }
  55. property Body^ Body1
  56. {
  57. Body^ get()
  58. {
  59. return gcnew Body(def->body1);
  60. }
  61. void set(Body^ value)
  62. {
  63. def->body1 = value->body;
  64. }
  65. }
  66. property Body^ Body2
  67. {
  68. Body^ get()
  69. {
  70. return gcnew Body(def->body2);
  71. }
  72. void set(Body^ value)
  73. {
  74. def->body2 = value->body;
  75. }
  76. }
  77. property bool CollideConnected
  78. {
  79. bool get()
  80. {
  81. return def->collideConnected;
  82. }
  83. void set(bool value)
  84. {
  85. def->collideConnected = value;
  86. }
  87. }
  88. };
  89. public ref class MouseJointDef : public JointDef
  90. {
  91. internal:
  92. b2MouseJointDef *mouseJoint;
  93. public:
  94. MouseJointDef() : JointDef(mouseJoint = new b2MouseJointDef()) { }
  95. property Vector^ Target
  96. {
  97. Vector^ get()
  98. {
  99. return gcnew Vector(mouseJoint->target);
  100. }
  101. void set(Vector^ value)
  102. {
  103. mouseJoint->target = value->getVec2();
  104. }
  105. }
  106. property float32 MaxForce
  107. {
  108. float32 get()
  109. {
  110. return mouseJoint->maxForce;
  111. }
  112. void set(float32 value)
  113. {
  114. mouseJoint->maxForce = value;
  115. }
  116. }
  117. property float32 FrequencyHz
  118. {
  119. float32 get()
  120. {
  121. return mouseJoint->frequencyHz;
  122. }
  123. void set(float32 value)
  124. {
  125. mouseJoint->frequencyHz = value;
  126. }
  127. }
  128. property float32 DampingRatio
  129. {
  130. float32 get()
  131. {
  132. return mouseJoint->dampingRatio;
  133. }
  134. void set(float32 value)
  135. {
  136. mouseJoint->dampingRatio = value;
  137. }
  138. }
  139. property float32 TimeStep
  140. {
  141. float32 get()
  142. {
  143. return mouseJoint->timeStep;
  144. }
  145. void set(float32 value)
  146. {
  147. mouseJoint->timeStep = value;
  148. }
  149. }
  150. };
  151. }
  152. }