diff options
Diffstat (limited to 'core/input/input.h')
| -rw-r--r-- | core/input/input.h | 43 | 
1 files changed, 21 insertions, 22 deletions
diff --git a/core/input/input.h b/core/input/input.h index 775663503b..99b45db325 100644 --- a/core/input/input.h +++ b/core/input/input.h @@ -5,8 +5,8 @@  /*                           GODOT ENGINE                                */  /*                      https://godotengine.org                          */  /*************************************************************************/ -/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md).   */ +/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */ +/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */  /*                                                                       */  /* Permission is hereby granted, free of charge, to any person obtaining */  /* a copy of this software and associated documentation files (the       */ @@ -32,7 +32,7 @@  #define INPUT_H  #include "core/input/input_event.h" -#include "core/object.h" +#include "core/object/object.h"  #include "core/os/thread_safe.h"  class Input : public Object { @@ -91,7 +91,7 @@ public:  		JOYPADS_MAX = 16,  	}; -	struct JoyAxis { +	struct JoyAxisValue {  		int min;  		float value;  	}; @@ -114,9 +114,11 @@ private:  	struct Action {  		uint64_t physics_frame; -		uint64_t idle_frame; +		uint64_t process_frame;  		bool pressed; +		bool exact;  		float strength; +		float raw_strength;  	};  	Map<StringName, Action> action_state; @@ -146,7 +148,6 @@ private:  		bool connected = false;  		bool last_buttons[JOY_BUTTON_MAX] = { false };  		float last_axis[JOY_AXIS_MAX] = { 0.0f }; -		float filter = 0.01f;  		int last_hat = HAT_MASK_CENTER;  		int mapping = -1;  		int hat_current = 0; @@ -198,10 +199,10 @@ private:  		JoyType outputType;  		union { -			JoyButtonList button; +			JoyButton button;  			struct { -				JoyAxisList axis; +				JoyAxis axis;  				JoyAxisRange range;  			} axis; @@ -217,13 +218,12 @@ private:  	Vector<JoyDeviceMapping> map_db;  	JoyEvent _get_mapped_button_event(const JoyDeviceMapping &mapping, int p_button); -	JoyEvent _get_mapped_axis_event(const JoyDeviceMapping &mapping, int p_axis, const JoyAxis &p_value); +	JoyEvent _get_mapped_axis_event(const JoyDeviceMapping &mapping, int p_axis, float p_value);  	void _get_mapped_hat_events(const JoyDeviceMapping &mapping, int p_hat, JoyEvent r_events[HAT_MAX]); -	JoyButtonList _get_output_button(String output); -	JoyAxisList _get_output_axis(String output); +	JoyButton _get_output_button(String output); +	JoyAxis _get_output_axis(String output);  	void _button_event(int p_device, int p_index, bool p_pressed);  	void _axis_event(int p_device, int p_axis, float p_value); -	float _handle_deadzone(int p_device, int p_axis, float p_value);  	void _parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_emulated); @@ -262,10 +262,14 @@ 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; +	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;  	float get_joy_axis(int p_device, int p_axis) const;  	String get_joy_name(int p_idx); @@ -321,17 +325,12 @@ public:  	void parse_mapping(String p_mapping);  	void joy_button(int p_device, int p_button, bool p_pressed); -	void joy_axis(int p_device, int p_axis, const JoyAxis &p_value); +	void joy_axis(int p_device, int p_axis, const JoyAxisValue &p_value);  	void joy_hat(int p_device, int p_val);  	void add_joy_mapping(String p_mapping, bool p_update_existing = false);  	void remove_joy_mapping(String p_guid); -	String get_joy_button_string(int p_button); -	String get_joy_axis_string(int p_axis); -	int get_joy_axis_index_from_string(String p_axis); -	int get_joy_button_index_from_string(String p_button); -  	int get_unused_joy_id();  	bool is_joy_known(int p_device);  |