From 2beadf7ac0d9a0dbe1df1d96c1f0d36bbcfadbcc Mon Sep 17 00:00:00 2001 From: Matthias Hoelzl Date: Mon, 20 Nov 2017 02:56:10 +0100 Subject: Fix displacement for centered tilemaps - Fixes tile and collision placement for tilemaps with `tile_origin` set to `TILE_ORIGIN_CENTER`. - Also fixes a bug in the offset computation for collision shapes with `flip_v` flag set to true if `tile_origin` is `TILE_ORIGIN_BOTTOM_LEFT`. --- editor/plugins/tile_map_editor_plugin.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'editor') diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index e552e24c17..5cc81f156c 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -565,20 +565,19 @@ void TileMapEditor::_draw_cell(int p_cell, const Point2i &p_point, bool p_flip_h } } else if (node->get_tile_origin() == TileMap::TILE_ORIGIN_CENTER) { - rect.position += node->get_cell_size() / 2; - Vector2 s = r.size; + Size2 cell_size = node->get_cell_size(); - Vector2 center = (s / 2) - tile_ofs; + rect.position += tile_ofs; if (p_flip_h) - rect.position.x -= s.x - center.x; + rect.position.x -= cell_size.x / 2; else - rect.position.x -= center.x; + rect.position.x += cell_size.x / 2; if (p_flip_v) - rect.position.y -= s.y - center.y; + rect.position.y -= cell_size.y / 2; else - rect.position.y -= center.y; + rect.position.y += cell_size.y / 2; } rect.position = p_xform.xform(rect.position); -- cgit v1.2.3