1 #ifndef __COLLISION_GRID_H__
2 #define __COLLISION_GRID_H__
5 #include "special/moving_object.h"
7 using namespace SuperTux;
10 * A rectangular grid to keep track of all moving game objects. It allows fast
11 * queries for all objects in a rectangular area.
16 CollisionGrid(float width, float height);
19 void add_object(MovingObject* object);
20 void remove_object(MovingObject* object);
21 void move_object(MovingObject* object);
23 void check_collisions();
30 /** (pseudo) timestamp. When reading from the grid the timestamp is
31 * changed so that you can easily avoid reading an object multiple times
32 * when it is in several cells that you check.
35 /// index in the objects vector
39 /** Element for the single linked list in each grid cell */
43 ObjectWrapper* object_wrapper;
46 void remove_object_from_gridcell(int gridcell, MovingObject* object);
47 void collide_object(ObjectWrapper* wrapper);
48 void collide_object_object(ObjectWrapper* wrapper, ObjectWrapper* wrapper2);
50 typedef std::vector<GridEntry*> GridEntries;
52 typedef std::vector<ObjectWrapper*> Objects;
54 size_t cells_x, cells_y;
61 extern CollisionGrid* bla;