X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fwarpzone%2Fcommon.qc;h=429f6a1175a37f792c62155c02f1b5e39b56e7c2;hb=33e3da51af001fa82fd6e50f3f3bf82cb1107d27;hp=46710db66c92c041fd447a2ea3e00c2edde83356;hpb=350dd64390082f01f29e0d4e4ef70390ba700219;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/warpzone/common.qc b/qcsrc/lib/warpzone/common.qc index 46710db66..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,21 +132,20 @@ float WarpZoneLib_BoxTouchesBrush_Recurse() float WarpZoneLib_BoxTouchesBrush(vector mi, vector ma, entity e, entity ig) { - float f, s; + // 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 - if(!e.modelindex || e.warpzone_isboxy) - return 1; + float f, s; - 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(); - e.solid = s; + if(!e.modelindex || e.warpzone_isboxy) + return 1; + + s = e.solid; + e.solid = SOLID_BSP; + f = WarpZoneLib_BoxTouchesBrush_Recurse(mi, ma, e, ig); + e.solid = s; - return f; + return f; } entity WarpZone_Find(vector mi, vector ma) @@ -582,6 +576,7 @@ bool WarpZoneLib_BadEntity(entity e) case "weaponentity": case "exteriorweaponentity": case "sprite_waypoint": + case "waypoint": case "spawnfunc": case "weaponchild": case "chatbubbleentity":