Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Vector velocity = g_LocalPlayer->m_vecVelocity();
- velocity.z = 0.0f;
- float flSpeed = velocity.Length2D();
- if (!abs(flSpeed) < 0.0f) {
- float prefAngleDeltaRad = get_delta(flSpeed, 300.0, 10.f);
- if (prefAngleDeltaRad > 0.0f) {
- float prefAngleDeltaDeg = fmod(RAD2DEG(prefAngleDeltaRad), 360);
- Vector forward;
- Math::AngleVectors(cmd->viewangles, forward);
- forward.NormalizeInPlace();
- float flSlip = forward.Dot(velocity);
- if (abs(flSlip) > 30.0f) {
- float lookYawDeg = fmod(cmd->viewangles.pitch, 360);
- Vector wishMoveYaw(cmd->forwardmove, cmd->sidemove, 0);
- wishMoveYaw.NormalizeInPlace();
- QAngle Out, Out2;
- Math::VectorAngles(wishMoveYaw, Out);
- float wishMoveYawLocalDeg = fmod(Out.pitch, 360);
- float wishMoveYawDeg = fmod((lookYawDeg + wishMoveYawLocalDeg), 360);
- velocity.NormalizeInPlace();
- Math::VectorAngles(velocity, Out);
- float velYawDeg = fmod(Out2.pitch, 360);
- float factor;
- if (velYawDeg - wishMoveYawDeg > 0.0) {
- factor = 1.0f;
- }
- else {
- factor = -1.0f;
- }
- float finalYawDeg = fmod((velYawDeg + factor * prefAngleDeltaDeg), 360.0);
- float finalYawRad = DEG2RAD(finalYawDeg);
- Vector VectorMove(cmd->forwardmove, cmd->sidemove, cmd->upmove);
- float flSpeed = VectorMove.Length2D();
- cmd->forwardmove = flSpeed * cos(finalYawRad);
- cmd->sidemove = flSpeed * sin(finalYawRad);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement