From 6542994a25cd4dc82ac8251149ad434f598f12c4 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Sun, 29 Dec 2019 17:59:48 -0600 Subject: [PATCH] Initial support for touchscreen swipe left/right/up/down. --- ScreenReader.gd | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/ScreenReader.gd b/ScreenReader.gd index 199f9e4..8ff7839 100644 --- a/ScreenReader.gd +++ b/ScreenReader.gd @@ -1,8 +1,18 @@ tool extends Node +signal swipe_left + +signal swipe_right + +signal swipe_up + +signal swipe_down + var Accessible = preload("Accessible.gd") +export var explore_by_touch_distance = 5 + var focus_restore_timer func focused(node): @@ -66,9 +76,39 @@ func set_initial_scene_focus(scene): func _enter_tree(): get_tree().connect("node_added", self, "augment_tree") +var touch_index = null + +var touch_position = null + +var explore_by_touch = false + func _input(event): if event is InputEventScreenTouch: - pass + print(event.position) + get_tree().set_input_as_handled() + if touch_index and event.index != touch_index: + return + if event.pressed: + touch_index = event.index + touch_position = event.position + else: + touch_index = null + var relative = event.position - touch_position + if abs(relative.x) > abs(relative.y): + if relative.x > 0: + emit_signal("swipe_right") + else: + emit_signal("swipe_left") + else: + if relative.y > 0: + emit_signal("swipe_down") + else: + emit_signal("swipe_up") + touch_position = null + explore_by_touch = false + elif event is InputEventScreenDrag: + if touch_index and event.index != touch_index: + return func _process(delta): if focus_restore_timer and focus_restore_timer.time_left <= 0: