r2302 - in trunk/data: . qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Apr 13 17:50:29 EDT 2007
Author: div0
Date: 2007-04-13 17:50:29 -0400 (Fri, 13 Apr 2007)
New Revision: 2302
Modified:
trunk/data/default.cfg
trunk/data/qcsrc/server/cl_client.qc
trunk/data/qcsrc/server/defs.qh
trunk/data/qcsrc/server/miscfunctions.qc
Log:
new zoom customization: cl_zoomspeed, cl_zoomfactor
Modified: trunk/data/default.cfg
===================================================================
--- trunk/data/default.cfg 2007-04-11 18:29:46 UTC (rev 2301)
+++ trunk/data/default.cfg 2007-04-13 21:50:29 UTC (rev 2302)
@@ -60,6 +60,8 @@
_cl_playerskin 0
crosshair 5
fov 90
+set cl_zoomfactor 5 // how much +zoom will zoom (1-16)
+set cl_zoomspeed 3.5 // how fast it will zoom (0.5-16), negative values mean instant zoom
freelook 1
sensitivity 6
seta scmenu_mouse_speed 1
Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc 2007-04-11 18:29:46 UTC (rev 2301)
+++ trunk/data/qcsrc/server/cl_client.qc 2007-04-13 21:50:29 UTC (rev 2302)
@@ -457,6 +457,7 @@
self.oldvelocity = self.velocity;
self.viewzoom = 0.6;
+ self.has_zoomed = 0;
self.customizeentityforclient = Client_customizeentityforclient;
@@ -1443,21 +1444,60 @@
W_WeaponFrame();
- if (self.button4 || (self.weapon == WEP_NEX && self.button3))
- {
- if (cvar("g_minstagib") && self.button3)
- {
+ if (cvar("g_minstagib"))
+ if(self.button3)
if (self.jump_interval <= (time + 0.1))
{
self.jump_interval = time + 1;
W_Laser_Attack();
}
+
+ {
+ float zoomfactor, zoomspeed, zoomdir;
+ zoomfactor = self.cvar_cl_zoomfactor;
+ if(zoomfactor < 1 || zoomfactor > 16)
+ zoomfactor = 2.5;
+ zoomspeed = self.cvar_cl_zoomspeed;
+ if(zoomspeed >= 0) // < 0 is instant zoom
+ if(zoomspeed < 0.5 || zoomspeed > 16)
+ zoomspeed = 3.5;
+
+ zoomdir = self.button4;
+ if(self.button3)
+ if(self.weapon == WEP_NEX)
+ if(!cvar("g_minstagib"))
+ zoomdir = 1;
+
+ if(zoomdir)
+ self.has_zoomed = 1;
+
+ if(self.has_zoomed)
+ {
+ if(zoomspeed <= 0) // instant zoom
+ {
+ if(zoomdir)
+ self.viewzoom = 1 / zoomfactor;
+ else
+ self.viewzoom = 1;
+ }
+ else
+ {
+ // geometric zoom would be:
+ // self.viewzoom = bound(1 / zoomfactor, self.viewzoom * pow(zoomfactor, (zoomdir ? -1 : 1) * frametime * zoomspeed), 1);
+ // however, testing showed that arithmetic/harmonic zoom works better
+ if(zoomdir)
+ // self.viewzoom = 1 / bound(1, 1 / self.viewzoom + (zoomdir ? 1 : -1) * frametime * zoomspeed * (zoomfactor - 1), zoomfactor);
+ // zoom in = arithmetic: 1x, 2x, 3x, 4x, ..., 8x
+ self.viewzoom = 1 / bound(1, 1 / self.viewzoom + frametime * zoomspeed * (zoomfactor - 1), zoomfactor);
+ else
+ // self.viewzoom = bound(1 / zoomfactor, self.viewzoom + (zoomdir ? -1 : 1) * frametime * zoomspeed * (1 - 1 / zoomfactor), 1);
+ // zoom out = harmonic: 8/1x, 8/2x, 8/3x, 8/4x, ..., 8/8x
+ self.viewzoom = bound(1 / zoomfactor, self.viewzoom + frametime * zoomspeed * (1 - 1 / zoomfactor), 1);
+ }
}
- else if (self.viewzoom > 0.4)
- self.viewzoom = max (0.4, self.viewzoom - frametime * 2);
+ else
+ self.viewzoom = min(1, self.viewzoom + frametime); // spawn zoom-in
}
- else if (self.viewzoom < 1.0)
- self.viewzoom = min (1.0, self.viewzoom + frametime);
player_powerups();
player_regen();
Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh 2007-04-11 18:29:46 UTC (rev 2301)
+++ trunk/data/qcsrc/server/defs.qh 2007-04-13 21:50:29 UTC (rev 2302)
@@ -252,7 +252,11 @@
float default_player_alpha;
float default_weapon_alpha;
+.float has_zoomed;
+
.float() customizeentityforclient;
+.float cvar_cl_zoomfactor;
+.float cvar_cl_zoomspeed;
.float cvar_cl_playerdetailreduction;
.float cvar_cl_nogibs;
.float cvar_scr_centertime;
Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc 2007-04-11 18:29:46 UTC (rev 2301)
+++ trunk/data/qcsrc/server/miscfunctions.qc 2007-04-13 21:50:29 UTC (rev 2302)
@@ -358,6 +358,8 @@
}
void GetCvars(float f)
{
+ GetCvars_handleFloat(f, cvar_cl_zoomfactor, "cl_zoomfactor");
+ GetCvars_handleFloat(f, cvar_cl_zoomspeed, "cl_zoomspeed");
GetCvars_handleFloat(f, cvar_cl_playerdetailreduction, "cl_playerdetailreduction");
GetCvars_handleFloat(f, cvar_cl_nogibs, "cl_nogibs");
GetCvars_handleFloat(f, cvar_scr_centertime, "scr_centertime");
More information about the nexuiz-commits
mailing list