//this takes the same partms as draw_tmap, but draws a flat-shaded polygon void draw_tmap_flat(grs_bitmap *bp,int nverts,g3s_point **vertbuf) { pnt2d points[MAX_TMAP_VERTS]; int i; fix average_light; int color; Assert(nverts < MAX_TMAP_VERTS); average_light = vertbuf[0]->p3_l; for (i=1; i<nverts; i++) average_light += vertbuf[i]->p3_l; if (nverts == 4) average_light = f2i(average_light * NUM_LIGHTING_LEVELS/4); else average_light = f2i(average_light * NUM_LIGHTING_LEVELS/nverts); if (average_light < 0) average_light = 0; else if (average_light > NUM_LIGHTING_LEVELS-1) average_light = NUM_LIGHTING_LEVELS-1; color = gr_fade_table[average_light*256 + bp->avg_color]; gr_setcolor(color); for (i=0;i<nverts;i++) { points[i].x = vertbuf[i]->p3_sx; points[i].y = vertbuf[i]->p3_sy; } gr_upoly_tmap(nverts,(int *) points); }
//this takes the same partms as draw_tmap, but draws a flat-shaded polygon void DrawTexPolyFlat(grsBitmap *bp,int nverts,g3sPoint **vertbuf) { pnt2d points[MAX_TMAP_VERTS]; int i; fix average_light; int color; Assert(nverts < MAX_TMAP_VERTS); average_light = vertbuf[0]->p3_uvl.l; for (i=1; i<nverts; i++) average_light += vertbuf[i]->p3_uvl.l; if (nverts == 4) average_light = f2i(average_light * NUM_LIGHTING_LEVELS/4); else average_light = f2i(average_light * NUM_LIGHTING_LEVELS/nverts); if (average_light < 0) average_light = 0; else if (average_light > NUM_LIGHTING_LEVELS-1) average_light = NUM_LIGHTING_LEVELS-1; color = grFadeTable[average_light*256 + bp->bmAvgColor]; GrSetColor(color); for (i=0;i<nverts;i++) { points[i].x = vertbuf[i]->p3_screen.x; points[i].y = vertbuf[i]->p3_screen.y; } gr_upoly_tmap(nverts,(int *) points); }