From 32d2aa6a93c41a7ae8b9cf0ddbd534e3daf511d7 Mon Sep 17 00:00:00 2001 From: William Moberg Date: Tue, 8 Dec 2015 17:01:50 +0100 Subject: [PATCH] AABB can also be created with center position and its size. --- include/Engine/Core/AABB.h | 4 ++++ src/Engine/Core/AABB.cpp | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/include/Engine/Core/AABB.h b/include/Engine/Core/AABB.h index 7d0a46ea..0a0adafa 100644 --- a/include/Engine/Core/AABB.h +++ b/include/Engine/Core/AABB.h @@ -7,12 +7,16 @@ class AABB { public: AABB() = default; + //No checks are made. Values in minPos must be less than values in maxPos, i.e. min.x < max.x, etc. AABB(const glm::vec3& minPos, const glm::vec3& maxPos); + //No checks are made. Size must consist of non-negative numbers. + virtual void CreateFromCenter(const glm::vec3& center, const glm::vec3& size); virtual ~AABB(); const glm::vec3& MinCorner() const { return m_MinCorner; } const glm::vec3& MaxCorner() const { return m_MaxCorner; } const glm::vec3& Center() const { return m_Center; } + const glm::vec3& Size() const { return 2.0f * m_HalfSize; } const glm::vec3& HalfSize() const { return m_HalfSize; } private: glm::vec3 m_MinCorner; diff --git a/src/Engine/Core/AABB.cpp b/src/Engine/Core/AABB.cpp index 8a364ce5..9da2bdb0 100644 --- a/src/Engine/Core/AABB.cpp +++ b/src/Engine/Core/AABB.cpp @@ -7,5 +7,13 @@ AABB::AABB(const glm::vec3& minPos, const glm::vec3& maxPos) , m_HalfSize(0.5f * (maxPos - minPos)) {} +void AABB::CreateFromCenter(const glm::vec3& center, const glm::vec3& size) +{ + m_Center = center; + m_HalfSize = 0.5f * size; + m_MinCorner = m_Center - m_HalfSize; + m_MaxCorner = m_Center + m_HalfSize; +} + AABB::~AABB() {}