#pragma once #include "PhysicsTypes.h" namespace charcoal { namespace physics { namespace collision { // 4 comparisons bool point_in_rect(const Rect& rect, float x, float y) { return y < rect.top && y > rect.bottom && x > rect.left && x < rect.right; } // 8 * 4 = 32 comparisons bool rect_in_rect(const Rect& a, const Rect& b) { return point_in_rect(a, b.left, b.top) || point_in_rect(a, b.left, b.bottom) || point_in_rect(a, b.right, b.top) || point_in_rect(a, b.right, b.bottom) || point_in_rect(b, a.left, a.top) || point_in_rect(b, a.left, a.bottom) || point_in_rect(b, a.right, a.top) || point_in_rect(b, a.right, a.bottom); } } } }