diff --git a/util/grid/grid22.hpp b/util/grid/grid22.hpp index 3820490..f551720 100644 --- a/util/grid/grid22.hpp +++ b/util/grid/grid22.hpp @@ -99,17 +99,37 @@ public: }; -class SpatialCell { +class SpatialCell2Leaf { private: - float size; - float radius; - std::unordered_map, Vec2::Hash> grid; + static constexpr float SIZE = 10; + Vec2 origin; + std::vector ids; + size_t id; //this leaf nodes id public: + SpatialCell2Leaf(const Vec2& origin, size_t id) : origin(origin), id(id) {} void insertID(size_t id, Vec2& pos) { - + //if (pos.distance(origin) < size) { + ids.push_back(id); + //} } + void safeInsertID(size_t id, Vec2& pos) { + if (pos.distance(origin) < SIZE) { + ids.push_back(id); + } + } + std::vector getIds() { + return ids; + } + const Vec2& getOrigin() const { return origin; } }; +class SpatialGrid2 { +private: + std::unordered_map cells; +public: + +} + class Grid2 { private: //all positions @@ -131,7 +151,7 @@ private: float neighborRadius = 1.0f; //TODO: spatial map - std::unordered_map inversetable; + std::unordered_map, Vec2::Hash> spatialtable; public: //get position from id Vec2 getPositionID(size_t id) const {