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 HEADER_SUPERTUX_COLLISION_COLLISION_HIT_HPP
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 */
26enum 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 */
44class CollisionHit final
45{
46public:
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