bool CRageBot::AimAtPoint(IClientEntity* pLocal, Vector point, CUserCmd *pCmd, bool &bSendPacket)
{
bool ReturnValue = false;
if (point.Length() == 0) return ReturnValue;
Vector angles;
Vector src = pLocal->GetOrigin() + pLocal->GetViewOffset();
CalcAngle(src, point, angles);
GameUtils::NormaliseViewAngle(angles);
if (angles[0] != angles[0] || angles[1] != angles[1])
{
return ReturnValue;
}
IsLocked = true;
Vector ViewOffset = pLocal->GetOrigin() + pLocal->GetViewOffset();
if (!IsAimStepping)
LastAimstepAngle = LastAngle;
float fovLeft = FovToPlayer(ViewOffset, LastAimstepAngle, Interfaces::EntList->GetClientEntity(TargetID), 0);
if (fovLeft > 25.0f && Menu::Window.RageBotTab.AimbotAimStep.GetState())
{
Vector AddAngs = angles - LastAimstepAngle;
Normalize(AddAngs, AddAngs);
AddAngs *= 25;
LastAimstepAngle += AddAngs;
GameUtils::NormaliseViewAngle(LastAimstepAngle);
angles = LastAimstepAngle;
}
else
{
ReturnValue = true;
}
if (Menu::Window.RageBotTab.AimbotSilentAim.GetState())
{
pCmd->viewangles = angles;
}
if (!Menu::Window.RageBotTab.AimbotSilentAim.GetState())
{
Interfaces::Engine->SetViewAngles(angles);
}
return ReturnValue;
}