aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.gd1
-rw-r--r--pointer_input_sensor.gd19
-rw-r--r--touch_item_list/touch_item_list.gd13
-rw-r--r--touch_vertical_container/touch_vertical_container.gd19
4 files changed, 32 insertions, 20 deletions
diff --git a/main.gd b/main.gd
index 614c9b1..5a78ede 100644
--- a/main.gd
+++ b/main.gd
@@ -24,6 +24,7 @@ func _init():
func _ready():
+ Input.set_use_accumulated_input(false)
confirm_action.get_cancel().connect("pressed", self, "dialog_cancelled", ["confirmed"])
file_picker.get_cancel().connect("pressed", self, "dialog_cancelled", ["file_selected"])
diff --git a/pointer_input_sensor.gd b/pointer_input_sensor.gd
index be4d158..588bb81 100644
--- a/pointer_input_sensor.gd
+++ b/pointer_input_sensor.gd
@@ -70,18 +70,19 @@ func _gui_input(event: InputEvent):
return
pointer.event = event
-# pointer.index = -1
-# pointer.scroll = 0.0
-# pointer.action = PointerInputAction.UNDEFINED
-# pointer.velocity = Vector2.ZERO
+ pointer.action = PointerInputAction.UNDEFINED
+ pointer.velocity = Vector2.ZERO
+ pointer.relative_position = Vector2.ZERO
+ pointer.scroll = 0.0
+ pointer.current_position = get_global_mouse_position()
if event is InputEventScreenTouch && (pointer.is_pressed == false || pointer.index == event.index):
var touch := event as InputEventScreenTouch
pointer.is_pressed = event.pressed
- pointer.current_position = get_global_mouse_position()
+
if pointer.is_pressed:
pointer.index = touch.index
- pointer.initial_position = get_global_mouse_position()
+ pointer.initial_position = pointer.current_position
pointer.action = PointerInputAction.ON_PRESS
emit_signal("on_press", pointer)
else:
@@ -95,14 +96,9 @@ 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
- pointer.current_position = get_global_mouse_position()
pointer.velocity = drag.speed
pointer.relative_position = drag.relative
if pointer.was_dragged == false && pointer.current_position.distance_to(pointer.initial_position) > drag_threshold_cm * screen_dpcm:
@@ -112,7 +108,6 @@ func _gui_input(event: InputEvent):
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
diff --git a/touch_item_list/touch_item_list.gd b/touch_item_list/touch_item_list.gd
index 8b79431..67f88d7 100644
--- a/touch_item_list/touch_item_list.gd
+++ b/touch_item_list/touch_item_list.gd
@@ -1,12 +1,13 @@
extends ItemList
class_name TouchItemList
-const POINTER_VELOCITY_DECAYING_FACTOR: float = 2.5
-const POINTER_VELOCITY_BOOST_FACTOR: float = 1.5
+const POINTER_VELOCITY_DECAYING_FACTOR: float = PI
+const POINTER_VELOCITY_BOOST_FACTOR: float = 1.25
const EXACT_SELECTION: bool = false
var is_pointer_dragging := false
var pointer_drag_velocity := 0.0
+var when_last_dragged := 0
onready var sensor := get_node("sensor") as PointerInputSensor
onready var v_scroll_bar := get_v_scroll() as ScrollBar
@@ -37,13 +38,17 @@ func pointer_input_on_drag_handler(pointer: PointerInputSensor.PointerInputData)
var reported_velocity_abs := abs(pointer.velocity.y)
var relative_velocity := pointer.relative_position.y * Engine.get_frames_per_second()
var relative_velocity_abs := abs(relative_velocity)
- var max_velocity := pointer.velocity.y if reported_velocity_abs > relative_velocity_abs else relative_velocity
- pointer_drag_velocity = max_velocity * POINTER_VELOCITY_BOOST_FACTOR
+ pointer_drag_velocity = pointer.velocity.y if reported_velocity_abs > relative_velocity_abs else relative_velocity
v_scroll_bar.value -= pointer.relative_position.y
+ when_last_dragged = OS.get_ticks_msec()
func pointer_input_on_end_drag_handler(pointer: PointerInputSensor.PointerInputData):
is_pointer_dragging = false
+ if OS.get_ticks_msec() - when_last_dragged > 20:
+ pointer_drag_velocity = 0.0
+ else:
+ pointer_drag_velocity *= POINTER_VELOCITY_BOOST_FACTOR
func pointer_input_on_click_handler(pointer: PointerInputSensor.PointerInputData):
diff --git a/touch_vertical_container/touch_vertical_container.gd b/touch_vertical_container/touch_vertical_container.gd
index 07b8714..4633c64 100644
--- a/touch_vertical_container/touch_vertical_container.gd
+++ b/touch_vertical_container/touch_vertical_container.gd
@@ -1,11 +1,12 @@
extends ScrollContainer
class_name TouchVerticalContainer
-const POINTER_VELOCITY_DECAYING_FACTOR: float = 2.5
-const POINTER_VELOCITY_BOOST_FACTOR: float = 1.5
+const POINTER_VELOCITY_DECAYING_FACTOR: float = PI
+const POINTER_VELOCITY_BOOST_FACTOR: float = 1.25
var is_pointer_dragging := false
var pointer_drag_velocity := 0.0
+var when_last_dragged := 0
var exclude_controls := []
onready var controls = get_node("controls")
@@ -34,6 +35,7 @@ func _ready():
sensor.connect("on_drag", self, "pointer_input_on_drag_handler")
sensor.connect("on_end_drag", self, "pointer_input_on_end_drag_handler")
sensor.connect("on_click", self, "pointer_input_on_click_handler")
+ sensor.connect("on_scroll", self, "pointer_input_on_scroll_handler")
func _process(delta: float):
@@ -53,13 +55,17 @@ func pointer_input_on_drag_handler(pointer: PointerInputSensor.PointerInputData)
var reported_velocity_abs := abs(pointer.velocity.y)
var relative_velocity := pointer.relative_position.y * Engine.get_frames_per_second()
var relative_velocity_abs := abs(relative_velocity)
- var max_velocity := pointer.velocity.y if reported_velocity_abs > relative_velocity_abs else relative_velocity
- pointer_drag_velocity = max_velocity * POINTER_VELOCITY_BOOST_FACTOR
+ pointer_drag_velocity = pointer.velocity.y if reported_velocity_abs > relative_velocity_abs else relative_velocity
self.scroll_vertical -= pointer.relative_position.y
+ when_last_dragged = OS.get_ticks_msec()
func pointer_input_on_end_drag_handler(pointer: PointerInputSensor.PointerInputData):
is_pointer_dragging = false
+ if OS.get_ticks_msec() - when_last_dragged > 20:
+ pointer_drag_velocity = 0.0
+ else:
+ pointer_drag_velocity *= POINTER_VELOCITY_BOOST_FACTOR
func pointer_input_on_click_handler(pointer: PointerInputSensor.PointerInputData):
@@ -105,3 +111,8 @@ func pointer_input_on_click_handler(pointer: PointerInputSensor.PointerInputData
break
+func pointer_input_on_scroll_handler(pointer: PointerInputSensor.PointerInputData):
+ var target := self
+ target._gui_input(pointer.event)
+
+