rename intersect_(f)rect to overlap_(f)rect and add simplified functions with the old names

This commit is contained in:
wanp 2024-09-20 13:39:37 -03:00
parent 5cc36ab46c
commit 999cb78358
3 changed files with 35 additions and 10 deletions

View File

@ -130,9 +130,9 @@ bool world_find_intersect_frect(struct world *world, t_frect rect, t_frect *inte
if (intersection == NULL) { if (intersection == NULL) {
t_frect temp; t_frect temp;
is_intersecting = intersect_frect(&rect, &tile_frect, &temp); is_intersecting = overlap_frect(&rect, &tile_frect, &temp);
} else { } else {
is_intersecting = intersect_frect(&rect, &tile_frect, intersection); is_intersecting = overlap_frect(&rect, &tile_frect, intersection);
} }
if (is_intersecting) if (is_intersecting)
@ -155,9 +155,9 @@ bool world_find_intersect_rect(struct world *world, t_rect rect, t_rect *interse
if (intersection == NULL) { if (intersection == NULL) {
t_rect temp; t_rect temp;
is_intersecting = intersect_rect(&rect, tile_rect, &temp); is_intersecting = overlap_rect(&rect, tile_rect, &temp);
} else { } else {
is_intersecting = intersect_rect(&rect, tile_rect, intersection); is_intersecting = overlap_rect(&rect, tile_rect, intersection);
} }
if (is_intersecting) if (is_intersecting)

View File

@ -109,9 +109,14 @@ _Alignas(16)
} t_frect; } t_frect;
TWN_API bool intersect_rect(const t_rect *a, const t_rect *b, t_rect *result); /* calculates the overlap of two rectangles and places it in result. */
/* returns true if the rectangles are indeed intersecting. */
TWN_API bool overlap_rect(const t_rect *a, const t_rect *b, t_rect *result);
TWN_API bool overlap_frect(const t_frect *a, const t_frect *b, t_frect *result);
TWN_API bool intersect_frect(const t_frect *a, const t_frect *b, t_frect *result); /* returns true if two triangles are intersecting */
TWN_API bool intersect_rect(const t_rect *a, const t_rect *b);
TWN_API bool intersect_frect(const t_frect *a, const t_frect *b);
/* TODO: generics and specials (see m_to_fvec2() for an example)*/ /* TODO: generics and specials (see m_to_fvec2() for an example)*/
TWN_API t_frect to_frect(t_rect rect); TWN_API t_frect to_frect(t_rect rect);

View File

@ -171,30 +171,50 @@ bool strends(const char *str, const char *suffix) {
} }
bool intersect_rect(const t_rect *a, const t_rect *b, t_rect *result) { bool overlap_rect(const t_rect *a, const t_rect *b, t_rect *result) {
SDL_Rect a_sdl = { a->x, a->y, a->w, a->h }; SDL_Rect a_sdl = { a->x, a->y, a->w, a->h };
SDL_Rect b_sdl = { b->x, b->y, b->w, b->h }; SDL_Rect b_sdl = { b->x, b->y, b->w, b->h };
SDL_Rect result_sdl = { 0 }; SDL_Rect result_sdl = { 0 };
bool intersection = SDL_IntersectRect(&a_sdl, &b_sdl, &result_sdl); bool intersection = SDL_IntersectRect(&a_sdl, &b_sdl, &result_sdl);
if (result != NULL)
*result = (t_rect){ result_sdl.x, result_sdl.y, result_sdl.w, result_sdl.h }; *result = (t_rect){ result_sdl.x, result_sdl.y, result_sdl.w, result_sdl.h };
return intersection; return intersection;
} }
bool intersect_frect(const t_frect *a, const t_frect *b, t_frect *result) { bool overlap_frect(const t_frect *a, const t_frect *b, t_frect *result) {
SDL_FRect a_sdl = { a->x, a->y, a->w, a->h }; SDL_FRect a_sdl = { a->x, a->y, a->w, a->h };
SDL_FRect b_sdl = { b->x, b->y, b->w, b->h }; SDL_FRect b_sdl = { b->x, b->y, b->w, b->h };
SDL_FRect result_sdl = { 0 }; SDL_FRect result_sdl = { 0 };
bool intersection = SDL_IntersectFRect(&a_sdl, &b_sdl, &result_sdl); bool intersection = SDL_IntersectFRect(&a_sdl, &b_sdl, &result_sdl);
if (result != NULL)
*result = (t_frect){ result_sdl.x, result_sdl.y, result_sdl.w, result_sdl.h }; *result = (t_frect){ result_sdl.x, result_sdl.y, result_sdl.w, result_sdl.h };
return intersection; return intersection;
} }
bool intersect_rect(const t_rect *a, const t_rect *b) {
SDL_Rect a_sdl = { a->x, a->y, a->w, a->h };
SDL_Rect b_sdl = { b->x, b->y, b->w, b->h };
SDL_Rect result_sdl = { 0 };
return SDL_IntersectRect(&a_sdl, &b_sdl, &result_sdl);
}
bool intersect_frect(const t_frect *a, const t_frect *b) {
SDL_FRect a_sdl = { a->x, a->y, a->w, a->h };
SDL_FRect b_sdl = { b->x, b->y, b->w, b->h };
SDL_FRect result_sdl = { 0 };
return SDL_IntersectFRect(&a_sdl, &b_sdl, &result_sdl);
}
t_frect to_frect(t_rect rect) { t_frect to_frect(t_rect rect) {
return (t_frect) { return (t_frect) {
.h = (float)rect.h, .h = (float)rect.h,