diff options
Diffstat (limited to 'src/game/client/components/camera.cpp')
| -rw-r--r-- | src/game/client/components/camera.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/game/client/components/camera.cpp b/src/game/client/components/camera.cpp index f1ca6a1b..b4c2debb 100644 --- a/src/game/client/components/camera.cpp +++ b/src/game/client/components/camera.cpp @@ -21,7 +21,7 @@ void CCamera::OnRender() m_Zoom = 1.0f; // update camera center - if(m_pClient->m_Snap.m_Spectate) + if(m_pClient->m_Snap.m_Spectate && (!m_pClient->m_Snap.m_pSpectatorInfo || m_pClient->m_Snap.m_pSpectatorInfo->m_SpectatorID == SPEC_FREEVIEW)) { if(!m_WasSpectator) { @@ -37,15 +37,22 @@ void CCamera::OnRender() m_pClient->m_pControls->ClampMousePos(); m_WasSpectator = false; } - float l = length(m_pClient->m_pControls->m_MousePos); - float DeadZone = g_Config.m_ClMouseDeadzone; - float FollowFactor = g_Config.m_ClMouseFollowfactor/100.0f; + vec2 CameraOffset(0, 0); - float OffsetAmount = max(l-DeadZone, 0.0f) * FollowFactor; + float l = length(m_pClient->m_pControls->m_MousePos); if(l > 0.0001f) // make sure that this isn't 0 + { + float DeadZone = g_Config.m_ClMouseDeadzone; + float FollowFactor = g_Config.m_ClMouseFollowfactor/100.0f; + float OffsetAmount = max(l-DeadZone, 0.0f) * FollowFactor; + CameraOffset = normalize(m_pClient->m_pControls->m_MousePos)*OffsetAmount; + } - m_Center = m_pClient->m_LocalCharacterPos + CameraOffset; + if(m_pClient->m_Snap.m_Spectate) + m_Center = m_pClient->m_Snap.m_SpectatorPos + CameraOffset; + else + m_Center = m_pClient->m_LocalCharacterPos + CameraOffset; } } |