X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=view.c;h=060464ac7d2f72dfdba61068782e2566379f628b;hb=6105f925d829ef7f05a482082a3a500a9f243d35;hp=49879479d0ba4693b0cf765320014cd5e10ed0f2;hpb=67a9a2a04629ab033e4cbf39124b9fbbf39c6128;p=xonotic%2Fdarkplaces.git diff --git a/view.c b/view.c index 49879479..060464ac 100644 --- 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); } }