Răsfoiți Sursa

Fix undoing "Move tiles" TileMapLayer action when drag/drop areas overlap

(cherry picked from commit ab504b31395c2d49747a2d4f1da59258f30de983)
kleonc 1 an în urmă
părinte
comite
88370e44d8
1 a modificat fișierele cu 4 adăugiri și 2 ștergeri
  1. 4 2
      editor/plugins/tiles/tile_map_layer_editor.cpp

+ 4 - 2
editor/plugins/tiles/tile_map_layer_editor.cpp

@@ -1366,11 +1366,13 @@ void TileMapLayerEditorTilesPlugin::_stop_dragging() {
 				Vector2i coords;
 				HashMap<Vector2i, TileMapCell> cells_undo;
 				for (int i = 0; i < selection_used_cells.size(); i++) {
-					coords = tile_set->map_pattern(top_left, selection_used_cells[i], selection_pattern);
-					cells_undo[coords] = TileMapCell(drag_modified[coords].source_id, drag_modified[coords].get_atlas_coords(), drag_modified[coords].alternative_tile);
 					coords = tile_set->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern);
 					cells_undo[coords] = TileMapCell(edited_layer->get_cell_source_id(coords), edited_layer->get_cell_atlas_coords(coords), edited_layer->get_cell_alternative_tile(coords));
 				}
+				for (int i = 0; i < selection_used_cells.size(); i++) {
+					coords = tile_set->map_pattern(top_left, selection_used_cells[i], selection_pattern);
+					cells_undo[coords] = TileMapCell(drag_modified[coords].source_id, drag_modified[coords].get_atlas_coords(), drag_modified[coords].alternative_tile);
+				}
 
 				// Build the list of cells to do.
 				HashMap<Vector2i, TileMapCell> cells_do;