]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - view.c
fix an accidentally removed variable, and move a couple unused variables into the...
[xonotic/darkplaces.git] / view.c
diff --git a/view.c b/view.c
index 49879479d0ba4693b0cf765320014cd5e10ed0f2..060464ac7d2f72dfdba61068782e2566379f628b 100644 (file)
--- a/view.c
+++ b/view.c
@@ -204,7 +204,7 @@ V_ParseDamage
 */
 void V_ParseDamage (void)
 {
-       int i, armor, blood;
+       int armor, blood;
        vec3_t from;
        //vec3_t forward, right;
        vec3_t localfrom;
@@ -214,8 +214,7 @@ void V_ParseDamage (void)
 
        armor = MSG_ReadByte ();
        blood = MSG_ReadByte ();
-       for (i=0 ; i<3 ; i++)
-               from[i] = MSG_ReadCoord ();
+       MSG_ReadVector(from, cl.protocol);
 
        count = blood*0.5 + armor*0.5;
        if (count < 10)
@@ -314,7 +313,7 @@ void V_CalcRefdef (void)
 {
        static float oldz;
        entity_t *ent;
-       float vieworg[3], viewangles[3], newz;
+       float vieworg[3], viewangles[3];
        Matrix4x4_CreateIdentity(&viewmodelmatrix);
        Matrix4x4_CreateIdentity(&r_refdef.viewentitymatrix);
        if (cls.state == ca_connected && cls.signon == SIGNONS)
@@ -335,12 +334,19 @@ void V_CalcRefdef (void)
                        VectorCopy(cl.viewangles, viewangles);
 
                        // stair smoothing
-                       newz = vieworg[2];
-                       oldz -= newz;
-                       oldz += (cl.time - cl.oldtime) * cl_stairsmoothspeed.value;
-                       oldz = bound(-16, oldz, 0);
-                       vieworg[2] += oldz;
-                       oldz += newz;
+                       //Con_Printf("cl.onground %i oldz %f newz %f\n", cl.onground, oldz, vieworg[2]);
+                       if (cl.onground && oldz < vieworg[2])
+                       {
+                               oldz += (cl.time - cl.oldtime) * cl_stairsmoothspeed.value;
+                               oldz = vieworg[2] = bound(vieworg[2] - 16, oldz, vieworg[2]);
+                       }
+                       else if (cl.onground && oldz > vieworg[2])
+                       {
+                               oldz -= (cl.time - cl.oldtime) * cl_stairsmoothspeed.value;
+                               oldz = vieworg[2] = bound(vieworg[2], oldz, vieworg[2] + 16);
+                       }
+                       else
+                               oldz = vieworg[2];
 
                        if (chase_active.value)
                        {
@@ -379,7 +385,7 @@ void V_CalcRefdef (void)
                        {
                                // first person view from entity
                                // angles
-                               if (cl.stats[STAT_HEALTH] <= 0)
+                               if (cl.stats[STAT_HEALTH] <= 0 && gamemode != GAME_FNIGGIUM)
                                        viewangles[ROLL] = 80;  // dead view angle
                                VectorAdd(viewangles, cl.punchangle, viewangles);
                                viewangles[ROLL] += V_CalcRoll(cl.viewangles, cl.velocity);
@@ -443,7 +449,7 @@ void V_CalcViewBlend(void)
        r_refdef.viewblend[1] = 0;
        r_refdef.viewblend[2] = 0;
        r_refdef.viewblend[3] = 0;
-       if (cls.state == ca_connected && cls.signon == SIGNONS)
+       if (cls.state == ca_connected && cls.signon == SIGNONS && gl_polyblend.value > 0)
        {
                // set contents color
                switch (CL_PointQ1Contents(r_vieworigin))
@@ -520,7 +526,7 @@ void V_CalcViewBlend(void)
                        if (a2 > 0)
                        {
                                VectorLerp(r_refdef.viewblend, a2, cl.cshifts[j].destcolor, r_refdef.viewblend);
-                               r_refdef.viewblend[3] = 1 - (1 - r_refdef.viewblend[3]) * (1 - a2); // correct alpha multiply...  took a while to find it on the web
+                               r_refdef.viewblend[3] = (1 - (1 - r_refdef.viewblend[3]) * (1 - a2)); // correct alpha multiply...  took a while to find it on the web
                        }
                }
                // saturate color (to avoid blending in black)
@@ -533,7 +539,7 @@ void V_CalcViewBlend(void)
                r_refdef.viewblend[0] = bound(0.0f, r_refdef.viewblend[0] * (1.0f/255.0f), 1.0f);
                r_refdef.viewblend[1] = bound(0.0f, r_refdef.viewblend[1] * (1.0f/255.0f), 1.0f);
                r_refdef.viewblend[2] = bound(0.0f, r_refdef.viewblend[2] * (1.0f/255.0f), 1.0f);
-               r_refdef.viewblend[3] = bound(0.0f, r_refdef.viewblend[3]                , 1.0f);
+               r_refdef.viewblend[3] = bound(0.0f, r_refdef.viewblend[3] * gl_polyblend.value, 1.0f);
        }
 }