diff options
| author | arngo <[email protected]> | 2023-05-27 16:07:37 -0400 |
|---|---|---|
| committer | arngo <[email protected]> | 2023-05-27 16:07:37 -0400 |
| commit | 79cd0ac07a93fefbf59218ee77d44ea2501dfdd5 (patch) | |
| tree | ee2bcbfe73202c4b018ef7f7c2cc594eacdde9b0 /src/collision/rodeo_collision.c | |
| parent | 68b5d45b66d948db337f50255fa777ce15ee0871 (diff) | |
| download | RodeoKit-79cd0ac07a93fefbf59218ee77d44ea2501dfdd5.tar.gz RodeoKit-79cd0ac07a93fefbf59218ee77d44ea2501dfdd5.zip | |
add collision intersection function from raylib
Diffstat (limited to 'src/collision/rodeo_collision.c')
| -rw-r--r-- | src/collision/rodeo_collision.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/collision/rodeo_collision.c b/src/collision/rodeo_collision.c index de2f9a3..b2a7388 100644 --- a/src/collision/rodeo_collision.c +++ b/src/collision/rodeo_collision.c @@ -122,3 +122,32 @@ int rodeo_collision_2d_item_cmp( return a->id.id > b->id.id ? 1 : -1; } } + +// from raylib GetCollisionRect +rodeo_rectangle_t +rodeo_collision_2d_get_collision_rect( + rodeo_collision_2d_world_item_t *a, + rodeo_collision_2d_world_item_t *b +) +{ + rodeo_rectangle_t overlap = { 0 }; + + float left = (a->x > b->x)? a->x : b->x; + float right1 = a->x + a->width; + float right2 = b->x + b->width; + float right = (right1 < right2)? right1 : right2; + float top = (a->y > b->y)? a->y : b->y; + float bottom1 = a->y + a->height; + float bottom2 = b->y + b->height; + float bottom = (bottom1 < bottom2)? bottom1 : bottom2; + + if ((left < right) && (top < bottom)) + { + overlap.x = left; + overlap.y = top; + overlap.width = right - left; + overlap.height = bottom - top; + } + + return overlap; +} |
