Fix row-column-swap in TileMap palette

Due to the TileSet coordinates using x for columns and y for rows, the
columns are assigned to the rows in the TileMap palette and distort the
order. Thus the default sorting algorithm prioritizing x is replaced
with a custom one prioritizing y.

Fixes #24751
This commit is contained in:
rzllmr 2019-08-03 21:32:13 +02:00
parent e14e08cfc5
commit 653039151a
1 changed files with 7 additions and 1 deletions

View File

@ -521,7 +521,13 @@ void TileMapEditor::_update_palette() {
for (const Map<Vector2, uint32_t>::Element *E = tiles2.front(); E; E = E->next()) {
entries2.push_back(E->key());
}
entries2.sort();
// Sort tiles in row-major order
struct SwapComparator {
_FORCE_INLINE_ bool operator()(const Vector2 &v_l, const Vector2 &v_r) const {
return v_l.y != v_r.y ? v_l.y < v_r.y : v_l.x < v_r.x;
}
};
entries2.sort_custom<SwapComparator>();
Ref<Texture> tex = tileset->tile_get_texture(sel_tile);