diff --git a/src/Application.cpp b/src/Application.cpp index e59a514..ebbfa92 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -20,7 +20,7 @@ #include "planet/Planet.h" -Application::Application() : m_width(1080), m_height(720) +Application::Application() : m_width(1920), m_height(1080), m_lock(true) { } @@ -116,12 +116,13 @@ void Application::handleEvents() } glm::vec2 mousepos = Input::getInstance().getMouseCoords(); - // Force mouse to the center of the screen - SDL_SetWindowGrab(m_window, SDL_TRUE); - SDL_WarpMouseInWindow(m_window, m_width/2, m_height/2); + if (m_lock || Input::getInstance().isKeyDown(SDL_BUTTON_RIGHT)) { + // Force mouse to the center of the screen + SDL_WarpMouseInWindow(m_window, m_width/2, m_height/2); - // Handle Camera Movement - m_camera->processMouseMovement(-(m_width/2 - mousepos.x), m_height/2 - mousepos.y, GL_TRUE); + // Handle Camera Movement + m_camera->processMouseMovement(-(m_width/2 - mousepos.x), m_height/2 - mousepos.y, GL_TRUE); + } // Handle Camera Movement Keys if(Input::getInstance().isKeyDown(SDLK_w)) @@ -148,8 +149,16 @@ void Application::handleEvents() m_wireframe = !m_wireframe; // Exit game on Esc - if(Input::getInstance().isKeyPressed(SDLK_ESCAPE)) - exit(); + if(Input::getInstance().isKeyPressed(SDLK_ESCAPE)) { + m_lock = !m_lock; + if (m_lock) { + SDL_SetWindowGrab(m_window, SDL_TRUE); + SDL_ShowCursor(SDL_DISABLE); + } else { + SDL_SetWindowGrab(m_window, SDL_FALSE); + SDL_ShowCursor(SDL_ENABLE); + } + } } diff --git a/src/Application.h b/src/Application.h index 6e5d6dc..33d9120 100644 --- a/src/Application.h +++ b/src/Application.h @@ -46,6 +46,7 @@ class Application : public Singleton bool m_run; bool m_wireframe; + bool m_lock; void handleEvents(); void run();