ConstraintRevolute2D.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #include "../Physics2D/Constraint2D.h"
  5. namespace Urho3D
  6. {
  7. /// 2D revolute constraint component.
  8. class URHO3D_API ConstraintRevolute2D : public Constraint2D
  9. {
  10. URHO3D_OBJECT(ConstraintRevolute2D, Constraint2D);
  11. public:
  12. /// Construct.
  13. explicit ConstraintRevolute2D(Context* context);
  14. /// Destruct.
  15. ~ConstraintRevolute2D() override;
  16. /// Register object factory.
  17. /// @nobind
  18. static void RegisterObject(Context* context);
  19. /// Set anchor.
  20. /// @property
  21. void SetAnchor(const Vector2& anchor);
  22. /// Set enable limit.
  23. /// @property
  24. void SetEnableLimit(bool enableLimit);
  25. /// Set lower angle.
  26. /// @property
  27. void SetLowerAngle(float lowerAngle);
  28. /// Set upper angle.
  29. /// @property
  30. void SetUpperAngle(float upperAngle);
  31. /// Set enable motor.
  32. /// @property
  33. void SetEnableMotor(bool enableMotor);
  34. /// Set motor speed.
  35. /// @property
  36. void SetMotorSpeed(float motorSpeed);
  37. /// Set max motor torque.
  38. /// @property
  39. void SetMaxMotorTorque(float maxMotorTorque);
  40. /// Return anchor.
  41. /// @property
  42. const Vector2& GetAnchor() const { return anchor_; }
  43. /// Return enable limit.
  44. /// @property
  45. bool GetEnableLimit() const { return jointDef_.enableLimit; }
  46. /// Return lower angle.
  47. /// @property
  48. float GetLowerAngle() const { return jointDef_.lowerAngle; }
  49. /// Return upper angle.
  50. /// @property
  51. float GetUpperAngle() const { return jointDef_.upperAngle; }
  52. /// Return enable motor.
  53. /// @property
  54. bool GetEnableMotor() const { return jointDef_.enableMotor; }
  55. /// Return motor speed.
  56. /// @property
  57. float GetMotorSpeed() const { return jointDef_.motorSpeed; }
  58. /// Return max motor torque.
  59. /// @property
  60. float GetMaxMotorTorque() const { return jointDef_.maxMotorTorque; }
  61. private:
  62. /// Return joint def.
  63. b2JointDef* GetJointDef() override;
  64. /// Box2D joint def.
  65. b2RevoluteJointDef jointDef_;
  66. /// Anchor.
  67. Vector2 anchor_;
  68. };
  69. }