diff options
Diffstat (limited to 'src/collision.cpp')
| -rw-r--r-- | src/collision.cpp | 97 |
1 files changed, 0 insertions, 97 deletions
| diff --git a/src/collision.cpp b/src/collision.cpp deleted file mode 100644 index b747a90..0000000 --- a/src/collision.cpp +++ /dev/null | |||
| @@ -1,97 +0,0 @@ | |||
| 1 | #include "collision.h" | ||
| 2 | |||
| 3 | bool Collision::operator<(const Collision& other) const | ||
| 4 | { | ||
| 5 | // Most important is the type of collision | ||
| 6 | if (type_ != other.type_) | ||
| 7 | { | ||
| 8 | return (static_cast<int>(type_) > static_cast<int>(other.type_)); | ||
| 9 | } | ||
| 10 | |||
| 11 | // Next, categorize the collisions arbitrarily based on direction | ||
| 12 | if (dir_ != other.dir_) | ||
| 13 | { | ||
| 14 | return (static_cast<int>(dir_) < static_cast<int>(other.dir_)); | ||
| 15 | } | ||
| 16 | |||
| 17 | // We want to process closer collisions first | ||
| 18 | if (axis_ != other.axis_) | ||
| 19 | { | ||
| 20 | switch (dir_) | ||
| 21 | { | ||
| 22 | case Direction::left: | ||
| 23 | case Direction::up: | ||
| 24 | { | ||
| 25 | return (axis_ < other.axis_); | ||
| 26 | } | ||
| 27 | |||
| 28 | case Direction::right: | ||
| 29 | case Direction::down: | ||
| 30 | { | ||
| 31 | return (axis_ > other.axis_); | ||
| 32 | } | ||
| 33 | } | ||
| 34 | } | ||
| 35 | |||
| 36 | // Order the remaining attributes arbitrarily | ||
| 37 | return std::tie(collider_, lower_, upper_) < | ||
| 38 | std::tie(other.collider_, other.lower_, other.upper_); | ||
| 39 | } | ||
| 40 | |||
| 41 | bool Collision::isColliding( | ||
| 42 | double x, | ||
| 43 | double y, | ||
| 44 | int w, | ||
| 45 | int h) const | ||
| 46 | { | ||
| 47 | int right = x + w; | ||
| 48 | int bottom = y + h; | ||
| 49 | |||
| 50 | switch (dir_) | ||
| 51 | { | ||
| 52 | case Direction::left: | ||
| 53 | case Direction::right: | ||
| 54 | { | ||
| 55 | if (!((bottom > lower_) && (y < upper_))) | ||
| 56 | { | ||
| 57 | return false; | ||
| 58 | } | ||
| 59 | |||
| 60 | break; | ||
| 61 | } | ||
| 62 | |||
| 63 | case Direction::up: | ||
| 64 | case Direction::down: | ||
| 65 | { | ||
| 66 | if (!((right > lower_) && (x < upper_))) | ||
| 67 | { | ||
| 68 | return false; | ||
| 69 | } | ||
| 70 | |||
| 71 | break; | ||
| 72 | } | ||
| 73 | } | ||
| 74 | |||
| 75 | switch (dir_) | ||
| 76 | { | ||
| 77 | case Direction::left: | ||
| 78 | { | ||
| 79 | return (axis_ >= x); | ||
| 80 | } | ||
| 81 | |||
| 82 | case Direction::right: | ||
| 83 | { | ||
| 84 | return (axis_ <= right); | ||
| 85 | } | ||
| 86 | |||
| 87 | case Direction::up: | ||
| 88 | { | ||
| 89 | return (axis_ >= y); | ||
| 90 | } | ||
| 91 | |||
| 92 | case Direction::down: | ||
| 93 | { | ||
| 94 | return (axis_ <= bottom); | ||
| 95 | } | ||
| 96 | } | ||
| 97 | } | ||
