X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fwarpzone%2Fcommon.qc;h=b70e938fe7e987ee9dded47a2e721b151bd9d10d;hb=139a594d29f65508e5d6001e90d4ee4fad82ca66;hp=5a3929e1e92d58ecd6520f0bbb05d68499e61f73;hpb=34e7f534e2015466228eb3a78c9857741b736dca;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/warpzone/common.qc b/qcsrc/lib/warpzone/common.qc index 5a3929e1e..b70e938fe 100644 --- a/qcsrc/lib/warpzone/common.qc +++ b/qcsrc/lib/warpzone/common.qc @@ -298,13 +298,13 @@ void WarpZone_TraceBox_ThroughZone(vector org, vector mi, vector ma, vector end, } break; } - if(trace_ent == wz) + /*if(trace_ent == wz) { // FIXME can this check be removed? Do we really need it? LOG_TRACE("I transformed into the same zone again, wtf, aborting the trace"); trace_ent = NULL; break; - } + }*/ wz = trace_ent; if(!WarpZone_trace_firstzone) WarpZone_trace_firstzone = wz; @@ -575,12 +575,9 @@ bool WarpZoneLib_BadEntity(entity e) { if (is_pure(e)) return true; string s = e.classname; - switch (s) - { - // case "net_linked": // actually some real entities are linked without classname, fail - case "": - return true; - } + + //if (s == "net_linked") return true; // actually some real entities are linked without classname, fail + if (s == "") return true; if (startsWith(s, "target_")) return true; @@ -787,7 +784,7 @@ entity WarpZone_RefSys_SpawnSameRefSys(entity me) return e; } -float WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher) +bool WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher) { return !WarpZoneLib_BoxTouchesBrush(toucher.absmin, toucher.absmax, this, toucher); } @@ -795,7 +792,7 @@ float WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher) void WarpZoneLib_MoveOutOfSolid_Expand(entity e, vector by) { - float eps = 0.0625; + const float eps = 0.0625; tracebox(e.origin, e.mins - '1 1 1' * eps, e.maxs + '1 1 1' * eps, e.origin + by, MOVE_WORLDONLY, e); if (trace_startsolid) return; @@ -807,11 +804,9 @@ void WarpZoneLib_MoveOutOfSolid_Expand(entity e, vector by) } } -float WarpZoneLib_MoveOutOfSolid(entity e) +bool WarpZoneLib_MoveOutOfSolid(entity e) { - vector o, m0, m1; - - o = e.origin; + vector o = e.origin; traceline(o, o, MOVE_WORLDONLY, e); if (trace_startsolid) return false; @@ -820,22 +815,16 @@ float WarpZoneLib_MoveOutOfSolid(entity e) if (!trace_startsolid) return true; - m0 = e.mins; - m1 = e.maxs; + vector m0 = e.mins; + vector m1 = e.maxs; e.mins = '0 0 0'; e.maxs = '0 0 0'; - WarpZoneLib_MoveOutOfSolid_Expand(e, '1 0 0' * m0_x); - e.mins_x = m0_x; - WarpZoneLib_MoveOutOfSolid_Expand(e, '1 0 0' * m1_x); - e.maxs_x = m1_x; - WarpZoneLib_MoveOutOfSolid_Expand(e, '0 1 0' * m0_y); - e.mins_y = m0_y; - WarpZoneLib_MoveOutOfSolid_Expand(e, '0 1 0' * m1_y); - e.maxs_y = m1_y; - WarpZoneLib_MoveOutOfSolid_Expand(e, '0 0 1' * m0_z); - e.mins_z = m0_z; - WarpZoneLib_MoveOutOfSolid_Expand(e, '0 0 1' * m1_z); - e.maxs_z = m1_z; + WarpZoneLib_MoveOutOfSolid_Expand(e, eX * m0.x); e.mins_x = m0.x; + WarpZoneLib_MoveOutOfSolid_Expand(e, eX * m1.x); e.maxs_x = m1.x; + WarpZoneLib_MoveOutOfSolid_Expand(e, eY * m0.y); e.mins_y = m0.y; + WarpZoneLib_MoveOutOfSolid_Expand(e, eY * m1.y); e.maxs_y = m1.y; + WarpZoneLib_MoveOutOfSolid_Expand(e, eZ * m0.z); e.mins_z = m0.z; + WarpZoneLib_MoveOutOfSolid_Expand(e, eZ * m1.z); e.maxs_z = m1.z; setorigin(e, e.origin); tracebox(e.origin, e.mins, e.maxs, e.origin, MOVE_WORLDONLY, e);