1 | // SuperTux |
2 | // Copyright (C) 2006 Matthias Braun <matze@braunis.de> |
3 | // |
4 | // This program is free software: you can redistribute it and/or modify |
5 | // it under the terms of the GNU General Public License as published by |
6 | // the Free Software Foundation, either version 3 of the License, or |
7 | // (at your option) any later version. |
8 | // |
9 | // This program is distributed in the hope that it will be useful, |
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 | // GNU General Public License for more details. |
13 | // |
14 | // You should have received a copy of the GNU General Public License |
15 | // along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | |
17 | #ifndef HEADER_SUPERTUX_COLLISION_COLLISION_HIT_HPP |
18 | #define |
19 | |
20 | #include "math/vector.hpp" |
21 | |
22 | /** |
23 | * Used as return value for the collision functions, to indicate how the |
24 | * collision should be handled |
25 | */ |
26 | enum HitResponse |
27 | { |
28 | // Dynamic collision responses |
29 | |
30 | /// Call collision() but do no collision handling |
31 | ABORT_MOVE = 0, |
32 | /// move object out of collision and check for collisions again |
33 | /// if this happens too often then the move will just be aborted |
34 | /// (normal physics) |
35 | CONTINUE, |
36 | /// Treat object as kinematic, with infinite inertia/mass |
37 | /// pushing other (CONTINUE) objects out of the way |
38 | FORCE_MOVE |
39 | }; |
40 | |
41 | /** |
42 | * This class collects data about a collision |
43 | */ |
44 | class CollisionHit final |
45 | { |
46 | public: |
47 | CollisionHit() : |
48 | left(false), |
49 | right(false), |
50 | top(false), |
51 | bottom(false), |
52 | crush(false), |
53 | slope_normal() |
54 | {} |
55 | |
56 | bool left, right; |
57 | bool top, bottom; |
58 | bool crush; |
59 | |
60 | Vector slope_normal; |
61 | }; |
62 | |
63 | #endif |
64 | |
65 | /* EOF */ |
66 | |