1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-10 13:00:37 +00:00

Merge pull request #67050 from KoBeWi/syrt

Warn if isometric TileMap is not Y-sorted
This commit is contained in:
Rémi Verschelde
2022-12-12 11:40:54 +01:00
2 changed files with 19 additions and 0 deletions

View File

@@ -616,6 +616,7 @@
</constant> </constant>
<constant name="TILE_SHAPE_ISOMETRIC" value="1" enum="TileShape"> <constant name="TILE_SHAPE_ISOMETRIC" value="1" enum="TileShape">
Diamond tile shape (for isometric look). Diamond tile shape (for isometric look).
[b]Note:[/b] Isometric [TileSet] works best if [TileMap] and all its layers have Y-sort enabled.
</constant> </constant>
<constant name="TILE_SHAPE_HALF_OFFSET_SQUARE" value="2" enum="TileShape"> <constant name="TILE_SHAPE_HALF_OFFSET_SQUARE" value="2" enum="TileShape">
Rectangular tile shape with one row/column out of two offset by half a tile. Rectangular tile shape with one row/column out of two offset by half a tile.

View File

@@ -755,6 +755,7 @@ void TileMap::set_y_sort_enabled(bool p_enable) {
_clear_internals(); _clear_internals();
_recreate_internals(); _recreate_internals();
emit_signal(SNAME("changed")); emit_signal(SNAME("changed"));
update_configuration_warnings();
} }
Vector2i TileMap::_coords_to_quadrant_coords(int p_layer, const Vector2i &p_coords) const { Vector2i TileMap::_coords_to_quadrant_coords(int p_layer, const Vector2i &p_coords) const {
@@ -3958,6 +3959,22 @@ PackedStringArray TileMap::get_configuration_warnings() const {
} }
} }
if (tile_set.is_valid() && tile_set->get_tile_shape() == TileSet::TILE_SHAPE_ISOMETRIC) {
bool warn = !is_y_sort_enabled();
if (!warn) {
for (int layer = 0; layer < (int)layers.size(); layer++) {
if (!layers[layer].y_sort_enabled) {
warn = true;
break;
}
}
}
if (warn) {
warnings.push_back(RTR("Isometric TileSet will likely not look as intended without Y-sort enabled for the TileMap and all of its layers."));
}
}
return warnings; return warnings;
} }
@@ -4054,6 +4071,7 @@ void TileMap::_tile_set_changed() {
_tile_set_changed_deferred_update_needed = true; _tile_set_changed_deferred_update_needed = true;
instantiated_scenes.clear(); instantiated_scenes.clear();
call_deferred(SNAME("_tile_set_changed_deferred_update")); call_deferred(SNAME("_tile_set_changed_deferred_update"));
update_configuration_warnings();
} }
void TileMap::_tile_set_changed_deferred_update() { void TileMap::_tile_set_changed_deferred_update() {