Advertisement
Guest User

Untitled

a guest
Aug 17th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. ```
  2. void CMBacktracking::UpdateAnimations(C_BasePlayer *player)
  3. {
  4. C_CSGOPlayerAnimState *state = player->GetPlayerAnimState();
  5. if (state)
  6. {
  7. // backup
  8. const float curtime = g_GlobalVars->curtime;
  9. const float frametime = g_GlobalVars->frametime;
  10.  
  11. static auto host_timescale = g_CVar->FindVar(("host_timescale"));
  12.  
  13. g_GlobalVars->frametime = g_GlobalVars->interval_per_tick * host_timescale->GetFloat();
  14. g_GlobalVars->curtime = player->m_flOldSimulationTime() + g_GlobalVars->interval_per_tick;
  15.  
  16. Vector backup_origin = player->m_vecOrigin();
  17. Vector backup_absorigin = player->GetAbsOrigin();
  18. Vector backup_velocity = player->m_vecVelocity();
  19. int backup_flags = player->m_fFlags();
  20. int backup_eflags = player->m_iEFlags();
  21.  
  22. AnimationLayer backup_layers[15];
  23. std::memcpy(backup_layers, player->GetAnimOverlays(), (sizeof(AnimationLayer) * player->GetNumAnimOverlays()));
  24.  
  25. if (state->m_bOnGround())
  26. {
  27. player->m_fFlags() |= FL_ONGROUND;
  28. }
  29. else
  30. {
  31. player->m_fFlags() &= ~FL_ONGROUND;
  32. }
  33. player->m_iEFlags() &= ~0x1000;
  34.  
  35. player->m_vecAbsVelocity() = player->m_vecVelocity();
  36.  
  37. // invalidates prior animations so the entity gets animated on our client 100% via UpdateClientSideAnimation
  38. if (state->m_iLastClientSideAnimationUpdateFramecount() == g_GlobalVars->framecount)
  39. state->m_iLastClientSideAnimationUpdateFramecount() = g_GlobalVars->framecount - 1;
  40.  
  41. player->m_bClientSideAnimation() = true;
  42.  
  43. // updates local animations + poses + calculates new abs angle based on eyeangles and other stuff
  44. player->UpdateClientSideAnimation();
  45.  
  46. player->m_bClientSideAnimation() = false;
  47.  
  48. // restore
  49. std::memcpy(player->GetAnimOverlays(), backup_layers, (sizeof(AnimationLayer) * player->GetNumAnimOverlays()));
  50. player->m_vecOrigin() = backup_origin;
  51. player->SetAbsOrigin(backup_absorigin);
  52. player->m_vecVelocity() = backup_velocity;
  53. player->m_fFlags() = backup_flags;
  54. player->m_iEFlags() = backup_eflags;
  55.  
  56. g_GlobalVars->curtime = curtime;
  57. g_GlobalVars->frametime = frametime;
  58.  
  59. player->SetupBones2(nullptr, -1, 0x7FF00, g_GlobalVars->curtime);
  60. }
  61. }
  62. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement