Skip to content

Commit

Permalink
Fix infinite loop when calculating zoom level if tile_size * max_zoom…
Browse files Browse the repository at this point in the history
… < default
  • Loading branch information
jsjtxietian committed Jan 6, 2024
1 parent 89cc635 commit 42c672a
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions editor/plugins/tiles/tile_data_editors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -719,11 +719,19 @@ void GenericTilePolygonEditor::set_tile_set(Ref<TileSet> p_tile_set) {
Vector2 zoomed_tile = editor_zoom_widget->get_zoom() * tile_set->get_tile_size();
while (zoomed_tile.y < default_control_y_size) {
editor_zoom_widget->set_zoom_by_increments(6, false);
zoomed_tile = editor_zoom_widget->get_zoom() * tile_set->get_tile_size();
float current_zoom = editor_zoom_widget->get_zoom();
zoomed_tile = current_zoom * tile_set->get_tile_size();
if (Math::is_equal_approx(current_zoom, editor_zoom_widget->get_max_zoom())) {
break;
}
}
while (zoomed_tile.y > default_control_y_size) {
editor_zoom_widget->set_zoom_by_increments(-6, false);
zoomed_tile = editor_zoom_widget->get_zoom() * tile_set->get_tile_size();
float current_zoom = editor_zoom_widget->get_zoom();
zoomed_tile = current_zoom * tile_set->get_tile_size();
if (Math::is_equal_approx(current_zoom, editor_zoom_widget->get_min_zoom())) {
break;
}
}
editor_zoom_widget->set_zoom_by_increments(-6, false);
_zoom_changed();
Expand Down

0 comments on commit 42c672a

Please sign in to comment.