@@ -1320,7 +1320,7 @@ inline int CHud::GetDigitsIndex(int Value, int Max)
13201320
13211321inline float CHud::GetMovementInformationBoxHeight ()
13221322{
1323- if (m_pClient->m_Snap .m_SpecInfo .m_Active && m_pClient->m_Snap .m_SpecInfo .m_SpectatorId == SPEC_FREEVIEW)
1323+ if (m_pClient->m_Snap .m_SpecInfo .m_Active && ( m_pClient->m_Snap .m_SpecInfo .m_SpectatorId == SPEC_FREEVIEW || m_pClient-> m_aClients [m_pClient-> m_Snap . m_SpecInfo . m_SpectatorId ]. m_SpecCharPresent ) )
13241324 return g_Config.m_ClShowhudPlayerPosition ? 3 * MOVEMENT_INFORMATION_LINE_HEIGHT + 2 : 0 ;
13251325 float BoxHeight = 3 * MOVEMENT_INFORMATION_LINE_HEIGHT * (g_Config.m_ClShowhudPlayerPosition + g_Config.m_ClShowhudPlayerSpeed ) + 2 * MOVEMENT_INFORMATION_LINE_HEIGHT * g_Config.m_ClShowhudPlayerAngle ;
13261326 if (g_Config.m_ClShowhudPlayerPosition || g_Config.m_ClShowhudPlayerSpeed || g_Config.m_ClShowhudPlayerAngle )
@@ -1352,12 +1352,13 @@ void CHud::RenderMovementInformationTextContainer(STextContainerIndex &TextConta
13521352 }
13531353}
13541354
1355- void CHud::RenderMovementInformation (const int ClientId )
1355+ void CHud::RenderMovementInformation ()
13561356{
1357- bool Freeview = ClientId == SPEC_FREEVIEW;
1357+ const int ClientId = m_pClient->m_Snap .m_SpecInfo .m_Active ? m_pClient->m_Snap .m_SpecInfo .m_SpectatorId : m_pClient->m_Snap .m_LocalClientId ;
1358+ const bool PosOnly = ClientId == SPEC_FREEVIEW || (m_pClient->m_aClients [ClientId].m_SpecCharPresent );
13581359 // Draw the infomations depending on settings: Position, speed and target angle
13591360 // This display is only to present the available information from the last snapshot, not to interpolate or predict
1360- if (!g_Config.m_ClShowhudPlayerPosition && (Freeview || (!g_Config.m_ClShowhudPlayerSpeed && !g_Config.m_ClShowhudPlayerAngle )))
1361+ if (!g_Config.m_ClShowhudPlayerPosition && (PosOnly || (!g_Config.m_ClShowhudPlayerSpeed && !g_Config.m_ClShowhudPlayerAngle )))
13611362 {
13621363 return ;
13631364 }
@@ -1379,10 +1380,14 @@ void CHud::RenderMovementInformation(const int ClientId)
13791380 vec2 Pos;
13801381 float DisplaySpeedX{}, DisplaySpeedY{}, DisplayAngle{};
13811382
1382- if (Freeview )
1383+ if (ClientId == SPEC_FREEVIEW )
13831384 {
13841385 Pos = m_pClient->m_Camera .m_Center / 32 .f ;
13851386 }
1387+ else if (m_pClient->m_aClients [ClientId].m_SpecCharPresent )
1388+ {
1389+ Pos = m_pClient->m_aClients [ClientId].m_SpecChar / 32 .f ;
1390+ }
13861391 else
13871392 {
13881393 const CNetObj_Character *pPrevChar = &m_pClient->m_Snap .m_aCharacters [ClientId].m_Prev ;
@@ -1441,7 +1446,7 @@ void CHud::RenderMovementInformation(const int ClientId)
14411446 y += MOVEMENT_INFORMATION_LINE_HEIGHT;
14421447 }
14431448
1444- if (Freeview )
1449+ if (PosOnly )
14451450 return ;
14461451
14471452 if (g_Config.m_ClShowhudPlayerSpeed )
@@ -1607,7 +1612,7 @@ void CHud::OnRender()
16071612 {
16081613 RenderPlayerState (m_pClient->m_Snap .m_LocalClientId );
16091614 }
1610- RenderMovementInformation (m_pClient-> m_Snap . m_LocalClientId );
1615+ RenderMovementInformation ();
16111616 RenderDDRaceEffects ();
16121617 }
16131618 else if (m_pClient->m_Snap .m_SpecInfo .m_Active )
@@ -1625,7 +1630,7 @@ void CHud::OnRender()
16251630 {
16261631 RenderPlayerState (SpectatorId);
16271632 }
1628- RenderMovementInformation (SpectatorId );
1633+ RenderMovementInformation ();
16291634 RenderSpectatorHud ();
16301635 }
16311636
0 commit comments