ConstraintMotor2D.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 motor constraint component.
  8. class URHO3D_API ConstraintMotor2D : public Constraint2D
  9. {
  10. URHO3D_OBJECT(ConstraintMotor2D, Constraint2D);
  11. public:
  12. /// Construct.
  13. explicit ConstraintMotor2D(Context* context);
  14. /// Destruct.
  15. ~ConstraintMotor2D() override;
  16. /// Register object factory.
  17. /// @nobind
  18. static void RegisterObject(Context* context);
  19. /// Set linear offset.
  20. /// @property
  21. void SetLinearOffset(const Vector2& linearOffset);
  22. /// Set angular offset.
  23. /// @property
  24. void SetAngularOffset(float angularOffset);
  25. /// Set max force.
  26. /// @property
  27. void SetMaxForce(float maxForce);
  28. /// Set max torque.
  29. /// @property
  30. void SetMaxTorque(float maxTorque);
  31. /// Set correction factor.
  32. /// @property
  33. void SetCorrectionFactor(float correctionFactor);
  34. /// Return linear offset.
  35. /// @property
  36. const Vector2& GetLinearOffset() const { return linearOffset_; }
  37. /// Return angular offset.
  38. /// @property
  39. float GetAngularOffset() const { return jointDef_.angularOffset; }
  40. /// Return max force.
  41. /// @property
  42. float GetMaxForce() const { return jointDef_.maxForce; }
  43. /// Return max torque.
  44. /// @property
  45. float GetMaxTorque() const { return jointDef_.maxTorque; }
  46. /// Return correction factor.
  47. /// @property
  48. float GetCorrectionFactor() const { return jointDef_.correctionFactor; }
  49. private:
  50. /// Return joint def.
  51. b2JointDef* GetJointDef() override;
  52. /// Box2D joint def.
  53. b2MotorJointDef jointDef_;
  54. /// Linear offset.
  55. Vector2 linearOffset_;
  56. };
  57. }