X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fwarpzonelib%2Futil_server.qc;h=61c063667a9fa97fccbbb84355258b25827e8ba7;hb=70b84d37e2cf1d5336c327cb43593024de2a2c6c;hp=8beea9c7642032737377fbf89ef6c356c8f34cd9;hpb=845401fd312c66c059aaee1772ac5d79555ab4fc;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/warpzonelib/util_server.qc b/qcsrc/warpzonelib/util_server.qc index 8beea9c76..61c063667 100644 --- a/qcsrc/warpzonelib/util_server.qc +++ b/qcsrc/warpzonelib/util_server.qc @@ -1,65 +1,16 @@ -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; -} - -float WarpZoneLib_ExactTrigger_Touch() -{ - return !WarpZoneLib_BoxTouchesBrush(other.absmin, other.absmax, self, other); -} +#if defined(CSQC) +#elif defined(MENUQC) +#elif defined(SVQC) + #include "../csqcmodellib/sv_model.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') @@ -67,21 +18,25 @@ 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; precache_model(self.model); - setmodel(self, self.model); + _setmodel(self, self.model); // 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)