From ef17fecfb22ccacbf098f6869ffaf644a1a627d6 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sat, 6 Feb 2021 12:15:07 -0500 Subject: Added collidable object cache --- src/transform_system.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/transform_system.h') diff --git a/src/transform_system.h b/src/transform_system.h index eb1a95b..1ad661c 100644 --- a/src/transform_system.h +++ b/src/transform_system.h @@ -3,6 +3,7 @@ #include #include +#include #include #include "direction.h" #include "system.h" @@ -29,6 +30,8 @@ public: void initSprite(int spriteId, vec2i loc); + void setUpCollision(int spriteId, vec2i offset, vec2i size); + void moveSprite(int spriteId, vec2i newLoc); auto getSpritesByY() const { @@ -43,6 +46,34 @@ private: Game& game_; std::set> spritesByY_; + + struct Collidable { + int lower; + int upper; + + Collidable(int lower, int upper) : lower(lower), upper(upper) {} + }; + + using asc_collidables_type = + std::map< + std::tuple, + const Collidable, + std::less>>; + + using desc_collidables_type = + std::map< + std::tuple, + const Collidable, + std::greater>>; + + desc_collidables_type leftCollidables_; + asc_collidables_type rightCollidables_; + desc_collidables_type upCollidables_; + asc_collidables_type downCollidables_; + + void addCollidable(int spriteId); + + void removeCollidable(int spriteId); }; #endif /* end of include guard: TRANSFORM_SYSTEM_H_BA2633BC */ -- cgit 1.4.1