// This file breaks the Ray.hpp <-> AABB.hpp dependency cycle. #include "AABB.hpp" #include "Ray.hpp" AABB AABB::cast_box(Vector<3> v, AABB against) const { auto ray = Ray{center(), v}; auto expanded_target = against.sum(*this); auto raycast = ray.cast(expanded_target); if (!raycast.hit) return *this; auto result_from = raycast.point - size() / 2.0; auto result_to = result_from + size(); return {result_from, result_to}; }