@@ -77,6 +77,10 @@ Input *Input::singleton = nullptr;
7777
7878void (*Input::set_mouse_mode_func)(Input::MouseMode) = nullptr ;
7979Input::MouseMode (*Input::get_mouse_mode_func)() = nullptr;
80+ void (*Input::set_mouse_mode_override_func)(Input::MouseMode) = nullptr ;
81+ Input::MouseMode (*Input::get_mouse_mode_override_func)() = nullptr;
82+ void (*Input::set_mouse_mode_override_enabled_func)(bool ) = nullptr ;
83+ bool (*Input::is_mouse_mode_override_enabled_func)() = nullptr ;
8084void (*Input::warp_mouse_func)(const Vector2 &p_position) = nullptr ;
8185Input::CursorShape (*Input::get_current_cursor_shape_func)() = nullptr;
8286void (*Input::set_custom_mouse_cursor_func)(const Ref<Resource> &, Input::CursorShape, const Vector2 &) = nullptr ;
@@ -86,51 +90,29 @@ Input *Input::get_singleton() {
8690}
8791
8892void Input::set_mouse_mode (MouseMode p_mode) {
89- ERR_FAIL_INDEX ((int )p_mode, 5 );
90-
91- if (p_mode == mouse_mode) {
92- return ;
93- }
94-
95- // Allow to be set even if overridden, to see if the platform allows the mode.
93+ ERR_FAIL_INDEX (p_mode, MouseMode::MOUSE_MODE_MAX);
9694 set_mouse_mode_func (p_mode);
97- mouse_mode = get_mouse_mode_func ();
98-
99- if (mouse_mode_override_enabled) {
100- set_mouse_mode_func (mouse_mode_override);
101- }
10295}
10396
10497Input::MouseMode Input::get_mouse_mode () const {
105- return mouse_mode ;
98+ return get_mouse_mode_func () ;
10699}
107100
108- void Input::set_mouse_mode_override_enabled (bool p_enabled) {
109- if (p_enabled == mouse_mode_override_enabled) {
110- return ;
111- }
112-
113- mouse_mode_override_enabled = p_enabled;
114-
115- if (p_enabled) {
116- set_mouse_mode_func (mouse_mode_override);
117- mouse_mode_override = get_mouse_mode_func ();
118- } else {
119- set_mouse_mode_func (mouse_mode);
120- }
101+ void Input::set_mouse_mode_override (MouseMode p_mode) {
102+ ERR_FAIL_INDEX (p_mode, MouseMode::MOUSE_MODE_MAX);
103+ set_mouse_mode_override_func (p_mode);
121104}
122105
123- void Input::set_mouse_mode_override (MouseMode p_mode) {
124- ERR_FAIL_INDEX ((int )p_mode, 5 );
106+ Input::MouseMode Input::get_mouse_mode_override () const {
107+ return get_mouse_mode_override_func ();
108+ }
125109
126- if (p_mode == mouse_mode_override ) {
127- return ;
128- }
110+ void Input::set_mouse_mode_override_enabled ( bool p_override_enabled ) {
111+ set_mouse_mode_override_enabled_func (p_override_enabled) ;
112+ }
129113
130- if (mouse_mode_override_enabled) {
131- set_mouse_mode_func (p_mode);
132- mouse_mode_override = get_mouse_mode_func ();
133- }
114+ bool Input::is_mouse_mode_override_enabled () {
115+ return is_mouse_mode_override_enabled_func ();
134116}
135117
136118void Input::_bind_methods () {
@@ -199,6 +181,7 @@ void Input::_bind_methods() {
199181 BIND_ENUM_CONSTANT (MOUSE_MODE_CAPTURED);
200182 BIND_ENUM_CONSTANT (MOUSE_MODE_CONFINED);
201183 BIND_ENUM_CONSTANT (MOUSE_MODE_CONFINED_HIDDEN);
184+ BIND_ENUM_CONSTANT (MOUSE_MODE_MAX);
202185
203186 BIND_ENUM_CONSTANT (CURSOR_ARROW);
204187 BIND_ENUM_CONSTANT (CURSOR_IBEAM);
0 commit comments