InputCommon: Make "Cursor" inputs aware of the rendered aspect ratio.

This commit is contained in:
Jordan Woyak
2020-01-24 00:06:39 -06:00
parent 42c03c4dad
commit b92f6480a0
9 changed files with 59 additions and 21 deletions

View File

@ -125,9 +125,11 @@ void KeyboardMouse::UpdateCursorInput()
const auto win_width = rect.right - rect.left;
const auto win_height = rect.bottom - rect.top;
const auto window_scale = g_controller_interface.GetWindowInputScale();
// Convert the cursor position to a range from -1 to 1.
m_state_in.cursor.x = ControlState(point.x) / win_width * 2 - 1;
m_state_in.cursor.y = ControlState(point.y) / win_height * 2 - 1;
m_state_in.cursor.x = (ControlState(point.x) / win_width * 2 - 1) * window_scale.x;
m_state_in.cursor.y = (ControlState(point.y) / win_height * 2 - 1) * window_scale.y;
}
void KeyboardMouse::UpdateInput()

View File

@ -6,6 +6,7 @@
#include <windows.h>
#include "Common/Matrix.h"
#include "InputCommon/ControllerInterface/DInput/DInput8.h"
#include "InputCommon/ControllerInterface/Device.h"
@ -20,10 +21,7 @@ private:
{
BYTE keyboard[256];
DIMOUSESTATE2 mouse;
struct
{
ControlState x, y;
} cursor;
Common::TVec2<ControlState> cursor;
};
class Key : public Input