Handle sneak eye_offcet in C++

This commit is contained in:
MoNTE48 2020-03-25 15:53:52 +01:00
parent 0a8c359d08
commit ca1e211f7e
2 changed files with 15 additions and 2 deletions

View File

@ -71,6 +71,7 @@ LocalPlayer::LocalPlayer(Client *client, const char *name):
m_sneak_node_bb_top(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f),
m_sneak_node_exists(false),
m_sneak_ladder_detected(false),
m_sneak_offset(false),
m_sneak_node_bb_ymax(0.0f),
m_need_to_get_new_sneak_node(true),
m_old_node_below(32767,32767,32767),
@ -718,10 +719,21 @@ void LocalPlayer::applyControl(float dtime, ClientEnvironment *env)
// The speed of the player (Y is ignored)
if(superspeed || (is_climbing && fast_climb) || ((in_liquid || in_liquid_stable) && fast_climb))
speedH = speedH.normalize() * movement_speed_fast;
else if(control.sneak && !free_move && !in_liquid && !in_liquid_stable)
else if(control.sneak && !free_move && !in_liquid && !in_liquid_stable) {
speedH = speedH.normalize() * movement_speed_crouch;
else
if (!m_sneak_offset && !isAttached && (physics_override_speed != 0)) {
eye_offset_first += v3f(0,-3,0);
eye_offset_third += v3f(0,-3,0);
m_sneak_offset = true;
}
} else {
speedH = speedH.normalize() * movement_speed_walk;
if (m_sneak_offset && !isAttached && (physics_override_speed != 0)) {
eye_offset_first += v3f(0,3,0);
eye_offset_third += v3f(0,3,0);
m_sneak_offset = false;
}
}
// Acceleration increase
f32 incH = 0; // Horizontal (X, Z)

View File

@ -159,6 +159,7 @@ private:
// Whether a "sneak ladder" structure is detected at the players pos
// see detectSneakLadder() in the .cpp for more info (always false if disabled)
bool m_sneak_ladder_detected;
bool m_sneak_offset;
// ***** Variables for temporary option of the old move code *****
// Stores the max player uplift by m_sneak_node