From: Samual Date: Mon, 24 Oct 2011 18:24:48 +0000 (-0400) Subject: Changes to cl_velocityzoom according to terencehill and divVerent's suggestions X-Git-Tag: xonotic-v0.6.0~35^2~78^2~7^2~11 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=8a7c6ab1889eded935459c79d836fa74710596b3;p=xonotic%2Fxonotic-data.pk3dir.git Changes to cl_velocityzoom according to terencehill and divVerent's suggestions --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index e50b942bd..a13177b02 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -218,7 +218,9 @@ seta cl_reticle_item_nex 1 "draw aiming reticle for the nex weapon's zoom, 0 dis seta cl_reticle_item_normal 1 "draw reticle when zooming with the zoom button, 0 disables and values between 0 and 1 change alpha" fov 90 seta cl_velocityzoom 0 "velocity based zooming of fov, negative values zoom out" -seta cl_velocityzoomtime 0.3 "time value for averaging speed values" +seta cl_velocityzoom_type 3 "how to factor in speed, 1 = all velocity in all directions, 2 = velocity only in forward direction (can be negative), 3 = velocity only in forward direction (limited to forward only)" +seta cl_velocityzoom_speed 1000 "target speed for fov factoring" +seta cl_velocityzoom_time 0.2 "time value for averaging speed values" seta cl_zoomfactor 5 "how much +zoom will zoom (1-16)" seta cl_zoomspeed 8 "how fast it will zoom (0.5-16), negative values mean instant zoom" seta cl_zoomsensitivity 0 "how zoom changes sensitivity (0 = weakest, 1 = strongest)" diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index ea10300ed..827c4f3ec 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -114,7 +114,8 @@ float drawtime; float avgspeed; vector GetCurrentFov(float fov) { - float zoomsensitivity, zoomspeed, zoomfactor, zoomdir, velocityzoom; + float zoomsensitivity, zoomspeed, zoomfactor, zoomdir; + float velocityzoom, curspeed; zoomsensitivity = autocvar_cl_zoomsensitivity; zoomfactor = autocvar_cl_zoomfactor; @@ -177,13 +178,23 @@ vector GetCurrentFov(float fov) setsensitivityscale(pow(current_viewzoom, 1 - zoomsensitivity)); else setsensitivityscale(1); + + makevectors(view_angles); - if (autocvar_cl_velocityzoom) + if(autocvar_cl_velocityzoom) { - velocityzoom = bound(0, drawframetime / max(0.000000001, autocvar_cl_velocityzoomtime), 1); - avgspeed = avgspeed * (1 - velocityzoom) + (vlen(pmove_vel) / 1000) * velocityzoom; + switch(autocvar_cl_velocityzoom_type) + { + case 3: curspeed = max(0, v_forward * pmove_vel); break; + case 2: curspeed = (v_forward * pmove_vel); break; + case 1: default: curspeed = vlen(pmove_vel); break; + } + + velocityzoom = bound(0, drawframetime / max(0.000000001, autocvar_cl_velocityzoom_time), 1); // speed at which the zoom adapts to player velocity + avgspeed = avgspeed * (1 - velocityzoom) + (curspeed / autocvar_cl_velocityzoom_speed) * velocityzoom; velocityzoom = exp(float2range11(avgspeed * -autocvar_cl_velocityzoom / 1) * 1); - //print(ftos(avgspeed), " avgspeed, ", ftos(autocvar_cl_velocityzoom), " cvar, ", ftos(velocityzoom), " return\n"); // for debugging + + print(ftos(avgspeed), " avgspeed, ", ftos(curspeed), " curspeed, ", ftos(velocityzoom), " return\n"); // for debugging } else velocityzoom = 1; diff --git a/qcsrc/client/autocvars.qh b/qcsrc/client/autocvars.qh index 7b3e3c9ca..5b3be971c 100644 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@ -65,7 +65,9 @@ float autocvar_cl_stripcolorcodes; var float autocvar_cl_vehicle_spiderbot_cross_alpha = 0.6; var float autocvar_cl_vehicle_spiderbot_cross_size = 1; float autocvar_cl_velocityzoom; -var float autocvar_cl_velocityzoomtime = 0.3; +float autocvar_cl_velocityzoom_type; +float autocvar_cl_velocityzoom_speed; +float autocvar_cl_velocityzoom_time; string autocvar_cl_weaponpriority; float autocvar_cl_zoomfactor; float autocvar_cl_zoomsensitivity;