From f9efd543e438cc832ec5b695cc901d3a1f43ab96 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 13 Aug 2012 21:33:53 +0200 Subject: [PATCH] use float for the mouse position tracking, should be more accurate for sensitivity multipliers != 1 --- apps/openmw/mwinput/inputmanagerimp.cpp | 10 +++++----- apps/openmw/mwinput/inputmanagerimp.hpp | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index febe528c0d..0c0bb74e6f 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -378,12 +378,12 @@ namespace MWInput // We keep track of our own mouse position, so that moving the mouse while in // game mode does not move the position of the GUI cursor - mMouseX += arg.state.X.rel * mUISensitivity; - mMouseY += arg.state.Y.rel * mUISensitivity * mUIYMultiplier; - mMouseX = std::max(0, std::min(mMouseX, viewSize.width)); - mMouseY = std::max(0, std::min(mMouseY, viewSize.height)); + mMouseX += float(arg.state.X.rel) * mUISensitivity; + mMouseY += float(arg.state.Y.rel) * mUISensitivity * mUIYMultiplier; + mMouseX = std::max(0.f, std::min(mMouseX, float(viewSize.width))); + mMouseY = std::max(0.f, std::min(mMouseY, float(viewSize.height))); - MyGUI::InputManager::getInstance().injectMouseMove(mMouseX, mMouseY, arg.state.Z.abs); + MyGUI::InputManager::getInstance().injectMouseMove( int(mMouseX), int(mMouseY), arg.state.Z.abs); } if (mMouseLookEnabled) diff --git a/apps/openmw/mwinput/inputmanagerimp.hpp b/apps/openmw/mwinput/inputmanagerimp.hpp index 79e5a70fc9..c8b48e727f 100644 --- a/apps/openmw/mwinput/inputmanagerimp.hpp +++ b/apps/openmw/mwinput/inputmanagerimp.hpp @@ -143,8 +143,8 @@ namespace MWInput bool mMouseLookEnabled; bool mGuiCursorEnabled; - int mMouseX; - int mMouseY; + float mMouseX; + float mMouseY; std::map mControlSwitch;