CollisionEdge2D.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 edge collision component.
  8. class URHO3D_API CollisionEdge2D : public CollisionShape2D
  9. {
  10. URHO3D_OBJECT(CollisionEdge2D, CollisionShape2D);
  11. public:
  12. /// Construct.
  13. explicit CollisionEdge2D(Context* context);
  14. /// Destruct.
  15. ~CollisionEdge2D() override;
  16. /// Register object factory.
  17. /// @nobind
  18. static void RegisterObject(Context* context);
  19. /// Set vertex 1.
  20. /// @property
  21. void SetVertex1(const Vector2& vertex);
  22. /// Set vertex 2.
  23. /// @property
  24. void SetVertex2(const Vector2& vertex);
  25. /// Set vertices.
  26. void SetVertices(const Vector2& vertex1, const Vector2& vertex2);
  27. /// Return vertex 1.
  28. /// @property
  29. const Vector2& GetVertex1() const { return vertex1_; }
  30. /// Return vertex 2.
  31. /// @property
  32. const Vector2& GetVertex2() const { return vertex2_; }
  33. private:
  34. /// Apply node world scale.
  35. void ApplyNodeWorldScale() override;
  36. /// Recreate fixture.
  37. void RecreateFixture();
  38. /// Edge shape.
  39. b2EdgeShape edgeShape_;
  40. /// Vertex 1.
  41. Vector2 vertex1_;
  42. /// Vertex 2.
  43. Vector2 vertex2_;
  44. };
  45. }