for (int i = 1; i <= g_GlobalVars->maxClients; i++)
{
C_BasePlayer* player = C_BasePlayer::GetPlayerByIndex(i);
if (!player || !player->IsAlive() || player->IsDormant() || player == g_LocalPlayer)
continue;
if (g_Options.hvh_resolver_override && g_InputSystem->IsButtonDown(g_Options.hvh_resolver_override_key))
{
Override();
return;
}
auto curr_angles = player->GetAbsAngles();
auto curr_feet = player->GetPlayerAnimState()->m_flCurrentFeetYaw();
auto max_rotate = 58.f;
auto entity_speed = player->m_vecVelocity().Length2D();
auto delta = Math::AngleDiff(curr_angles.yaw, curr_feet);
if (delta <= max_rotate) {
if (delta < 35.f && delta > -35) {
if (entity_speed > 0.1f)
player->m_angEyeAngles().yaw = player->m_flLowerBodyYawTarget();
continue;
}
else if (delta > 35.f) {
if (curr_angles.yaw < 0.f && curr_angles.yaw > -180.f)
player->m_angEyeAngles().yaw = Math::ClampYaw(curr_angles.yaw + delta);
else if (curr_angles.yaw > 0.f && curr_angles.yaw < 180.f)
player->m_angEyeAngles().yaw = Math::ClampYaw(curr_angles.yaw - delta);
}
else if (delta < -35.f) {
if (curr_angles.yaw < 0.f && curr_angles.yaw > -180.f)
player->m_angEyeAngles().yaw = Math::ClampYaw(curr_angles.yaw - delta);
else if (curr_angles.yaw > 0.f && curr_angles.yaw < 180.f)
player->m_angEyeAngles().yaw = Math::ClampYaw(curr_angles.yaw + delta);
}
}
}