diff options
author | Yuri Sizov <11782833+YuriSizov@users.noreply.github.com> | 2023-07-27 19:09:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-27 19:09:40 +0200 |
commit | 1e314d55019d890d5f7572ad3e114d0f4eff4a60 (patch) | |
tree | 1f390ff05de10aa03021e513e7855f12df5df2d4 | |
parent | a0f572494e6602e0927bc3de61e9093c37da60f0 (diff) | |
parent | 055b9892d25bfafdf66edac0008cf5ed4e9d84d2 (diff) | |
download | redot-engine-1e314d55019d890d5f7572ad3e114d0f4eff4a60.tar.gz |
Merge pull request #79941 from KoBeWi/scene_tile_devastation
Properly clear scene tiles
-rw-r--r-- | scene/2d/tile_map.cpp | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp index 3c37fc7775..81d82b13bb 100644 --- a/scene/2d/tile_map.cpp +++ b/scene/2d/tile_map.cpp @@ -773,18 +773,7 @@ void TileMapLayer::_scenes_update_dirty_quadrants(SelfList<TileMapQuadrant>::Lis SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first(); while (q_list_element) { TileMapQuadrant &q = *q_list_element->self(); - - // Clear the scenes if instance cache was cleared. - if (instantiated_scenes.is_empty()) { - for (const KeyValue<Vector2i, String> &E : q.scenes) { - Node *node = tile_map_node->get_node_or_null(E.value); - if (node) { - node->queue_free(); - } - } - } - - q.scenes.clear(); + _scenes_cleanup_quadrant(&q); // Recreate the scenes. for (const Vector2i &E_cell : q.cells) { @@ -1562,6 +1551,7 @@ void TileMapLayer::clear_instantiated_scenes() { void TileMapLayer::clear_internals() { // Clear quadrants. + clear_instantiated_scenes(); while (quadrant_map.size()) { _erase_quadrant(quadrant_map.begin()); } @@ -1962,6 +1952,7 @@ TileData *TileMapLayer::get_cell_tile_data(const Vector2i &p_coords, bool p_use_ void TileMapLayer::clear() { // Remove all tiles. + clear_instantiated_scenes(); clear_internals(); tile_map.clear(); recreate_internals(); |