From 3650ef83b76ab06fe3ec11ca8298e43f4dc5ff49 Mon Sep 17 00:00:00 2001 From: kaetemi Date: Wed, 9 Jul 2014 12:31:22 +0200 Subject: [PATCH] Fix #162: Center ingame mouse cursor after login --- code/nel/include/nel/gui/view_pointer_base.h | 4 +++- code/nel/src/gui/view_pointer_base.cpp | 2 +- code/ryzom/client/src/input.cpp | 8 +++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/code/nel/include/nel/gui/view_pointer_base.h b/code/nel/include/nel/gui/view_pointer_base.h index f18f29239..e772d934f 100644 --- a/code/nel/include/nel/gui/view_pointer_base.h +++ b/code/nel/include/nel/gui/view_pointer_base.h @@ -53,12 +53,14 @@ namespace NLGUI bool show() const {return _PointerVisible;} void draw(){} - + /// set button state void setButtonState(NLMISC::TMouseButton state) { _Buttons = state; } /// get buttons state NLMISC::TMouseButton getButtonState() const { return _Buttons; } + static const sint32 InvalidCoord = 0x80000000; + protected: // (x,y) is from the TopLeft corner of the window sint32 _PointerX; // Current pointer position (raw, before snapping) diff --git a/code/nel/src/gui/view_pointer_base.cpp b/code/nel/src/gui/view_pointer_base.cpp index 045329d35..e29af7858 100644 --- a/code/nel/src/gui/view_pointer_base.cpp +++ b/code/nel/src/gui/view_pointer_base.cpp @@ -25,7 +25,7 @@ namespace NLGUI CViewBase( param ), _Buttons( NLMISC::noButton ) { - _PointerX = _PointerY = _PointerOldX = _PointerOldY = _PointerDownX = _PointerDownY = 0; + _PointerX = _PointerY = _PointerOldX = _PointerOldY = _PointerDownX = _PointerDownY = InvalidCoord; _PointerDown = false; _PointerVisible = true; } diff --git a/code/ryzom/client/src/input.cpp b/code/ryzom/client/src/input.cpp index e67df8af2..eff4e2bc9 100644 --- a/code/ryzom/client/src/input.cpp +++ b/code/ryzom/client/src/input.cpp @@ -263,7 +263,6 @@ bool IsMouseFreeLook() return MouseFreeLook; } - // ********************************************************************************* // Use this method to toggle the mouse (freelook -> cursor) void SetMouseCursor (bool updatePos) @@ -287,8 +286,11 @@ void SetMouseCursor (bool updatePos) { sint32 ix, iy; cursor->getPointerPos (ix, iy); - x = (float)ix / (float)width; - y = (float)iy / (float)height; + if (ix != CViewPointer::InvalidCoord && iy != CViewPointer::InvalidCoord) + { + x = (float)ix / (float)width; + y = (float)iy / (float)height; + } } }