X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fwarpzonelib%2Futil_server.qc;h=29bbecce4e3b7468a11dbd588091ca0f7052b127;hb=c17854ba3d21dc82455ada46c42ecef6f02acdd1;hp=79cff0174a3a98f3c046a68777de6c07e3bb7eee;hpb=37903827937b44f174275a75d2dab5301b8ab53e;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/warpzonelib/util_server.qc b/qcsrc/warpzonelib/util_server.qc index 79cff0174..29bbecce4 100644 --- a/qcsrc/warpzonelib/util_server.qc +++ b/qcsrc/warpzonelib/util_server.qc @@ -1,75 +1,18 @@ +#include "util_server.qh" + +#include "common.qh" + #if defined(CSQC) #elif defined(MENUQC) #elif defined(SVQC) - #include "../dpdefs/progsdefs.qh" - #include "../dpdefs/dpextensions.qh" - #include "common.qh" - #include "util_server.qh" #include "../csqcmodellib/sv_model.qh" + #include "../dpdefs/dpextensions.qh" + #include "../dpdefs/progsdefs.qh" #endif - -void WarpZoneLib_MoveOutOfSolid_Expand(entity e, vector by) -{ - 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; - if (trace_fraction < 1) - { - // hit something - // adjust origin in the other direction... - setorigin(e,e.origin - by * (1 - trace_fraction)); - } -} - -float WarpZoneLib_MoveOutOfSolid(entity e) -{ - vector o, m0, m1; - - o = e.origin; - traceline(o, o, MOVE_WORLDONLY, e); - if (trace_startsolid) - return false; - - tracebox(o, e.mins, e.maxs, o, MOVE_WORLDONLY, e); - if (!trace_startsolid) - return true; - - m0 = e.mins; - 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; - setorigin(e, e.origin); - - tracebox(e.origin, e.mins, e.maxs, e.origin, MOVE_WORLDONLY, e); - if (trace_startsolid) - { - setorigin(e, o); - return false; - } - - return true; -} - -float WarpZoneLib_ExactTrigger_Touch() -{ - return !WarpZoneLib_BoxTouchesBrush(other.absmin, other.absmax, self, other); -} +#include "common.qh" void WarpZoneLib_ExactTrigger_Init() -{ +{SELFPARAM(); vector mi, ma; if (self.movedir == '0 0 0') if (self.angles != '0 0 0') @@ -77,8 +20,12 @@ void WarpZoneLib_ExactTrigger_Init() makevectors (self.angles); self.movedir = v_forward; } - self.warpzone_isboxy = 1; - if(self.model != "") + if(self.model == "") + { + // It's a box! No need to match with exacttriggers. + self.warpzone_isboxy = 1; + } + else { mi = self.mins; ma = self.maxs; @@ -87,11 +34,11 @@ void WarpZoneLib_ExactTrigger_Init() // let mapper-set mins/maxs override the model's bounds if set if(mi != '0 0 0' || ma != '0 0 0') { + // It's a box! No need to match with exacttriggers. self.mins = mi; self.maxs = ma; + self.warpzone_isboxy = 1; } - else - self.warpzone_isboxy = 0; // enable exacttrigger matching } setorigin(self, self.origin); if(self.scale)