charcoal/OpenGLEngine/Collision.h
2018-10-18 00:48:05 -04:00

37 lines
742 B
C++

#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);
}
}
}
}