mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
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.
This commit is contained in:
parent
80c32061a7
commit
883fb8818c
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include <base/color.h>
|
||||
#include <base/math.h>
|
||||
|
||||
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)
|
||||
{
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <game/client/skin.h>
|
||||
#include <game/client/ui_rect.h>
|
||||
|
||||
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);
|
||||
|
|
|
@ -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<true> m_MaxWidth;
|
||||
SSkinMetricVariableInt<true> 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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue