Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void CAnimations::LocalPlayerAnimfix()
- {
- auto entity = g::pLocalEntity;
- //for a proper localplayer animation fix you need to save and restore these things : realtime, servertime, frametime, absolute frametime, interp amount, and framecount. - pangea
- /// aight lets do that
- static float StoredPosParams[65][24];
- AnimationLayer StoredLayers[65][13];
- static float storedSimtime[65];
- auto *state = g::pLocalEntity->AnimState();
- static C_AnimState * StoredAnimState[65];
- static Vector oldEyeAngles[65]; static float oldGoalfeetYaw[65];
- static ConVar* host_timescale = g_pCvar->FindVar("host_timescale");
- // storing
- auto old_realtime = g_pGlobalVars->realtime;
- int backup_eflags = g::pLocalEntity->m_iEFlags();
- auto old_frametime = g_pGlobalVars->frametime;
- auto old_absframetime = g_pGlobalVars->absoluteframetime;
- auto old_interpAm = g_pGlobalVars->interpolationAmount;
- auto old_framecount = g_pGlobalVars->framecount;
- auto old_servertime = g_pGlobalVars->curtime;
- g::pLocalEntity->m_iEFlags() &= ~0x1000; // InvalidatePhysicsRecursive(VELOCITY_CHANGED); EFL_DIRTY_ABSVELOCITY = 0x1000
- g::pLocalEntity->m_vecAbsVelocity() = g::pLocalEntity->GetVelocity();
- g_pGlobalVars->curtime = g::pLocalEntity->GetSimulationTime(); // servertime
- g_pGlobalVars->realtime = g::pLocalEntity->GetSimulationTime(); // realtime
- g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick * host_timescale->GetFloat(); // frametime
- g_pGlobalVars->absoluteframetime = g_pGlobalVars->intervalPerTick * host_timescale->GetFloat(); // abs frametime
- g_pGlobalVars->interpolationAmount = 0; // interp amount
- g_pGlobalVars->framecount = TIME_TO_TICKS(g::pLocalEntity->GetSimulationTime()); // framecount
- state->m_iLastClientSideAnimationUpdateFramecount -= 1;
- g::pLocalEntity->UpdateClientAnimation();
- // restoring
- g_pGlobalVars->curtime = old_servertime;
- g::pLocalEntity->m_iEFlags() = backup_eflags;
- g_pGlobalVars->realtime = old_realtime;
- g_pGlobalVars->frametime = old_frametime;
- g_pGlobalVars->absoluteframetime = old_absframetime;
- g_pGlobalVars->interpolationAmount = old_interpAm;
- g_pGlobalVars->framecount = old_framecount;
- g::pLocalEntity->SetAbsAngles(Vector(0.f, g::pLocalEntity->AnimState()->m_flGoalFeetYaw, 0.f));
- g::pLocalEntity->SetupBones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement