X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2Fview.qc;h=70111b397fb12d020e2eb737b811e225699c5b2b;hp=b5a5e8ad02df5e2ee0a6520e42b3455adafe881c;hb=3331142a41bd023ef15ced5210a2e1a2206bbb3c;hpb=45d91b925162d4c73853e68f1100b81ac8d782d8 diff --git a/qcsrc/client/view.qc b/qcsrc/client/view.qc index b5a5e8ad02..70111b397f 100644 --- a/qcsrc/client/view.qc +++ b/qcsrc/client/view.qc @@ -392,87 +392,6 @@ STATIC_INIT(fpscounter_init) showfps_prevfps_time = currentTime; // we must initialize it to avoid an instant low frame sending } -STATIC_INIT(Porto) -{ - entity e = new_pure(porto); - e.draw = Porto_Draw; - IL_PUSH(g_drawables, e); - e.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP; -} - -const int polyline_length = 16; -.vector polyline[polyline_length]; -void Porto_Draw(entity this) -{ - for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) - { - entity wepent = viewmodels[slot]; - - if (wepent.activeweapon != WEP_PORTO) continue; - if (spectatee_status) continue; - if (WEP_CVAR(porto, secondary)) continue; - if (intermission == 1) continue; - if (intermission == 2) continue; - if (STAT(HEALTH) <= 0) continue; - - vector pos = view_origin; - vector dir = view_forward; - vector forward, right, up; - MAKE_VECTORS(autocvar_chase_active ? warpzone_save_view_angles : view_angles, forward, right, up); - pos += right * -wepent.movedir.y - + up * wepent.movedir.z; - - if (wepent.angles_held_status) - { - MAKE_VECTORS(wepent.angles_held, forward, right, up); - dir = forward; - } - - wepent.polyline[0] = pos; - - int portal_number = 0, portal1_idx = 1, portal_max = 2; - int n = 1 + 2; // 2 lines == 3 points - for (int idx = 0; idx < n && idx < polyline_length - 1; ) - { - traceline(pos, pos + 65536 * dir, true, this); - dir = reflect(dir, trace_plane_normal); - pos = trace_endpos; - wepent.polyline[++idx] = pos; - if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK || trace_dphitcontents & DPCONTENTS_PLAYERCLIP) - { - n += 1; - continue; - } - if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT) - { - n = max(2, idx); - break; - } - // check size - { - vector ang = vectoangles2(trace_plane_normal, dir); - ang.x = -ang.x; - MAKE_VECTORS(ang, forward, right, up); - if (!CheckWireframeBox(this, pos - 48 * right - 48 * up + 16 * forward, 96 * right, 96 * up, 96 * forward)) - { - n = max(2, idx); - break; - } - } - portal_number += 1; - if (portal_number >= portal_max) break; - if (portal_number == 1) portal1_idx = idx; - } - for (int idx = 0; idx < n - 1; ++idx) - { - vector p = wepent.polyline[idx], q = wepent.polyline[idx + 1]; - if (idx == 0) p -= view_up * 16; // line from player - vector rgb = (idx < portal1_idx) ? '1 0 0' : '0 0 1'; - Draw_CylindricLine(p, q, 4, "", 1, 0, rgb, 0.5, DRAWFLAG_NORMAL, view_origin); - } - } -} - float drawtime; float avgspeed; vector GetCurrentFov(float fov) @@ -681,6 +600,9 @@ float EnemyHitCheck() float TrueAimCheck(entity wepent) { + if(wepent.activeweapon.spawnflags & WEP_FLAG_NOTRUEAIM) + return SHOTTYPE_HITWORLD; + float nudge = 1; // added to traceline target and subtracted from result TOOD(divVerent): do we still need this? Doesn't the engine do this now for us? vector vecs, trueaimpoint, w_shotorg; vector mi, ma, dv; @@ -694,12 +616,6 @@ float TrueAimCheck(entity wepent) switch(wepent.activeweapon) // WEAPONTODO { - case WEP_TUBA: // no aim - case WEP_PORTO: // shoots from eye - case WEP_NEXBALL: // shoots from eye - case WEP_HOOK: // no trueaim - case WEP_MORTAR: // toss curve - return SHOTTYPE_HITWORLD; case WEP_VORTEX: case WEP_OVERKILL_NEX: case WEP_VAPORIZER: