summaryrefslogtreecommitdiffstats
path: root/editor/plugins/tile_map_editor_plugin.cpp
diff options
context:
space:
mode:
authorMatthias Hoelzl <tc@xantira.com>2017-11-20 02:56:10 +0100
committerMatthias Hoelzl <tc@xantira.com>2017-11-27 15:12:30 +0100
commit2beadf7ac0d9a0dbe1df1d96c1f0d36bbcfadbcc (patch)
tree3f69c745ce6f925968fdcc1075f7b3f6e0cbf67c /editor/plugins/tile_map_editor_plugin.cpp
parentd992eb1b25e3612293d6c72cd462a99cd5a0e4a3 (diff)
downloadredot-engine-2beadf7ac0d9a0dbe1df1d96c1f0d36bbcfadbcc.tar.gz
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`.
Diffstat (limited to 'editor/plugins/tile_map_editor_plugin.cpp')
-rw-r--r--editor/plugins/tile_map_editor_plugin.cpp13
1 files changed, 6 insertions, 7 deletions
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);