Renderer: Implement frontal third-person

This commit is contained in:
Er2
2023-12-02 18:42:10 +03:00
parent 56ce7e8073
commit 5729be0457
2 changed files with 16 additions and 1 deletions

View File

@@ -466,7 +466,13 @@ void Minecraft::tickInput()
if (getOptions()->isKey(KM_TOGGLE3RD, keyCode))
{
getOptions()->m_bThirdPerson = !getOptions()->m_bThirdPerson;
bool thirdPerson = getOptions()->m_bThirdPerson;
if (thirdPerson && !getOptions()->field_241)
getOptions()->field_241 = 1;
else {
getOptions()->m_bThirdPerson = !getOptions()->m_bThirdPerson;
getOptions()->field_241 = 0;
}
}
else if (getOptions()->isKey(KM_MENU_CANCEL, keyCode))
{

View File

@@ -136,6 +136,7 @@ void GameRenderer::moveCameraToPlayer(float f)
if (m_pMinecraft->getOptions()->m_bThirdPerson)
{
float v11 = field_30 + (field_2C - field_30) * f;
#if 0
if (m_pMinecraft->getOptions()->field_241)
{
glTranslatef(0.0f, 0.0f, -v11);
@@ -143,6 +144,8 @@ void GameRenderer::moveCameraToPlayer(float f)
glRotatef(field_40 + (field_3C - field_40) * f, 0.0f, 1.0f, 0.0f);
}
else
#endif
#if 1
{
float mob_yaw = pMob->m_yaw;
float mob_pitch = pMob->m_pitch;
@@ -182,6 +185,7 @@ void GameRenderer::moveCameraToPlayer(float f)
glRotatef(mob_yaw - pMob->m_yaw, 0.0f, 1.0f, 0.0f);
glRotatef(mob_pitch - pMob->m_pitch, 1.0f, 0.0f, 0.0f);
}
#endif
}
else
{
@@ -193,6 +197,11 @@ void GameRenderer::moveCameraToPlayer(float f)
glRotatef(pMob->field_60 + f * (pMob->m_pitch - pMob->field_60), 1.0f, 0.0f, 0.0f);
glRotatef(pMob->field_5C + f * (pMob->m_yaw - pMob->field_5C) + 180.0f, 0.0f, 1.0f, 0.0f);
}
else
{
glRotatef(pMob->field_60, -1.0f, 0.0f, 0.0f);
glRotatef(pMob->field_5C, 0.0f, 1.0f, 0.0f);
}
glTranslatef(0.0f, headHeightDiff, 0.0f);
}