Make Button shortcuts triggerable by gamepads

This closes #25741.
This commit is contained in:
Hugo Locurcio 2019-02-16 00:26:07 +01:00
parent f5477ee36f
commit b54910eb05
No known key found for this signature in database
GPG key ID: 39E8F8BE30B0A49C
2 changed files with 12 additions and 3 deletions

View file

@ -749,6 +749,15 @@ bool InputEventJoypadButton::action_match(const Ref<InputEvent> &p_event, bool *
return match;
}
bool InputEventJoypadButton::shortcut_match(const Ref<InputEvent> &p_event) const {
Ref<InputEventJoypadButton> button = p_event;
if (button.is_null())
return false;
return button_index == button->button_index;
}
String InputEventJoypadButton::as_text() const {
return "InputEventJoypadButton : button_index=" + itos(button_index) + ", pressed=" + (pressed ? "true" : "false") + ", pressure=" + String(Variant(pressure));
@ -950,11 +959,10 @@ bool InputEventAction::is_pressed() const {
}
bool InputEventAction::shortcut_match(const Ref<InputEvent> &p_event) const {
Ref<InputEventKey> event = p_event;
if (event.is_null())
if (p_event.is_null())
return false;
return event->is_action(action);
return p_event->is_action(action);
}
bool InputEventAction::is_action(const StringName &p_action) const {

View file

@ -400,6 +400,7 @@ public:
float get_pressure() const;
virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const;
virtual bool shortcut_match(const Ref<InputEvent> &p_event) const;
virtual bool is_action_type() const { return true; }
virtual String as_text() const;