raycast start

This commit is contained in:
2025-10-04 17:36:47 +01:00
parent 394366480b
commit c8dfcd857e
5 changed files with 107 additions and 75 deletions

View File

@@ -1,15 +1,35 @@
#include "game/aabb.h"
#include "core/types.h"
bool AABB_Collide(AABB a, AABB b) {
bool AABB_Collide(AABB a, AABB b)
{
bool collision_x = a.pos.x + a.size.x >= b.pos.x && b.pos.x + b.size.x >= a.pos.x;
bool collision_y = a.pos.y + a.size.x >= b.pos.y && b.pos.y + b.size.y >= a.pos.y;
return collision_x && collision_y;
}
bool AABB_Point(AABB a, V2f v) {
bool AABB_Point(AABB a, V2f v)
{
bool collision_x = a.pos.x + a.size.x >= v.x && a.pos.x <= v.x;
bool collision_y = a.pos.x + a.size.y >= v.y && a.pos.y <= v.y;
return collision_x && collision_y;
}
bool AABB_Slab(V2f origin, V2f point, AABB a)
{
V2f start = a.pos;
V2f finish = {a.pos.x + a.size.x, a.pos.y + a.size.y};
V2f direction = {origin.x - point.x, origin.y - point.y};
// x
F32 tLow = (start.x - origin.x) / direction.x;
F32 tHigh = (finish.x - origin.x) / direction.x;
F32 tMin = min(tLow, tHigh);
F32 tMax = max(tLow, tHigh);
// y
tLow = (start.x - origin.x) / direction.x;
tHigh = (finish.x - origin.x) / direction.x;
tMin = max(tMin, min(tLow, tHigh));
tMax = min(tMax, max(tLow, tHigh));
return tMax >= max(0.0, tMin);
}