From 33e3da51af001fa82fd6e50f3f3bf82cb1107d27 Mon Sep 17 00:00:00 2001 From: bones_was_here Date: Fri, 24 Feb 2023 09:29:36 +1000 Subject: [PATCH] WarpZoneLib_BoxTouchesBrush: deglobalise, add TODO --- qcsrc/lib/warpzone/common.qc | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/qcsrc/lib/warpzone/common.qc b/qcsrc/lib/warpzone/common.qc index d7cb5632b..429f6a117 100644 --- a/qcsrc/lib/warpzone/common.qc +++ b/qcsrc/lib/warpzone/common.qc @@ -101,17 +101,12 @@ void WarpZone_Camera_SetUp(entity e, vector my_org, vector my_ang) // we assume .entity enemy; -vector WarpZoneLib_BoxTouchesBrush_mins; -vector WarpZoneLib_BoxTouchesBrush_maxs; -entity WarpZoneLib_BoxTouchesBrush_ent; -entity WarpZoneLib_BoxTouchesBrush_ignore; -float WarpZoneLib_BoxTouchesBrush_Recurse() +float WarpZoneLib_BoxTouchesBrush_Recurse(vector mi, vector ma, entity e, entity ig) { - float s; + float f, s; entity se; - float f; - tracebox('0 0 0', WarpZoneLib_BoxTouchesBrush_mins, WarpZoneLib_BoxTouchesBrush_maxs, '0 0 0', MOVE_NOMONSTERS, WarpZoneLib_BoxTouchesBrush_ignore); + tracebox('0 0 0', mi, ma, '0 0 0', MOVE_NOMONSTERS, ig); #ifdef CSQC if (trace_networkentity) { @@ -123,13 +118,13 @@ float WarpZoneLib_BoxTouchesBrush_Recurse() #endif if (!trace_ent) return 0; - if (trace_ent == WarpZoneLib_BoxTouchesBrush_ent) + if (trace_ent == e) return 1; se = trace_ent; s = se.solid; se.solid = SOLID_NOT; - f = WarpZoneLib_BoxTouchesBrush_Recurse(); + f = WarpZoneLib_BoxTouchesBrush_Recurse(mi, ma, e, ig); se.solid = s; return f; @@ -137,6 +132,9 @@ float WarpZoneLib_BoxTouchesBrush_Recurse() float WarpZoneLib_BoxTouchesBrush(vector mi, vector ma, entity e, entity ig) { + // bones_was_here: TODO: when findbox() builtin is available, use it to + // optimise this into a single non-recursive function that only calls tracebox once + float f, s; if(!e.modelindex || e.warpzone_isboxy) @@ -144,11 +142,7 @@ float WarpZoneLib_BoxTouchesBrush(vector mi, vector ma, entity e, entity ig) s = e.solid; e.solid = SOLID_BSP; - WarpZoneLib_BoxTouchesBrush_mins = mi; - WarpZoneLib_BoxTouchesBrush_maxs = ma; - WarpZoneLib_BoxTouchesBrush_ent = e; - WarpZoneLib_BoxTouchesBrush_ignore = ig; - f = WarpZoneLib_BoxTouchesBrush_Recurse(); + f = WarpZoneLib_BoxTouchesBrush_Recurse(mi, ma, e, ig); e.solid = s; return f; -- 2.39.2