Advertisement
Guest User

Untitled

a guest
Oct 10th, 2021
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. void clip_trace_to_players1(c_base_player* e, const vec3_t& start, const vec3_t& end, unsigned int mask, trace_filter* filter, trace_t* tr)
  2. {
  3.     vec3_t mins = e->get_collideable()->mins(), maxs = e->get_collideable()->maxs();
  4.  
  5.     vec3_t dir(end - start);
  6.     dir.normalize();
  7.  
  8.     vec3_t
  9.         center = (maxs + mins) / 2,
  10.         pos(center + e->get_abs_origin());
  11.  
  12.     vec3_t to = pos - start;
  13.     float range_along = dir.dot(to);
  14.  
  15.     float range;
  16.     if (range_along < 0.f)
  17.         range = -to.length();
  18.  
  19.     else if (range_along > dir.length())
  20.         range = -(pos - end).length();
  21.  
  22.     else {
  23.         auto ray(pos - (dir * range_along + start));
  24.         range = ray.length();
  25.     }
  26.  
  27.     if (range <= 60.f) {
  28.         trace_t trace;
  29.  
  30.         ray_t ray;
  31.         ray.initialize(start, end);
  32.  
  33.         i::trace->clip_ray_to_entity(ray, mask, e, &trace);
  34.             utils::dbg_print("[INFO] #1. enterTrace m_iTeamNum: %d | g_local m_iTeamNum: %d\n", trace.player->m_iTeamNum(), g_local->m_iTeamNum());
  35.         utils::dbg_print("[INFO] #2. enterTrace m_iTeamNum: %d | g_local m_iTeamNum: %d\n", e->m_iTeamNum(), g_local->m_iTeamNum());
  36.  
  37.         if (tr->fraction > trace.fraction) {
  38.             *tr = trace;
  39.             utils::dbg_print("[INFO] #3. enterTrace m_iTeamNum: %d | g_local m_iTeamNum: %d\n", trace.player->m_iTeamNum(), g_local->m_iTeamNum());
  40.         }
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement