summaryrefslogtreecommitdiffstats
path: root/scene/2d/tile_map.cpp
diff options
context:
space:
mode:
authorkobewi <kobewi4e@gmail.com>2023-07-27 01:31:20 +0200
committerkobewi <kobewi4e@gmail.com>2023-07-27 01:31:20 +0200
commit055b9892d25bfafdf66edac0008cf5ed4e9d84d2 (patch)
treea2ea861c81899921cde47c7e94af828290201238 /scene/2d/tile_map.cpp
parent41a7f6b38047773386710d5e49b64b173a3198de (diff)
downloadredot-engine-055b9892d25bfafdf66edac0008cf5ed4e9d84d2.tar.gz
Properly clear scene tiles
Diffstat (limited to 'scene/2d/tile_map.cpp')
-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();