1
0
Fork 0
spacetac/core/ui/inputs.gd
2022-10-24 00:50:48 +02:00

37 lines
916 B
GDScript

extends Control
signal scrolled(diff: Vector2)
signal clicked(pos: Vector2)
signal zoomed(diff: float)
var pressed = false
func _ready():
get_viewport().connect("size_changed", resize)
resize()
func resize():
set_deferred("size", get_viewport().size)
func _gui_input(event):
if event is InputEventMouseMotion:
if event.button_mask & MOUSE_BUTTON_LEFT:
pressed = false
scrolled.emit(event.relative)
accept_event()
if event is InputEventMouseButton:
if event.pressed:
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
zoomed.emit(signf(event.factor))
accept_event()
elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
zoomed.emit(-signf(event.factor))
accept_event()
elif event.button_index == MOUSE_BUTTON_LEFT:
pressed = true
else:
if event.button_index == MOUSE_BUTTON_LEFT and pressed:
accept_event()
pressed = false
clicked.emit(event.position)