|
|
|
@ -2,9 +2,6 @@ |
|
|
|
// Licensed under GPLv2+
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#include "common/logging/log.h"
|
|
|
|
#include "common/math_util.h"
|
|
|
|
#include "common/param_package.h"
|
|
|
|
#include "input_common/mouse/mouse_input.h"
|
|
|
|
|
|
|
|
namespace MouseInput { |
|
|
|
@ -24,8 +21,11 @@ void Mouse::UpdateThread() { |
|
|
|
constexpr int update_time = 10; |
|
|
|
while (update_thread_running) { |
|
|
|
for (MouseInfo& info : mouse_info) { |
|
|
|
Common::Vec3f angular_direction = {-info.tilt_direction.y, 0.0f, |
|
|
|
-info.tilt_direction.x}; |
|
|
|
const Common::Vec3f angular_direction{ |
|
|
|
-info.tilt_direction.y, |
|
|
|
0.0f, |
|
|
|
-info.tilt_direction.x, |
|
|
|
}; |
|
|
|
|
|
|
|
info.motion.SetGyroscope(angular_direction * info.tilt_speed); |
|
|
|
info.motion.UpdateRotation(update_time * 1000); |
|
|
|
@ -41,22 +41,24 @@ void Mouse::UpdateThread() { |
|
|
|
} |
|
|
|
|
|
|
|
void Mouse::UpdateYuzuSettings() { |
|
|
|
MouseStatus pad_status{}; |
|
|
|
if (buttons != 0) { |
|
|
|
pad_status.button = last_button; |
|
|
|
mouse_queue.Push(pad_status); |
|
|
|
if (buttons == 0) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
mouse_queue.Push(MouseStatus{ |
|
|
|
.button = last_button, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
void Mouse::PressButton(int x, int y, int button_) { |
|
|
|
if (button_ >= static_cast<int>(mouse_info.size())) { |
|
|
|
const auto button_index = static_cast<std::size_t>(button_); |
|
|
|
if (button_index >= mouse_info.size()) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
int button = 1 << button_; |
|
|
|
const auto button_index = static_cast<std::size_t>(button_); |
|
|
|
const auto button = 1U << button_index; |
|
|
|
buttons |= static_cast<u16>(button); |
|
|
|
last_button = static_cast<MouseButton>(button_); |
|
|
|
last_button = static_cast<MouseButton>(button_index); |
|
|
|
|
|
|
|
mouse_info[button_index].mouse_origin = Common::MakeVec(x, y); |
|
|
|
mouse_info[button_index].last_mouse_position = Common::MakeVec(x, y); |
|
|
|
@ -66,8 +68,8 @@ void Mouse::PressButton(int x, int y, int button_) { |
|
|
|
void Mouse::MouseMove(int x, int y) { |
|
|
|
for (MouseInfo& info : mouse_info) { |
|
|
|
if (info.data.pressed) { |
|
|
|
auto mouse_move = Common::MakeVec(x, y) - info.mouse_origin; |
|
|
|
auto mouse_change = Common::MakeVec(x, y) - info.last_mouse_position; |
|
|
|
const auto mouse_move = Common::MakeVec(x, y) - info.mouse_origin; |
|
|
|
const auto mouse_change = Common::MakeVec(x, y) - info.last_mouse_position; |
|
|
|
info.last_mouse_position = Common::MakeVec(x, y); |
|
|
|
info.data.axis = {mouse_move.x, -mouse_move.y}; |
|
|
|
|
|
|
|
@ -82,12 +84,12 @@ void Mouse::MouseMove(int x, int y) { |
|
|
|
} |
|
|
|
|
|
|
|
void Mouse::ReleaseButton(int button_) { |
|
|
|
if (button_ >= static_cast<int>(mouse_info.size())) { |
|
|
|
const auto button_index = static_cast<std::size_t>(button_); |
|
|
|
if (button_index >= mouse_info.size()) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
int button = 1 << button_; |
|
|
|
const auto button_index = static_cast<std::size_t>(button_); |
|
|
|
const auto button = 1U << button_index; |
|
|
|
buttons &= static_cast<u16>(0xFF - button); |
|
|
|
|
|
|
|
mouse_info[button_index].tilt_speed = 0; |
|
|
|
|