Add Input::SetCapturingMouse()
Moved mouse capture functionality from the renderer to Input Temporarily patched ModelViewer, pending a major refactor to make it compatible with the input class.master
parent
05930f9307
commit
8990fbeb96
|
@ -287,3 +287,10 @@ float Input::JoystickAxisState(int joystick, int axis)
|
|||
|
||||
return joysticks[joystick].axes[axis];
|
||||
}
|
||||
|
||||
void Input::SetCapturingMouse(bool grabbed)
|
||||
{
|
||||
SDL_SetWindowGrab(Pi::renderer->GetSDLWindow(), SDL_bool(grabbed));
|
||||
SDL_SetRelativeMouseMode(SDL_bool(grabbed));
|
||||
m_capturingMouse = grabbed;
|
||||
}
|
||||
|
|
|
@ -132,6 +132,9 @@ public:
|
|||
memcpy(motion, mouseMotion, sizeof(int) * 2);
|
||||
}
|
||||
|
||||
bool IsCapturingMouse() const { return m_capturingMouse; }
|
||||
void SetCapturingMouse(bool enabled);
|
||||
|
||||
sigc::signal<void, SDL_Keysym *> onKeyPress;
|
||||
sigc::signal<void, SDL_Keysym *> onKeyRelease;
|
||||
sigc::signal<void, int, int, int> onMouseButtonUp;
|
||||
|
@ -146,6 +149,7 @@ private:
|
|||
int keyModState;
|
||||
char mouseButton[6];
|
||||
int mouseMotion[2];
|
||||
bool m_capturingMouse;
|
||||
|
||||
bool joystickEnabled;
|
||||
bool mouseYInvert;
|
||||
|
|
|
@ -406,7 +406,9 @@ void ModelViewer::ChangeCameraPreset(SDL_Keycode key, SDL_Keymod mod)
|
|||
void ModelViewer::ToggleViewControlMode()
|
||||
{
|
||||
m_options.mouselookEnabled = !m_options.mouselookEnabled;
|
||||
m_renderer->SetGrab(m_options.mouselookEnabled);
|
||||
// FIXME: update modelviewer to use Input::SetCaptureMouse instead
|
||||
SDL_SetWindowGrab(m_renderer->GetSDLWindow(), SDL_bool(m_options.mouselookEnabled));
|
||||
SDL_SetRelativeMouseMode(SDL_bool(m_options.mouselookEnabled));
|
||||
|
||||
if (m_options.mouselookEnabled) {
|
||||
m_viewRot = matrix3x3f::RotateY(DEG2RAD(m_rotY)) * matrix3x3f::RotateX(DEG2RAD(Clamp(m_rotX, -90.0f, 90.0f)));
|
||||
|
@ -430,7 +432,9 @@ void ModelViewer::ClearModel()
|
|||
m_scaleModel.reset();
|
||||
|
||||
m_options.mouselookEnabled = false;
|
||||
m_renderer->SetGrab(false);
|
||||
// FIXME: update modelviewer to use Input::SetCaptureMouse instead
|
||||
SDL_SetWindowGrab(m_renderer->GetSDLWindow(), SDL_bool(m_options.mouselookEnabled));
|
||||
SDL_SetRelativeMouseMode(SDL_bool(m_options.mouselookEnabled));
|
||||
m_viewPos = vector3f(0.0f, 0.0f, 10.0f);
|
||||
ResetCamera();
|
||||
}
|
||||
|
@ -833,7 +837,7 @@ void ModelViewer::PollEvents()
|
|||
break;
|
||||
default:
|
||||
break; //shuts up -Wswitch
|
||||
} //keysym switch
|
||||
} //keysym switch
|
||||
m_keyStates[event.key.keysym.sym] = true;
|
||||
break;
|
||||
case SDL_KEYUP:
|
||||
|
|
|
@ -959,7 +959,7 @@ void Pi::TombStoneLoop()
|
|||
float _time = 0;
|
||||
do {
|
||||
Pi::HandleEvents();
|
||||
Pi::renderer->SetGrab(false);
|
||||
Pi::input.SetCapturingMouse(false);
|
||||
|
||||
// render the scene
|
||||
Pi::BeginRenderTarget();
|
||||
|
@ -1399,11 +1399,11 @@ float Pi::GetMoveSpeedShiftModifier()
|
|||
void Pi::SetMouseGrab(bool on)
|
||||
{
|
||||
if (!doingMouseGrab && on) {
|
||||
Pi::renderer->SetGrab(true);
|
||||
Pi::input.SetCapturingMouse(true);
|
||||
Pi::ui->SetMousePointerEnabled(false);
|
||||
doingMouseGrab = true;
|
||||
} else if (doingMouseGrab && !on) {
|
||||
Pi::renderer->SetGrab(false);
|
||||
Pi::input.SetCapturingMouse(false);
|
||||
Pi::ui->SetMousePointerEnabled(true);
|
||||
doingMouseGrab = false;
|
||||
}
|
||||
|
|
|
@ -48,10 +48,4 @@ namespace Graphics {
|
|||
m_textureCache.clear();
|
||||
}
|
||||
|
||||
void Renderer::SetGrab(const bool grabbed)
|
||||
{
|
||||
SDL_SetWindowGrab(m_window, SDL_bool(grabbed));
|
||||
SDL_SetRelativeMouseMode(SDL_bool(grabbed));
|
||||
}
|
||||
|
||||
} // namespace Graphics
|
||||
|
|
|
@ -205,8 +205,6 @@ namespace Graphics {
|
|||
|
||||
Stats &GetStats() { return m_stats; }
|
||||
|
||||
void SetGrab(const bool grabbed);
|
||||
|
||||
protected:
|
||||
int m_width;
|
||||
int m_height;
|
||||
|
|
Loading…
Reference in New Issue