#include "Area.hpp" #include "Chunk.hpp" using namespace world; std::optional> ChunkContainer::findInRange(const chunk_pos &pos) const { const auto it = find(pos); return it != end() ? std::make_optional(it->second) : std::nullopt; } std::optional> ChunkContainer::findOrEmpty(const chunk_pos &pos) const { return inRange(pos) ? findInRange(pos) : std::make_optional(world::EMPTY_CHUNK); } std::shared_ptr Area::getRegion(const std::string& folderPath, const area_& pos) { { // Found const auto shared = regions.lock_shared(); const auto it = shared->find(pos.second); if(it != shared->end()) return it->second; } // Reading const auto reg = std::make_shared(folderPath, pos); const auto unique = regions.lock(); return unique->insert({pos.second, reg}).first->second; }