-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCollision.cpp
51 lines (49 loc) · 1.3 KB
/
Collision.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "Collision.h"
#include "ColliderComponent.h"
bool Collision::AABB(const SDL_Rect& recA, const SDL_Rect& recB) {
if (
recA.x + recA.w >= recB.x &&
recB.x + recB.w >= recA.x &&
recA.y + recA.h >= recB.y &&
recB.y + recB.h >= recA.y)
{
return true;
}
return false;
}
//TODO: collision with the wall should still allow the sprite to move sideways
/* bool Collision::AABB_right(const SDL_Rect& recA, const SDL_Rect& recB) {
if (
recA.x + recA.w >= recB.x &&
recA.x < recB.x
// recB.x + recB.w >= recA.x &&
// recA.y + recA.h >= recB.y &&
// recB.y + recB.h >= recA.y
)
{
return true;
}
return false;
}
bool Collision::AABB_left(const SDL_Rect& recA, const SDL_Rect& recB) {
if (
// recA.x + recA.w >= recB.x &&
recB.x + recB.w >= recA.x &&
recB.x <= recA.x
// recA.y + recA.h >= recB.y &&
// recB.y + recB.h >= recA.y
)
{
return true;
}
return false;
}
*/
bool Collision::AABB(const ColliderComponent &colA, const ColliderComponent &colB) {
if (AABB(colA.collider, colB.collider)) {
//std::cout << colA.tag << " hit: " << colB.tag << std::endl;
return true;
} else {
return false;
}
}