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 cf04aabef1)
This commit is contained in:
Maganty Rushyendra 2020-08-04 23:54:59 +08:00 committed by Rémi Verschelde
parent 3211a51be8
commit 69dc9c9417
1 changed files with 3 additions and 3 deletions

View File

@ -895,17 +895,17 @@ void TileMapEditor::_draw_cell(Control *p_viewport, int p_cell, const Point2i &p
rect.position += tile_ofs; rect.position += tile_ofs;
} }
rect.position = p_xform.xform(rect.position);
rect.size *= sc;
Color modulate = node->get_tileset()->tile_get_modulate(p_cell); Color modulate = node->get_tileset()->tile_get_modulate(p_cell);
modulate.a = 0.5; 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()) { if (r.has_no_area()) {
p_viewport->draw_texture_rect(t, rect, false, modulate, p_transpose); p_viewport->draw_texture_rect(t, rect, false, modulate, p_transpose);
} else { } else {
p_viewport->draw_texture_rect_region(t, rect, r, modulate, p_transpose); 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) { 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) {