#pragma once #include #include #include "map.hpp" #include "dinkyecs.hpp" #include struct PointHash { size_t operator()(const Point& p) const { return std::hash()(p.x) ^ std::hash()(p.y); } }; typedef std::vector FoundList; typedef std::unordered_map PointEntityMap; class SpatialHashTable { public: SpatialHashTable() {} void insert(Point pos, DinkyECS::Entity obj); void move(Point from, Point to, DinkyECS::Entity ent); void remove(Point pos); bool occupied(Point pos) const; std::tuple neighbors(Point position, bool diag=false) const; private: PointEntityMap table; };