mirror of
https://github.com/godotengine/godot.git
synced 2025-11-02 14:41:07 +00:00
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`.
This commit is contained in:
parent
d992eb1b25
commit
2beadf7ac0
2 changed files with 19 additions and 18 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue