Merge pull request #96844 from kleonc/tile_map_layer_fix_undoing_overlapping_move_tiles
Fix undoing "Move tiles" `TileMapLayer` action when drag/drop areas overlap
This commit is contained in:
commit
8613f346e8
1 changed files with 4 additions and 2 deletions
|
@ -1364,11 +1364,13 @@ void TileMapLayerEditorTilesPlugin::_stop_dragging() {
|
||||||
Vector2i coords;
|
Vector2i coords;
|
||||||
HashMap<Vector2i, TileMapCell> cells_undo;
|
HashMap<Vector2i, TileMapCell> cells_undo;
|
||||||
for (int i = 0; i < selection_used_cells.size(); i++) {
|
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);
|
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));
|
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.
|
// Build the list of cells to do.
|
||||||
HashMap<Vector2i, TileMapCell> cells_do;
|
HashMap<Vector2i, TileMapCell> cells_do;
|
||||||
|
|
Loading…
Reference in a new issue