X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fcollision.h;h=d4f58825a5f3e2a0afdccc4a4f0170b35ab32c57;hb=e91a85357ef52e2411a673bbd297147425857892;hp=410e2e87e95a303d6b61721280108fa994bb9445;hpb=34145c1911171da557faac38278c1ba56bb5e201;p=supertux.git diff --git a/src/collision.h b/src/collision.h index 410e2e87e..d4f58825a 100644 --- a/src/collision.h +++ b/src/collision.h @@ -1,41 +1,46 @@ -// C Interface: collision +// $Id$ +// +// SuperTux +// Copyright (C) 2005 Matthias Braun // -// Description: +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. // -// -// Author: Tobias Glaesser , (C) 2004 -// -// Copyright: See COPYING file that comes with this distribution -// -// - -#ifndef SUPERTUX_COLLISION_H -#define SUPERTUX_COLLISION_H - -#include "type.h" - -/* Collision objects */ -enum +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. + +#ifndef __COLLISION_H__ +#define __COLLISION_H__ + +class Vector; +class Rect; +class AATriangle; +class CollisionHit; + +class Collision { - CO_BULLET, - CO_BADGUY, - CO_PLAYER -}; - -enum CollisionType { - COLLISION_NORMAL, - COLLISION_BUMP, - COLLISION_SQUICH +public: + /** does collision detection between 2 rectangles. Returns true in case of + * collision and fills in the hit structure then. + */ + static bool rectangle_rectangle(CollisionHit& hit, const Rect& r1, + const Vector& movement, const Rect& r2); + + /** does collision detection between a rectangle and an axis aligned triangle + * Returns true in case of a collision and fills in the hit structure then. + */ + static bool rectangle_aatriangle(CollisionHit& hit, const Rect& rect, + const Vector& movement, const AATriangle& triangle); }; -bool rectcollision(base_type* one, base_type* two); -bool rectcollision_offset(base_type* one, base_type* two, float off_x, float off_y); -void collision_swept_object_map(base_type* old, base_type* current); -bool collision_object_map(base_type* object); - -/* Checks for all possible collisions. - And calls the collision_handlers, which the collision_objects provide for this case (or not). */ -void collision_handler(); - -#endif /*SUPERTUX_COLLISION_H*/ +#endif