// R_SetupMirrorClipPlane
//
// Purpose: sets up clip plane for mirror
// NB: PLEASE DO NOT MODIFY! I'VE BEEN FUCKING WITH IT A LOT BEFORE GOT IT WORKING
//
void R_SetupMirrorClipPlane(ref_params_t *pparams, mirror_t *mir)
{
float normal[3];
double eq[4];
vec3_t fw,rt,up;
vec3_t vecDist;

AngleVectors (pparams->viewangles, fw, rt, up );
VectorSubtract (mir->origin, pparams->vieworg, vecDist);
VectorInverse(rt);
VectorInverse(up);

if (mir->surface->flags & SURF_PLANEBACK)
{
normal[0] = mir->surface->plane->normal[0];
normal[1] = mir->surface->plane->normal[1];
normal[2] = mir->surface->plane->normal[2];
VectorMA (vecDist, 0.01, normal, vecDist);
}
else
{
normal[0] = -mir->surface->plane->normal[0];
normal[1] = -mir->surface->plane->normal[1];
normal[2] = -mir->surface->plane->normal[2];
VectorMA (vecDist, -0.01, normal, vecDist);
}

if (mir->twoside)
{
float d = DotProduct(normal,v_origin) - mir->surface->plane->dist;
if (d > 0) VectorInverse(normal);
}

eq[0] = DotProduct (rt, normal);
eq[1] = DotProduct (up, normal);
eq[2] = DotProduct (fw, normal);
eq[3] = DotProduct (vecDist, normal);

glLoadIdentity();
glClipPlane(GL_CLIP_PLANE0, eq);

}