[nexuiz-commits] r8718 - in trunk/data/qcsrc: client warpzonelib
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Feb 28 14:45:27 EST 2010
Author: div0
Date: 2010-02-28 14:45:18 -0500 (Sun, 28 Feb 2010)
New Revision: 8718
Modified:
trunk/data/qcsrc/client/Main.qc
trunk/data/qcsrc/warpzonelib/client.qc
trunk/data/qcsrc/warpzonelib/client.qh
Log:
hide the glitch when warpzone changes angles by almost nullifying keyboard input
Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc 2010-02-28 19:45:04 UTC (rev 8717)
+++ trunk/data/qcsrc/client/Main.qc 2010-02-28 19:45:18 UTC (rev 8718)
@@ -176,6 +176,8 @@
mi_center = (mi_min + mi_max) * 0.5;
mi_scale = mi_max - mi_min;
minimapname = strzone(minimapname);
+
+ WarpZone_Init();
}
// CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
@@ -188,6 +190,8 @@
#pragma TARGET fte
#endif
+ WarpZone_Shutdown();
+
remove(teams);
remove(players);
db_close(binddb);
Modified: trunk/data/qcsrc/warpzonelib/client.qc
===================================================================
--- trunk/data/qcsrc/warpzonelib/client.qc 2010-02-28 19:45:04 UTC (rev 8717)
+++ trunk/data/qcsrc/warpzonelib/client.qc 2010-02-28 19:45:18 UTC (rev 8718)
@@ -44,10 +44,36 @@
setsize(self, self.mins, self.maxs);
}
+float warpzone_fixingview;
+float warpzone_fixingview_drawexteriormodel;
+float warpzone_fixingview_sidespeed;
+float warpzone_fixingview_forwardspeed;
+void WarpZone_Inside()
+{
+ if(warpzone_fixingview)
+ return;
+ warpzone_fixingview = 1;
+ warpzone_fixingview_drawexteriormodel = cvar("r_drawexteriormodel");
+ warpzone_fixingview_sidespeed = cvar("cl_sidespeed");
+ warpzone_fixingview_forwardspeed = cvar("cl_forwardspeed");
+ cvar_set("r_drawexteriormodel", "0");
+ cvar_set("cl_sidespeed", ftos(warpzone_fixingview_sidespeed / 100)); // just keep a bit of it in case player gets stuck
+ cvar_set("cl_forwardspeed", ftos(warpzone_fixingview_forwardspeed / 100)); // just keep a bit of it in case player gets stuck
+}
+
+void WarpZone_Outside()
+{
+ if(!warpzone_fixingview)
+ 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));
+}
+
float warpzone_saved;
vector warpzone_saved_origin;
vector warpzone_saved_angles;
-float warpzone_fixingview;
void WarpZone_FixView()
{
float pd;
@@ -62,7 +88,10 @@
warpzone_saved = 1;
warpzone_fixview_origin = WarpZone_TransformOrigin(e, warpzone_fixview_origin);
warpzone_fixview_angles = WarpZone_TransformVAngles(e, warpzone_fixview_angles);
+ WarpZone_Inside();
}
+ else
+ WarpZone_Outside();
// if we are near any warpzone planes - MOVE AWAY (work around nearclip)
float nearclip = 2;
@@ -81,20 +110,7 @@
{
R_SetView(VF_ORIGIN, warpzone_fixview_origin);
R_SetView(VF_ANGLES, warpzone_fixview_angles);
- if(!warpzone_fixingview)
- {
- cvar_set("r_drawexteriormodel", "0"); // hide my own model
- warpzone_fixingview = 1;
- }
}
- else
- {
- if(warpzone_fixingview)
- {
- cvar_set("r_drawexteriormodel", "1"); // hide my own model
- warpzone_fixingview = 0;
- }
- }
}
void WarpZone_UnFixView()
{
@@ -106,3 +122,12 @@
R_SetView(VF_ANGLES, warpzone_fixview_angles);
}
}
+
+void WarpZone_Init()
+{
+}
+
+void WarpZone_Shutdown()
+{
+ WarpZone_Outside();
+}
Modified: trunk/data/qcsrc/warpzonelib/client.qh
===================================================================
--- trunk/data/qcsrc/warpzonelib/client.qh 2010-02-28 19:45:04 UTC (rev 8717)
+++ trunk/data/qcsrc/warpzonelib/client.qh 2010-02-28 19:45:18 UTC (rev 8718)
@@ -4,3 +4,6 @@
vector warpzone_fixview_angles;
void WarpZone_FixView(); // this saves the previous values
void WarpZone_UnFixView(); // and restores them
+
+void WarpZone_Init();
+void WarpZone_Shutdown();
More information about the nexuiz-commits
mailing list