float mouseMovementX = 0.0f;
float mouseMovementY = 0.0f;
if (!g_game->m_editModeActive && hasCursor())
{
if (g_windowManager.m_cursorPosition.x <= 0.01f)
mouseMovementX = frameTime * -400.0f;
else if (g_windowManager.m_cursorPosition.x >= 0.99f)
mouseMovementX = frameTime * 400.0f;
if (g_windowManager.m_cursorPosition.y <= 0.01f)
mouseMovementY = frameTime * 400.0f;
else if (g_windowManager.m_cursorPosition.y >= 0.74f)
mouseMovementY = frameTime * -400.0f;
}
else
{
mouseMovementX = (float)g_inputManager.m_mouseMovementX;
mouseMovementY = (float)g_inputManager.m_mouseMovementY;
}
float timeFactor = 20.0f;
float mouseFactor = 0.000054f;
float changeFactor = rglMax(1.0f - (frameTime + 0.02f - frameTime * frameTime * 8.0f) * timeFactor, 0.0f);
m_cameraHorizontalRotationChange *= changeFactor;
m_cameraVerticalRotationChange *= changeFactor;
if (!g_game->m_editModeActive || g_inputManager.keyDown(key_left_mouse_button))
{
if (rglConfig::Input::bInvertMouseX)
mouseMovementX = -mouseMovementX;
if (rglConfig::Input::bInvertMouseY)
mouseMovementY = -mouseMovementY;
bool isMultiplayer = g_basicGame.isClient() || g_basicGame.isListenServer();
float changeX = mouseMovementX * mouseFactor * mouseSensitivity * m_cameraFov;
float changeY = mouseMovementY * mouseFactor * mouseSensitivity * m_cameraFov;
if (isMultiplayer)
{
float limit = frameTime * 10.0f + 0.3f;
changeX = rglClamp(changeX, -limit, limit);
changeY = rglClamp(changeY, -limit, limit);
}
m_cameraHorizontalRotationChange += changeX;
m_cameraVerticalRotationChange += changeY;
if (isMultiplayer)
{
float limit = frameTime * 10.0f + 0.3f;
m_cameraHorizontalRotationChange = rglClamp(m_cameraHorizontalRotationChange, -limit, limit);
m_cameraVerticalRotationChange = rglClamp(m_cameraVerticalRotationChange, -limit, limit);
}
m_cameraHorizontalRotation -= m_cameraHorizontalRotationChange;
m_cameraVerticalRotation -= m_cameraVerticalRotationChange;
}
m_cameraVerticalRotation = rglClamp(m_cameraVerticalRotation, -1.36591f, 1.2566371f);