mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-03-20 19:42:28 +01:00
Simplify chunks_set() in TerrainWorld.
This commit is contained in:
parent
42a2979d3e
commit
23614770f1
@ -471,49 +471,39 @@ Vector<Variant> TerrainWorld::chunks_get() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TerrainWorld::chunks_set(const Vector<Variant> &chunks) {
|
void TerrainWorld::chunks_set(const Vector<Variant> &chunks) {
|
||||||
if (is_inside_tree()) {
|
for (int i = 0; i < _chunks_vector.size(); ++i) {
|
||||||
for (int i = 0; i < _chunks_vector.size(); ++i) {
|
Ref<TerrainChunk> chunk = Ref<TerrainChunk>(_chunks_vector[i]);
|
||||||
Ref<TerrainChunk> chunk = Ref<TerrainChunk>(_chunks_vector[i]);
|
|
||||||
|
|
||||||
if (chunks.find(chunk) == -1) {
|
if (chunks.find(chunk) == -1) {
|
||||||
chunk_remove_index(i);
|
chunk_remove_index(i);
|
||||||
_generation_queue.erase(chunk);
|
_generation_queue.erase(chunk);
|
||||||
|
|
||||||
chunk->exit_tree();
|
chunk->exit_tree();
|
||||||
|
|
||||||
if (chunk->get_is_generating()) {
|
if (chunk->get_is_generating()) {
|
||||||
chunk->cancel_build();
|
chunk->cancel_build();
|
||||||
}
|
|
||||||
|
|
||||||
//never remove from this here
|
|
||||||
//_generating.erase(chunk);
|
|
||||||
|
|
||||||
--i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//add the difference
|
|
||||||
for (int i = 0; i < chunks.size(); ++i) {
|
|
||||||
Ref<TerrainChunk> chunk = Ref<TerrainChunk>(chunks[i]);
|
|
||||||
|
|
||||||
if (!chunk.is_valid()) {
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_chunks_vector.find(chunk) != -1) {
|
//never remove from this here
|
||||||
continue;
|
//_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) {
|
//add the difference
|
||||||
Ref<TerrainChunk> chunk = Ref<TerrainChunk>(chunks[i]);
|
for (int i = 0; i < chunks.size(); ++i) {
|
||||||
|
Ref<TerrainChunk> chunk = Ref<TerrainChunk>(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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user