X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fwarpzonelib%2Fcommon.qc;h=5cf155642bd6019d1d4587f0881093a7466171ca;hb=ce6e50e11b71814a12aae0ef1800e550fa6a73c2;hp=3f6bb10a2ebe872b77bc88e45f44558beced4bb1;hpb=4bac00fdbd1726c76efffcada6253259762f83c6;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/warpzonelib/common.qc b/qcsrc/warpzonelib/common.qc index 3f6bb10a2..5cf155642 100644 --- a/qcsrc/warpzonelib/common.qc +++ b/qcsrc/warpzonelib/common.qc @@ -55,6 +55,21 @@ void WarpZone_SetUp(entity e, vector my_org, vector my_ang, vector other_org, ve e.camera_transform = WarpZone_camera_transform; } +vector WarpZone_Camera_camera_transform(vector org, vector ang) +{ + // a fixed camera view + trace_endpos = self.warpzone_origin; + makevectors(self.warpzone_angles); + return self.warpzone_origin; +} + +void WarpZone_Camera_SetUp(entity e, vector my_org, vector my_ang) // we assume that e.oldorigin and e.avelocity point to view origin and direction +{ + e.warpzone_origin = my_org; + e.warpzone_angles = my_ang; + e.camera_transform = WarpZone_Camera_camera_transform; +} + .entity enemy; vector WarpZoneLib_BoxTouchesBrush_mins; @@ -185,6 +200,7 @@ void WarpZone_TraceBox_ThroughZone(vector org, vector mi, vector ma, vector end, if(--i < 1) { dprint("Too many warpzones in sequence, aborting trace.\n"); + trace_ent = world; break; } tracebox(org, mi, ma, end, nomonsters, forent); @@ -201,6 +217,7 @@ void WarpZone_TraceBox_ThroughZone(vector org, vector mi, vector ma, vector end, if(trace_ent == wz) { dprint("I transformed into the same zone again, wtf, aborting the trace\n"); + trace_ent = world; break; } wz = trace_ent; @@ -266,6 +283,7 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo if(--i < 1) { dprint("Too many warpzones in sequence, aborting trace.\n"); + trace_ent = world; break; } tracetoss(e, forent); @@ -282,6 +300,7 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo if(trace_ent == wz) { dprint("I transformed into the same zone again, wtf, aborting the trace\n"); + trace_ent = world; break; } wz = trace_ent;