]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
Add smoothing to the viewheight so that things such as crouching have a smooth transi...
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 8 Feb 2011 09:23:58 +0000 (09:23 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 8 Feb 2011 09:23:58 +0000 (09:23 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@10827 d7cf8633-e32d-0410-b094-e92efae38249

view.c

diff --git a/view.c b/view.c
index 48a5dd4ba8ae284cf625fae84dc3b083402de23f..081edc76afa445c18069d5d6992ca85a085d84f9 100644 (file)
--- a/view.c
+++ b/view.c
@@ -96,6 +96,8 @@ cvar_t v_centerspeed = {0, "v_centerspeed","500", "how fast the view centers its
 
 cvar_t cl_stairsmoothspeed = {CVAR_SAVE, "cl_stairsmoothspeed", "160", "how fast your view moves upward/downward when running up/down stairs"};
 
+cvar_t cl_smoothviewheighttime = {CVAR_SAVE, "cl_smoothviewheight", "0.05", "add averaging to the viewheight value so that it creates a smooth transition, 0 for instant transition."};
+
 cvar_t chase_back = {CVAR_SAVE, "chase_back", "48", "chase cam distance from the player"};
 cvar_t chase_up = {CVAR_SAVE, "chase_up", "24", "chase cam distance from the player"};
 cvar_t chase_active = {CVAR_SAVE, "chase_active", "0", "enables chase cam"};
@@ -431,6 +433,9 @@ void V_CalcRefdef (void)
        entity_t *ent;
        float vieworg[3], viewangles[3], smoothtime;
        float gunorg[3], gunangles[3];
+       
+       static float viewheightavg;
+       float viewheight;       
 #if 0
 // begin of chase camera bounding box size for proper collisions by Alexander Zubov
        vec3_t camboxmins = {-3, -3, -3};
@@ -488,7 +493,10 @@ void V_CalcRefdef (void)
                        viewangles[PITCH] += cl.qw_weaponkick;
 
                        // apply the viewofs (even if chasecam is used)
-                       vieworg[2] += cl.stats[STAT_VIEWHEIGHT];
+                       // Samual: Lets add smoothing for this too so that things like crouching are done with a transition.
+                       viewheight = bound(0, (cl.time - cl.oldtime) / max(0.0001, cl_smoothviewheighttime.value), 1);
+                       viewheightavg = viewheightavg * (1 - viewheight) + cl.stats[STAT_VIEWHEIGHT] * viewheight;
+                       vieworg[2] += viewheightavg;
 
                        if (chase_active.value)
                        {
@@ -1015,6 +1023,8 @@ void V_Init (void)
        Cvar_RegisterVariable (&v_kickpitch);
 
        Cvar_RegisterVariable (&cl_stairsmoothspeed);
+       
+       Cvar_RegisterVariable (&cl_smoothviewheighttime);
 
        Cvar_RegisterVariable (&chase_back);
        Cvar_RegisterVariable (&chase_up);