X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=share%2Fsolid_gl.c;h=82e3bb6de12a5dd4957552fda0b88fa55006a26d;hb=4483dfdacd29073b37a6429ca8e123c80deac75a;hp=bd33713df222937d6e30de0f8c72ea7aad5ed255;hpb=9889d0f2b437b57889316aa79a129b344b89420e;p=neverball diff --git a/share/solid_gl.c b/share/solid_gl.c index bd33713..82e3bb6 100644 --- a/share/solid_gl.c +++ b/share/solid_gl.c @@ -25,6 +25,7 @@ #include "image.h" #include "base_image.h" #include "solid_gl.h" +#include "solid_all.h" #include "base_config.h" #include "lang.h" @@ -347,15 +348,20 @@ static const struct s_mtrl *sol_draw_body(const struct s_file *fp, static void sol_draw_list(const struct s_file *fp, const struct s_body *bp, GLuint list) { - float p[3]; + float p[3], e[4], u[3], a; - sol_body_p(p, fp, bp); + sol_body_p(p, fp, bp->pi, bp->t); + sol_body_e(e, fp, bp, 0); + + q_as_axisangle(e, u, &a); + a = V_DEG(a); glPushMatrix(); { - /* Translate a moving body. */ + /* Translate and rotate a moving body. */ glTranslatef(p[0], p[1], p[2]); + glRotatef(a, u[0], u[1], u[2]); /* Draw the body. */ @@ -507,15 +513,20 @@ static void sol_shad_body(const struct s_file *fp, static void sol_shad_list(const struct s_file *fp, const struct s_body *bp, GLuint list) { - float p[3]; + float p[3], e[4], u[3], a; + + sol_body_p(p, fp, bp->pi, bp->t); + sol_body_e(e, fp, bp, 0); - sol_body_p(p, fp, bp); + q_as_axisangle(e, u, &a); + a = V_DEG(a); glPushMatrix(); { - /* Translate a moving body. */ + /* Translate and rotate a moving body. */ glTranslatef(p[0], p[1], p[2]); + glRotatef(a, u[0], u[1], u[2]); /* Translate the shadow on a moving body. */ @@ -523,6 +534,7 @@ static void sol_shad_list(const struct s_file *fp, { glPushMatrix(); glTranslatef(p[0], p[2], 0.0f); + glRotatef(-a, u[0], u[2], u[1]); } glMatrixMode(GL_MODELVIEW); @@ -669,7 +681,7 @@ static GLuint sol_find_texture(const char *name) return 0; } -static void sol_load_textures(struct s_file *fp, int k) +static void sol_load_textures(struct s_file *fp) { int i; @@ -695,11 +707,11 @@ static void sol_load_textures(struct s_file *fp, int k) /*---------------------------------------------------------------------------*/ -int sol_load_gl(struct s_file *fp, const char *filename, int k, int s) +int sol_load_gl(struct s_file *fp, const char *filename, int s) { if (sol_load_only_file(fp, filename)) { - sol_load_textures(fp, k); + sol_load_textures(fp); sol_load_objects (fp, s); return 1; }