This commit is contained in:
MihailRis
2024-04-25 03:00:21 +03:00
parent 56a8226028
commit 8730b03a52
5 changed files with 19 additions and 7 deletions
+6 -3
View File
@@ -219,7 +219,7 @@ void WorldRegions::closeRegFile(glm::ivec3 coord) {
}
// Marks regfile as used and unmarks when shared_ptr dies
std::shared_ptr<regfile> WorldRegions::getRegFile(glm::ivec3 coord) {
std::shared_ptr<regfile> WorldRegions::getRegFile(glm::ivec3 coord, bool create) {
{
std::lock_guard lock(regFilesMutex);
const auto found = openRegFiles.find(coord);
@@ -230,7 +230,10 @@ std::shared_ptr<regfile> WorldRegions::getRegFile(glm::ivec3 coord) {
return useRegFile(found->first);
}
}
return createRegFile(coord);
if (create) {
return createRegFile(coord);
}
return nullptr;
}
std::shared_ptr<regfile> WorldRegions::createRegFile(glm::ivec3 coord) {
@@ -273,7 +276,7 @@ void WorldRegions::writeRegion(int x, int z, int layer, WorldRegion* entry){
fs::path filename = layers[layer].folder/getRegionFilename(x, z);
glm::ivec3 regcoord(x, z, layer);
if (auto regfile = getRegFile(regcoord)) {
if (auto regfile = getRegFile(regcoord, false)) {
fetchChunks(entry, x, z, regfile.get());
std::lock_guard lock(regFilesMutex);
+1 -1
View File
@@ -110,7 +110,7 @@ class WorldRegions {
ubyte* getData(int x, int z, int layer, uint32_t& size);
std::shared_ptr<regfile> getRegFile(glm::ivec3 coord);
std::shared_ptr<regfile> getRegFile(glm::ivec3 coord, bool create=true);
void closeRegFile(glm::ivec3 coord);
std::shared_ptr<regfile> useRegFile(glm::ivec3 coord);
std::shared_ptr<regfile> createRegFile(glm::ivec3 coord);