Files
MovementTests/addons/guide/inputs/guide_input_joy_axis_2d.gd
2025-05-27 19:20:46 +02:00

54 lines
1.2 KiB
GDScript

## Input from two joy axes.
class_name GUIDEInputJoyAxis2D
extends GUIDEInputJoyBase
## The joy axis to sample for x input.
@export var x:JoyAxis = JOY_AXIS_LEFT_X:
set(value):
if value == x:
return
x = value
emit_changed()
## The joy axis to sample for y input.
@export var y:JoyAxis = JOY_AXIS_LEFT_Y:
set(value):
if value == y:
return
y = value
emit_changed()
func _begin_usage() -> void:
_state.joy_axis_state_changed.connect(_refresh)
_refresh()
func _end_usage() -> void:
_state.joy_axis_state_changed.disconnect(_refresh)
func _refresh():
_value.x = _state.get_joy_axis_value(joy_index, x)
_value.y = _state.get_joy_axis_value(joy_index, y)
func is_same_as(other:GUIDEInput) -> bool:
return other is GUIDEInputJoyAxis2D and \
other.x == x and \
other.y == y and \
other.joy_index == joy_index
func _to_string():
return "(GUIDEInputJoyAxis2D: x=" + str(x) + ", y=" + str(y) + ", joy_index=" + str(joy_index) + ")"
func _editor_name() -> String:
return "Joy Axis 2D"
func _editor_description() -> String:
return "The input from two Joy axes. Usually from a stick."
func _native_value_type() -> GUIDEAction.GUIDEActionValueType:
return GUIDEAction.GUIDEActionValueType.AXIS_2D