summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrzllmr <30299783+rzllmr@users.noreply.github.com>2019-08-03 21:32:13 +0200
committerrzllmr <30299783+rzllmr@users.noreply.github.com>2019-08-03 21:32:13 +0200
commit653039151a91291eda757f72674b6b968770cf51 (patch)
tree7b6c1a3a072cdbb40da4498daaac9d87b786236b
parente14e08cfc57fc23ae40f0649841836e50970b39c (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.cpp8
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);