Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ```
- void CMBacktracking::UpdateAnimations(C_BasePlayer *player)
- {
- C_CSGOPlayerAnimState *state = player->GetPlayerAnimState();
- if (state)
- {
- // backup
- const float curtime = g_GlobalVars->curtime;
- const float frametime = g_GlobalVars->frametime;
- static auto host_timescale = g_CVar->FindVar(("host_timescale"));
- g_GlobalVars->frametime = g_GlobalVars->interval_per_tick * host_timescale->GetFloat();
- g_GlobalVars->curtime = player->m_flOldSimulationTime() + g_GlobalVars->interval_per_tick;
- Vector backup_origin = player->m_vecOrigin();
- Vector backup_absorigin = player->GetAbsOrigin();
- Vector backup_velocity = player->m_vecVelocity();
- int backup_flags = player->m_fFlags();
- int backup_eflags = player->m_iEFlags();
- AnimationLayer backup_layers[15];
- std::memcpy(backup_layers, player->GetAnimOverlays(), (sizeof(AnimationLayer) * player->GetNumAnimOverlays()));
- if (state->m_bOnGround())
- {
- player->m_fFlags() |= FL_ONGROUND;
- }
- else
- {
- player->m_fFlags() &= ~FL_ONGROUND;
- }
- player->m_iEFlags() &= ~0x1000;
- player->m_vecAbsVelocity() = player->m_vecVelocity();
- // invalidates prior animations so the entity gets animated on our client 100% via UpdateClientSideAnimation
- if (state->m_iLastClientSideAnimationUpdateFramecount() == g_GlobalVars->framecount)
- state->m_iLastClientSideAnimationUpdateFramecount() = g_GlobalVars->framecount - 1;
- player->m_bClientSideAnimation() = true;
- // updates local animations + poses + calculates new abs angle based on eyeangles and other stuff
- player->UpdateClientSideAnimation();
- player->m_bClientSideAnimation() = false;
- // restore
- std::memcpy(player->GetAnimOverlays(), backup_layers, (sizeof(AnimationLayer) * player->GetNumAnimOverlays()));
- player->m_vecOrigin() = backup_origin;
- player->SetAbsOrigin(backup_absorigin);
- player->m_vecVelocity() = backup_velocity;
- player->m_fFlags() = backup_flags;
- player->m_iEFlags() = backup_eflags;
- g_GlobalVars->curtime = curtime;
- g_GlobalVars->frametime = frametime;
- player->SetupBones2(nullptr, -1, 0x7FF00, g_GlobalVars->curtime);
- }
- }
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement