gd: added input addon
This commit is contained in:
57
addons/guide/inputs/guide_input_mouse_axis_1d.gd
Normal file
57
addons/guide/inputs/guide_input_mouse_axis_1d.gd
Normal file
@ -0,0 +1,57 @@
|
||||
@tool
|
||||
class_name GUIDEInputMouseAxis1D
|
||||
extends GUIDEInput
|
||||
|
||||
enum GUIDEInputMouseAxis {
|
||||
X,
|
||||
Y
|
||||
}
|
||||
|
||||
@export var axis:GUIDEInputMouseAxis:
|
||||
set(value):
|
||||
if value == axis:
|
||||
return
|
||||
axis = value
|
||||
emit_changed()
|
||||
|
||||
# we don't get mouse updates when the mouse is not moving, so this needs to be
|
||||
# reset every frame
|
||||
func _needs_reset() -> bool:
|
||||
return true
|
||||
|
||||
|
||||
func _begin_usage() -> void:
|
||||
# subscribe to mouse movement events
|
||||
_state.mouse_position_changed.connect(_refresh)
|
||||
_refresh()
|
||||
|
||||
func _end_usage() -> void:
|
||||
# unsubscribe from mouse movement events
|
||||
_state.mouse_position_changed.disconnect(_refresh)
|
||||
|
||||
func _refresh() -> void:
|
||||
var delta:Vector2 = _state.get_mouse_delta_since_last_frame()
|
||||
match axis:
|
||||
GUIDEInputMouseAxis.X:
|
||||
_value.x = delta.x
|
||||
GUIDEInputMouseAxis.Y:
|
||||
_value.x = delta.y
|
||||
|
||||
|
||||
func is_same_as(other:GUIDEInput):
|
||||
return other is GUIDEInputMouseAxis1D and other.axis == axis
|
||||
|
||||
func _to_string():
|
||||
return "(GUIDEInputMouseAxis1D: axis=" + str(axis) + ")"
|
||||
|
||||
|
||||
func _editor_name() -> String:
|
||||
return "Mouse Axis 1D"
|
||||
|
||||
|
||||
func _editor_description() -> String:
|
||||
return "Relative mouse movement on a single axis."
|
||||
|
||||
|
||||
func _native_value_type() -> GUIDEAction.GUIDEActionValueType:
|
||||
return GUIDEAction.GUIDEActionValueType.AXIS_1D
|
Reference in New Issue
Block a user