From ff3a18b1a251a5e85057e52303efa0cdd79e8a66 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 9 Nov 2022 11:45:34 +0100 Subject: add floor mesh to struct chunk --- src/world.cpp | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'src/world.cpp') diff --git a/src/world.cpp b/src/world.cpp index 454f8e68..49a2fdf9 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -16,18 +16,11 @@ fm_noinline chunk& world::operator[](chunk_coords coord) noexcept { maybe_collect(); - - if (auto& [c, coord2] = _last_chunk; c && coord == coord2) - { - return *c; - } - - auto [it, inserted] = _chunks.try_emplace(coord); - auto& ret = it->second; - auto& [_c, _coord] = _last_chunk; - _c = &ret; - _coord = coord; - return ret; + auto& [c, coord2] = _last_chunk; + if (coord != coord2) + c = &_chunks.try_emplace(coord).first->second; + coord2 = coord; + return *c; } auto world::operator[](global_coords pt) noexcept -> pair @@ -46,13 +39,14 @@ void world::clear() _last_collection = 0; _chunks.clear(); _chunks.rehash(initial_capacity); - auto& [c, _] = _last_chunk; + auto& [c, pos] = _last_chunk; c = nullptr; + pos = chunk_tuple::invalid_coords; } void world::maybe_collect() { - if (_last_collection + collect_every > _chunks.size()) + if (_chunks.size() > _last_collection + collect_every) collect(); } @@ -68,8 +62,9 @@ void world::collect(bool force) } _last_collection = _chunks.size(); - auto& [c, _] = _last_chunk; + auto& [c, pos] = _last_chunk; c = nullptr; + pos = chunk_tuple::invalid_coords; } } // namespace floormat -- cgit v1.2.3