60 lines
1.4 KiB
GDScript
60 lines
1.4 KiB
GDScript
## An input that mirrors the action's value while the action is triggered.
|
|
@tool
|
|
class_name GUIDEInputAction
|
|
extends GUIDEInput
|
|
|
|
## The action that this input should mirror. This is live tracked, so any change in
|
|
## the action will update the input.
|
|
@export var action:GUIDEAction:
|
|
set(value):
|
|
if value == action:
|
|
return
|
|
action = value
|
|
emit_changed()
|
|
|
|
func _begin_usage():
|
|
if is_instance_valid(action):
|
|
action.triggered.connect(_on)
|
|
action.completed.connect(_off)
|
|
action.ongoing.connect(_off)
|
|
if action.is_triggered():
|
|
_on()
|
|
return
|
|
# not triggered or no action.
|
|
_off()
|
|
|
|
|
|
func _end_usage():
|
|
if is_instance_valid(action):
|
|
action.triggered.disconnect(_on)
|
|
action.completed.disconnect(_off)
|
|
action.ongoing.disconnect(_off)
|
|
|
|
|
|
func _on() -> void:
|
|
# on is only called when the action is actually existing, so this is
|
|
# always not-null here
|
|
_value = action.value_axis_3d
|
|
|
|
func _off() -> void:
|
|
_value = Vector3.ZERO
|
|
|
|
|
|
func is_same_as(other:GUIDEInput) -> bool:
|
|
return other is GUIDEInputAction and other.action == action
|
|
|
|
|
|
func _to_string():
|
|
return "(GUIDEInputAction: " + str(action) + ")"
|
|
|
|
func _editor_name() -> String:
|
|
return "Action"
|
|
|
|
|
|
func _editor_description() -> String:
|
|
return "An input that mirrors the action's value while the action is triggered."
|
|
|
|
|
|
func _native_value_type() -> GUIDEAction.GUIDEActionValueType:
|
|
return GUIDEAction.GUIDEActionValueType.AXIS_3D
|