CollisionCircle2D.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #include "../Physics2D/CollisionShape2D.h"
  5. namespace Urho3D
  6. {
  7. /// 2D circle collision component.
  8. class URHO3D_API CollisionCircle2D : public CollisionShape2D
  9. {
  10. URHO3D_OBJECT(CollisionCircle2D, CollisionShape2D);
  11. public:
  12. /// Construct.
  13. explicit CollisionCircle2D(Context* context);
  14. /// Destruct.
  15. ~CollisionCircle2D() override;
  16. /// Register object factory.
  17. /// @nobind
  18. static void RegisterObject(Context* context);
  19. /// Set radius.
  20. /// @property
  21. void SetRadius(float radius);
  22. /// Set center.
  23. /// @property
  24. void SetCenter(const Vector2& center);
  25. /// Set center.
  26. void SetCenter(float x, float y);
  27. /// Return radius.
  28. /// @property
  29. float GetRadius() const { return radius_; }
  30. /// Return center.
  31. /// @property
  32. const Vector2& GetCenter() const { return center_; }
  33. private:
  34. /// Apply node world scale.
  35. void ApplyNodeWorldScale() override;
  36. /// Recreate fixture.
  37. void RecreateFixture();
  38. /// Circle shape.
  39. b2CircleShape circleShape_;
  40. /// Radius.
  41. float radius_;
  42. /// Center.
  43. Vector2 center_;
  44. };
  45. }