diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2022-10-22 10:29:03 +0200 |
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-10-22 10:29:03 +0200 |
| commit | f1330bf596b045131ba2906e0b99646835257456 (patch) | |
| tree | e0a5a583dae55703df793e768ca2c0da49da24f0 /src | |
| parent | d18a02d38f86d44e1825619a84cd01dcd5f28cf6 (diff) | |
more dumb crap
Diffstat (limited to 'src')
| -rw-r--r-- | src/world.hpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/world.hpp b/src/world.hpp index 89bc4feb..6321606e 100644 --- a/src/world.hpp +++ b/src/world.hpp @@ -12,13 +12,13 @@ struct chunk; struct world final { - world(); std::shared_ptr<chunk> operator[](chunk_coords c) noexcept; std::tuple<std::shared_ptr<chunk>, tile&> operator[](global_coords pt) noexcept; bool contains(chunk_coords c) const noexcept; void clear(); void collect(); + world(); fm_DECLARE_DELETED_COPY_ASSIGNMENT(world); private: @@ -26,13 +26,14 @@ private: static constexpr std::size_t initial_capacity = 64, collect_every = 32; static constexpr float max_load_factor = .5; - static constexpr auto hasher = [](chunk_coords c) -> std::size_t { + static constexpr auto hasher = [](chunk_coords c) constexpr -> std::size_t { return int_hash((std::size_t)c.y << 16 | (std::size_t)c.x); }; std::size_t _last_collection = 0; - mutable std::optional<std::tuple<std::shared_ptr<chunk>, chunk_coords>> _last_chunk; + std::unordered_map<chunk_coords, std::shared_ptr<chunk>, decltype(hasher)> _chunks{initial_capacity, hasher}; + mutable std::optional<std::tuple<std::shared_ptr<chunk>, chunk_coords>> _last_chunk; }; } // namespace floormat |
