X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fcollision.h;h=6b8662c1f5f2e2547cddfbf1b6f04e93b34804e3;hb=0614cf0d1891a5f3f191eecfd021efe49b6601ea;hp=cbbaeefa0d0adaa63329e94e9a0d13f29b0a8ec6;hpb=236df51d91f0845cd4e06b3269e262911d81f5db;p=supertux.git diff --git a/src/collision.h b/src/collision.h index cbbaeefa0..6b8662c1f 100644 --- a/src/collision.h +++ b/src/collision.h @@ -1,7 +1,7 @@ // $Id$ // // SuperTux -// Copyright (C) 2004 Tobias Glaesser +// Copyright (C) 2005 Matthias Braun // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -18,53 +18,34 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA. -#ifndef SUPERTUX_COLLISION_H -#define SUPERTUX_COLLISION_H +#ifndef __COLLISION_H__ +#define __COLLISION_H__ -#include "special/base.h" +namespace SuperTux { +class Vector; +class Rectangle; +class AATriangle; +} -class Tile; +using namespace SuperTux; -/* Collision objects */ -enum -{ - CO_BULLET, - CO_BADGUY, - CO_PLAYER, - CO_TRAMPOLINE, - CO_FLYING_PLATFORM -}; +class CollisionHit; -enum CollisionType { - COLLISION_NORMAL, - COLLISION_BUMP, - COLLISION_SQUISH +class Collision +{ +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 Rectangle& r1, + const Vector& movement, const Rectangle& 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 Rectangle& rect, + const Vector& movement, const AATriangle& triangle); }; -bool rectcollision(const base_type& one, const base_type& two); -bool rectcollision_offset(const base_type& one, const base_type& two, float off_x, float off_y); - -void collision_swept_object_map(base_type* old, base_type* current); -bool collision_object_map(const base_type& object); - -/** Return a pointer to the tile at the given x/y coordinates */ -Tile* gettile(float x, float y); - -// Some little helper function to check for tile properties -bool issolid(float x, float y); -bool isbrick(float x, float y); -bool isice(float x, float y); -bool isspike(float x, float y); -bool isfullbox(float x, float y); - -typedef void* (*tiletestfunction)(Tile* tile); -/** invokes the function for each tile the baserectangle collides with. The - * function aborts and returns true as soon as the tiletestfunction returns - * != 0 then this value is returned. returns 0 if all tests failed. - */ -void* collision_func(const base_type& base, tiletestfunction* function); - -Tile* collision_goal(const base_type& base); - -#endif /*SUPERTUX_COLLISION_H*/ +#endif