if (!(game::main.get_local()->m_fFlags() & FL_ONGROUND))
{
if (type == 1)
{
cmd->forwardmove = (10000.f / game::main.get_local()->m_vecVelocity().Length2D() > 450.f) ? 450.f : 10000.f / game::main.get_local()->m_vecVelocity().Length2D();
cmd->sidemove = (cmd->mousedx != 0) ? (cmd->mousedx < 0.0f) ? -450.f : 450.f : (cmd->command_number % 2) == 0 ? -450.f : 450.f;
}
else
{
static float cl_sidespeed = interfaces::cvar->FindVar("cl_sidespeed")->GetFloat();
if (fabsf(cmd->mousedx > 2)) {
cmd->sidemove = (cmd->mousedx < 0.f) ? -cl_sidespeed : cl_sidespeed;
return;
}
if (GetAsyncKeyState('S')) {
cmd->viewangles.y -= 180;
}
else if (GetAsyncKeyState('D')) {
cmd->viewangles.y -= 90;
}
else if (GetAsyncKeyState('A')) {
cmd->viewangles.y += 90;
}
if (!game::main.get_local()->m_vecVelocity().Length2D() > 0.5 || game::main.get_local()->m_vecVelocity().Length2D() == NAN || game::main.get_local()->m_vecVelocity().Length2D() == INFINITE)
{
cmd->forwardmove = 400;
return;
}
cmd->forwardmove = math::clamp(5850.f / game::main.get_local()->m_vecVelocity().Length2D(), -400, 400);
if ((cmd->forwardmove < -400 || cmd->forwardmove > 400))
cmd->forwardmove = 0;
const auto vel = game::main.get_local()->m_vecVelocity();
const float y_vel = RAD2DEG(atan2(vel.y, vel.x));
const float diff_ang = math::normalize_yaw(cmd->viewangles.y - y_vel);
cmd->sidemove = (diff_ang > 0.0) ? -cl_sidespeed : cl_sidespeed;
cmd->viewangles.y = math::normalize_yaw(cmd->viewangles.y - diff_ang);
}
}