]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/warpzonelib/client.qc
Merge remote branch 'origin/master' into samual/updatecommands
[xonotic/xonotic-data.pk3dir.git] / qcsrc / warpzonelib / client.qc
index fb78595a182b2ba86ad8787f1d6ef0f5c471a6d9..5979c804d2f01e3b52d42f2a653b149376db337d 100644 (file)
@@ -164,14 +164,7 @@ void WarpZone_Teleported_Read(float isnew)
 
 float warpzone_fixingview;
 float warpzone_fixingview_drawexteriormodel;
-void WarpZone_View_Inside()
-{
-       if(warpzone_fixingview)
-               return;
-       warpzone_fixingview = 1;
-       warpzone_fixingview_drawexteriormodel = cvar("r_drawexteriormodel");
-       cvar_set("r_drawexteriormodel", "0");
-}
+float autocvar_chase_active;
 
 void WarpZone_View_Outside()
 {
@@ -179,8 +172,20 @@ void WarpZone_View_Outside()
                return;
        warpzone_fixingview = 0;
        cvar_set("r_drawexteriormodel", ftos(warpzone_fixingview_drawexteriormodel));
-       //cvar_set("cl_sidespeed", ftos(warpzone_fixingview_sidespeed));
-       //cvar_set("cl_forwardspeed", ftos(warpzone_fixingview_forwardspeed));
+}
+
+void WarpZone_View_Inside()
+{
+       if(autocvar_chase_active)
+       {
+               WarpZone_View_Outside();
+               return;
+       }
+       if(warpzone_fixingview)
+               return;
+       warpzone_fixingview = 1;
+       warpzone_fixingview_drawexteriormodel = cvar("r_drawexteriormodel");
+       cvar_set("r_drawexteriormodel", "0");
 }
 
 vector WarpZone_FixNearClip(vector o, vector c0, vector c1, vector c2, vector c3)
@@ -237,12 +242,19 @@ void WarpZone_FixView()
 
        org = R_SetView3fv(VF_ORIGIN);
        ang = R_SetView3fv(VF_ANGLES);
+#ifdef WORKAROUND_XON010
+       float dirty;
+       dirty = checkextension("DP_CSQC_ROTATEMOVES");
+#endif
 
        e = WarpZone_Find(org, org);
        if(e)
        {
                org = WarpZone_TransformOrigin(e, org);
                ang = WarpZone_TransformVAngles(e, ang);
+#ifdef WORKAROUND_XON010
+               dirty = 1;
+#endif
                WarpZone_View_Inside();
        }
        else
@@ -259,11 +271,22 @@ void WarpZone_FixView()
        rick *= f;
        R_SetView(VF_CL_VIEWANGLES_Z, rick);
 
+#ifdef WORKAROUND_XON010
+       if(ang_z > 1 || ang_z < -1)
+               dirty = 1;
+#endif
        ang_z *= f;
 #endif
 
+#ifdef WORKAROUND_XON010
+       if(dirty)
+       {
+#endif
        R_SetView(VF_ORIGIN, org);
        R_SetView(VF_ANGLES, ang);
+#ifdef WORKAROUND_XON010
+       }
+#endif
 
        nearclip = '0 0 1' * (cvar("r_nearclip") * 1.125);
        corner0 = cs_unproject('0 0 0' + nearclip);