Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.63 KB | None | 0 0
  1. void handlePlayerAngles(CBaseEntity* ent, ResolverRecord& record, ResolverRecord& prevRecord, lowerBodyYaw& lbyinfo)
  2. {
  3. // TODO checking if person is breaking lby, if difference between lby & freestanding yaw is > 90 then true, if u cant do freestanding do backward instead.
  4.  
  5. int id = ent->GetUserID();
  6. resolver_modes& mode = ResolverMode[ent->GetUserID()];
  7. AnimationLayer CurrentLayer, PreviousLayer;
  8. bool faking_angles = true,
  9. lby_update = false,
  10. moving = record.velocity > 0.1f,
  11. on_ground = (ent->GetFlags() & FL_ONGROUND);
  12.  
  13. float ResolvedYaw;
  14.  
  15. if (record.simtime != prevRecord.simtime)
  16. SimulationTimeDelta[id] = record.simtime - prevRecord.simtime;
  17.  
  18. faking_angles = TIME_TO_TICKS(SimulationTimeDelta[id] - g_pGlobalVars->intervalPerTick) >= 1.f;
  19.  
  20. lbyinfo.lby = record.lby;
  21.  
  22. auto lby_related_time = record.simtime + g_pGlobalVars->intervalPerTick;
  23.  
  24. if (moving)
  25. {
  26. lbyinfo.Update(lby_related_time + 0.22f, true, true, record);
  27. lbyinfo.origin = ent->GetOrigin();
  28. }
  29.  
  30. if (!moving)
  31. {
  32. if (record.lby != prevRecord.lby)
  33. {
  34. lbyinfo.Update(lby_related_time + 1.1f, true);
  35. lbyinfo.origin = ent->GetOrigin();
  36. lbyinfo.misc.lastUpdateTime = lby_related_time;
  37. lbyinfo.misc.lby.last_lby = prevRecord.lby;
  38.  
  39. lby_update = true;
  40.  
  41. //std::string str = "lbj update: " + ent->GetName() + ", time: " + std::to_string(lby_related_time);
  42. //g_Logs.addLog(log_color::blue, str.c_str(), true);
  43. }
  44. else
  45. lby_update = false;
  46.  
  47. if (record.simtime > lbyinfo.nextUpdate && lbyinfo.canPredict)
  48. {
  49. lbyinfo.predicted = true;
  50.  
  51. //std::string str = "lbj predicted: " + ent->GetName() + ", time: " + std::to_string(lbyinfo.nextUpdate);
  52. //g_Logs.addLog(lby_update ? log_color::green : log_color::red, str.c_str(), true);
  53.  
  54. lbyinfo.origin = ent->GetOrigin();
  55. lbyinfo.Update(lby_related_time + 1.1f, true);
  56. }
  57. else
  58. lbyinfo.predicted = false;
  59. }
  60. else
  61. {
  62. lby_update = false;
  63. lbyinfo.predicted = false;
  64. }
  65.  
  66. if (on_ground)
  67. {
  68. if (moving)
  69. {
  70. if (IsFakewalking(ent, record) || IsFakewalking(ent, prevRecord))
  71. {
  72. lbyinfo.misc.breakingLby = true;
  73. auto delta = lbyinfo.misc.didMove ? M::NormalizeYaw(record.lby - lbyinfo.misc.lby.last_moving) : M::NormalizeYaw(record.lby - lbyinfo.misc.lby.last_lby);
  74.  
  75. mode = resolver_modes::fakewalk;
  76. ResolvedYaw = M::NormalizeYaw(record.lby + delta);
  77.  
  78. if (G::MissedShots[id][mode] > 2)
  79. ResolvedYaw = M::bruteforce(G::MissedShots[id][mode], ResolvedYaw, 45, 8, 2);
  80.  
  81. lbyinfo.misc.didMove = false;
  82. }
  83. else
  84. {
  85. mode = resolver_modes::lby_move;
  86. lbyinfo.misc.breakingLby = false;
  87. ResolvedYaw = record.lby;
  88. lbyinfo.misc.lby.last_lby = record.lby;
  89. }
  90. }
  91. else
  92. {
  93. if (record.simtime - lbyinfo.misc.lastMovingTime < 0.22f && lbyinfo.misc.updatePreLBY)
  94. {
  95. lbyinfo.misc.updatePreLBY = false;
  96. lbyinfo.misc.lby.before_update = record.lby;
  97. }
  98.  
  99.  
  100. if (lby_update /* || ((record.lby != lbyinfo.misc.lby.before_update) && lbyinfo.misc.didMove)*/)
  101. {
  102. lbyinfo.misc.lby.delta = M::NormalizeYaw(record.lby - lbyinfo.misc.lby.last_lby);
  103.  
  104. if (fabsf(lbyinfo.misc.lby.delta) > 70.f)
  105. lbyinfo.misc.breakingLby = true;
  106. else
  107. lbyinfo.misc.breakingLby = false;
  108.  
  109. if (!lbyinfo.misc.didMove)
  110. if (!(fabs(record.simtime - lbyinfo.misc.lastUpdateTime) > 1.1f) && !BreakingLBY(ent, record, CurrentLayer, prevRecord, PreviousLayer))
  111. lbyinfo.misc.breakingLby = false;
  112.  
  113. lbyinfo.misc.didMove = false;
  114. }
  115.  
  116. if (lbyinfo.misc.breakingLby)
  117. {
  118. mode = resolver_modes::breaking_lby;
  119. ResolvedYaw = M::NormalizeYaw(record.lby + lbyinfo.misc.lby.delta);
  120.  
  121. if (G::MissedShots[id][mode] > 2)
  122. ResolvedYaw = M::bruteforce(G::MissedShots[id][mode], ResolvedYaw, 45, 8, 2);
  123. }
  124. else
  125. {
  126. //float bodyeyedelta = fabs(record.eyeAngles.y - record.lby);
  127. //if (fabs(bodyeyedelta) > 0 && abs(bodyeyedelta) < 35)
  128. //{
  129. // mode = resolver_modes::lby_stand_eye_delta;
  130. // ResolvedYaw = record.lby + bodyeyedelta;
  131. //}
  132. //else
  133. {
  134. mode = resolver_modes::lby_stand;
  135. ResolvedYaw = record.lby;
  136. }
  137.  
  138. if (G::MissedShots[id][mode] > 2)
  139. ResolvedYaw = M::bruteforce(G::MissedShots[id][mode], ResolvedYaw, 45, 8, 2);
  140. }
  141. }
  142. }
  143. else
  144. {
  145. mode = resolver_modes::air;
  146. ResolvedYaw = record.lby;
  147.  
  148. lbyinfo.misc.breakingLby = false;
  149.  
  150. if (G::MissedShots[id][mode] > 2)
  151. ResolvedYaw = M::bruteforce(G::MissedShots[id][mode], ResolvedYaw, 45, 8, 2);
  152. }
  153.  
  154. float freestand = freestandResolver(ent);
  155. if (freestand != FLT_MAX && !lby_update && !moving)
  156. {
  157. mode = resolver_modes::freestand;
  158. ResolvedYaw = M::NormalizeYaw(freestand);
  159.  
  160. if (G::MissedShots[id][mode] > 2)
  161. ResolvedYaw += M::bruteforce(G::MissedShots[id][mode], freestand, 45, 8, 2);
  162. }
  163.  
  164. float overrideYaw = Override(ent);
  165. if (overrideYaw != FLT_MAX)
  166. {
  167. mode = resolver_modes::override;
  168. ResolvedYaw = M::NormalizeYaw(overrideYaw);
  169. }
  170.  
  171. if (lby_update)
  172. {
  173. mode = resolver_modes::lby_update;
  174. ResolvedYaw = ent->GetLowerbodyYaw();
  175. }
  176.  
  177. if (lbyinfo.predicted)
  178. {
  179. mode = resolver_modes::lby_flick;
  180. ResolvedYaw = ent->GetLowerbodyYaw();
  181. }
  182.  
  183. if (!faking_angles)
  184. {
  185. mode = resolver_modes::legit;
  186. ResolvedYaw = ent->GetEyeAngles().y;
  187. lbyinfo.misc.breakingLby = false;
  188. }
  189.  
  190. ent->GetEyeAnglesPointer()->y = ResolvedYaw;
  191. G::BreakingLBY[id] = lbyinfo.misc.breakingLby;
  192. G::ResolverPriority[id] = mode;
  193. G::Resolvermode[id] = getResolverMode(ent, mode);
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement