diff options
author | Sch1nken <kekseggkeks@googlemail.com> | 2023-08-15 15:17:06 +0200 |
---|---|---|
committer | Sch1nken <kekseggkeks@googlemail.com> | 2023-08-15 15:17:06 +0200 |
commit | 7aa90d16675ce195a5e3932032717231e511c8b7 (patch) | |
tree | 8480f842dc658e744db41c8b32203ed7341c82c6 /scene/2d/tile_map.cpp | |
parent | c495eb5102278a110c14bbffbf833ed436d1594d (diff) | |
download | redot-engine-7aa90d16675ce195a5e3932032717231e511c8b7.tar.gz |
Check for possible scenes to be erased
Diffstat (limited to 'scene/2d/tile_map.cpp')
-rw-r--r-- | scene/2d/tile_map.cpp | 11 |
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. |