Move rod_points onto stack
This commit is contained in:
parent
c47d1b3d30
commit
86c49079a1
|
@ -22,8 +22,12 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "maths.h"
|
||||
|
||||
grs_point blob_vertices[4];
|
||||
g3s_point rod_points[4];
|
||||
static g3s_point *rod_point_list[] = {&rod_points[0],&rod_points[1],&rod_points[2],&rod_points[3]};
|
||||
|
||||
struct rod_4point
|
||||
{
|
||||
g3s_point *point_list[4];
|
||||
g3s_point points[4];
|
||||
};
|
||||
|
||||
static g3s_uvl uvl_list[4] = { { 0x0200,0x0200,0 },
|
||||
{ 0xfe00,0x0200,0 },
|
||||
|
@ -31,7 +35,7 @@ static g3s_uvl uvl_list[4] = { { 0x0200,0x0200,0 },
|
|||
{ 0x0200,0xfe00,0 } };
|
||||
|
||||
//compute the corners of a rod. fills in vertbuf.
|
||||
static int calc_rod_corners(g3s_point *bot_point,fix bot_width,g3s_point *top_point,fix top_width)
|
||||
static int calc_rod_corners(rod_4point &rod_point_group, g3s_point *bot_point,fix bot_width,g3s_point *top_point,fix top_width)
|
||||
{
|
||||
vms_vector delta_vec,top,tempv,rod_norm;
|
||||
ubyte codes_and;
|
||||
|
@ -72,6 +76,11 @@ static int calc_rod_corners(g3s_point *bot_point,fix bot_width,g3s_point *top_po
|
|||
vm_vec_copy_scale(&tempv,&rod_norm,top_width);
|
||||
tempv.z = 0;
|
||||
|
||||
rod_point_group.point_list[0] = &rod_point_group.points[0];
|
||||
rod_point_group.point_list[1] = &rod_point_group.points[1];
|
||||
rod_point_group.point_list[2] = &rod_point_group.points[2];
|
||||
rod_point_group.point_list[3] = &rod_point_group.points[3];
|
||||
g3s_point (&rod_points)[4] = rod_point_group.points;
|
||||
vm_vec_add(&rod_points[0].p3_vec,&top_point->p3_vec,&tempv);
|
||||
vm_vec_sub(&rod_points[1].p3_vec,&top_point->p3_vec,&tempv);
|
||||
|
||||
|
@ -102,10 +111,11 @@ static int calc_rod_corners(g3s_point *bot_point,fix bot_width,g3s_point *top_po
|
|||
//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))
|
||||
rod_4point rod;
|
||||
if (calc_rod_corners(rod,bot_point,bot_width,top_point,top_width))
|
||||
return 0;
|
||||
|
||||
return g3_draw_poly(4,rod_point_list);
|
||||
return g3_draw_poly(4,rod.point_list);
|
||||
|
||||
}
|
||||
|
||||
|
@ -113,7 +123,8 @@ bool g3_draw_rod_flat(g3s_point *bot_point,fix bot_width,g3s_point *top_point,fi
|
|||
//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))
|
||||
rod_4point rod;
|
||||
if (calc_rod_corners(rod,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;
|
||||
|
@ -122,7 +133,7 @@ bool g3_draw_rod_tmap(grs_bitmap *bitmap,g3s_point *bot_point,fix bot_width,g3s_
|
|||
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);
|
||||
return g3_draw_tmap(4,rod.point_list,uvl_list,lrgb_list,bitmap);
|
||||
}
|
||||
|
||||
#ifndef OGL
|
||||
|
|
Loading…
Reference in a new issue