@tool
class_name GUIDEInputMouseAxis2D
extends GUIDEInput


# 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()
	_value.x = delta.x
	_value.y = delta.y
		
func is_same_as(other:GUIDEInput):
	return other is GUIDEInputMouseAxis2D


func _to_string():
	return "(GUIDEInputMouseAxis2D)"


func _editor_name() -> String:
	return "Mouse Axis 2D"

	
func _editor_description() -> String:
	return "Relative mouse movement on 2 axes."


func _native_value_type() -> GUIDEAction.GUIDEActionValueType:
	return GUIDEAction.GUIDEActionValueType.AXIS_2D
