Allow checking for exact matches with Action events.
Added additional param to action related methods to test for exactness.
If "p_exact_match" is true, then the action will only be "matched" if the provided input event *exactly* matches with the action event.
Before:
* Action Event = KEY_S
* Input Event = KEY_CONTROL + KEY_S
* Is Action Pressed = True
Now:
You can still do the above, however you can optionally check that the input is exactly what the action event is:
* Action Event = KEY_S
* Input Event = KEY_CONTROL + KEY_S
* p_exact_match = True
* Is Action Pressed = False
* If the Input Event was only KEY_S, then the result would be true.
Usage:
```gdscript
Input.is_action_pressed(action_name: String, exact_match: bool)
Input.is_action_pressed("my_action", true)
InputMap.event_is_action(p_event, "my_action", true)
func _input(event: InputEvent):
event.is_action_pressed("my_action", false, true) # false = "allow_echo", true = "exact_match"
event.is_action("my_action", true)
```
This commit is contained in:
parent
0762484473
commit
b2f032e1a5
6 changed files with 70 additions and 50 deletions
|
|
@ -116,6 +116,7 @@ private:
|
|||
uint64_t physics_frame;
|
||||
uint64_t idle_frame;
|
||||
bool pressed;
|
||||
bool exact;
|
||||
float strength;
|
||||
float raw_strength;
|
||||
};
|
||||
|
|
@ -261,11 +262,11 @@ public:
|
|||
bool is_key_pressed(int p_keycode) const;
|
||||
bool is_mouse_button_pressed(int p_button) const;
|
||||
bool is_joy_button_pressed(int p_device, int p_button) const;
|
||||
bool is_action_pressed(const StringName &p_action) const;
|
||||
bool is_action_just_pressed(const StringName &p_action) const;
|
||||
bool is_action_just_released(const StringName &p_action) const;
|
||||
float get_action_strength(const StringName &p_action) const;
|
||||
float get_action_raw_strength(const StringName &p_action) const;
|
||||
bool is_action_pressed(const StringName &p_action, bool p_exact = false) const;
|
||||
bool is_action_just_pressed(const StringName &p_action, bool p_exact = false) const;
|
||||
bool is_action_just_released(const StringName &p_action, bool p_exact = false) const;
|
||||
float get_action_strength(const StringName &p_action, bool p_exact = false) const;
|
||||
float get_action_raw_strength(const StringName &p_action, bool p_exact = false) const;
|
||||
|
||||
float get_axis(const StringName &p_negative_action, const StringName &p_positive_action) const;
|
||||
Vector2 get_vector(const StringName &p_negative_x, const StringName &p_positive_x, const StringName &p_negative_y, const StringName &p_positive_y, float p_deadzone = -1.0f) const;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue