+ for (i=0 ; i<3 ; i++)
+ {
+ view->render.origin[i] += forward[i]*bob*0.4;
+ // view->render.origin[i] += right[i]*bob*0.4;
+ // view->render.origin[i] += up[i]*bob*0.8;
+ }
+ view->render.origin[2] += bob;
+
+ // FIXME: this setup code is somewhat evil (CL_LerpUpdate should be private)
+ CL_LerpUpdate(view, cl.stats[STAT_WEAPONFRAME], cl.stats[STAT_WEAPON]);
+
+ view->render.model = cl.model_precache[cl.stats[STAT_WEAPON]];
+ view->render.frame = cl.stats[STAT_WEAPONFRAME];
+ view->render.colormap = -1; // no special coloring
+ view->render.alpha = ent->render.alpha; // LordHavoc: if the player is transparent, so is the gun
+ view->render.effects = ent->render.effects;
+ view->render.scale = 1;
+
+ // set up the refresh position
+
+ // LordHavoc: this never looked all that good to begin with...
+ /*
+ // smooth out stair step ups
+ if (cl.onground && ent->render.origin[2] - oldz > 0)
+ {
+ float steptime;
+
+ steptime = cl.time - cl.oldtime;
+ if (steptime < 0)
+ //FIXME I_Error ("steptime < 0");
+ steptime = 0;
+
+ oldz += steptime * 80;
+ if (oldz > ent->render.origin[2])
+ oldz = ent->render.origin[2];
+ if (ent->render.origin[2] - oldz > 12)
+ oldz = ent->render.origin[2] - 12;
+ r_refdef.vieworg[2] += oldz - ent->render.origin[2];
+ view->render.origin[2] += oldz - ent->render.origin[2];
+ }
+ else
+ oldz = ent->render.origin[2];
+ */
+
+ // LordHavoc: origin view kick added
+ if (!intimerefresh && v_punch.value)
+ {
+ VectorAdd(r_refdef.viewangles, cl.punchangle, r_refdef.viewangles);
+ VectorAdd(r_refdef.vieworg, cl.punchvector, r_refdef.vieworg);
+ }
+ }