Код:
static void Record()
{
if (!Globals::m_pCmd || !Globals::m_pBaseCmd)
return;
QAngle ang;
{
auto va = Globals::m_pBaseCmd->viewangles();
ang.x = va.x();
ang.y = va.y();
ang.z = va.z();
}
NormalizeAngles(ang);
recorded_cmd rec{};
rec.buttons = Globals::m_pCmd->m_nButtons.m_nValue;
rec.forwardmove = Globals::m_pBaseCmd->forwardmove();
rec.leftmove = Globals::m_pBaseCmd->leftmove();
rec.upmove = Globals::m_pBaseCmd->upmove();
rec.viewangles = ang;
rec.position = Globals::m_pLocalPlayerPawn->m_pGameSceneNode()->m_vecAbsOrigin();
if (g_ResetNext)
{
g_Path.clear();
g_ResetNext = false;
}
g_Path.push_back(rec);
}
static void Play()
{
if (!Globals::m_pCmd || !Globals::m_pBaseCmd)
return;
if (g_PlayIndex >= g_Path.size())
{
StopPlayback();
return;
}
const recorded_cmd& rec = g_Path[g_PlayIndex];
Globals::m_pBaseCmd->set_forwardmove(rec.forwardmove);
Globals::m_pBaseCmd->set_leftmove(rec.leftmove);
Globals::m_pBaseCmd->set_upmove(rec.upmove);
QAngle ang = rec.viewangles;
NormalizeAngles(ang);
auto* va = Globals::m_pBaseCmd->mutable_viewangles();
va->set_x(ang.x);
va->set_y(ang.y);
va->set_z(ang.z);
Globals::m_pCmd->m_nButtons.m_nValue = rec.buttons;
g_PlayIndex++;
}