diff options
Diffstat (limited to 'pointer_input_sensor.gd')
| -rw-r--r-- | pointer_input_sensor.gd | 22 |
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) |
