Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. void CAnimations::LocalPlayerAnimfix()
  2. {
  3. auto entity = g::pLocalEntity;
  4.  
  5. //for a proper localplayer animation fix you need to save and restore these things : realtime, servertime, frametime, absolute frametime, interp amount, and framecount. - pangea
  6. /// aight lets do that
  7.  
  8. static float StoredPosParams[65][24];
  9. AnimationLayer StoredLayers[65][13];
  10. static float storedSimtime[65];
  11. auto *state = g::pLocalEntity->AnimState();
  12.  
  13. static C_AnimState * StoredAnimState[65];
  14. static Vector oldEyeAngles[65]; static float oldGoalfeetYaw[65];
  15.  
  16.  
  17. static ConVar* host_timescale = g_pCvar->FindVar("host_timescale");
  18.  
  19. // storing
  20. auto old_realtime = g_pGlobalVars->realtime;
  21. int backup_eflags = g::pLocalEntity->m_iEFlags();
  22. auto old_frametime = g_pGlobalVars->frametime;
  23. auto old_absframetime = g_pGlobalVars->absoluteframetime;
  24. auto old_interpAm = g_pGlobalVars->interpolationAmount;
  25. auto old_framecount = g_pGlobalVars->framecount;
  26. auto old_servertime = g_pGlobalVars->curtime;
  27.  
  28. g::pLocalEntity->m_iEFlags() &= ~0x1000; // InvalidatePhysicsRecursive(VELOCITY_CHANGED); EFL_DIRTY_ABSVELOCITY = 0x1000
  29. g::pLocalEntity->m_vecAbsVelocity() = g::pLocalEntity->GetVelocity();
  30.  
  31. g_pGlobalVars->curtime = g::pLocalEntity->GetSimulationTime(); // servertime
  32. g_pGlobalVars->realtime = g::pLocalEntity->GetSimulationTime(); // realtime
  33. g_pGlobalVars->frametime = g_pGlobalVars->intervalPerTick * host_timescale->GetFloat(); // frametime
  34. g_pGlobalVars->absoluteframetime = g_pGlobalVars->intervalPerTick * host_timescale->GetFloat(); // abs frametime
  35. g_pGlobalVars->interpolationAmount = 0; // interp amount
  36. g_pGlobalVars->framecount = TIME_TO_TICKS(g::pLocalEntity->GetSimulationTime()); // framecount
  37.  
  38. state->m_iLastClientSideAnimationUpdateFramecount -= 1;
  39. g::pLocalEntity->UpdateClientAnimation();
  40.  
  41. // restoring
  42. g_pGlobalVars->curtime = old_servertime;
  43. g::pLocalEntity->m_iEFlags() = backup_eflags;
  44. g_pGlobalVars->realtime = old_realtime;
  45. g_pGlobalVars->frametime = old_frametime;
  46. g_pGlobalVars->absoluteframetime = old_absframetime;
  47. g_pGlobalVars->interpolationAmount = old_interpAm;
  48. g_pGlobalVars->framecount = old_framecount;
  49.  
  50. g::pLocalEntity->SetAbsAngles(Vector(0.f, g::pLocalEntity->AnimState()->m_flGoalFeetYaw, 0.f));
  51. g::pLocalEntity->SetupBones(nullptr, -1, 0x7FF00, g_pGlobalVars->curtime);
  52.  
  53.  
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement