From 85d9c23baa9f800f975e206f85f632683c61489c Mon Sep 17 00:00:00 2001 From: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> Date: Thu, 8 Feb 2024 15:25:31 +0100 Subject: [PATCH] Fix duplicating/copying `TileMap` Using `force_parent_owned` to prevent issues duplicating --- scene/2d/tile_map.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp index 24eefce99de..ef17b379a06 100644 --- a/scene/2d/tile_map.cpp +++ b/scene/2d/tile_map.cpp @@ -387,6 +387,7 @@ void TileMap::add_layer(int p_to_pos) { TileMapLayer *new_layer = memnew(TileMapLayer); layers.insert(p_to_pos, new_layer); add_child(new_layer); + new_layer->force_parent_owned(); new_layer->set_name(vformat("Layer%d", p_to_pos)); move_child(new_layer, p_to_pos); for (uint32_t i = 0; i < layers.size(); i++) { @@ -719,6 +720,7 @@ bool TileMap::_set(const StringName &p_name, const Variant &p_value) { if (layers.size() == 0) { TileMapLayer *new_layer = memnew(TileMapLayer); add_child(new_layer); + new_layer->force_parent_owned(); new_layer->set_name("Layer0"); new_layer->set_layer_index_in_tile_map_node(0); layers.push_back(new_layer); @@ -743,6 +745,7 @@ bool TileMap::_set(const StringName &p_name, const Variant &p_value) { while (index >= (int)layers.size()) { TileMapLayer *new_layer = memnew(TileMapLayer); add_child(new_layer); + new_layer->force_parent_owned(); new_layer->set_name(vformat("Layer%d", index)); new_layer->set_layer_index_in_tile_map_node(index); layers.push_back(new_layer);