From 23614770f13445597c7c2a18681cebf9c82c986b Mon Sep 17 00:00:00 2001 From: Relintai Date: Sat, 8 Feb 2025 15:55:40 +0100 Subject: [PATCH] Simplify chunks_set() in TerrainWorld. --- modules/terraman/world/terrain_world.cpp | 56 ++++++++++-------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/modules/terraman/world/terrain_world.cpp b/modules/terraman/world/terrain_world.cpp index ec33996cd..d20c95041 100644 --- a/modules/terraman/world/terrain_world.cpp +++ b/modules/terraman/world/terrain_world.cpp @@ -471,49 +471,39 @@ Vector TerrainWorld::chunks_get() { } void TerrainWorld::chunks_set(const Vector &chunks) { - if (is_inside_tree()) { - for (int i = 0; i < _chunks_vector.size(); ++i) { - Ref chunk = Ref(_chunks_vector[i]); + for (int i = 0; i < _chunks_vector.size(); ++i) { + Ref chunk = Ref(_chunks_vector[i]); - if (chunks.find(chunk) == -1) { - chunk_remove_index(i); - _generation_queue.erase(chunk); + if (chunks.find(chunk) == -1) { + chunk_remove_index(i); + _generation_queue.erase(chunk); - chunk->exit_tree(); + chunk->exit_tree(); - if (chunk->get_is_generating()) { - chunk->cancel_build(); - } - - //never remove from this here - //_generating.erase(chunk); - - --i; - } - } - - //add the difference - for (int i = 0; i < chunks.size(); ++i) { - Ref chunk = Ref(chunks[i]); - - if (!chunk.is_valid()) { - continue; + if (chunk->get_is_generating()) { + chunk->cancel_build(); } - if (_chunks_vector.find(chunk) != -1) { - continue; - } + //never remove from this here + //_generating.erase(chunk); - chunk_add(chunk, chunk->get_position_x(), chunk->get_position_z()); + --i; } - } else { - _chunks_vector.clear(); + } - for (int i = 0; i < chunks.size(); ++i) { - Ref chunk = Ref(chunks[i]); + //add the difference + for (int i = 0; i < chunks.size(); ++i) { + Ref chunk = Ref(chunks[i]); - _chunks_vector.push_back(chunk); + if (!chunk.is_valid()) { + continue; } + + if (_chunks_vector.find(chunk) != -1) { + continue; + } + + chunk_add(chunk, chunk->get_position_x(), chunk->get_position_z()); } }