mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-23 20:09:46 +03:00
* Update dynamic hand logic.
This commit is contained in:
@@ -17,12 +17,6 @@ ItemInHandRenderer::ItemInHandRenderer(Minecraft* pMC) :
|
|||||||
field_18 = 0;
|
field_18 = 0;
|
||||||
field_1C = 0.0f;
|
field_1C = 0.0f;
|
||||||
field_20 = 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
|
// 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);
|
//glRotatef(pLP->field_5C + (pLP->m_yaw - pLP->field_5C) * f, 0.0f, 1.0f, 0.0f);
|
||||||
//glPopMatrix();//huh?
|
//glPopMatrix();//huh?
|
||||||
|
|
||||||
// @TODO: Change to Mth::Lerp when iOS port pulled!
|
if (m_pMinecraft->getOptions()->m_bDynamicHand && m_pMinecraft->m_pMobPersp == pLP)
|
||||||
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);
|
// @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));
|
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);
|
glColor4f(fBright, fBright, fBright, 1.0f);
|
||||||
@@ -324,46 +323,12 @@ void ItemInHandRenderer::tick()
|
|||||||
|
|
||||||
field_1C += a;
|
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)
|
if (field_1C < 0.1f)
|
||||||
m_ItemInstance.m_itemID = itemID;
|
m_ItemInstance.m_itemID = itemID;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemInHandRenderer::turn(float yd, float pd)
|
void ItemInHandRenderer::turn(float yd, float pd)
|
||||||
{
|
{
|
||||||
m_yawOffsVel += yd * 0.15f;
|
|
||||||
m_pitchOffsVel += pd * 0.15f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemInHandRenderer::renderScreenEffect(float f)
|
void ItemInHandRenderer::renderScreenEffect(float f)
|
||||||
|
|||||||
@@ -35,11 +35,5 @@ public:
|
|||||||
float field_1C;
|
float field_1C;
|
||||||
float field_20;
|
float field_20;
|
||||||
TileRenderer m_tileRenderer;
|
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;
|
field_C38 = 0;
|
||||||
m_pMoveInput = nullptr;
|
m_pMoveInput = nullptr;
|
||||||
|
|
||||||
|
m_renderArmYaw = 0.0f;
|
||||||
|
m_renderArmPitch = 0.0f;
|
||||||
|
m_lastRenderArmYaw = 0.0f;
|
||||||
|
m_lastRenderArmPitch = 0.0f;
|
||||||
|
|
||||||
m_pMinecraft = pMinecraft;
|
m_pMinecraft = pMinecraft;
|
||||||
m_name = pUser->field_0;
|
m_name = pUser->field_0;
|
||||||
|
|
||||||
@@ -53,6 +58,12 @@ void LocalPlayer::aiStep()
|
|||||||
if (m_pMoveInput->m_bSneakButton && field_A4 < 0.2f)
|
if (m_pMoveInput->m_bSneakButton && field_A4 < 0.2f)
|
||||||
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();
|
Mob::aiStep();
|
||||||
Player::aiStep();
|
Player::aiStep();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,4 +58,8 @@ public:
|
|||||||
int field_C38;
|
int field_C38;
|
||||||
Minecraft* m_pMinecraft;
|
Minecraft* m_pMinecraft;
|
||||||
IMoveInput* m_pMoveInput;
|
IMoveInput* m_pMoveInput;
|
||||||
|
float m_renderArmYaw;
|
||||||
|
float m_renderArmPitch;
|
||||||
|
float m_lastRenderArmYaw;
|
||||||
|
float m_lastRenderArmPitch;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user