diff --git a/include/Engine/Common.h b/include/Engine/Common.h index 2469a11d..ebdc90d0 100644 --- a/include/Engine/Common.h +++ b/include/Engine/Common.h @@ -4,4 +4,5 @@ #include #include -#include "Core/Util/Logging.h" \ No newline at end of file +#include "Core/Util/Logging.h" +#include "Core/Util/IfDebug.h" \ No newline at end of file diff --git a/include/Engine/Core/Util/IfDebug.h b/include/Engine/Core/Util/IfDebug.h new file mode 100644 index 00000000..159162c5 --- /dev/null +++ b/include/Engine/Core/Util/IfDebug.h @@ -0,0 +1,17 @@ +//Example: +//IF_DEBUG_IS(true) { +// //Stuff done only in debug mode. +//} +// +//IF_DEBUG_IS(false) { +// //Stuff done only in release mode. +//} else { +// //Stuff only in debug. +//} +#ifndef IF_DEBUG_IS +#ifndef DEBUG +#define IF_DEBUG_IS(c) if(c) +#else +#define IF_DEBUG_IS(c) if(!c) +#endif +#endif \ No newline at end of file diff --git a/src/Engine/Core/AABB.cpp b/src/Engine/Core/AABB.cpp index 05403022..b1da6b26 100644 --- a/src/Engine/Core/AABB.cpp +++ b/src/Engine/Core/AABB.cpp @@ -1,11 +1,24 @@ #include "Core/AABB.h" +#include "Common.h" AABB::AABB(const glm::vec3& minPos, const glm::vec3& maxPos) : m_MinCorner(minPos) , m_MaxCorner(maxPos) , m_Center(0.5f * (maxPos + minPos)) , m_HalfSize(0.5f * (maxPos - minPos)) -{} +{ + IF_DEBUG_IS(true) { + if (glm::any(glm::lessThan(m_MaxCorner, m_MinCorner))) { + LOG_WARNING("AABB maxCorner coordinates are not greater than minCorner"); + m_MaxCorner.x = glm::max(m_MaxCorner.x, m_MinCorner.x); + m_MinCorner.x = glm::min(m_MaxCorner.x, m_MinCorner.x); + m_MaxCorner.y = glm::max(m_MaxCorner.y, m_MinCorner.y); + m_MinCorner.y = glm::min(m_MaxCorner.y, m_MinCorner.y); + m_MaxCorner.z = glm::max(m_MaxCorner.z, m_MinCorner.z); + m_MinCorner.z = glm::min(m_MaxCorner.z, m_MinCorner.z); + } + } +} AABB::AABB(const glm::vec4& minPos, const glm::vec4& maxPos) : AABB(glm::vec3(minPos), glm::vec3(maxPos))