diff options
Diffstat (limited to 'core/input')
-rw-r--r-- | core/input/input.cpp | 142 | ||||
-rw-r--r-- | core/input/input.h | 1 | ||||
-rw-r--r-- | core/input/input_event.cpp | 242 | ||||
-rw-r--r-- | core/input/input_event.h | 11 | ||||
-rw-r--r-- | core/input/input_map.cpp | 50 | ||||
-rw-r--r-- | core/input/input_map.h | 1 |
6 files changed, 138 insertions, 309 deletions
diff --git a/core/input/input.cpp b/core/input/input.cpp index 38a71994d8..dc1c207524 100644 --- a/core/input/input.cpp +++ b/core/input/input.cpp @@ -129,7 +129,6 @@ Input::CursorShape (*Input::get_current_cursor_shape_func)() = nullptr; void (*Input::set_custom_mouse_cursor_func)(const RES &, Input::CursorShape, const Vector2 &) = nullptr; Input *Input::get_singleton() { - return singleton; } @@ -139,12 +138,10 @@ void Input::set_mouse_mode(MouseMode p_mode) { } Input::MouseMode Input::get_mouse_mode() const { - return get_mouse_mode_func(); } void Input::_bind_methods() { - ClassDB::bind_method(D_METHOD("is_key_pressed", "keycode"), &Input::is_key_pressed); ClassDB::bind_method(D_METHOD("is_mouse_button_pressed", "button"), &Input::is_mouse_button_pressed); ClassDB::bind_method(D_METHOD("is_joy_button_pressed", "device", "button"), &Input::is_joy_button_pressed); @@ -219,15 +216,15 @@ void Input::get_argument_options(const StringName &p_function, int p_idx, List<S String pf = p_function; if (p_idx == 0 && (pf == "is_action_pressed" || pf == "action_press" || pf == "action_release" || pf == "is_action_just_pressed" || pf == "is_action_just_released" || pf == "get_action_strength")) { - List<PropertyInfo> pinfo; ProjectSettings::get_singleton()->get_property_list(&pinfo); for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) { const PropertyInfo &pi = E->get(); - if (!pi.name.begins_with("input/")) + if (!pi.name.begins_with("input/")) { continue; + } String name = pi.name.substr(pi.name.find("/") + 1, pi.name.length()); r_options->push_back(quote_style + name + quote_style); @@ -237,7 +234,6 @@ void Input::get_argument_options(const StringName &p_function, int p_idx, List<S } void Input::SpeedTrack::update(const Vector2 &p_delta_p) { - uint64_t tick = OS::get_singleton()->get_ticks_usec(); uint32_t tdiff = tick - last_tick; float delta_t = tdiff / 1000000.0; @@ -246,11 +242,11 @@ void Input::SpeedTrack::update(const Vector2 &p_delta_p) { accum += p_delta_p; accum_t += delta_t; - if (accum_t > max_ref_frame * 10) + if (accum_t > max_ref_frame * 10) { accum_t = max_ref_frame * 10; + } while (accum_t >= min_ref_frame) { - float slice_t = min_ref_frame / accum_t; Vector2 slice = accum * slice_t; accum = accum - slice; @@ -267,45 +263,39 @@ void Input::SpeedTrack::reset() { } Input::SpeedTrack::SpeedTrack() { - min_ref_frame = 0.1; max_ref_frame = 0.3; reset(); } bool Input::is_key_pressed(int p_keycode) const { - _THREAD_SAFE_METHOD_ return keys_pressed.has(p_keycode); } bool Input::is_mouse_button_pressed(int p_button) const { - _THREAD_SAFE_METHOD_ return (mouse_button_mask & (1 << (p_button - 1))) != 0; } static int _combine_device(int p_value, int p_device) { - return p_value | (p_device << 20); } bool Input::is_joy_button_pressed(int p_device, int p_button) const { - _THREAD_SAFE_METHOD_ return joy_buttons_pressed.has(_combine_device(p_button, p_device)); } bool Input::is_action_pressed(const StringName &p_action) const { - return action_state.has(p_action) && action_state[p_action].pressed; } bool Input::is_action_just_pressed(const StringName &p_action) const { - const Map<StringName, Action>::Element *E = action_state.find(p_action); - if (!E) + if (!E) { return false; + } if (Engine::get_singleton()->is_in_physics_frame()) { return E->get().pressed && E->get().physics_frame == Engine::get_singleton()->get_physics_frames(); @@ -315,10 +305,10 @@ bool Input::is_action_just_pressed(const StringName &p_action) const { } bool Input::is_action_just_released(const StringName &p_action) const { - const Map<StringName, Action>::Element *E = action_state.find(p_action); - if (!E) + if (!E) { return false; + } if (Engine::get_singleton()->is_in_physics_frame()) { return !E->get().pressed && E->get().physics_frame == Engine::get_singleton()->get_physics_frames(); @@ -329,14 +319,14 @@ bool Input::is_action_just_released(const StringName &p_action) const { float Input::get_action_strength(const StringName &p_action) const { const Map<StringName, Action>::Element *E = action_state.find(p_action); - if (!E) + if (!E) { return 0.0f; + } return E->get().strength; } float Input::get_joy_axis(int p_device, int p_axis) const { - _THREAD_SAFE_METHOD_ int c = _combine_device(p_axis, p_device); if (_joy_axis.has(c)) { @@ -347,7 +337,6 @@ float Input::get_joy_axis(int p_device, int p_axis) const { } String Input::get_joy_name(int p_idx) { - _THREAD_SAFE_METHOD_ return joy_names[p_idx].name; }; @@ -377,7 +366,6 @@ float Input::get_joy_vibration_duration(int p_device) { } static String _hex_str(uint8_t p_byte) { - static const char *dict = "0123456789abcdef"; char ret[3]; ret[2] = 0; @@ -389,14 +377,12 @@ static String _hex_str(uint8_t p_byte) { }; void Input::joy_connection_changed(int p_idx, bool p_connected, String p_name, String p_guid) { - _THREAD_SAFE_METHOD_ Joypad js; js.name = p_connected ? p_name : ""; js.uid = p_connected ? p_guid : ""; if (p_connected) { - String uidname = p_guid; if (p_guid == "") { int uidlen = MIN(p_name.length(), 16); @@ -430,36 +416,30 @@ void Input::joy_connection_changed(int p_idx, bool p_connected, String p_name, S }; Vector3 Input::get_gravity() const { - _THREAD_SAFE_METHOD_ return gravity; } Vector3 Input::get_accelerometer() const { - _THREAD_SAFE_METHOD_ return accelerometer; } Vector3 Input::get_magnetometer() const { - _THREAD_SAFE_METHOD_ return magnetometer; } Vector3 Input::get_gyroscope() const { - _THREAD_SAFE_METHOD_ return gyroscope; } void Input::parse_input_event(const Ref<InputEvent> &p_event) { - _parse_input_event_impl(p_event, false); } void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_emulated) { - // Notes on mouse-touch emulation: // - Emulated mouse events are parsed, that is, re-routed to this method, so they make the same effects // as true mouse events. The only difference is the situation is flagged as emulated so they are not @@ -471,16 +451,16 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em Ref<InputEventKey> k = p_event; if (k.is_valid() && !k->is_echo() && k->get_keycode() != 0) { - if (k->is_pressed()) + if (k->is_pressed()) { keys_pressed.insert(k->get_keycode()); - else + } else { keys_pressed.erase(k->get_keycode()); + } } Ref<InputEventMouseButton> mb = p_event; if (mb.is_valid()) { - if (mb->is_pressed()) { mouse_button_mask |= (1 << (mb->get_button_index() - 1)); } else { @@ -504,7 +484,6 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em Ref<InputEventMouseMotion> mm = p_event; if (mm.is_valid()) { - Point2 pos = mm->get_global_position(); if (mouse_pos != pos) { set_mouse_position(pos); @@ -525,7 +504,6 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em Ref<InputEventScreenTouch> st = p_event; if (st.is_valid()) { - if (st->is_pressed()) { SpeedTrack &track = touch_speed_track[st->get_index()]; track.reset(); @@ -536,7 +514,6 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em } if (emulate_mouse_from_touch) { - bool translate = false; if (st->is_pressed()) { if (mouse_from_touch_index == -1) { @@ -573,13 +550,11 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em Ref<InputEventScreenDrag> sd = p_event; if (sd.is_valid()) { - SpeedTrack &track = touch_speed_track[sd->get_index()]; track.update(sd->get_relative()); sd->set_speed(track.speed); if (emulate_mouse_from_touch && sd->get_index() == mouse_from_touch_index) { - Ref<InputEventMouseMotion> motion_event; motion_event.instance(); @@ -597,13 +572,13 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em Ref<InputEventJoypadButton> jb = p_event; if (jb.is_valid()) { - int c = _combine_device(jb->get_button_index(), jb->get_device()); - if (jb->is_pressed()) + if (jb->is_pressed()) { joy_buttons_pressed.insert(c); - else + } else { joy_buttons_pressed.erase(c); + } } Ref<InputEventJoypadMotion> jm = p_event; @@ -615,7 +590,6 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em Ref<InputEventGesture> ge = p_event; if (ge.is_valid()) { - if (event_dispatch_function) { event_dispatch_function(ge); } @@ -623,7 +597,6 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em for (const Map<StringName, InputMap::Action>::Element *E = InputMap::get_singleton()->get_action_map().front(); E; E = E->next()) { if (InputMap::get_singleton()->event_is_action(p_event, E->key())) { - // Save the action's state if (!p_event->is_echo() && is_action_pressed(E->key()) != p_event->is_action_pressed(E->key())) { Action action; @@ -637,12 +610,12 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em } } - if (event_dispatch_function) + if (event_dispatch_function) { event_dispatch_function(p_event); + } } void Input::set_joy_axis(int p_device, int p_axis, float p_value) { - _THREAD_SAFE_METHOD_ int c = _combine_device(p_axis, p_device); _joy_axis[c] = p_value; @@ -676,50 +649,43 @@ void Input::vibrate_handheld(int p_duration_ms) { } void Input::set_gravity(const Vector3 &p_gravity) { - _THREAD_SAFE_METHOD_ gravity = p_gravity; } void Input::set_accelerometer(const Vector3 &p_accel) { - _THREAD_SAFE_METHOD_ accelerometer = p_accel; } void Input::set_magnetometer(const Vector3 &p_magnetometer) { - _THREAD_SAFE_METHOD_ magnetometer = p_magnetometer; } void Input::set_gyroscope(const Vector3 &p_gyroscope) { - _THREAD_SAFE_METHOD_ gyroscope = p_gyroscope; } void Input::set_mouse_position(const Point2 &p_posf) { - mouse_speed_track.update(p_posf - mouse_pos); mouse_pos = p_posf; } Point2 Input::get_mouse_position() const { - return mouse_pos; } -Point2 Input::get_last_mouse_speed() const { +Point2 Input::get_last_mouse_speed() const { return mouse_speed_track.speed; } int Input::get_mouse_button_mask() const { - return mouse_button_mask; // do not trust OS implementation, should remove it - OS::get_singleton()->get_mouse_button_state(); } @@ -728,7 +694,6 @@ void Input::warp_mouse_position(const Vector2 &p_to) { } Point2i Input::warp_mouse_motion(const Ref<InputEventMouseMotion> &p_motion, const Rect2 &p_rect) { - // The relative distance reported for the next event after a warp is in the boundaries of the // size of the rect on that axis, but it may be greater, in which case there's not problem as fmod() // will warp it, but if the pointer has moved in the opposite direction between the pointer relocation @@ -757,7 +722,6 @@ void Input::iteration(float p_step) { } void Input::action_press(const StringName &p_action, float p_strength) { - Action action; action.physics_frame = Engine::get_singleton()->get_physics_frames(); @@ -769,7 +733,6 @@ void Input::action_press(const StringName &p_action, float p_strength) { } void Input::action_release(const StringName &p_action) { - Action action; action.physics_frame = Engine::get_singleton()->get_physics_frames(); @@ -781,19 +744,16 @@ void Input::action_release(const StringName &p_action) { } void Input::set_emulate_touch_from_mouse(bool p_emulate) { - emulate_touch_from_mouse = p_emulate; } bool Input::is_emulating_touch_from_mouse() const { - return emulate_touch_from_mouse; } // Calling this whenever the game window is focused helps unstucking the "touch mouse" // if the OS or its abstraction class hasn't properly reported that touch pointers raised void Input::ensure_touch_mouse_raised() { - if (mouse_from_touch_index != -1) { mouse_from_touch_index = -1; @@ -812,24 +772,21 @@ void Input::ensure_touch_mouse_raised() { } void Input::set_emulate_mouse_from_touch(bool p_emulate) { - emulate_mouse_from_touch = p_emulate; } bool Input::is_emulating_mouse_from_touch() const { - return emulate_mouse_from_touch; } Input::CursorShape Input::get_default_cursor_shape() const { - return default_shape; } void Input::set_default_cursor_shape(CursorShape p_shape) { - - if (default_shape == p_shape) + if (default_shape == p_shape) { return; + } default_shape = p_shape; // The default shape is set in Viewport::_gui_input_event. To instantly @@ -842,13 +799,13 @@ void Input::set_default_cursor_shape(CursorShape p_shape) { } Input::CursorShape Input::get_current_cursor_shape() const { - return get_current_cursor_shape_func(); } void Input::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { - if (Engine::get_singleton()->is_editor_hint()) + if (Engine::get_singleton()->is_editor_hint()) { return; + } set_custom_mouse_cursor_func(p_cursor, p_shape, p_hotspot); } @@ -866,8 +823,8 @@ void Input::accumulate_input_event(const Ref<InputEvent> &p_event) { accumulated_events.push_back(p_event); } -void Input::flush_accumulated_events() { +void Input::flush_accumulated_events() { while (accumulated_events.front()) { parse_input_event(accumulated_events.front()->get()); accumulated_events.pop_front(); @@ -875,12 +832,10 @@ void Input::flush_accumulated_events() { } void Input::set_use_accumulated_input(bool p_enable) { - use_accumulated_input = p_enable; } void Input::release_pressed_events() { - flush_accumulated_events(); // this is needed to release actions strengths keys_pressed.clear(); @@ -888,8 +843,9 @@ void Input::release_pressed_events() { _joy_axis.clear(); for (Map<StringName, Input::Action>::Element *E = action_state.front(); E; E = E->next()) { - if (E->get().pressed) + if (E->get().pressed) { action_release(E->key()); + } } } @@ -898,7 +854,6 @@ void Input::set_event_dispatch_function(EventDispatchFunc p_function) { } void Input::joy_button(int p_device, int p_button, bool p_pressed) { - _THREAD_SAFE_METHOD_; Joypad &joy = joy_names[p_device]; //printf("got button %i, mapping is %i\n", p_button, joy.mapping); @@ -925,7 +880,6 @@ void Input::joy_button(int p_device, int p_button, bool p_pressed) { } void Input::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) { - _THREAD_SAFE_METHOD_; ERR_FAIL_INDEX(p_axis, JOY_AXIS_MAX); @@ -937,13 +891,10 @@ void Input::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) { } if (p_value.value > joy.last_axis[p_axis]) { - if (p_value.value < joy.last_axis[p_axis] + joy.filter) { - return; } } else if (p_value.value > joy.last_axis[p_axis] - joy.filter) { - return; } @@ -972,7 +923,6 @@ void Input::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) { JoyEvent map = _get_mapped_axis_event(map_db[joy.mapping], p_axis, p_value); if (map.type == TYPE_BUTTON) { - if (map.index == JOY_BUTTON_DPAD_UP || map.index == JOY_BUTTON_DPAD_DOWN) { bool pressed = p_value.value != 0.0f; int button = p_value.value < 0 ? JOY_BUTTON_DPAD_UP : JOY_BUTTON_DPAD_DOWN; @@ -1023,7 +973,6 @@ void Input::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) { } if (map.type == TYPE_AXIS) { - _axis_event(p_device, map.index, map.value); return; } @@ -1031,7 +980,6 @@ void Input::joy_axis(int p_device, int p_axis, const JoyAxis &p_value) { } void Input::joy_hat(int p_device, int p_val) { - _THREAD_SAFE_METHOD_; const Joypad &joy = joy_names[p_device]; @@ -1077,7 +1025,6 @@ void Input::joy_hat(int p_device, int p_val) { } void Input::_button_event(int p_device, int p_index, bool p_pressed) { - Ref<InputEventJoypadButton> ievent; ievent.instance(); ievent->set_device(p_device); @@ -1088,7 +1035,6 @@ void Input::_button_event(int p_device, int p_index, bool p_pressed) { } void Input::_axis_event(int p_device, int p_axis, float p_value) { - Ref<InputEventJoypadMotion> ievent; ievent.instance(); ievent->set_device(p_device); @@ -1099,7 +1045,6 @@ void Input::_axis_event(int p_device, int p_axis, float p_value) { }; Input::JoyEvent Input::_get_mapped_button_event(const JoyDeviceMapping &mapping, int p_button) { - JoyEvent event; event.type = TYPE_MAX; @@ -1123,7 +1068,6 @@ Input::JoyEvent Input::_get_mapped_button_event(const JoyDeviceMapping &mapping, } Input::JoyEvent Input::_get_mapped_axis_event(const JoyDeviceMapping &mapping, int p_axis, const JoyAxis &p_value) { - JoyEvent event; event.type = TYPE_MAX; @@ -1131,8 +1075,9 @@ Input::JoyEvent Input::_get_mapped_axis_event(const JoyDeviceMapping &mapping, i const JoyBinding binding = mapping.bindings[i]; if (binding.inputType == TYPE_AXIS && binding.input.axis.axis == p_axis) { float value = p_value.value; - if (binding.input.axis.invert) + if (binding.input.axis.invert) { value = -value; + } if (binding.input.axis.range == FULL_AXIS || (binding.input.axis.range == POSITIVE_HALF_AXIS && value > 0) || (binding.input.axis.range == NEGATIVE_HALF_AXIS && value < 0)) { @@ -1180,11 +1125,9 @@ Input::JoyEvent Input::_get_mapped_axis_event(const JoyDeviceMapping &mapping, i } void Input::_get_mapped_hat_events(const JoyDeviceMapping &mapping, int p_hat, JoyEvent r_events[]) { - for (int i = 0; i < mapping.bindings.size(); i++) { const JoyBinding binding = mapping.bindings[i]; if (binding.inputType == TYPE_HAT && binding.input.hat.hat == p_hat) { - int index; switch (binding.input.hat.hat_mask) { case HAT_MASK_UP: @@ -1220,25 +1163,24 @@ void Input::_get_mapped_hat_events(const JoyDeviceMapping &mapping, int p_hat, J } JoyButtonList Input::_get_output_button(String output) { - for (int i = 0; _joy_buttons[i]; i++) { - if (output == _joy_buttons[i]) + if (output == _joy_buttons[i]) { return JoyButtonList(i); + } } return JoyButtonList::JOY_INVALID_BUTTON; } JoyAxisList Input::_get_output_axis(String output) { - for (int i = 0; _joy_axes[i]; i++) { - if (output == _joy_axes[i]) + if (output == _joy_axes[i]) { return JoyAxisList(i); + } } return JoyAxisList::JOY_INVALID_AXIS; } void Input::parse_mapping(String p_mapping) { - _THREAD_SAFE_METHOD_; JoyDeviceMapping mapping; @@ -1255,26 +1197,28 @@ void Input::parse_mapping(String p_mapping) { int idx = 1; while (++idx < entry.size()) { - - if (entry[idx] == "") + if (entry[idx] == "") { continue; + } String output = entry[idx].get_slice(":", 0).replace(" ", ""); String input = entry[idx].get_slice(":", 1).replace(" ", ""); ERR_CONTINUE_MSG(output.length() < 1 || input.length() < 2, String(entry[idx] + "\nInvalid device mapping entry: " + entry[idx])); - if (output == "platform") + if (output == "platform") { continue; + } JoyAxisRange output_range = FULL_AXIS; if (output[0] == '+' || output[0] == '-') { ERR_CONTINUE_MSG(output.length() < 2, String(entry[idx] + "\nInvalid output: " + entry[idx])); output = output.right(1); - if (output[0] == '+') + if (output[0] == '+') { output_range = POSITIVE_HALF_AXIS; - else if (output[0] == '-') + } else if (output[0] == '-') { output_range = NEGATIVE_HALF_AXIS; + } } JoyAxisRange input_range = FULL_AXIS; @@ -1286,8 +1230,9 @@ void Input::parse_mapping(String p_mapping) { input = input.right(1); } bool invert_axis = false; - if (input[input.length() - 1] == '~') + if (input[input.length() - 1] == '~') { invert_axis = true; + } JoyButtonList output_button = _get_output_button(output); JoyAxisList output_axis = _get_output_axis(output); @@ -1361,7 +1306,6 @@ void Input::remove_joy_mapping(String p_guid) { } void Input::set_fallback_mapping(String p_guid) { - for (int i = 0; i < map_db.size(); i++) { if (map_db[i].uid == p_guid) { fallback_mapping = i; @@ -1431,7 +1375,6 @@ int Input::get_joy_axis_index_from_string(String p_axis) { } Input::Input() { - singleton = this; // Parse default mappings. @@ -1447,8 +1390,9 @@ Input::Input() { if (env_mapping != "") { Vector<String> entries = env_mapping.split("\n"); for (int i = 0; i < entries.size(); i++) { - if (entries[i] == "") + if (entries[i] == "") { continue; + } parse_mapping(entries[i]); } } diff --git a/core/input/input.h b/core/input/input.h index f3150a8127..91e3b83b95 100644 --- a/core/input/input.h +++ b/core/input/input.h @@ -128,7 +128,6 @@ private: int mouse_from_touch_index = -1; struct SpeedTrack { - uint64_t last_tick; Vector2 speed; Vector2 accum; diff --git a/core/input/input_event.cpp b/core/input/input_event.cpp index 9d3f8f9424..6ba082f86f 100644 --- a/core/input/input_event.cpp +++ b/core/input/input_event.cpp @@ -45,26 +45,22 @@ int InputEvent::get_device() const { } bool InputEvent::is_action(const StringName &p_action) const { - return InputMap::get_singleton()->event_is_action(Ref<InputEvent>((InputEvent *)this), p_action); } bool InputEvent::is_action_pressed(const StringName &p_action, bool p_allow_echo) const { - bool pressed; bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, &pressed); return valid && pressed && (p_allow_echo || !is_echo()); } bool InputEvent::is_action_released(const StringName &p_action) const { - bool pressed; bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, &pressed); return valid && !pressed; } float InputEvent::get_action_strength(const StringName &p_action) const { - bool pressed; float strength; bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, &pressed, &strength); @@ -72,42 +68,34 @@ float InputEvent::get_action_strength(const StringName &p_action) const { } bool InputEvent::is_pressed() const { - return false; } bool InputEvent::is_echo() const { - return false; } Ref<InputEvent> InputEvent::xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs) const { - return Ref<InputEvent>((InputEvent *)this); } String InputEvent::as_text() const { - return String(); } bool InputEvent::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { - return false; } bool InputEvent::shortcut_match(const Ref<InputEvent> &p_event) const { - return false; } bool InputEvent::is_action_type() const { - return false; } void InputEvent::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_device", "device"), &InputEvent::set_device); ClassDB::bind_method(D_METHOD("get_device"), &InputEvent::get_device); @@ -135,7 +123,6 @@ void InputEvent::_bind_methods() { /////////////////////////////////// void InputEventFromWindow::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_window_id", "id"), &InputEventFromWindow::set_window_id); ClassDB::bind_method(D_METHOD("get_window_id"), &InputEventFromWindow::get_window_id); ADD_PROPERTY(PropertyInfo(Variant::INT, "window_id"), "set_window_id", "get_window_id"); @@ -144,6 +131,7 @@ void InputEventFromWindow::_bind_methods() { void InputEventFromWindow::set_window_id(int64_t p_id) { window_id = p_id; } + int64_t InputEventFromWindow::get_window_id() const { return window_id; } @@ -151,53 +139,46 @@ int64_t InputEventFromWindow::get_window_id() const { /////////////////////////////////// void InputEventWithModifiers::set_shift(bool p_enabled) { - shift = p_enabled; } bool InputEventWithModifiers::get_shift() const { - return shift; } void InputEventWithModifiers::set_alt(bool p_enabled) { - alt = p_enabled; } -bool InputEventWithModifiers::get_alt() const { +bool InputEventWithModifiers::get_alt() const { return alt; } void InputEventWithModifiers::set_control(bool p_enabled) { - control = p_enabled; } -bool InputEventWithModifiers::get_control() const { +bool InputEventWithModifiers::get_control() const { return control; } void InputEventWithModifiers::set_metakey(bool p_enabled) { - meta = p_enabled; } -bool InputEventWithModifiers::get_metakey() const { +bool InputEventWithModifiers::get_metakey() const { return meta; } void InputEventWithModifiers::set_command(bool p_enabled) { - command = p_enabled; } -bool InputEventWithModifiers::get_command() const { +bool InputEventWithModifiers::get_command() const { return command; } void InputEventWithModifiers::set_modifiers_from_event(const InputEventWithModifiers *event) { - set_alt(event->get_alt()); set_shift(event->get_shift()); set_control(event->get_control()); @@ -205,7 +186,6 @@ void InputEventWithModifiers::set_modifiers_from_event(const InputEventWithModif } void InputEventWithModifiers::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_alt", "enable"), &InputEventWithModifiers::set_alt); ClassDB::bind_method(D_METHOD("get_alt"), &InputEventWithModifiers::get_alt); @@ -231,90 +211,86 @@ void InputEventWithModifiers::_bind_methods() { /////////////////////////////////// void InputEventKey::set_pressed(bool p_pressed) { - pressed = p_pressed; } bool InputEventKey::is_pressed() const { - return pressed; } void InputEventKey::set_keycode(uint32_t p_keycode) { - keycode = p_keycode; } uint32_t InputEventKey::get_keycode() const { - return keycode; } void InputEventKey::set_physical_keycode(uint32_t p_keycode) { - physical_keycode = p_keycode; } uint32_t InputEventKey::get_physical_keycode() const { - return physical_keycode; } void InputEventKey::set_unicode(uint32_t p_unicode) { - unicode = p_unicode; } uint32_t InputEventKey::get_unicode() const { - return unicode; } void InputEventKey::set_echo(bool p_enable) { - echo = p_enable; } bool InputEventKey::is_echo() const { - return echo; } uint32_t InputEventKey::get_keycode_with_modifiers() const { - uint32_t sc = keycode; - if (get_control()) + if (get_control()) { sc |= KEY_MASK_CTRL; - if (get_alt()) + } + if (get_alt()) { sc |= KEY_MASK_ALT; - if (get_shift()) + } + if (get_shift()) { sc |= KEY_MASK_SHIFT; - if (get_metakey()) + } + if (get_metakey()) { sc |= KEY_MASK_META; + } return sc; } uint32_t InputEventKey::get_physical_keycode_with_modifiers() const { - uint32_t sc = physical_keycode; - if (get_control()) + if (get_control()) { sc |= KEY_MASK_CTRL; - if (get_alt()) + } + if (get_alt()) { sc |= KEY_MASK_ALT; - if (get_shift()) + } + if (get_shift()) { sc |= KEY_MASK_SHIFT; - if (get_metakey()) + } + if (get_metakey()) { sc |= KEY_MASK_META; + } return sc; } String InputEventKey::as_text() const { - String kc = keycode_get_string(keycode); - if (kc == String()) + if (kc == String()) { return kc; + } if (get_metakey()) { kc = find_keycode_name(KEY_META) + ("+" + kc); @@ -332,10 +308,10 @@ String InputEventKey::as_text() const { } bool InputEventKey::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { - Ref<InputEventKey> key = p_event; - if (key.is_null()) + if (key.is_null()) { return false; + } bool match = false; if (get_keycode() == 0) { @@ -350,19 +326,21 @@ bool InputEventKey::action_match(const Ref<InputEvent> &p_event, bool *p_pressed match = get_keycode() == key->get_keycode() && (!key->is_pressed() || (code & event_code) == code); } if (match) { - if (p_pressed != nullptr) + if (p_pressed != nullptr) { *p_pressed = key->is_pressed(); - if (p_strength != nullptr) + } + if (p_strength != nullptr) { *p_strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; + } } return match; } bool InputEventKey::shortcut_match(const Ref<InputEvent> &p_event) const { - Ref<InputEventKey> key = p_event; - if (key.is_null()) + if (key.is_null()) { return false; + } uint32_t code = get_keycode_with_modifiers(); uint32_t event_code = key->get_keycode_with_modifiers(); @@ -371,7 +349,6 @@ bool InputEventKey::shortcut_match(const Ref<InputEvent> &p_event) const { } void InputEventKey::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_pressed", "pressed"), &InputEventKey::set_pressed); ClassDB::bind_method(D_METHOD("set_keycode", "keycode"), &InputEventKey::set_keycode); @@ -398,34 +375,30 @@ void InputEventKey::_bind_methods() { /////////////////////////////////// void InputEventMouse::set_button_mask(int p_mask) { - button_mask = p_mask; } -int InputEventMouse::get_button_mask() const { +int InputEventMouse::get_button_mask() const { return button_mask; } void InputEventMouse::set_position(const Vector2 &p_pos) { - pos = p_pos; } -Vector2 InputEventMouse::get_position() const { +Vector2 InputEventMouse::get_position() const { return pos; } void InputEventMouse::set_global_position(const Vector2 &p_global_pos) { - global_pos = p_global_pos; } -Vector2 InputEventMouse::get_global_position() const { +Vector2 InputEventMouse::get_global_position() const { return global_pos; } void InputEventMouse::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_button_mask", "button_mask"), &InputEventMouse::set_button_mask); ClassDB::bind_method(D_METHOD("get_button_mask"), &InputEventMouse::get_button_mask); @@ -443,44 +416,38 @@ void InputEventMouse::_bind_methods() { /////////////////////////////////// void InputEventMouseButton::set_factor(float p_factor) { - factor = p_factor; } float InputEventMouseButton::get_factor() const { - return factor; } void InputEventMouseButton::set_button_index(int p_index) { - button_index = p_index; } -int InputEventMouseButton::get_button_index() const { +int InputEventMouseButton::get_button_index() const { return button_index; } void InputEventMouseButton::set_pressed(bool p_pressed) { - pressed = p_pressed; } -bool InputEventMouseButton::is_pressed() const { +bool InputEventMouseButton::is_pressed() const { return pressed; } void InputEventMouseButton::set_doubleclick(bool p_doubleclick) { - doubleclick = p_doubleclick; } -bool InputEventMouseButton::is_doubleclick() const { +bool InputEventMouseButton::is_doubleclick() const { return doubleclick; } Ref<InputEvent> InputEventMouseButton::xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs) const { - Vector2 g = get_global_position(); Vector2 l = p_xform.xform(get_position() + p_local_ofs); @@ -504,24 +471,25 @@ Ref<InputEvent> InputEventMouseButton::xformed_by(const Transform2D &p_xform, co } bool InputEventMouseButton::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { - Ref<InputEventMouseButton> mb = p_event; - if (mb.is_null()) + if (mb.is_null()) { return false; + } bool match = mb->button_index == button_index; if (match) { - if (p_pressed != nullptr) + if (p_pressed != nullptr) { *p_pressed = mb->is_pressed(); - if (p_strength != nullptr) + } + if (p_strength != nullptr) { *p_strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; + } } return match; } String InputEventMouseButton::as_text() const { - String button_index_string = ""; switch (get_button_index()) { case BUTTON_LEFT: @@ -559,7 +527,6 @@ String InputEventMouseButton::as_text() const { } void InputEventMouseButton::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_factor", "factor"), &InputEventMouseButton::set_factor); ClassDB::bind_method(D_METHOD("get_factor"), &InputEventMouseButton::get_factor); @@ -581,47 +548,38 @@ void InputEventMouseButton::_bind_methods() { /////////////////////////////////// void InputEventMouseMotion::set_tilt(const Vector2 &p_tilt) { - tilt = p_tilt; } Vector2 InputEventMouseMotion::get_tilt() const { - return tilt; } void InputEventMouseMotion::set_pressure(float p_pressure) { - pressure = p_pressure; } float InputEventMouseMotion::get_pressure() const { - return pressure; } void InputEventMouseMotion::set_relative(const Vector2 &p_relative) { - relative = p_relative; } Vector2 InputEventMouseMotion::get_relative() const { - return relative; } void InputEventMouseMotion::set_speed(const Vector2 &p_speed) { - speed = p_speed; } Vector2 InputEventMouseMotion::get_speed() const { - return speed; } Ref<InputEvent> InputEventMouseMotion::xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs) const { - Vector2 g = get_global_position(); Vector2 l = p_xform.xform(get_position() + p_local_ofs); Vector2 r = p_xform.basis_xform(get_relative()); @@ -648,7 +606,6 @@ Ref<InputEvent> InputEventMouseMotion::xformed_by(const Transform2D &p_xform, co } String InputEventMouseMotion::as_text() const { - String button_mask_string = ""; switch (get_button_mask()) { case BUTTON_MASK_LEFT: @@ -674,10 +631,10 @@ String InputEventMouseMotion::as_text() const { } bool InputEventMouseMotion::accumulate(const Ref<InputEvent> &p_event) { - Ref<InputEventMouseMotion> motion = p_event; - if (motion.is_null()) + if (motion.is_null()) { return false; + } if (get_window_id() != motion->get_window_id()) { return false; @@ -716,7 +673,6 @@ bool InputEventMouseMotion::accumulate(const Ref<InputEvent> &p_event) { } void InputEventMouseMotion::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_tilt", "tilt"), &InputEventMouseMotion::set_tilt); ClassDB::bind_method(D_METHOD("get_tilt"), &InputEventMouseMotion::get_tilt); @@ -738,42 +694,38 @@ void InputEventMouseMotion::_bind_methods() { /////////////////////////////////// void InputEventJoypadMotion::set_axis(int p_axis) { - axis = p_axis; } int InputEventJoypadMotion::get_axis() const { - return axis; } void InputEventJoypadMotion::set_axis_value(float p_value) { - axis_value = p_value; } float InputEventJoypadMotion::get_axis_value() const { - return axis_value; } bool InputEventJoypadMotion::is_pressed() const { - return Math::abs(axis_value) >= 0.5f; } bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { - Ref<InputEventJoypadMotion> jm = p_event; - if (jm.is_null()) + if (jm.is_null()) { return false; + } bool match = (axis == jm->axis); // Matches even if not in the same direction, but returns a "not pressed" event. if (match) { bool same_direction = (((axis_value < 0) == (jm->axis_value < 0)) || jm->axis_value == 0); bool pressed = same_direction ? Math::abs(jm->get_axis_value()) >= p_deadzone : false; - if (p_pressed != nullptr) + if (p_pressed != nullptr) { *p_pressed = pressed; + } if (p_strength != nullptr) { if (pressed) { if (p_deadzone == 1.0f) { @@ -790,12 +742,10 @@ bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event, bool * } String InputEventJoypadMotion::as_text() const { - return "InputEventJoypadMotion : axis=" + itos(axis) + ", axis_value=" + String(Variant(axis_value)); } void InputEventJoypadMotion::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_axis", "axis"), &InputEventJoypadMotion::set_axis); ClassDB::bind_method(D_METHOD("get_axis"), &InputEventJoypadMotion::get_axis); @@ -809,66 +759,62 @@ void InputEventJoypadMotion::_bind_methods() { /////////////////////////////////// void InputEventJoypadButton::set_button_index(int p_index) { - button_index = p_index; } int InputEventJoypadButton::get_button_index() const { - return button_index; } void InputEventJoypadButton::set_pressed(bool p_pressed) { - pressed = p_pressed; } -bool InputEventJoypadButton::is_pressed() const { +bool InputEventJoypadButton::is_pressed() const { return pressed; } void InputEventJoypadButton::set_pressure(float p_pressure) { - pressure = p_pressure; } -float InputEventJoypadButton::get_pressure() const { +float InputEventJoypadButton::get_pressure() const { return pressure; } bool InputEventJoypadButton::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { - Ref<InputEventJoypadButton> jb = p_event; - if (jb.is_null()) + if (jb.is_null()) { return false; + } bool match = button_index == jb->button_index; if (match) { - if (p_pressed != nullptr) + if (p_pressed != nullptr) { *p_pressed = jb->is_pressed(); - if (p_strength != nullptr) + } + if (p_strength != nullptr) { *p_strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; + } } return match; } bool InputEventJoypadButton::shortcut_match(const Ref<InputEvent> &p_event) const { - Ref<InputEventJoypadButton> button = p_event; - if (button.is_null()) + 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)); } void InputEventJoypadButton::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_button_index", "button_index"), &InputEventJoypadButton::set_button_index); ClassDB::bind_method(D_METHOD("get_button_index"), &InputEventJoypadButton::get_button_index); @@ -886,34 +832,30 @@ void InputEventJoypadButton::_bind_methods() { /////////////////////////////////// void InputEventScreenTouch::set_index(int p_index) { - index = p_index; } -int InputEventScreenTouch::get_index() const { +int InputEventScreenTouch::get_index() const { return index; } void InputEventScreenTouch::set_position(const Vector2 &p_pos) { - pos = p_pos; } -Vector2 InputEventScreenTouch::get_position() const { +Vector2 InputEventScreenTouch::get_position() const { return pos; } void InputEventScreenTouch::set_pressed(bool p_pressed) { - pressed = p_pressed; } -bool InputEventScreenTouch::is_pressed() const { +bool InputEventScreenTouch::is_pressed() const { return pressed; } Ref<InputEvent> InputEventScreenTouch::xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs) const { - Ref<InputEventScreenTouch> st; st.instance(); st->set_device(get_device()); @@ -926,12 +868,10 @@ Ref<InputEvent> InputEventScreenTouch::xformed_by(const Transform2D &p_xform, co } String InputEventScreenTouch::as_text() const { - return "InputEventScreenTouch : index=" + itos(index) + ", pressed=" + (pressed ? "true" : "false") + ", position=(" + String(get_position()) + ")"; } void InputEventScreenTouch::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_index", "index"), &InputEventScreenTouch::set_index); ClassDB::bind_method(D_METHOD("get_index"), &InputEventScreenTouch::get_index); @@ -949,44 +889,38 @@ void InputEventScreenTouch::_bind_methods() { /////////////////////////////////// void InputEventScreenDrag::set_index(int p_index) { - index = p_index; } int InputEventScreenDrag::get_index() const { - return index; } void InputEventScreenDrag::set_position(const Vector2 &p_pos) { - pos = p_pos; } -Vector2 InputEventScreenDrag::get_position() const { +Vector2 InputEventScreenDrag::get_position() const { return pos; } void InputEventScreenDrag::set_relative(const Vector2 &p_relative) { - relative = p_relative; } -Vector2 InputEventScreenDrag::get_relative() const { +Vector2 InputEventScreenDrag::get_relative() const { return relative; } void InputEventScreenDrag::set_speed(const Vector2 &p_speed) { - speed = p_speed; } -Vector2 InputEventScreenDrag::get_speed() const { +Vector2 InputEventScreenDrag::get_speed() const { return speed; } Ref<InputEvent> InputEventScreenDrag::xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs) const { - Ref<InputEventScreenDrag> sd; sd.instance(); @@ -1003,12 +937,10 @@ Ref<InputEvent> InputEventScreenDrag::xformed_by(const Transform2D &p_xform, con } String InputEventScreenDrag::as_text() const { - return "InputEventScreenDrag : index=" + itos(index) + ", position=(" + String(get_position()) + "), relative=(" + String(get_relative()) + "), speed=(" + String(get_speed()) + ")"; } void InputEventScreenDrag::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_index", "index"), &InputEventScreenDrag::set_index); ClassDB::bind_method(D_METHOD("get_index"), &InputEventScreenDrag::get_index); @@ -1030,20 +962,18 @@ void InputEventScreenDrag::_bind_methods() { /////////////////////////////////// void InputEventAction::set_action(const StringName &p_action) { - action = p_action; } -StringName InputEventAction::get_action() const { +StringName InputEventAction::get_action() const { return action; } void InputEventAction::set_pressed(bool p_pressed) { - pressed = p_pressed; } -bool InputEventAction::is_pressed() const { +bool InputEventAction::is_pressed() const { return pressed; } @@ -1056,40 +986,40 @@ float InputEventAction::get_strength() const { } bool InputEventAction::shortcut_match(const Ref<InputEvent> &p_event) const { - if (p_event.is_null()) + if (p_event.is_null()) { return false; + } return p_event->is_action(action); } bool InputEventAction::is_action(const StringName &p_action) const { - return action == p_action; } bool InputEventAction::action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const { - Ref<InputEventAction> act = p_event; - if (act.is_null()) + if (act.is_null()) { return false; + } bool match = action == act->action; if (match) { - if (p_pressed != nullptr) + if (p_pressed != nullptr) { *p_pressed = act->pressed; - if (p_strength != nullptr) + } + if (p_strength != nullptr) { *p_strength = (p_pressed != nullptr && *p_pressed) ? 1.0f : 0.0f; + } } return match; } String InputEventAction::as_text() const { - return "InputEventAction : action=" + action + ", pressed=(" + (pressed ? "true" : "false"); } void InputEventAction::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_action", "action"), &InputEventAction::set_action); ClassDB::bind_method(D_METHOD("get_action"), &InputEventAction::get_action); @@ -1109,12 +1039,10 @@ void InputEventAction::_bind_methods() { /////////////////////////////////// void InputEventGesture::set_position(const Vector2 &p_pos) { - pos = p_pos; } void InputEventGesture::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_position", "position"), &InputEventGesture::set_position); ClassDB::bind_method(D_METHOD("get_position"), &InputEventGesture::get_position); @@ -1122,24 +1050,20 @@ void InputEventGesture::_bind_methods() { } Vector2 InputEventGesture::get_position() const { - return pos; } /////////////////////////////////// void InputEventMagnifyGesture::set_factor(real_t p_factor) { - factor = p_factor; } real_t InputEventMagnifyGesture::get_factor() const { - return factor; } Ref<InputEvent> InputEventMagnifyGesture::xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs) const { - Ref<InputEventMagnifyGesture> ev; ev.instance(); @@ -1155,12 +1079,10 @@ Ref<InputEvent> InputEventMagnifyGesture::xformed_by(const Transform2D &p_xform, } String InputEventMagnifyGesture::as_text() const { - return "InputEventMagnifyGesture : factor=" + rtos(get_factor()) + ", position=(" + String(get_position()) + ")"; } void InputEventMagnifyGesture::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_factor", "factor"), &InputEventMagnifyGesture::set_factor); ClassDB::bind_method(D_METHOD("get_factor"), &InputEventMagnifyGesture::get_factor); @@ -1170,7 +1092,6 @@ void InputEventMagnifyGesture::_bind_methods() { /////////////////////////////////// void InputEventPanGesture::set_delta(const Vector2 &p_delta) { - delta = p_delta; } @@ -1179,7 +1100,6 @@ Vector2 InputEventPanGesture::get_delta() const { } Ref<InputEvent> InputEventPanGesture::xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs) const { - Ref<InputEventPanGesture> ev; ev.instance(); @@ -1195,12 +1115,10 @@ Ref<InputEvent> InputEventPanGesture::xformed_by(const Transform2D &p_xform, con } String InputEventPanGesture::as_text() const { - return "InputEventPanGesture : delta=(" + String(get_delta()) + "), position=(" + String(get_position()) + ")"; } void InputEventPanGesture::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_delta", "delta"), &InputEventPanGesture::set_delta); ClassDB::bind_method(D_METHOD("get_delta"), &InputEventPanGesture::get_delta); @@ -1210,7 +1128,6 @@ void InputEventPanGesture::_bind_methods() { /////////////////////////////////// void InputEventMIDI::set_channel(const int p_channel) { - channel = p_channel; } @@ -1219,7 +1136,6 @@ int InputEventMIDI::get_channel() const { } void InputEventMIDI::set_message(const int p_message) { - message = p_message; } @@ -1228,7 +1144,6 @@ int InputEventMIDI::get_message() const { } void InputEventMIDI::set_pitch(const int p_pitch) { - pitch = p_pitch; } @@ -1237,7 +1152,6 @@ int InputEventMIDI::get_pitch() const { } void InputEventMIDI::set_velocity(const int p_velocity) { - velocity = p_velocity; } @@ -1246,7 +1160,6 @@ int InputEventMIDI::get_velocity() const { } void InputEventMIDI::set_instrument(const int p_instrument) { - instrument = p_instrument; } @@ -1255,7 +1168,6 @@ int InputEventMIDI::get_instrument() const { } void InputEventMIDI::set_pressure(const int p_pressure) { - pressure = p_pressure; } @@ -1264,7 +1176,6 @@ int InputEventMIDI::get_pressure() const { } void InputEventMIDI::set_controller_number(const int p_controller_number) { - controller_number = p_controller_number; } @@ -1273,7 +1184,6 @@ int InputEventMIDI::get_controller_number() const { } void InputEventMIDI::set_controller_value(const int p_controller_value) { - controller_value = p_controller_value; } @@ -1282,12 +1192,10 @@ int InputEventMIDI::get_controller_value() const { } String InputEventMIDI::as_text() const { - return "InputEventMIDI : channel=(" + itos(get_channel()) + "), message=(" + itos(get_message()) + ")"; } void InputEventMIDI::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_channel", "channel"), &InputEventMIDI::set_channel); ClassDB::bind_method(D_METHOD("get_channel"), &InputEventMIDI::get_channel); ClassDB::bind_method(D_METHOD("set_message", "message"), &InputEventMIDI::set_message); diff --git a/core/input/input_event.h b/core/input/input_event.h index 18792076f5..dd1cc11982 100644 --- a/core/input/input_event.h +++ b/core/input/input_event.h @@ -192,7 +192,6 @@ public: }; class InputEventFromWindow : public InputEvent { - GDCLASS(InputEventFromWindow, InputEvent); int64_t window_id = 0; @@ -252,7 +251,6 @@ public: }; class InputEventKey : public InputEventWithModifiers { - GDCLASS(InputEventKey, InputEventWithModifiers); bool pressed = false; /// otherwise release @@ -296,7 +294,6 @@ public: }; class InputEventMouse : public InputEventWithModifiers { - GDCLASS(InputEventMouse, InputEventWithModifiers); int button_mask = 0; @@ -321,7 +318,6 @@ public: }; class InputEventMouseButton : public InputEventMouse { - GDCLASS(InputEventMouseButton, InputEventMouse); float factor = 1; @@ -355,7 +351,6 @@ public: }; class InputEventMouseMotion : public InputEventMouse { - GDCLASS(InputEventMouseMotion, InputEventMouse); Vector2 tilt; @@ -388,7 +383,6 @@ public: }; class InputEventJoypadMotion : public InputEvent { - GDCLASS(InputEventJoypadMotion, InputEvent); int axis = 0; ///< Joypad axis float axis_value = 0; ///< -1 to 1 @@ -467,7 +461,6 @@ public: }; class InputEventScreenDrag : public InputEventFromWindow { - GDCLASS(InputEventScreenDrag, InputEventFromWindow); int index = 0; Vector2 pos; @@ -497,7 +490,6 @@ public: }; class InputEventAction : public InputEvent { - GDCLASS(InputEventAction, InputEvent); StringName action; @@ -529,7 +521,6 @@ public: }; class InputEventGesture : public InputEventWithModifiers { - GDCLASS(InputEventGesture, InputEventWithModifiers); Vector2 pos; @@ -543,7 +534,6 @@ public: }; class InputEventMagnifyGesture : public InputEventGesture { - GDCLASS(InputEventMagnifyGesture, InputEventGesture); real_t factor = 1.0; @@ -561,7 +551,6 @@ public: }; class InputEventPanGesture : public InputEventGesture { - GDCLASS(InputEventPanGesture, InputEventGesture); Vector2 delta; diff --git a/core/input/input_map.cpp b/core/input/input_map.cpp index 6b6acf062d..3cb4b43a26 100644 --- a/core/input/input_map.cpp +++ b/core/input/input_map.cpp @@ -38,7 +38,6 @@ InputMap *InputMap::singleton = nullptr; int InputMap::ALL_DEVICES = -1; void InputMap::_bind_methods() { - ClassDB::bind_method(D_METHOD("has_action", "action"), &InputMap::has_action); ClassDB::bind_method(D_METHOD("get_actions"), &InputMap::_get_actions); ClassDB::bind_method(D_METHOD("add_action", "action", "deadzone"), &InputMap::add_action, DEFVAL(0.5f)); @@ -55,7 +54,6 @@ void InputMap::_bind_methods() { } void InputMap::add_action(const StringName &p_action, float p_deadzone) { - ERR_FAIL_COND_MSG(input_map.has(p_action), "InputMap already has action '" + String(p_action) + "'."); input_map[p_action] = Action(); static int last_id = 1; @@ -65,20 +63,18 @@ void InputMap::add_action(const StringName &p_action, float p_deadzone) { } void InputMap::erase_action(const StringName &p_action) { - ERR_FAIL_COND_MSG(!input_map.has(p_action), "Request for nonexistent InputMap action '" + String(p_action) + "'."); input_map.erase(p_action); } Array InputMap::_get_actions() { - Array ret; List<StringName> actions = get_actions(); - if (actions.empty()) + if (actions.empty()) { return ret; + } for (const List<StringName>::Element *E = actions.front(); E; E = E->next()) { - ret.push_back(E->get()); } @@ -86,7 +82,6 @@ Array InputMap::_get_actions() { } List<StringName> InputMap::get_actions() const { - List<StringName> actions = List<StringName>(); if (input_map.empty()) { return actions; @@ -100,9 +95,7 @@ List<StringName> InputMap::get_actions() const { } List<Ref<InputEvent>>::Element *InputMap::_find_event(Action &p_action, const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength) const { - for (List<Ref<InputEvent>>::Element *E = p_action.inputs.front(); E; E = E->next()) { - const Ref<InputEvent> e = E->get(); //if (e.type != Ref<InputEvent>::KEY && e.device != p_event.device) -- unsure about the KEY comparison, why is this here? @@ -120,56 +113,50 @@ List<Ref<InputEvent>>::Element *InputMap::_find_event(Action &p_action, const Re } bool InputMap::has_action(const StringName &p_action) const { - return input_map.has(p_action); } void InputMap::action_set_deadzone(const StringName &p_action, float p_deadzone) { - ERR_FAIL_COND_MSG(!input_map.has(p_action), "Request for nonexistent InputMap action '" + String(p_action) + "'."); input_map[p_action].deadzone = p_deadzone; } void InputMap::action_add_event(const StringName &p_action, const Ref<InputEvent> &p_event) { - ERR_FAIL_COND_MSG(p_event.is_null(), "It's not a reference to a valid InputEvent object."); ERR_FAIL_COND_MSG(!input_map.has(p_action), "Request for nonexistent InputMap action '" + String(p_action) + "'."); - if (_find_event(input_map[p_action], p_event)) + if (_find_event(input_map[p_action], p_event)) { return; //already gots + } input_map[p_action].inputs.push_back(p_event); } bool InputMap::action_has_event(const StringName &p_action, const Ref<InputEvent> &p_event) { - ERR_FAIL_COND_V_MSG(!input_map.has(p_action), false, "Request for nonexistent InputMap action '" + String(p_action) + "'."); return (_find_event(input_map[p_action], p_event) != nullptr); } void InputMap::action_erase_event(const StringName &p_action, const Ref<InputEvent> &p_event) { - ERR_FAIL_COND_MSG(!input_map.has(p_action), "Request for nonexistent InputMap action '" + String(p_action) + "'."); List<Ref<InputEvent>>::Element *E = _find_event(input_map[p_action], p_event); - if (E) + if (E) { input_map[p_action].inputs.erase(E); + } } void InputMap::action_erase_events(const StringName &p_action) { - ERR_FAIL_COND_MSG(!input_map.has(p_action), "Request for nonexistent InputMap action '" + String(p_action) + "'."); input_map[p_action].inputs.clear(); } Array InputMap::_get_action_list(const StringName &p_action) { - Array ret; const List<Ref<InputEvent>> *al = get_action_list(p_action); if (al) { for (const List<Ref<InputEvent>>::Element *E = al->front(); E; E = E->next()) { - ret.push_back(E->get()); } } @@ -178,10 +165,10 @@ Array InputMap::_get_action_list(const StringName &p_action) { } const List<Ref<InputEvent>> *InputMap::get_action_list(const StringName &p_action) { - const Map<StringName, Action>::Element *E = input_map.find(p_action); - if (!E) + if (!E) { return nullptr; + } return &E->get().inputs; } @@ -196,10 +183,12 @@ bool InputMap::event_get_action_status(const Ref<InputEvent> &p_event, const Str Ref<InputEventAction> input_event_action = p_event; if (input_event_action.is_valid()) { - if (p_pressed != nullptr) + if (p_pressed != nullptr) { *p_pressed = input_event_action->is_pressed(); - if (p_strength != nullptr) + } + if (p_strength != nullptr) { *p_strength = (p_pressed != nullptr && *p_pressed) ? input_event_action->get_strength() : 0.0f; + } return input_event_action->get_action() == p_action; } @@ -207,10 +196,12 @@ bool InputMap::event_get_action_status(const Ref<InputEvent> &p_event, const Str float strength; List<Ref<InputEvent>>::Element *event = _find_event(E->get(), p_event, &pressed, &strength); if (event != nullptr) { - if (p_pressed != nullptr) + if (p_pressed != nullptr) { *p_pressed = pressed; - if (p_strength != nullptr) + } + if (p_strength != nullptr) { *p_strength = strength; + } return true; } else { return false; @@ -222,7 +213,6 @@ const Map<StringName, InputMap::Action> &InputMap::get_action_map() const { } void InputMap::load_from_globals() { - input_map.clear(); List<PropertyInfo> pinfo; @@ -231,8 +221,9 @@ void InputMap::load_from_globals() { for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) { const PropertyInfo &pi = E->get(); - if (!pi.name.begins_with("input/")) + if (!pi.name.begins_with("input/")) { continue; + } String name = pi.name.substr(pi.name.find("/") + 1, pi.name.length()); @@ -243,15 +234,15 @@ void InputMap::load_from_globals() { add_action(name, deadzone); for (int i = 0; i < events.size(); i++) { Ref<InputEvent> event = events[i]; - if (event.is_null()) + if (event.is_null()) { continue; + } action_add_event(name, event); } } } void InputMap::load_default() { - Ref<InputEventKey> key; add_action("ui_accept"); @@ -332,7 +323,6 @@ void InputMap::load_default() { } InputMap::InputMap() { - ERR_FAIL_COND_MSG(singleton, "Singleton in InputMap already exist."); singleton = this; } diff --git a/core/input/input_map.h b/core/input/input_map.h index e03bc5fd4f..3abc224ccf 100644 --- a/core/input/input_map.h +++ b/core/input/input_map.h @@ -35,7 +35,6 @@ #include "core/object.h" class InputMap : public Object { - GDCLASS(InputMap, Object); public: |