Skip to content

Instantly share code, notes, and snippets.

@BrastenXBL
Last active June 12, 2024 17:03
Show Gist options
  • Save BrastenXBL/192ba78ee7207b9b3f72a99cee02a601 to your computer and use it in GitHub Desktop.
Save BrastenXBL/192ba78ee7207b9b3f72a99cee02a601 to your computer and use it in GitHub Desktop.
extends Button #replace with other BaseButton classes as needed
@export var action : StringName
@export var feedback : bool = true
func _input(event):
if event.is_action_pressed(action):
accept_event()
var toggle_mode_default
if feedback:
toggle_mode_default = toggle_mode
toggle_mode = true
button_pressed = true
button_down.emit()
# BaseButton does not emit pressed when set_pressed(true)
# It emits toggled. This forces pressed emit.
if action_mode == ActionMode.ACTION_MODE_BUTTON_PRESS:
#_pressed() #Uncomment if script includes a func _pressed().
pressed.emit()
# Provide visual feedback by Toggling the button on.
if feedback:
var feedback_timer = get_tree().create_timer(ProjectSettings.get_setting("gui/timers/button_shortcut_feedback_highlight_time"))
await feedback_timer.timeout
button_pressed = false
toggle_mode = toggle_mode_default
# Default, pressed emits just before button_up. See action_mode.
if action_mode == ActionMode.ACTION_MODE_BUTTON_RELEASE:
#_pressed() #Uncomment if script includes a func _pressed().
pressed.emit()
button_up.emit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment