37 lines
916 B
GDScript
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)
|