aboutsummaryrefslogtreecommitdiff
path: root/pointer_input_sensor.gd
diff options
context:
space:
mode:
authordam <dam@gudinoff>2022-01-09 01:25:55 +0000
committerdam <dam@gudinoff>2022-01-09 01:25:55 +0000
commit5ba40857cdc770841d216a27e2a9e8bb3ebf3186 (patch)
tree2212f9685067270285265c81208fd5122a760d5d /pointer_input_sensor.gd
parent431f042390ad36297a5ec986772c77da23b7fb67 (diff)
downloadsurgery-log-5ba40857cdc770841d216a27e2a9e8bb3ebf3186.tar.zst
surgery-log-5ba40857cdc770841d216a27e2a9e8bb3ebf3186.zip
Split touch logic from database. Prototype of popup with list of options.
Diffstat (limited to 'pointer_input_sensor.gd')
-rw-r--r--pointer_input_sensor.gd22
1 files changed, 22 insertions, 0 deletions
diff --git a/pointer_input_sensor.gd b/pointer_input_sensor.gd
index 27f257c..ee5e390 100644
--- a/pointer_input_sensor.gd
+++ b/pointer_input_sensor.gd
@@ -12,6 +12,7 @@ signal on_exit
signal on_begin_drag
signal on_drag
signal on_end_drag
+signal on_scroll
enum PointerInputAction {
UNDEFINED,
@@ -25,10 +26,12 @@ enum PointerInputAction {
ON_BEGIN_DRAG,
ON_DRAG,
ON_END_DRAG,
+ ON_SCROLL,
}
class PointerInputData:
var target: PointerInputSensor
+ var event: InputEvent
var index := -1
var initial_position := Vector2.ZERO
var current_position := Vector2.ZERO
@@ -36,8 +39,10 @@ class PointerInputData:
var velocity := Vector2.ZERO
var was_dragged := false
var is_pressed := false
+ var scroll := 0.0
var action: int = PointerInputAction.UNDEFINED
+
export var drag_threshold_cm: float = 0.250
var pointer: PointerInputData
@@ -64,6 +69,12 @@ func _gui_input(event: InputEvent):
if event.index != 0:
return
+ pointer.event = event
+# pointer.index = -1
+# pointer.scroll = 0.0
+# pointer.action = PointerInputAction.UNDEFINED
+# pointer.velocity = Vector2.ZERO
+
if event is InputEventScreenTouch && (pointer.is_pressed == false || pointer.index == event.index):
var touch := event as InputEventScreenTouch
pointer.is_pressed = event.pressed
@@ -84,6 +95,10 @@ func _gui_input(event: InputEvent):
emit_signal("on_end_drag", pointer)
pointer.index = -1
pointer.was_dragged = false
+ # @DAM Maybe add this.
+# pointer.initial_position = Vector2.ZERO
+# pointer.current_position = Vector2.ZERO
+# pointer.relative_position = Vector2.ZERO
if event is InputEventScreenDrag && event.index == pointer.index:
var drag := event as InputEventScreenDrag
@@ -96,5 +111,12 @@ func _gui_input(event: InputEvent):
emit_signal("on_begin_drag", pointer)
pointer.action = PointerInputAction.ON_DRAG
emit_signal("on_drag", pointer)
+
+ # @DAM Clean this code please.
+ if event is InputEventMouseButton && event.is_pressed():
+ if event.button_index == BUTTON_WHEEL_UP || event.button_index == BUTTON_WHEEL_DOWN:
+ pointer.scroll = -1.0 if event.button_index == BUTTON_WHEEL_UP else 1.0
+ pointer.action = PointerInputAction.ON_SCROLL
+ emit_signal("on_scroll", pointer)