about summary refs log tree commit diff
path: root/src/game/client/components/camera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/client/components/camera.cpp')
-rw-r--r--src/game/client/components/camera.cpp19
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;
 	}
 }