X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FAABB.h;h=ca7b85729e6609efcbb4e156a1f729de70205b3b;hb=4c12267c6727caa3522ac5e38b4f8c17d544ef3e;hp=20580caaded42e57f994432de8890820cbcc9b2c;hpb=4a51a83bdff30d1e25a5867cfb19936adc0034b1;p=orbi.git diff --git a/src/world/AABB.h b/src/world/AABB.h index 20580ca..ca7b857 100644 --- a/src/world/AABB.h +++ b/src/world/AABB.h @@ -6,14 +6,16 @@ namespace orbi { +class Collision; + 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; } @@ -21,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, Vector &p, Vector &n, Vector &d) const; + bool Intersects(const AABB &other) const; + bool Intersects(const AABB &other, Collision &) const; private: + Vector size; Vector lt; Vector rb;