File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -102,13 +102,32 @@ void InputSystem::PrepareForUpdate()
102102
103103 // Mouse
104104 mState .Mouse .mPrevButtons = mState .Mouse .mCurrButtons ;
105+ mState .Mouse .mIsRelative = false ;
105106}
106107
107108void InputSystem::Update ()
108109{
109110 // Mouse
110111 int x = 0 , y = 0 ;
111- mState .Mouse .mCurrButtons = SDL_GetMouseState (&x, &y);
112+ if (mState .Mouse .mIsRelative )
113+ {
114+ mState .Mouse .mCurrButtons =
115+ SDL_GetRelativeMouseState (&x, &y);
116+ }
117+ else
118+ {
119+ mState .Mouse .mCurrButtons =
120+ SDL_GetMouseState (&x, &y);
121+ }
122+
112123 mState .Mouse .mMousePos .x = static_cast <float >(x);
113124 mState .Mouse .mMousePos .y = static_cast <float >(y);
114125}
126+
127+ void InputSystem::SetRelativeMouseMode (bool value)
128+ {
129+ SDL_bool set = value ? SDL_TRUE : SDL_FALSE ;
130+ SDL_SetRelativeMouseMode (set);
131+
132+ mState .Mouse .mIsRelative = value;
133+ }
Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ class MouseState
4242
4343 // For mouse position
4444 const Vector2& GetPosition () const { return mMousePos ; }
45+ bool IsRelative () const { return mIsRelative ; }
4546
4647 // For buttons
4748 bool GetButtonValue (int button) const ;
@@ -52,6 +53,8 @@ class MouseState
5253 // Store button data
5354 Uint32 mCurrButtons ;
5455 Uint32 mPrevButtons ;
56+ // Are we in relative mouse mode
57+ bool mIsRelative ;
5558};
5659
5760// Wrapper that contains current state of input
@@ -73,6 +76,8 @@ class InputSystem
7376 void Update ();
7477
7578 const InputState& GetState () const { return mState ; }
79+
80+ void SetRelativeMouseMode (bool value);
7681private:
7782 InputState mState ;
7883};
You can’t perform that action at this time.
0 commit comments