mirror of
https://github.com/celisej567/mcpe.git
synced 2025-12-31 17:49:17 +03:00
* Update dynamic hand logic.
This commit is contained in:
@@ -17,12 +17,6 @@ ItemInHandRenderer::ItemInHandRenderer(Minecraft* pMC) :
|
||||
field_18 = 0;
|
||||
field_1C = 0.0f;
|
||||
field_20 = 0.0f;
|
||||
m_yawOffs = 0.0f;
|
||||
m_pitchOffs = 0.0f;
|
||||
m_yawOffsVel = 0.0f;
|
||||
m_pitchOffsVel = 0.0f;
|
||||
m_lastYawOffs = 0.0f;
|
||||
m_lastPitchOffs = 0.0f;
|
||||
}
|
||||
|
||||
// This and itemUsed are probably leftovers from Minecraft Classic
|
||||
@@ -173,9 +167,14 @@ void ItemInHandRenderer::render(float f)
|
||||
//glRotatef(pLP->field_5C + (pLP->m_yaw - pLP->field_5C) * f, 0.0f, 1.0f, 0.0f);
|
||||
//glPopMatrix();//huh?
|
||||
|
||||
// @TODO: Change to Mth::Lerp when iOS port pulled!
|
||||
glRotatef(-Lerp(m_lastPitchOffs, m_pitchOffs, f), 1.0f, 0.0f, 0.0f);
|
||||
glRotatef(+Lerp(m_lastYawOffs, m_yawOffs, f), 0.0f, 1.0f, 0.0f);
|
||||
if (m_pMinecraft->getOptions()->m_bDynamicHand && m_pMinecraft->m_pMobPersp == pLP)
|
||||
{
|
||||
// @TODO: Change to Mth::Lerp when iOS port is pulled!
|
||||
float rYaw = Lerp(pLP->m_lastRenderArmYaw, pLP->m_renderArmYaw, f);
|
||||
float rPitch = Lerp(pLP->m_lastRenderArmPitch, pLP->m_renderArmPitch, f);
|
||||
glRotatef((pLP->m_pitch - rPitch) * 0.1f, 1.0f, 0.0f, 0.0f);
|
||||
glRotatef((pLP->m_yaw - rYaw ) * 0.1f, 0.0f, 1.0f, 0.0f);
|
||||
}
|
||||
|
||||
float fBright = m_pMinecraft->m_pLevel->getBrightness(Mth::floor(pLP->m_pos.x), Mth::floor(pLP->m_pos.y), Mth::floor(pLP->m_pos.z));
|
||||
glColor4f(fBright, fBright, fBright, 1.0f);
|
||||
@@ -324,46 +323,12 @@ void ItemInHandRenderer::tick()
|
||||
|
||||
field_1C += a;
|
||||
|
||||
if (m_pMinecraft->getOptions()->m_bDynamicHand)
|
||||
{
|
||||
m_lastYawOffs = m_yawOffs;
|
||||
m_lastPitchOffs = m_pitchOffs;
|
||||
|
||||
m_yawOffsVel *= 0.3f;
|
||||
m_pitchOffsVel *= 0.3f;
|
||||
|
||||
m_yawOffs *= 0.3f;
|
||||
m_pitchOffs *= 0.3f;
|
||||
|
||||
m_yawOffs += m_yawOffsVel;
|
||||
m_pitchOffs += m_pitchOffsVel;
|
||||
|
||||
if (m_yawOffs < 0.01f && m_yawOffs > -0.01f) m_yawOffs = 0.0f;
|
||||
if (m_yawOffsVel < 0.01f && m_yawOffsVel > -0.01f) m_yawOffsVel = 0.0f;
|
||||
if (m_pitchOffs < 0.01f && m_pitchOffs > -0.01f) m_pitchOffs = 0.0f;
|
||||
if (m_pitchOffsVel < 0.01f && m_pitchOffsVel > -0.01f) m_pitchOffsVel = 0.0f;
|
||||
|
||||
if (m_yawOffsVel > +2.0f) m_yawOffsVel = +2.0f;
|
||||
if (m_yawOffsVel < -2.0f) m_yawOffsVel = -2.0f;
|
||||
if (m_pitchOffsVel > +2.0f) m_pitchOffsVel = +2.0f;
|
||||
if (m_pitchOffsVel < -2.0f) m_pitchOffsVel = -2.0f;
|
||||
if (m_yawOffs > +10.0f) m_yawOffs = +10.0f;
|
||||
if (m_yawOffs < -10.0f) m_yawOffs = -10.0f;
|
||||
if (m_pitchOffs > +10.0f) m_pitchOffs = +10.0f;
|
||||
if (m_pitchOffs < -10.0f) m_pitchOffs = -10.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_yawOffs = m_pitchOffs = m_lastYawOffs = m_lastPitchOffs = m_yawOffsVel = m_pitchOffsVel = 0.0f;
|
||||
}
|
||||
if (field_1C < 0.1f)
|
||||
m_ItemInstance.m_itemID = itemID;
|
||||
}
|
||||
|
||||
void ItemInHandRenderer::turn(float yd, float pd)
|
||||
{
|
||||
m_yawOffsVel += yd * 0.15f;
|
||||
m_pitchOffsVel += pd * 0.15f;
|
||||
}
|
||||
|
||||
void ItemInHandRenderer::renderScreenEffect(float f)
|
||||
|
||||
@@ -35,11 +35,5 @@ public:
|
||||
float field_1C;
|
||||
float field_20;
|
||||
TileRenderer m_tileRenderer;
|
||||
float m_yawOffsVel;
|
||||
float m_pitchOffsVel;
|
||||
float m_yawOffs;
|
||||
float m_pitchOffs;
|
||||
float m_lastYawOffs;
|
||||
float m_lastPitchOffs;
|
||||
};
|
||||
|
||||
|
||||
@@ -36,6 +36,11 @@ LocalPlayer::LocalPlayer(Minecraft* pMinecraft, Level* pLevel, User* pUser, int
|
||||
field_C38 = 0;
|
||||
m_pMoveInput = nullptr;
|
||||
|
||||
m_renderArmYaw = 0.0f;
|
||||
m_renderArmPitch = 0.0f;
|
||||
m_lastRenderArmYaw = 0.0f;
|
||||
m_lastRenderArmPitch = 0.0f;
|
||||
|
||||
m_pMinecraft = pMinecraft;
|
||||
m_name = pUser->field_0;
|
||||
|
||||
@@ -53,6 +58,12 @@ void LocalPlayer::aiStep()
|
||||
if (m_pMoveInput->m_bSneakButton && field_A4 < 0.2f)
|
||||
field_A4 = 0.2f;
|
||||
|
||||
m_lastRenderArmYaw = m_renderArmYaw;
|
||||
m_lastRenderArmPitch = m_renderArmPitch;
|
||||
// @TODO: Change to Mth::Lerp when iOS port is pulled!
|
||||
m_renderArmYaw = Lerp(m_renderArmYaw, m_yaw, 0.5f);
|
||||
m_renderArmPitch = Lerp(m_renderArmPitch, m_pitch, 0.5f);
|
||||
|
||||
Mob::aiStep();
|
||||
Player::aiStep();
|
||||
}
|
||||
|
||||
@@ -58,4 +58,8 @@ public:
|
||||
int field_C38;
|
||||
Minecraft* m_pMinecraft;
|
||||
IMoveInput* m_pMoveInput;
|
||||
float m_renderArmYaw;
|
||||
float m_renderArmPitch;
|
||||
float m_lastRenderArmYaw;
|
||||
float m_lastRenderArmPitch;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user