X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fcollision_grid.h;h=7822c31e3b4b359cbc7ef6930faa12c15f5fe6fe;hb=abf179b33deb4040bb583e29207eaf1dd2ee0780;hp=09cc87afd544a7ae137146916e5d1d3c530d24cc;hpb=c43ea9b0d5372718888138ea2cc4abcd5acb5299;p=supertux.git diff --git a/src/collision_grid.h b/src/collision_grid.h index 09cc87afd..7822c31e3 100644 --- a/src/collision_grid.h +++ b/src/collision_grid.h @@ -6,6 +6,8 @@ using namespace SuperTux; +class CollisionGridIterator; + /** * A rectangular grid to keep track of all moving game objects. It allows fast * queries for all objects in a rectangular area. @@ -18,11 +20,12 @@ public: void add_object(MovingObject* object); void remove_object(MovingObject* object); - void move_object(MovingObject* object); void check_collisions(); private: + friend class CollisionGridIterator; + struct ObjectWrapper { MovingObject* object; @@ -43,9 +46,10 @@ private: ObjectWrapper* object_wrapper; }; - void remove_object_from_gridcell(int gridcell, MovingObject* object); + void remove_object_from_gridcell(int gridcell, ObjectWrapper* wrapper); void collide_object(ObjectWrapper* wrapper); void collide_object_object(ObjectWrapper* wrapper, ObjectWrapper* wrapper2); + void move_object(ObjectWrapper* wrapper); typedef std::vector GridEntries; GridEntries grid; @@ -56,6 +60,7 @@ private: float height; float cell_width; float cell_height; + int iterator_timestamp; }; extern CollisionGrid* bla;