X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fwarpzonelib%2Fclient.qc;h=e52c0d7ce8e328c03ac41a7e4b7c187a603b1ba9;hp=c16fc898b0d09232c049bb25a31babf4ffca811a;hb=7cda9265daa069578813e89281d4309afabb3460;hpb=0e7ed909bffb4ff21f0c68d163edfc17487e380a diff --git a/qcsrc/warpzonelib/client.qc b/qcsrc/warpzonelib/client.qc index c16fc898b0..e52c0d7ce8 100644 --- a/qcsrc/warpzonelib/client.qc +++ b/qcsrc/warpzonelib/client.qc @@ -34,7 +34,6 @@ void WarpZone_Read(float isnew) WarpZone_SetUp(self, self.enemy.oldorigin, self.enemy.avelocity, self.oldorigin, self.avelocity); // engine currently wants this - self.avelocity = AnglesTransform_TurnDirectionFR(self.avelocity); self.drawmask = MASK_NORMAL; // link me @@ -43,14 +42,6 @@ void WarpZone_Read(float isnew) setsize(self, self.mins, self.maxs); } -vector WarpZone_Camera_camera_transform(vector org, vector ang) -{ - // a fixed camera view - trace_endpos = self.oldorigin; - makevectors(self.avelocity); - return self.oldorigin; -} - void WarpZone_Camera_Read(float isnew) { self.classname = "func_warpzone_camera"; @@ -72,9 +63,11 @@ void WarpZone_Camera_Read(float isnew) self.avelocity_y = ReadCoord(); self.avelocity_z = ReadCoord(); + // common stuff + WarpZone_Camera_SetUp(self, self.oldorigin, self.avelocity); + // engine currently wants this self.drawmask = MASK_NORMAL; - self.camera_transform = WarpZone_Camera_camera_transform; // link me //setmodel(self, self.model); @@ -112,22 +105,33 @@ void WarpZone_Outside() float warpzone_saved; vector warpzone_saved_origin; vector warpzone_saved_angles; +vector warpzone_saved_cl_viewangles; #ifndef KEEP_ROLL var float autocvar_cl_rollkillspeed = 10; #endif void WarpZone_FixView() { - float pd; + float pd, f; entity e; warpzone_saved = 0; warpzone_saved_origin = warpzone_fixview_origin; warpzone_saved_angles = warpzone_fixview_angles; + warpzone_saved_cl_viewangles = warpzone_fixview_cl_viewangles; #ifndef KEEP_ROLL - if(autocvar_cl_rollkillspeed) - R_SetView(VF_CL_VIEWANGLES_Z, input_angles_z * max(0, (1 - frametime * autocvar_cl_rollkillspeed))); - else - R_SetView(VF_CL_VIEWANGLES_Z, 0); + if(warpzone_fixview_angles_z != 0 || warpzone_fixview_cl_viewangles_z != 0) + { + if(autocvar_cl_rollkillspeed) + f = max(0, (1 - frametime * autocvar_cl_rollkillspeed)); + else + f = 0; + warpzone_fixview_angles_z *= f; + warpzone_fixview_cl_viewangles_z *= f; + warpzone_saved_angles_z *= f; // PERMANENTLY apply that change! + warpzone_saved_cl_viewangles_z *= f; // PERMANENTLY apply that change! + warpzone_saved = 2; + R_SetView(VF_CL_VIEWANGLES_Z, warpzone_fixview_angles_z); + } #endif e = WarpZone_Find(warpzone_fixview_origin, warpzone_fixview_origin); @@ -136,6 +140,7 @@ void WarpZone_FixView() warpzone_saved = 1; warpzone_fixview_origin = WarpZone_TransformOrigin(e, warpzone_fixview_origin); warpzone_fixview_angles = WarpZone_TransformVAngles(e, warpzone_fixview_angles); + warpzone_fixview_cl_viewangles = WarpZone_TransformVAngles(e, warpzone_fixview_cl_viewangles); WarpZone_Inside(); } else @@ -154,10 +159,10 @@ void WarpZone_FixView() } } - if(warpzone_saved) + if(warpzone_saved == 1) { R_SetView(VF_ORIGIN, warpzone_fixview_origin); - R_SetView(VF_ANGLES, warpzone_fixview_angles); + R_SetView(VF_ANGLES, warpzone_fixview_cl_viewangles); } } void WarpZone_UnFixView() @@ -166,8 +171,10 @@ void WarpZone_UnFixView() { warpzone_fixview_origin = warpzone_saved_origin; warpzone_fixview_angles = warpzone_saved_angles; + warpzone_fixview_cl_viewangles = warpzone_saved_cl_viewangles; R_SetView(VF_ORIGIN, warpzone_fixview_origin); R_SetView(VF_ANGLES, warpzone_fixview_angles); + R_SetView(VF_CL_VIEWANGLES, warpzone_fixview_cl_viewangles); } }