From 705488ddfb932d07332bf71c9755e29a6ef04216 Mon Sep 17 00:00:00 2001 From: scrawl Date: Wed, 12 Jun 2013 16:07:46 +0200 Subject: [PATCH] Fix mouse movement events being discarded when there's more than one event in a frame --- apps/openmw/mwinput/inputmanagerimp.cpp | 9 ++------- apps/openmw/mwworld/player.cpp | 12 ++++++------ apps/openmw/mwworld/player.hpp | 6 +++--- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index 30aa88f3b..b239765ac 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -206,7 +206,6 @@ namespace MWInput { // Tell OIS to handle all input events mInputManager->capture(); - // inject some fake mouse movement to force updating MyGUI's widget states // this shouldn't do any harm since we're moving back to the original position afterwards MyGUI::InputManager::getInstance().injectMouseMove( int(mMouseX+1), int(mMouseY+1), mMouseWheel); @@ -501,10 +500,6 @@ 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 - - // Don't support the UI sensitivity slider to reduce headache - // related to when the mouse can leave the window, and what to - // do when it re-enters mMouseX = arg.x; mMouseY = arg.y; @@ -533,8 +528,8 @@ namespace MWInput // Only actually turn player when we're not in vanity mode if(!MWBase::Environment::get().getWorld()->vanityRotateCamera(rot)) { - mPlayer.setYaw(x/scale); - mPlayer.setPitch(-y/scale); + mPlayer.yaw(x/scale); + mPlayer.pitch(-y/scale); } if (arg.zrel) diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index e352b4c82..cd1eb823d 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -125,20 +125,20 @@ namespace MWWorld MWWorld::Class::get (ptr).setStance (ptr, MWWorld::Class::Sneak, sneak); } - void Player::setYaw(float yaw) + void Player::yaw(float yaw) { MWWorld::Ptr ptr = getPlayer(); - MWWorld::Class::get(ptr).getMovementSettings(ptr).mRotation[2] = yaw; + MWWorld::Class::get(ptr).getMovementSettings(ptr).mRotation[2] += yaw; } - void Player::setPitch(float pitch) + void Player::pitch(float pitch) { MWWorld::Ptr ptr = getPlayer(); - MWWorld::Class::get(ptr).getMovementSettings(ptr).mRotation[0] = pitch; + MWWorld::Class::get(ptr).getMovementSettings(ptr).mRotation[0] += pitch; } - void Player::setRoll(float roll) + void Player::roll(float roll) { MWWorld::Ptr ptr = getPlayer(); - MWWorld::Class::get(ptr).getMovementSettings(ptr).mRotation[1] = roll; + MWWorld::Class::get(ptr).getMovementSettings(ptr).mRotation[1] += roll; } void Player::use() diff --git a/apps/openmw/mwworld/player.hpp b/apps/openmw/mwworld/player.hpp index fd25f749f..4660c6e9a 100644 --- a/apps/openmw/mwworld/player.hpp +++ b/apps/openmw/mwworld/player.hpp @@ -64,9 +64,9 @@ namespace MWWorld void setRunState(bool run); void setSneak(bool sneak); - void setYaw(float yaw); - void setPitch(float pitch); - void setRoll(float roll); + void yaw(float yaw); + void pitch(float pitch); + void roll(float roll); }; } #endif