summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSch1nken <kekseggkeks@googlemail.com>2023-08-15 15:17:06 +0200
committerSch1nken <kekseggkeks@googlemail.com>2023-08-15 15:17:06 +0200
commit7aa90d16675ce195a5e3932032717231e511c8b7 (patch)
tree8480f842dc658e744db41c8b32203ed7341c82c6
parentc495eb5102278a110c14bbffbf833ed436d1594d (diff)
downloadredot-engine-7aa90d16675ce195a5e3932032717231e511c8b7.tar.gz
Check for possible scenes to be erased
-rw-r--r--scene/2d/tile_map.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp
index 1836cc20b6..09effe6596 100644
--- a/scene/2d/tile_map.cpp
+++ b/scene/2d/tile_map.cpp
@@ -1839,6 +1839,17 @@ void TileMapLayer::set_cell(const Vector2i &p_coords, int p_source_id, const Vec
ERR_FAIL_COND(!Q);
TileMapQuadrant &q = Q->value;
+ // Find node in scenes and remove it.
+ HashMap<Vector2i, String>::Iterator entry = q.scenes.find(pk);
+ if (entry != q.scenes.end()) {
+ String scene_name = entry->value;
+ Node *scene = tile_map_node->get_node_or_null(scene_name);
+ if (scene) {
+ scene->queue_free();
+ instantiated_scenes.erase(Vector2i(pk.x, pk.y));
+ }
+ }
+
q.cells.erase(pk);
// Remove or make the quadrant dirty.