From 647e2e1812c00e29337a61560644f7aa91d0eb0f Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sat, 12 Oct 2024 13:59:11 +0200 Subject: next commit --- UI/Camera.gd | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'UI/Camera.gd') diff --git a/UI/Camera.gd b/UI/Camera.gd index 4e02662..8f075cd 100644 --- a/UI/Camera.gd +++ b/UI/Camera.gd @@ -14,12 +14,13 @@ var drag_anchor = Vector2.ZERO func _input(event): if event.is_action("camera_zoom_out"): - var new_zoom = max(zoom.x - zoom_step, zoom_min) - zoom = Vector2(new_zoom, new_zoom) + var min_zoom_min = limit_right / (get_viewport_rect().size.x / zoom.x) + if min_zoom_min >= 1.0: + var new_zoom = max(zoom.x - zoom_step, zoom_min) + zoom = Vector2(new_zoom, new_zoom) if event.is_action("camera_zoom_in"): var new_zoom = min(zoom.x + zoom_step, zoom_max) zoom = Vector2(new_zoom, new_zoom) - #global_position -= (global_position + (get_viewport_rect().size/2) - get_global_mouse_position()) if event.is_action_pressed("camera_drag"): is_in_drag_mode = true @@ -30,11 +31,29 @@ func _input(event): func _process(_delta): if is_in_drag_mode: - global_position += drag_anchor - get_global_mouse_position() + set_new_position(global_position + drag_anchor - get_global_mouse_position()) var direction_h = Input.get_axis("ui_left", "ui_right") var direction_v = Input.get_axis("ui_up", "ui_down") - global_position += Vector2(direction_h * speed, direction_v * speed) + + if direction_h != 0 or direction_v != 0: + set_new_position(global_position + Vector2(direction_h * speed, direction_v * speed)) + + +func set_new_position(new_position: Vector2): + new_position.x = clamp( + new_position.x, + limit_left, + limit_right - (get_viewport_rect().size.x / zoom.x) + ) + + new_position.y = clamp( + new_position.y, + limit_top, + limit_bottom - (get_viewport_rect().size.y / zoom.y) + ) + + global_position = new_position func get_rect(): -- cgit v1.2.3