add chunk 'entities' flag

This commit is contained in:
MihailRis 2024-07-05 23:26:17 +03:00
parent c8666910ce
commit f4d3e62b3f
4 changed files with 9 additions and 3 deletions

View File

@ -360,7 +360,7 @@ void WorldRegions::put(Chunk* chunk, std::vector<ubyte> entitiesData){
return;
}
bool lightsUnsaved = !chunk->flags.loadedLights && doWriteLights;
if (!chunk->flags.unsaved && !lightsUnsaved) {
if (!chunk->flags.unsaved && !lightsUnsaved && !chunk->flags.entities) {
return;
}
@ -441,7 +441,11 @@ chunk_inventories_map WorldRegions::fetchInventories(int x, int z) {
if (data == nullptr) {
return nullptr;
}
return json::from_binary(data, bytesSize);
auto map = json::from_binary(data, bytesSize);
if (map->size() == 0) {
return nullptr;
}
return map;
}
void WorldRegions::processRegionVoxels(int x, int z, const regionproc& func) {

View File

@ -35,6 +35,7 @@ public:
bool lighted: 1;
bool unsaved: 1;
bool loadedLights: 1;
bool entities: 1;
} flags {};
/// @brief Block inventories map where key is index of block in voxels array

View File

@ -717,7 +717,7 @@ void Chunks::save(Chunk* chunk) {
list.put(level->entities->serialize(entity));
}
if (!entities.empty()) {
chunk->flags.unsaved = true;
chunk->flags.entities = true;
}
worldFiles->getRegions().put(chunk, json::to_binary(root, true));
}

View File

@ -66,6 +66,7 @@ std::shared_ptr<Chunk> ChunksStorage::create(int x, int z) {
if (auto map = regions.fetchEntities(chunk->x, chunk->z)) {
level->entities->loadEntities(std::move(map));
chunk->flags.entities = true;
}
chunk->flags.loaded = true;