Browse Source

Merge pull request #80658 from Sch1nken/tilemap-erase-scenes

TileMap: Check for possible scenes to be erased
Rémi Verschelde 2 years ago
parent
commit
ed81c93be7
1 changed files with 11 additions and 0 deletions
  1. 11 0
      scene/2d/tile_map.cpp

+ 11 - 0
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.