X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fwarpzonelib%2Futil_server.qc;h=29bbecce4e3b7468a11dbd588091ca0f7052b127;hb=c17854ba3d21dc82455ada46c42ecef6f02acdd1;hp=eafe2d47c0541dfcf7de17baacde6d3e985e408d;hpb=35f53edb752c4736e4f290d98d0bf59e701d3c34;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/warpzonelib/util_server.qc b/qcsrc/warpzonelib/util_server.qc index eafe2d47c..29bbecce4 100644 --- a/qcsrc/warpzonelib/util_server.qc +++ b/qcsrc/warpzonelib/util_server.qc @@ -1,60 +1,18 @@ -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; +#include "util_server.qh" - o = e.origin; - traceline(o, o, MOVE_WORLDONLY, e); - if (trace_startsolid) - return FALSE; +#include "common.qh" - 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; -} +#if defined(CSQC) +#elif defined(MENUQC) +#elif defined(SVQC) + #include "../csqcmodellib/sv_model.qh" + #include "../dpdefs/dpextensions.qh" + #include "../dpdefs/progsdefs.qh" +#endif +#include "common.qh" void WarpZoneLib_ExactTrigger_Init() -{ +{SELFPARAM(); vector mi, ma; if (self.movedir == '0 0 0') if (self.angles != '0 0 0') @@ -62,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; @@ -72,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)