Fixed portals breaking crosshairs (thanks again, Boondorl).

This commit is contained in:
Mari the Deer 2022-09-28 17:58:30 +02:00
commit dffee0b43d
2 changed files with 9 additions and 8 deletions

View file

@ -62,8 +62,9 @@ extend Class SWWMHandler
int chp = crosshairhealth;
for ( int i=0; i<numcrosshairs; i++ )
{
origin = level.Vec3Offset(e.ViewPos,traceofs[i].x*x+traceofs[i].y*y+traceofs[i].z*z);
ctr.Trace(origin,level.PointInSector(origin.xy),x,10000.,0);
ofs = traceofs[i].x*x+traceofs[i].y*y+traceofs[i].z*z;
origin = level.Vec3Offset(e.ViewPos,ofs);
ctr.Trace(origin,level.PointInSector(origin.xy),x,10000.,TRACE_ReportPortals);
if ( chp >= 2 )
{
int hp = Clamp(mo.Health,0,200);
@ -89,8 +90,8 @@ extend Class SWWMHandler
else col = Color(0,255,0);
}
else col = crosshaircolor;
if ( ctr.Results.HitType == TRACE_HitNone ) tpos[i] = level.Vec3Offset(origin,x*10000.);
else tpos[i] = ctr.Results.HitPos;
if ( ctr.Results.HitType == TRACE_HitNone ) tpos[i] = e.ViewPos+ofs+x*10000.;
else tpos[i] = e.ViewPos+ofs+x*ctr.Results.Distance;
tcol[i] = col;
}
// copy over used slots to unused slots, so transition between weapons is smoother
@ -130,9 +131,9 @@ extend Class SWWMHandler
{
Vector3 cpos = tpos[i];
Color ccol = tcol[i];
Vector3 tdir = level.Vec3Diff(e.ViewPos,cpos);
Vector3 tdir = (e.ViewPos-cpos);
// project (but account for rare corner case where distance is zero)
Vector3 ndc = (tdir.length()<=double.epsilon)?(0,0,0):SWWMUtility.ProjectPoint(tprojdata,e.ViewPos+tdir);
Vector3 ndc = (tdir.length()<=double.epsilon)?(0,0,0):SWWMUtility.ProjectPoint(tprojdata,cpos);
if ( ndc.z >= 1. ) continue;
Vector2 vpos = SWWMUtility.NDCToViewport(tprojdata,ndc);
if ( !prevframe ) lagtndc[i] = ndc;