forked from teamnwah/openmw-tes3coop
Treat the first mouse motion event as non-relative
This fixes incorrect starting camera orientation when using --skip-menu or --load-savegame.
This commit is contained in:
parent
9b3728d878
commit
60f722b0a9
2 changed files with 11 additions and 1 deletions
10
extern/sdl4ogre/sdlinputwrapper.cpp
vendored
10
extern/sdl4ogre/sdlinputwrapper.cpp
vendored
|
@ -30,7 +30,8 @@ namespace SFO
|
||||||
mWantMouseVisible(false),
|
mWantMouseVisible(false),
|
||||||
mAllowGrab(grab),
|
mAllowGrab(grab),
|
||||||
mWarpX(0),
|
mWarpX(0),
|
||||||
mWarpY(0)
|
mWarpY(0),
|
||||||
|
mFirstMouseMove(true)
|
||||||
{
|
{
|
||||||
_setupOISKeys();
|
_setupOISKeys();
|
||||||
}
|
}
|
||||||
|
@ -316,6 +317,13 @@ namespace SFO
|
||||||
pack_evt.y = mMouseY = evt.motion.y;
|
pack_evt.y = mMouseY = evt.motion.y;
|
||||||
pack_evt.xrel = evt.motion.xrel;
|
pack_evt.xrel = evt.motion.xrel;
|
||||||
pack_evt.yrel = evt.motion.yrel;
|
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)
|
else if(evt.type == SDL_MOUSEWHEEL)
|
||||||
{
|
{
|
||||||
|
|
2
extern/sdl4ogre/sdlinputwrapper.hpp
vendored
2
extern/sdl4ogre/sdlinputwrapper.hpp
vendored
|
@ -71,6 +71,8 @@ namespace SFO
|
||||||
bool mGrabPointer;
|
bool mGrabPointer;
|
||||||
bool mMouseRelative;
|
bool mMouseRelative;
|
||||||
|
|
||||||
|
bool mFirstMouseMove;
|
||||||
|
|
||||||
Sint32 mMouseZ;
|
Sint32 mMouseZ;
|
||||||
Sint32 mMouseX;
|
Sint32 mMouseX;
|
||||||
Sint32 mMouseY;
|
Sint32 mMouseY;
|
||||||
|
|
Loading…
Reference in a new issue