Treat the first mouse motion event as non-relative

This fixes incorrect starting camera orientation when using --skip-menu or --load-savegame.
openmw-35
scrawl 10 years ago
parent 9b3728d878
commit 60f722b0a9

@ -30,7 +30,8 @@ namespace SFO
mWantMouseVisible(false),
mAllowGrab(grab),
mWarpX(0),
mWarpY(0)
mWarpY(0),
mFirstMouseMove(true)
{
_setupOISKeys();
}
@ -316,6 +317,13 @@ namespace SFO
pack_evt.y = mMouseY = evt.motion.y;
pack_evt.xrel = evt.motion.xrel;
pack_evt.yrel = evt.motion.yrel;
if (mFirstMouseMove)
{
// first event should be treated as non-relative, since there's no point of reference
// SDL then (incorrectly) uses (0,0) as point of reference, on Linux at least...
pack_evt.xrel = pack_evt.yrel = 0;
mFirstMouseMove = false;
}
}
else if(evt.type == SDL_MOUSEWHEEL)
{

@ -71,6 +71,8 @@ namespace SFO
bool mGrabPointer;
bool mMouseRelative;
bool mFirstMouseMove;
Sint32 mMouseZ;
Sint32 mMouseX;
Sint32 mMouseY;

Loading…
Cancel
Save