//draw a polygon that is always facing you //returns 1 if off screen, 0 if drew bool g3_draw_rod_flat(g3s_point *bot_point,fix bot_width,g3s_point *top_point,fix top_width) { if (calc_rod_corners(bot_point,bot_width,top_point,top_width)) return 0; return g3_draw_poly(4,rod_point_list); }
//draw a bitmap object that is always facing you //returns 1 if off screen, 0 if drew bool g3_draw_rod_tmap(grs_bitmap *bitmap,g3s_point *bot_point,fix bot_width,g3s_point *top_point,fix top_width,g3s_lrgb light) { if (calc_rod_corners(bot_point,bot_width,top_point,top_width)) return 0; uvl_list[0].l = uvl_list[1].l = uvl_list[2].l = uvl_list[3].l = (light.r+light.g+light.b)/3; lrgb_list[0].r = lrgb_list[1].r = lrgb_list[2].r = lrgb_list[3].r = light.r; lrgb_list[0].g = lrgb_list[1].g = lrgb_list[2].g = lrgb_list[3].g = light.g; lrgb_list[0].b = lrgb_list[1].b = lrgb_list[2].b = lrgb_list[3].b = light.b; return g3_draw_tmap(4,rod_point_list,uvl_list,lrgb_list,bitmap); }
//draw a bitmap object that is always facing you //returns 1 if off screen, 0 if drew void g3_draw_rod_tmap(grs_bitmap &bitmap,const g3s_point &bot_point,fix bot_width,const g3s_point &top_point,fix top_width,g3s_lrgb light) { rod_4point rod; if (calc_rod_corners(rod,bot_point,bot_width,top_point,top_width)) return; const fix average_light = static_cast<unsigned>(light.r+light.g+light.b)/3; const array<g3s_uvl, 4> uvl_list{{ { 0x0200, 0x0200, average_light }, { 0xfe00, 0x0200, average_light }, { 0xfe00, 0xfe00, average_light }, { 0x0200, 0xfe00, average_light } }}; const array<g3s_lrgb, 4> lrgb_list{{ light, light, light, light, }}; g3_draw_tmap(rod.point_list,uvl_list,lrgb_list,bitmap); }