From 69dc9c94172e205cbc7d2ddc596d16427ce8528b Mon Sep 17 00:00:00 2001 From: Maganty Rushyendra Date: Tue, 4 Aug 2020 23:54:59 +0800 Subject: [PATCH] Fix tile placement preview for rotated, skewed or scaled TileMaps Ensures that the editor preview when placing a tile on a TileMap takes into account the transformation of the TileMap. Previously, only the origin of the Tile was transformed, but not its orientation or scaling. (cherry picked from commit cf04aabef13629b01d6bbf724ca1ab60e041d656) --- editor/plugins/tile_map_editor_plugin.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index 95175639635..db46b884cb7 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -895,17 +895,17 @@ void TileMapEditor::_draw_cell(Control *p_viewport, int p_cell, const Point2i &p rect.position += tile_ofs; } - rect.position = p_xform.xform(rect.position); - rect.size *= sc; - Color modulate = node->get_tileset()->tile_get_modulate(p_cell); modulate.a = 0.5; + Transform2D old_transform = p_viewport->get_viewport_transform(); + p_viewport->draw_set_transform_matrix(p_xform); // Take into account TileMap transformation when displaying cell if (r.has_no_area()) { p_viewport->draw_texture_rect(t, rect, false, modulate, p_transpose); } else { p_viewport->draw_texture_rect_region(t, rect, r, modulate, p_transpose); } + p_viewport->draw_set_transform_matrix(old_transform); } void TileMapEditor::_draw_fill_preview(Control *p_viewport, int p_cell, const Point2i &p_point, bool p_flip_h, bool p_flip_v, bool p_transpose, const Point2i &p_autotile_coord, const Transform2D &p_xform) {