summaryrefslogtreecommitdiffstats
path: root/scene/2d/tile_map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/2d/tile_map.cpp')
-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.