From dffee0b43d746e9a39a68dfd82c03536781fa51c Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Wed, 28 Sep 2022 17:58:30 +0200 Subject: [PATCH] Fixed portals breaking crosshairs (thanks again, Boondorl). --- language.version | 4 ++-- zscript/handler/swwm_handler_crosshair.zsc | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/language.version b/language.version index 85cfc4a89..d49f6a3f2 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r522 \cu(Wed 28 Sep 13:52:16 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r522 \cu(2022-09-28 13:52:16)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r523 \cu(Wed 28 Sep 17:58:30 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r523 \cu(2022-09-28 17:58:30)\c-"; diff --git a/zscript/handler/swwm_handler_crosshair.zsc b/zscript/handler/swwm_handler_crosshair.zsc index afa9dbef0..0d367c93c 100644 --- a/zscript/handler/swwm_handler_crosshair.zsc +++ b/zscript/handler/swwm_handler_crosshair.zsc @@ -62,8 +62,9 @@ extend Class SWWMHandler int chp = crosshairhealth; for ( int i=0; i= 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;