X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosrtxon;a=blobdiff_plain;f=src%2Fparts%2Frtxonoff.c;h=bab4d98fd43b6382048e88f51a09ea7435dd7917;hp=0f44854001262a995cd65c664d285ead66974806;hb=584c6161bb6f3f548d5e27bb7d6895a81375881e;hpb=ac1dd983cb211904ca6c74ca28ceb5e83aa09527 diff --git a/src/parts/rtxonoff.c b/src/parts/rtxonoff.c index 0f44854..bab4d98 100644 --- a/src/parts/rtxonoff.c +++ b/src/parts/rtxonoff.c @@ -9,7 +9,6 @@ #include "imago2.h" #include "gfxutil.h" #include "mesh.h" -#include "bsptree.h" static int init(void); static void destroy(void); @@ -29,13 +28,14 @@ static struct screen scr = { static float cam_theta = -29, cam_phi = 35; static float cam_dist = 10; -static int use_bsp = 1; - static const char *car_fname[2] = {"data/ldiablo.obj", 0}; static const char *cartex_fname[2] = {"data/ldiablo.png", 0}; static struct g3d_mesh mesh_car[2]; static struct pimage tex_car[2]; -static struct bsptree bsp_car[2]; + +static int shading = G3D_TEX_GOURAUD; +static int do_clip = 1; + struct screen *rtxonoff_screen(void) { @@ -60,13 +60,6 @@ static int init(void) if(load_mesh(&mesh_car[i], car_fname[i]) == -1) { return -1; } - - init_bsp(&bsp_car[i]); - if(bsp_add_mesh(&bsp_car[i], &mesh_car[i]) == -1) { - fprintf(stderr, "failed to construct BSP tree %d\n", i); - return -1; - } - bsp_build(&bsp_car[i]); } } return 0; @@ -79,7 +72,6 @@ static void destroy(void) for(i=0; i<2; i++) { free(mesh_car[i].varr); free(mesh_car[i].iarr); - destroy_bsp(&bsp_car[i]); } } @@ -92,6 +84,8 @@ static void start(long trans_time) g3d_enable(G3D_CULL_FACE); g3d_enable(G3D_LIGHTING); g3d_enable(G3D_LIGHT0); + + g3d_polygon_mode(shading); } static void update(void) @@ -115,38 +109,50 @@ static void draw(void) g3d_rotate(cam_phi, 1, 0, 0); g3d_rotate(cam_theta, 0, 1, 0); - if(use_bsp) { - const float *mat = g3d_get_matrix(G3D_MODELVIEW, 0); - /* transform (0, 0, -1) with transpose(mat3x3) */ - vdir[0] = -mat[2]; - vdir[1] = -mat[6]; - vdir[2] = -mat[10]; - } + g3d_set_texture(tex_car[0].width, tex_car[0].height, tex_car[0].pixels); + zsort_mesh(&mesh_car[0]); - g3d_polygon_mode(G3D_TEX_GOURAUD); + g3d_light_color(0, 0.3, 0.3, 0.3); + g3d_push_matrix(); + g3d_scale(1, -1, 1); + g3d_front_face(G3D_CW); + draw_mesh(&mesh_car[0]); + g3d_front_face(G3D_CCW); + g3d_pop_matrix(); - for(i=0; i