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()
{
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)
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
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);