X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FAABB.h;h=ca7b85729e6609efcbb4e156a1f729de70205b3b;hb=4c12267c6727caa3522ac5e38b4f8c17d544ef3e;hp=9a2d5ebbef4bbe4a3e7a9214d3c9ab9765805163;hpb=962405ec344818a7f6850d243feca7989ae5d41b;p=orbi.git diff --git a/src/world/AABB.h b/src/world/AABB.h index 9a2d5eb..ca7b857 100644 --- a/src/world/AABB.h +++ b/src/world/AABB.h @@ -13,9 +13,9 @@ class AABB { public: constexpr AABB() { } constexpr AABB(Vector pos, Vector size) - : lt(pos), rb(pos + size) { } + : size(size), lt(pos), rb(pos + size) { } constexpr AABB(float x, float y, float w, float h) - : lt(x, y), rb(x + w, y + h) { } + : size(w, h), lt(x, y), rb(x + w, y + h) { } public: float Left() const { return lt.x; } @@ -23,18 +23,24 @@ public: float Right() const { return rb.x; } float Bottom() const { return rb.y; } - Vector Position() const { return lt; } + Vector LeftTop() const { return lt; } + Vector LeftBottom() const { return Vector(lt.x, rb.y); } + Vector RightTop() const { return Vector(rb.x, lt.y); } + Vector RightBottom() const { return rb; } + Vector Center() const { return lt + HalfSize(); } Vector HalfSize() const { return Size() / 2.0f; } - Vector Size() const { return rb - lt; } + Vector Size() const { return size; } public: - void Move(Vector delta) { lt += delta; rb += delta; } + void Move(Vector delta) { lt += delta; rb = lt + size; } void Resize(Vector size) { *this = AABB(lt, size); } + bool Intersects(const AABB &other) const; bool Intersects(const AABB &other, Collision &) const; private: + Vector size; Vector lt; Vector rb;