From edc6ba59443a9ebcfcda18525edf0cc5bc03d317 Mon Sep 17 00:00:00 2001 From: Variable <77773850+Variable-ind@users.noreply.github.com> Date: Sun, 6 Aug 2023 20:54:01 +0500 Subject: [PATCH] Fix a bug in integer zoom (#896) * Update CameraMovement.gd * improvement to correction in fit to frame --- src/UI/Canvas/CameraMovement.gd | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/UI/Canvas/CameraMovement.gd b/src/UI/Canvas/CameraMovement.gd index 704bcd8e2..eb4f4224d 100644 --- a/src/UI/Canvas/CameraMovement.gd +++ b/src/UI/Canvas/CameraMovement.gd @@ -139,6 +139,8 @@ func zoom_camera(dir: int) -> void: var new_zoom := zoom + zoom_margin if Global.integer_zoom: new_zoom = zoom / (Vector2.ONE - dir * zoom) + if new_zoom == Vector2.INF: + return if new_zoom > zoom_min && new_zoom <= zoom_max: var new_offset := ( offset @@ -154,6 +156,8 @@ func zoom_camera(dir: int) -> void: var zoom_margin := zoom * dir / 10 if Global.integer_zoom: zoom_margin = (zoom / (Vector2.ONE - dir * zoom)) - zoom + if zoom_margin == Vector2.INF: + return if zoom + zoom_margin > zoom_min: zoom += zoom_margin if zoom > zoom_max: @@ -192,6 +196,10 @@ func zoom_100() -> void: func fit_to_frame(size: Vector2) -> void: + # temporarily disable integer zoom + var reset_integer_zoom := Global.integer_zoom + if reset_integer_zoom: + Global.integer_zoom = !Global.integer_zoom offset = size / 2 # Adjust to the rotated size: @@ -226,6 +234,8 @@ func fit_to_frame(size: Vector2) -> void: ratio = clamp(ratio, 0.1, ratio) zoom = Vector2(1 / ratio, 1 / ratio) emit_signal("zoom_changed") + if reset_integer_zoom: + Global.integer_zoom = !Global.integer_zoom func save_values_to_project() -> void: