diff options
author | rzllmr <30299783+rzllmr@users.noreply.github.com> | 2019-08-03 21:32:13 +0200 |
---|---|---|
committer | rzllmr <30299783+rzllmr@users.noreply.github.com> | 2019-08-03 21:32:13 +0200 |
commit | 653039151a91291eda757f72674b6b968770cf51 (patch) | |
tree | 7b6c1a3a072cdbb40da4498daaac9d87b786236b | |
parent | e14e08cfc57fc23ae40f0649841836e50970b39c (diff) |
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
-rw-r--r-- | editor/plugins/tile_map_editor_plugin.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index 766890242f..b2f06ca41f 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -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); |