X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fwarpzone%2Fcommon.qc;h=2c491cab9809d9b875ad739d3d92971280a3e01f;hb=56c279771cb4307afca3afbb4f28aee96eb015bb;hp=78d51cf0bc4fa4c6f050b6c137978eb130695d16;hpb=50d8efb863874f811bdcc118d7e873836902e453;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/warpzone/common.qc b/qcsrc/lib/warpzone/common.qc index 78d51cf0b..2c491cab9 100644 --- a/qcsrc/lib/warpzone/common.qc +++ b/qcsrc/lib/warpzone/common.qc @@ -71,8 +71,10 @@ void WarpZone_SetUp(entity e, vector my_org, vector my_ang, vector other_org, ve e.warpzone_targetorigin = other_org; e.warpzone_angles = my_ang; e.warpzone_targetangles = other_ang; - fixedmakevectors(my_ang); e.warpzone_forward = v_forward; - fixedmakevectors(other_ang); e.warpzone_targetforward = v_forward; + FIXED_MAKE_VECTORS_NEW(my_ang, forward, right, up); + e.warpzone_forward = forward; + FIXED_MAKE_VECTORS(other_ang, forward, right, up); + e.warpzone_targetforward = forward; setcamera_transform(e, WarpZone_camera_transform); } @@ -201,9 +203,7 @@ void WarpZone_TraceBox_ThroughZone(vector org, vector mi, vector ma, vector end, float nomonsters_adjusted; float frac, sol, i; float contentshack; - vector o0, e0; entity wz; - vector vf, vr, vu; WarpZone_trace_forent = forent; WarpZone_trace_firstzone = NULL; @@ -228,12 +228,6 @@ void WarpZone_TraceBox_ThroughZone(vector org, vector mi, vector ma, vector end, } } - vf = v_forward; - vr = v_right; - vu = v_up; - o0 = org; - e0 = end; - switch(nomonsters) { case MOVE_WORLDONLY: @@ -325,9 +319,6 @@ LABEL(fail) if(contentshack) BITCLR_ASSIGN(WarpZone_trace_forent.dphitcontentsmask, DPCONTENTS_SOLID); trace_startsolid = sol; - v_forward = vf; - v_right = vr; - v_up = vu; } void WarpZone_TraceBox(vector org, vector mi, vector ma, vector end, float nomonsters, entity forent) @@ -343,7 +334,7 @@ void WarpZone_TraceLine(vector org, vector end, float nomonsters, entity forent) void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZone_trace_callback_t cb) { float g, dt, i; - vector vf, vr, vu, v0, o0; + vector v0, o0; entity wz; o0 = e.origin; @@ -368,10 +359,6 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo return; } - vf = v_forward; - vr = v_right; - vu = v_up; - // if starting in warpzone, first transform wz = WarpZone_Find(e.origin + e.mins, e.origin + e.maxs); if(wz) @@ -441,9 +428,6 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo WarpZone_MakeAllOther(); LABEL(fail) WarpZone_tracetoss_velocity = e.velocity; - v_forward = vf; - v_right = vr; - v_up = vu; // restore old entity data (caller just uses trace_endpos, WarpZone_tracetoss_velocity and the transform) e.velocity = v0; e.origin = o0; @@ -575,12 +559,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 +768,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); } @@ -807,11 +788,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 +799,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);