+ if (ent->render.angles[0] || ent->render.angles[2])
+ {
+ // pitch or roll
+ VectorAdd(ent->render.origin, ent->render.model->rotatedmins, ent->render.mins);
+ VectorAdd(ent->render.origin, ent->render.model->rotatedmaxs, ent->render.maxs);
+ }
+ else if (ent->render.angles[1])
+ {
+ // yaw
+ VectorAdd(ent->render.origin, ent->render.model->yawmins, ent->render.mins);
+ VectorAdd(ent->render.origin, ent->render.model->yawmaxs, ent->render.maxs);
+ }
+ else
+ {
+ VectorAdd(ent->render.origin, ent->render.model->normalmins, ent->render.mins);
+ VectorAdd(ent->render.origin, ent->render.model->normalmaxs, ent->render.maxs);
+ }
+
+ if (r_refdef.numentities < r_refdef.maxentities)
+ r_refdef.entities[r_refdef.numentities++] = &ent->render;
+
+ if (ent->render.model->name[0] == '*' && ent->render.model->type == mod_brush)
+ cl_brushmodel_entities[cl_num_brushmodel_entities++] = &ent->render;
+
+ if (cl_num_entities < i + 1)
+ cl_num_entities = i + 1;
+ }
+}
+
+void CL_LerpPlayer(float frac)
+{
+ int i;
+ float d;
+
+ if (cl.entitydatabase.numframes && cl.viewentity == cl.playerentity)
+ {
+ cl.viewentorigin[0] = cl.viewentoriginold[0] + frac * (cl.viewentoriginnew[0] - cl.viewentoriginold[0]);
+ cl.viewentorigin[1] = cl.viewentoriginold[1] + frac * (cl.viewentoriginnew[1] - cl.viewentoriginold[1]);
+ cl.viewentorigin[2] = cl.viewentoriginold[2] + frac * (cl.viewentoriginnew[2] - cl.viewentoriginold[2]);
+ }
+ else
+ VectorCopy (cl_entities[cl.viewentity].render.origin, cl.viewentorigin);
+
+ cl.viewzoom = cl.viewzoomold + frac * (cl.viewzoomnew - cl.viewzoomold);
+
+ for (i = 0;i < 3;i++)
+ cl.velocity[i] = cl.mvelocity[1][i] + frac * (cl.mvelocity[0][i] - cl.mvelocity[1][i]);
+
+ if (cls.demoplayback)
+ {
+ // interpolate the angles
+ for (i = 0;i < 3;i++)
+ {
+ d = cl.mviewangles[0][i] - cl.mviewangles[1][i];
+ if (d > 180)
+ d -= 360;
+ else if (d < -180)
+ d += 360;
+ cl.viewangles[i] = cl.mviewangles[1][i] + frac * d;
+ }
+ }
+}
+
+void CL_Effect(vec3_t org, int modelindex, int startframe, int framecount, float framerate)
+{
+ int i;
+ cl_effect_t *e;
+ if (!modelindex) // sanity check
+ return;
+ for (i = 0, e = cl_effects;i < cl_max_effects;i++, e++)
+ {
+ if (e->active)