#ifndef CORE_MATH_AABB_HH #define CORE_MATH_AABB_HH 1 #pragma once namespace math { class AABB final { public: AABB(void) = default; explicit AABB(const glm::fvec3& min, const glm::fvec3& max); virtual ~AABB(void) = default; void set_bounds(const glm::fvec3& min, const glm::fvec3& max); void set_offset(const glm::fvec3& base, const glm::fvec3& size); const glm::fvec3& get_min(void) const; const glm::fvec3& get_max(void) const; bool contains(const glm::fvec3& point) const; bool intersect(const AABB& other_box) const; AABB combine_with(const AABB& other_box) const; AABB multiply_with(const AABB& other_box) const; AABB push(const glm::fvec3& vector) const; public: glm::fvec3 min; glm::fvec3 max; }; } // namespace math #endif // CORE_MATH_AABB_HH