diff options
author | Matthias Hoelzl <tc@xantira.com> | 2017-11-20 02:56:10 +0100 |
---|---|---|
committer | Matthias Hoelzl <tc@xantira.com> | 2017-11-27 15:12:30 +0100 |
commit | 2beadf7ac0d9a0dbe1df1d96c1f0d36bbcfadbcc (patch) | |
tree | 3f69c745ce6f925968fdcc1075f7b3f6e0cbf67c /editor/plugins/tile_map_editor_plugin.cpp | |
parent | d992eb1b25e3612293d6c72cd462a99cd5a0e4a3 (diff) | |
download | redot-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.cpp | 13 |
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); |