Added shift and control modifier with LMB to pan/zoom 2D preview.

This commit is contained in:
Rodolphe Suescun 2021-08-10 14:48:01 +02:00
parent 30ee03c2b9
commit 14a496984d
1 changed files with 16 additions and 7 deletions

View File

@ -49,6 +49,7 @@ func on_resized() -> void:
$Axes.update()
var dragging : bool = false
var zooming : bool = false
func _on_gui_input(event):
var need_update : bool = false
@ -56,24 +57,32 @@ func _on_gui_input(event):
var multiplier : float = min(rect_size.x, rect_size.y)
var image_rect : Rect2 = get_global_rect()
var offset_from_center : Vector2 = get_global_mouse_position()-(image_rect.position+0.5*image_rect.size)
var new_scale : float = scale
if event is InputEventMouseButton:
if event.pressed:
var new_scale : float = scale
if event.button_index == BUTTON_WHEEL_DOWN:
new_scale = min(new_scale*1.05, 5)
new_scale = min(new_scale*1.05, 5.0)
elif event.button_index == BUTTON_WHEEL_UP:
new_scale = max(new_scale*0.95, 0.005)
elif event.button_index == BUTTON_MIDDLE:
dragging = true
if new_scale != scale:
new_center = center+offset_from_center*(scale-new_scale)/multiplier
scale = new_scale
need_update = true
elif event.button_index == BUTTON_MIDDLE:
elif event.button_index == BUTTON_LEFT:
if event.shift:
dragging = true
elif event.command:
zooming = true
else:
dragging = false
zooming = false
elif event is InputEventMouseMotion:
if dragging:
new_center = center-event.relative*scale/multiplier
elif zooming:
new_scale = clamp(new_scale*(1.0+0.01*event.relative.y), 0.005, 5.0)
if new_scale != scale:
new_center = center+offset_from_center*(scale-new_scale)/multiplier
scale = new_scale
need_update = true
if new_center != center:
center.x = clamp(new_center.x, 0.0, 1.0)
center.y = clamp(new_center.y, 0.0, 1.0)