From 883fb8818cb9ae31068404e0de9e91c470a765fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=BCller?= Date: Wed, 31 May 2023 00:08:01 +0200 Subject: [PATCH] Minor refactoring of `CAnimState` and tee rendering functions - Use `nullptr` instead of `0`. - Remove dead code. - Mark functions and pointers as `const` when possible. - Remove unused argument of `CRenderTools::GetRenderTeeAnimScaleAndBaseSize` function. - Copy tee render info when rendering emote wheel instead of modifying global render info. - Fix names of static variables. --- src/game/client/animstate.cpp | 37 +++++++++---------- src/game/client/animstate.h | 12 +++--- src/game/client/components/chat.cpp | 2 +- src/game/client/components/emoticon.cpp | 9 ++--- src/game/client/components/hud.cpp | 4 +- src/game/client/components/killmessages.cpp | 4 +- src/game/client/components/menus_browser.cpp | 4 +- src/game/client/components/menus_ingame.cpp | 4 +- src/game/client/components/menus_settings.cpp | 4 +- src/game/client/components/players.cpp | 4 +- src/game/client/components/players.h | 2 +- src/game/client/components/scoreboard.cpp | 2 +- src/game/client/components/spectator.cpp | 2 +- src/game/client/components/statboard.cpp | 2 +- src/game/client/render.cpp | 22 +++++------ src/game/client/render.h | 11 +++--- src/game/client/skin.h | 10 ++--- 17 files changed, 68 insertions(+), 67 deletions(-) diff --git a/src/game/client/animstate.cpp b/src/game/client/animstate.cpp index ec040aec2..2a61155a2 100644 --- a/src/game/client/animstate.cpp +++ b/src/game/client/animstate.cpp @@ -6,7 +6,7 @@ #include "animstate.h" -static void AnimSeqEval(CAnimSequence *pSeq, float Time, CAnimKeyframe *pFrame) +static void AnimSeqEval(const CAnimSequence *pSeq, float Time, CAnimKeyframe *pFrame) { if(pSeq->m_NumFrames == 0) { @@ -21,9 +21,8 @@ static void AnimSeqEval(CAnimSequence *pSeq, float Time, CAnimKeyframe *pFrame) } else { - //time = maximum(0.0f, minimum(1.0f, time / duration)); // TODO: use clamp - CAnimKeyframe *pFrame1 = 0; - CAnimKeyframe *pFrame2 = 0; + CAnimKeyframe *pFrame1 = nullptr; + CAnimKeyframe *pFrame2 = nullptr; float Blend = 0.0f; // TODO: make this smarter.. binary search @@ -38,7 +37,7 @@ static void AnimSeqEval(CAnimSequence *pSeq, float Time, CAnimKeyframe *pFrame) } } - if(pFrame1 && pFrame2) + if(pFrame1 != nullptr && pFrame2 != nullptr) { pFrame->m_Time = Time; pFrame->m_X = mix(pFrame1->m_X, pFrame2->m_X, Blend); @@ -48,7 +47,7 @@ static void AnimSeqEval(CAnimSequence *pSeq, float Time, CAnimKeyframe *pFrame) } } -static void AnimAddKeyframe(CAnimKeyframe *pSeq, CAnimKeyframe *pAdded, float Amount) +static void AnimAddKeyframe(CAnimKeyframe *pSeq, const CAnimKeyframe *pAdded, float Amount) { // AnimSeqEval fills m_X for any case, clang-analyzer assumes going into the // final else branch with pSeq->m_NumFrames < 2, which is impossible. @@ -57,12 +56,12 @@ static void AnimAddKeyframe(CAnimKeyframe *pSeq, CAnimKeyframe *pAdded, float Am pSeq->m_Angle += pAdded->m_Angle * Amount; } -static void AnimAdd(CAnimState *pState, CAnimState *pAdded, float Amount) +void CAnimState::AnimAdd(CAnimState *pState, const CAnimState *pAdded, float Amount) { - AnimAddKeyframe(pState->GetBody(), pAdded->GetBody(), Amount); - AnimAddKeyframe(pState->GetBackFoot(), pAdded->GetBackFoot(), Amount); - AnimAddKeyframe(pState->GetFrontFoot(), pAdded->GetFrontFoot(), Amount); - AnimAddKeyframe(pState->GetAttach(), pAdded->GetAttach(), Amount); + AnimAddKeyframe(&pState->m_Body, pAdded->GetBody(), Amount); + AnimAddKeyframe(&pState->m_BackFoot, pAdded->GetBackFoot(), Amount); + AnimAddKeyframe(&pState->m_FrontFoot, pAdded->GetFrontFoot(), Amount); + AnimAddKeyframe(&pState->m_Attach, pAdded->GetAttach(), Amount); } void CAnimState::Set(CAnimation *pAnim, float Time) @@ -80,17 +79,17 @@ void CAnimState::Add(CAnimation *pAnim, float Time, float Amount) AnimAdd(this, &Add, Amount); } -CAnimState *CAnimState::GetIdle() +const CAnimState *CAnimState::GetIdle() { - static CAnimState State; - static bool Init = true; + static CAnimState s_State; + static bool s_Init = true; - if(Init) + if(s_Init) { - State.Set(&g_pData->m_aAnimations[ANIM_BASE], 0); - State.Add(&g_pData->m_aAnimations[ANIM_IDLE], 0, 1.0f); - Init = false; + s_State.Set(&g_pData->m_aAnimations[ANIM_BASE], 0.0f); + s_State.Add(&g_pData->m_aAnimations[ANIM_IDLE], 0.0f, 1.0f); + s_Init = false; } - return &State; + return &s_State; } diff --git a/src/game/client/animstate.h b/src/game/client/animstate.h index bb3c462d7..45accba6f 100644 --- a/src/game/client/animstate.h +++ b/src/game/client/animstate.h @@ -12,15 +12,17 @@ class CAnimState CAnimKeyframe m_FrontFoot; CAnimKeyframe m_Attach; + void AnimAdd(CAnimState *pState, const CAnimState *pAdded, float Amount); + public: - CAnimKeyframe *GetBody() { return &m_Body; } - CAnimKeyframe *GetBackFoot() { return &m_BackFoot; } - CAnimKeyframe *GetFrontFoot() { return &m_FrontFoot; } - CAnimKeyframe *GetAttach() { return &m_Attach; } + const CAnimKeyframe *GetBody() const { return &m_Body; } + const CAnimKeyframe *GetBackFoot() const { return &m_BackFoot; } + const CAnimKeyframe *GetFrontFoot() const { return &m_FrontFoot; } + const CAnimKeyframe *GetAttach() const { return &m_Attach; } void Set(CAnimation *pAnim, float Time); void Add(CAnimation *pAnim, float Time, float Amount); - static CAnimState *GetIdle(); + const static CAnimState *GetIdle(); }; #endif diff --git a/src/game/client/components/chat.cpp b/src/game/client/components/chat.cpp index 9541d2b28..bd33b0646 100644 --- a/src/game/client/components/chat.cpp +++ b/src/game/client/components/chat.cpp @@ -1179,7 +1179,7 @@ void CChat::OnRender() float OffsetTeeY = MESSAGE_TEE_SIZE / 2.0f; float FullHeightMinusTee = RowHeight - MESSAGE_TEE_SIZE; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &RenderInfo, OffsetToMid); vec2 TeeRenderPos(x + (RealMsgPaddingX + MESSAGE_TEE_SIZE) / 2.0f, y + OffsetTeeY + FullHeightMinusTee / 2.0f + OffsetToMid.y); diff --git a/src/game/client/components/emoticon.cpp b/src/game/client/components/emoticon.cpp index 5002eefe9..16c6c32b4 100644 --- a/src/game/client/components/emoticon.cpp +++ b/src/game/client/components/emoticon.cpp @@ -135,7 +135,7 @@ void CEmoticon::OnRender() Graphics()->DrawCircle(Screen.w / 2, Screen.h / 2, 100.0f, 64); Graphics()->QuadsEnd(); - CTeeRenderInfo *pTeeInfo = &m_pClient->m_aClients[m_pClient->m_aLocalIDs[g_Config.m_ClDummy]].m_RenderInfo; + CTeeRenderInfo TeeInfo = m_pClient->m_aClients[m_pClient->m_aLocalIDs[g_Config.m_ClDummy]].m_RenderInfo; for(int i = 0; i < NUM_EMOTES; i++) { @@ -143,12 +143,11 @@ void CEmoticon::OnRender() if(Angle > pi) Angle -= 2 * pi; - bool Selected = m_SelectedEyeEmote == i; + const bool Selected = m_SelectedEyeEmote == i; const vec2 Nudge = direction(Angle) * 70.0f; - pTeeInfo->m_Size = Selected ? 64.0f : 48.0f; - RenderTools()->RenderTee(CAnimState::GetIdle(), pTeeInfo, i, vec2(-1, 0), vec2(Screen.w / 2 + Nudge.x, Screen.h / 2 + Nudge.y)); - pTeeInfo->m_Size = 64.0f; + TeeInfo.m_Size = Selected ? 64.0f : 48.0f; + RenderTools()->RenderTee(CAnimState::GetIdle(), &TeeInfo, i, vec2(-1, 0), vec2(Screen.w / 2 + Nudge.x, Screen.h / 2 + Nudge.y)); } Graphics()->TextureClear(); diff --git a/src/game/client/components/hud.cpp b/src/game/client/components/hud.cpp index 1f5848f4d..c0f8a80a0 100644 --- a/src/game/client/components/hud.cpp +++ b/src/game/client/components/hud.cpp @@ -269,7 +269,7 @@ void CHud::RenderScoreHud() CTeeRenderInfo TeeInfo = m_pClient->m_aClients[ID].m_RenderInfo; TeeInfo.m_Size = ScoreSingleBoxHeight; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(m_Width - ScoreWidthMax - TeeInfo.m_Size / 2 - Split, StartY + (t * 20) + ScoreSingleBoxHeight / 2.0f + OffsetToMid.y); @@ -432,7 +432,7 @@ void CHud::RenderScoreHud() CTeeRenderInfo TeeInfo = m_pClient->m_aClients[ID].m_RenderInfo; TeeInfo.m_Size = ScoreSingleBoxHeight; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(m_Width - ScoreWidthMax - TeeInfo.m_Size / 2 - Split, StartY + (t * 20) + ScoreSingleBoxHeight / 2.0f + OffsetToMid.y); diff --git a/src/game/client/components/killmessages.cpp b/src/game/client/components/killmessages.cpp index 64caf7725..3f4881912 100644 --- a/src/game/client/components/killmessages.cpp +++ b/src/game/client/components/killmessages.cpp @@ -320,7 +320,7 @@ void CKillMessages::OnRender() { CTeeRenderInfo TeeInfo = m_aKillmsgs[r].m_VictimRenderInfo[j]; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(x, y + 46.0f / 2.0f + OffsetToMid.y); @@ -366,7 +366,7 @@ void CKillMessages::OnRender() { CTeeRenderInfo TeeInfo = m_aKillmsgs[r].m_KillerRenderInfo; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(x, y + 46.0f / 2.0f + OffsetToMid.y); diff --git a/src/game/client/components/menus_browser.cpp b/src/game/client/components/menus_browser.cpp index d1504fd55..040e1ab35 100644 --- a/src/game/client/components/menus_browser.cpp +++ b/src/game/client/components/menus_browser.cpp @@ -1237,7 +1237,7 @@ void CMenus::RenderServerbrowserServerDetail(CUIRect View) } TeeInfo.m_Size = minimum(Skin.w, Skin.h); - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(Skin.x + TeeInfo.m_Size / 2, Skin.y + Skin.h / 2 + OffsetToMid.y); @@ -1497,7 +1497,7 @@ void CMenus::RenderServerbrowserFriends(CUIRect View) } TeeInfo.m_Size = minimum(Skin.w, Skin.h); - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(Skin.x + Skin.w / 2.0f, Skin.y + Skin.h * 0.55f + OffsetToMid.y); diff --git a/src/game/client/components/menus_ingame.cpp b/src/game/client/components/menus_ingame.cpp index 1d2ece7d5..304976625 100644 --- a/src/game/client/components/menus_ingame.cpp +++ b/src/game/client/components/menus_ingame.cpp @@ -301,7 +301,7 @@ void CMenus::RenderPlayers(CUIRect MainView) CTeeRenderInfo TeeInfo = CurrentClient.m_RenderInfo; TeeInfo.m_Size = Button.h; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(Button.x + Button.h / 2, Button.y + Button.h / 2 + OffsetToMid.y); @@ -603,7 +603,7 @@ bool CMenus::RenderServerControlKick(CUIRect MainView, bool FilterSpectators) CTeeRenderInfo TeeInfo = m_pClient->m_aClients[aPlayerIDs[i]].m_RenderInfo; TeeInfo.m_Size = TeeRect.h; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(TeeRect.x + TeeInfo.m_Size / 2, TeeRect.y + TeeInfo.m_Size / 2 + OffsetToMid.y); diff --git a/src/game/client/components/menus_settings.cpp b/src/game/client/components/menus_settings.cpp index 386437e5e..ec72e07f6 100644 --- a/src/game/client/components/menus_settings.cpp +++ b/src/game/client/components/menus_settings.cpp @@ -586,7 +586,7 @@ void CMenus::RenderSettingsTee(CUIRect MainView) MainView.HSplitTop(50.0f, &Label, &MainView); Label.VSplitLeft(260.0f, &Label, 0); - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &OwnSkinInfo, OffsetToMid); vec2 TeeRenderPos(Label.x + 30.0f, Label.y + Label.h / 2.0f + OffsetToMid.y); @@ -2688,7 +2688,7 @@ void CMenus::RenderSettingsAppearance(CUIRect MainView) str_copy(aBuf, Client()->PlayerName()); - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); constexpr int PreviewTeeCount = 4; constexpr float RealTeeSize = CChat::MESSAGE_TEE_SIZE * 2; constexpr float RealTeeSizeHalved = CChat::MESSAGE_TEE_SIZE; diff --git a/src/game/client/components/players.cpp b/src/game/client/components/players.cpp index cd14c48c3..d9fef2172 100644 --- a/src/game/client/components/players.cpp +++ b/src/game/client/components/players.cpp @@ -25,7 +25,7 @@ #include #include -void CPlayers::RenderHand(CTeeRenderInfo *pInfo, vec2 CenterPos, vec2 Dir, float AngleOffset, vec2 PostRotOffset, float Alpha) +void CPlayers::RenderHand(const CTeeRenderInfo *pInfo, vec2 CenterPos, vec2 Dir, float AngleOffset, vec2 PostRotOffset, float Alpha) { vec2 HandPos = CenterPos + Dir; float Angle = angle(Dir); @@ -666,7 +666,7 @@ void CPlayers::RenderPlayer( RenderTools()->RenderTee(&State, &RenderInfo, Player.m_Emote, Direction, Position, Alpha); float TeeAnimScale, TeeBaseSize; - RenderTools()->GetRenderTeeAnimScaleAndBaseSize(&State, &RenderInfo, TeeAnimScale, TeeBaseSize); + RenderTools()->GetRenderTeeAnimScaleAndBaseSize(&RenderInfo, TeeAnimScale, TeeBaseSize); vec2 BodyPos = Position + vec2(State.GetBody()->m_X, State.GetBody()->m_Y) * TeeAnimScale; if(RenderInfo.m_TeeRenderFlags & TEE_EFFECT_FROZEN) { diff --git a/src/game/client/components/players.h b/src/game/client/components/players.h index 3e6bde0ee..556c61cfb 100644 --- a/src/game/client/components/players.h +++ b/src/game/client/components/players.h @@ -13,7 +13,7 @@ class CPlayers : public CComponent CTeeRenderInfo m_RenderInfoSpec; CTeeRenderInfo m_aRenderInfo[MAX_CLIENTS]; - void RenderHand(class CTeeRenderInfo *pInfo, vec2 CenterPos, vec2 Dir, float AngleOffset, vec2 PostRotOffset, float Alpha = 1.0f); + void RenderHand(const CTeeRenderInfo *pInfo, vec2 CenterPos, vec2 Dir, float AngleOffset, vec2 PostRotOffset, float Alpha = 1.0f); void RenderPlayer( const CNetObj_Character *pPrevChar, const CNetObj_Character *pPlayerChar, diff --git a/src/game/client/components/scoreboard.cpp b/src/game/client/components/scoreboard.cpp index 5a600055b..b4354a82e 100644 --- a/src/game/client/components/scoreboard.cpp +++ b/src/game/client/components/scoreboard.cpp @@ -432,7 +432,7 @@ void CScoreboard::RenderScoreboard(float x, float y, float w, int Team, const ch // avatar CTeeRenderInfo TeeInfo = m_pClient->m_aClients[pInfo->m_ClientID].m_RenderInfo; TeeInfo.m_Size *= TeeSizeMod; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(TeeOffset + TeeLength / 2, y + LineHeight / 2.0f + OffsetToMid.y); diff --git a/src/game/client/components/spectator.cpp b/src/game/client/components/spectator.cpp index 397e73801..b22d97b8d 100644 --- a/src/game/client/components/spectator.cpp +++ b/src/game/client/components/spectator.cpp @@ -390,7 +390,7 @@ void CSpectator::OnRender() CTeeRenderInfo TeeInfo = m_pClient->m_aClients[m_pClient->m_Snap.m_apInfoByDDTeamName[i]->m_ClientID].m_RenderInfo; TeeInfo.m_Size *= TeeSizeMod; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &TeeInfo, OffsetToMid); vec2 TeeRenderPos(Width / 2.0f + x + 20.0f, Height / 2.0f + y + BoxMove + LineHeight / 2.0f + OffsetToMid.y); diff --git a/src/game/client/components/statboard.cpp b/src/game/client/components/statboard.cpp index 1ac1eb150..07196b5f0 100644 --- a/src/game/client/components/statboard.cpp +++ b/src/game/client/components/statboard.cpp @@ -276,7 +276,7 @@ void CStatboard::RenderGlobalStats() CTeeRenderInfo Teeinfo = m_pClient->m_aClients[pInfo->m_ClientID].m_RenderInfo; Teeinfo.m_Size *= TeeSizemod; - CAnimState *pIdleState = CAnimState::GetIdle(); + const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; RenderTools()->GetRenderTeeOffsetToRenderedTee(pIdleState, &Teeinfo, OffsetToMid); vec2 TeeRenderPos(x + Teeinfo.m_Size / 2, y + LineHeight / 2.0f + OffsetToMid.y); diff --git a/src/game/client/render.cpp b/src/game/client/render.cpp index 359696eee..bed3422a2 100644 --- a/src/game/client/render.cpp +++ b/src/game/client/render.cpp @@ -176,7 +176,7 @@ int CRenderTools::QuadContainerAddSprite(int QuadContainerIndex, float X, float return Graphics()->QuadContainerAddQuads(QuadContainerIndex, &QuadItem, 1); } -void CRenderTools::GetRenderTeeAnimScaleAndBaseSize(CAnimState *pAnim, CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize) +void CRenderTools::GetRenderTeeAnimScaleAndBaseSize(const CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize) { AnimScale = pInfo->m_Size * 1.0f / 64.0f; BaseSize = pInfo->m_Size; @@ -194,10 +194,10 @@ void CRenderTools::GetRenderTeeFeetScale(float BaseSize, float &FeetScaleWidth, FeetScaleHeight = (BaseSize / 2) / 32.0f; } -void CRenderTools::GetRenderTeeBodySize(CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height) +void CRenderTools::GetRenderTeeBodySize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height) { float AnimScale, BaseSize; - GetRenderTeeAnimScaleAndBaseSize(pAnim, pInfo, AnimScale, BaseSize); + GetRenderTeeAnimScaleAndBaseSize(pInfo, AnimScale, BaseSize); float BodyScale; GetRenderTeeBodyScale(BaseSize, BodyScale); @@ -208,10 +208,10 @@ void CRenderTools::GetRenderTeeBodySize(CAnimState *pAnim, CTeeRenderInfo *pInfo BodyOffset.y = pInfo->m_SkinMetrics.m_Body.OffsetYNormalized() * 64.0f * BodyScale; } -void CRenderTools::GetRenderTeeFeetSize(CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height) +void CRenderTools::GetRenderTeeFeetSize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height) { float AnimScale, BaseSize; - GetRenderTeeAnimScaleAndBaseSize(pAnim, pInfo, AnimScale, BaseSize); + GetRenderTeeAnimScaleAndBaseSize(pInfo, AnimScale, BaseSize); float FeetScaleWidth, FeetScaleHeight; GetRenderTeeFeetScale(BaseSize, FeetScaleWidth, FeetScaleHeight); @@ -222,17 +222,17 @@ void CRenderTools::GetRenderTeeFeetSize(CAnimState *pAnim, CTeeRenderInfo *pInfo FeetOffset.y = pInfo->m_SkinMetrics.m_Feet.OffsetYNormalized() * 32.0f * FeetScaleHeight; } -void CRenderTools::GetRenderTeeOffsetToRenderedTee(CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &TeeOffsetToMid) +void CRenderTools::GetRenderTeeOffsetToRenderedTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &TeeOffsetToMid) { float AnimScale, BaseSize; - GetRenderTeeAnimScaleAndBaseSize(pAnim, pInfo, AnimScale, BaseSize); + GetRenderTeeAnimScaleAndBaseSize(pInfo, AnimScale, BaseSize); vec2 BodyPos = vec2(pAnim->GetBody()->m_X, pAnim->GetBody()->m_Y) * AnimScale; float AssumedScale = BaseSize / 64.0f; // just use the lowest feet vec2 FeetPos; - CAnimKeyframe *pFoot = pAnim->GetFrontFoot(); + const CAnimKeyframe *pFoot = pAnim->GetFrontFoot(); FeetPos = vec2(pFoot->m_X * AnimScale, pFoot->m_Y * AnimScale); pFoot = pAnim->GetBackFoot(); FeetPos = vec2(FeetPos.x, maximum(FeetPos.y, pFoot->m_Y * AnimScale)); @@ -270,7 +270,7 @@ void CRenderTools::GetRenderTeeOffsetToRenderedTee(CAnimState *pAnim, CTeeRender TeeOffsetToMid.y = -MidOfRendered; } -void CRenderTools::RenderTee(CAnimState *pAnim, CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha) +void CRenderTools::RenderTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha) { vec2 Direction = Dir; vec2 Position = Pos; @@ -286,7 +286,7 @@ void CRenderTools::RenderTee(CAnimState *pAnim, CTeeRenderInfo *pInfo, int Emote for(int f = 0; f < 2; f++) { float AnimScale, BaseSize; - GetRenderTeeAnimScaleAndBaseSize(pAnim, pInfo, AnimScale, BaseSize); + GetRenderTeeAnimScaleAndBaseSize(pInfo, AnimScale, BaseSize); if(f == 1) { Graphics()->QuadsSetRotation(pAnim->GetBody()->m_Angle * pi * 2); @@ -341,7 +341,7 @@ void CRenderTools::RenderTee(CAnimState *pAnim, CTeeRenderInfo *pInfo, int Emote } // draw feet - CAnimKeyframe *pFoot = f ? pAnim->GetFrontFoot() : pAnim->GetBackFoot(); + const CAnimKeyframe *pFoot = f ? pAnim->GetFrontFoot() : pAnim->GetBackFoot(); float w = BaseSize; float h = BaseSize / 2; diff --git a/src/game/client/render.h b/src/game/client/render.h index 6e7489e49..1ac873dcd 100644 --- a/src/game/client/render.h +++ b/src/game/client/render.h @@ -9,6 +9,7 @@ #include #include +class CAnimState; class CSpeedupTile; class CSwitchTile; class CTeleTile; @@ -106,14 +107,14 @@ public: int QuadContainerAddSprite(int QuadContainerIndex, float X, float Y, float Width, float Height); // larger rendering methods - void GetRenderTeeBodySize(class CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height); - void GetRenderTeeFeetSize(class CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height); - void GetRenderTeeAnimScaleAndBaseSize(class CAnimState *pAnim, CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize); + void GetRenderTeeBodySize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height); + void GetRenderTeeFeetSize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height); + void GetRenderTeeAnimScaleAndBaseSize(const CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize); // returns the offset to use, to render the tee with @see RenderTee exactly in the mid - void GetRenderTeeOffsetToRenderedTee(class CAnimState *pAnim, CTeeRenderInfo *pInfo, vec2 &TeeOffsetToMid); + void GetRenderTeeOffsetToRenderedTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &TeeOffsetToMid); // object render methods - void RenderTee(class CAnimState *pAnim, CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha = 1.0f); + void RenderTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha = 1.0f); // map render methods (render_map.cpp) static void RenderEvalEnvelope(CEnvPoint *pPoints, int NumPoints, int Channels, std::chrono::nanoseconds TimeNanos, ColorRGBA &Result); diff --git a/src/game/client/skin.h b/src/game/client/skin.h index 655166011..aed057e3c 100644 --- a/src/game/client/skin.h +++ b/src/game/client/skin.h @@ -47,7 +47,7 @@ public: struct SSkinMetricVariableInt { int m_Value; - operator int() { return m_Value; } + operator int() const { return m_Value; } SSkinMetricVariableInt &operator=(int NewVal) { if(IsSizeType) @@ -82,22 +82,22 @@ public: SSkinMetricVariableInt m_MaxWidth; SSkinMetricVariableInt m_MaxHeight; - float WidthNormalized() + float WidthNormalized() const { return (float)m_Width / (float)m_MaxWidth; } - float HeightNormalized() + float HeightNormalized() const { return (float)m_Height / (float)m_MaxHeight; } - float OffsetXNormalized() + float OffsetXNormalized() const { return (float)m_OffsetX / (float)m_MaxWidth; } - float OffsetYNormalized() + float OffsetYNormalized() const { return (float)m_OffsetY / (float)m_MaxHeight; }