+}
+
+void R_Model_Alias_DrawFakeShadow (entity_render_t *ent)
+{
+ int i, meshnum;
+ aliasmesh_t *mesh;
+ aliasskin_t *skin;
+ rmeshstate_t m;
+ float *v, planenormal[3], planedist, dist, projection[3], floororigin[3], surfnormal[3], lightdirection[3], v2[3];
+
+ if ((ent->effects & EF_ADDITIVE) || ent->alpha < 1)
+ return;
+
+ lightdirection[0] = 0.5;
+ lightdirection[1] = 0.2;
+ lightdirection[2] = -1;
+ VectorNormalizeFast(lightdirection);
+
+ VectorMA(ent->origin, 65536.0f, lightdirection, v2);
+ if (CL_TraceLine(ent->origin, v2, floororigin, surfnormal, 0, false, NULL) == 1)
+ return;
+
+ R_Mesh_Matrix(&ent->matrix);
+
+ memset(&m, 0, sizeof(m));
+ m.blendfunc1 = GL_SRC_ALPHA;
+ m.blendfunc2 = GL_ONE_MINUS_SRC_ALPHA;
+ R_Mesh_State(&m);
+ GL_Color(0, 0, 0, 0.5);
+
+ // put a light direction in the entity's coordinate space
+ Matrix4x4_Transform3x3(&ent->inversematrix, lightdirection, projection);
+ VectorNormalizeFast(projection);
+
+ // put the plane's normal in the entity's coordinate space
+ Matrix4x4_Transform3x3(&ent->inversematrix, surfnormal, planenormal);
+ VectorNormalizeFast(planenormal);
+
+ // put the plane's distance in the entity's coordinate space
+ VectorSubtract(floororigin, ent->origin, floororigin);
+ planedist = DotProduct(floororigin, surfnormal) + 2;
+
+ dist = -1.0f / DotProduct(projection, planenormal);
+ VectorScale(projection, dist, projection);
+ for (meshnum = 0, mesh = ent->model->aliasdata_meshes;meshnum < ent->model->aliasnum_meshes;meshnum++)