summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuri Sizov <11782833+YuriSizov@users.noreply.github.com>2023-07-27 19:09:40 +0200
committerGitHub <noreply@github.com>2023-07-27 19:09:40 +0200
commit1e314d55019d890d5f7572ad3e114d0f4eff4a60 (patch)
tree1f390ff05de10aa03021e513e7855f12df5df2d4
parenta0f572494e6602e0927bc3de61e9093c37da60f0 (diff)
parent055b9892d25bfafdf66edac0008cf5ed4e9d84d2 (diff)
downloadredot-engine-1e314d55019d890d5f7572ad3e114d0f4eff4a60.tar.gz
Merge pull request #79941 from KoBeWi/scene_tile_devastation
Properly clear scene tiles
-rw-r--r--scene/2d/tile_map.cpp15
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();