diff options
| author | Joseph-Eugene Winzer <joewinzer@googlemail.com> | 2018-08-14 00:14:06 +0200 |
|---|---|---|
| committer | Joseph-Eugene Winzer <joewinzer@googlemail.com> | 2018-08-14 00:14:06 +0200 |
| commit | 1cef8ea1bf814d9268f7769edfdcd5d7abda3ff8 (patch) | |
| tree | 31313724a815fce9861cfa933c059250824b66fa /src | |
| parent | 34493ed2313f3d249ee914ba77423a4882b2cd38 (diff) | |
| download | raylib-1cef8ea1bf814d9268f7769edfdcd5d7abda3ff8.tar.gz raylib-1cef8ea1bf814d9268f7769edfdcd5d7abda3ff8.zip | |
Shapes: Simplifies CheckCollisionRecs
By comparing the edges of the rectangles relative to each other we can
determine if they intersect or not.
Diffstat (limited to 'src')
| -rw-r--r-- | src/shapes.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/shapes.c b/src/shapes.c index 833f1613..acc0dc06 100644 --- a/src/shapes.c +++ b/src/shapes.c @@ -646,14 +646,11 @@ bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 // Check collision between two rectangles bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2) { - bool collision = false; - - float dx = (float)fabs((rec1.x + rec1.width/2) - (rec2.x + rec2.width/2)); - float dy = (float)fabs((rec1.y + rec1.height/2) - (rec2.y + rec2.height/2)); - - if ((dx <= (rec1.width/2 + rec2.width/2)) && ((dy <= (rec1.height/2 + rec2.height/2)))) collision = true; - - return collision; + if ((rec1.x <= (rec2.x + rec2.width) && (rec1.x + rec1.width) >= rec2.x) && + (rec1.y <= (rec2.y + rec2.height) && (rec1.y + rec1.height) >= rec2.y)) + return true; + else + return false; } // Check collision between two circles |
