static void game_draw_balls(struct s_rend *rend, const struct s_vary *vary, const float *bill_M, float t) { float c[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; float ball_M[16]; float pend_M[16]; m_basis(ball_M, vary->uv[0].e[0], vary->uv[0].e[1], vary->uv[0].e[2]); m_basis(pend_M, vary->uv[0].E[0], vary->uv[0].E[1], vary->uv[0].E[2]); glPushMatrix(); { glTranslatef(vary->uv[0].p[0], vary->uv[0].p[1] + BALL_FUDGE, vary->uv[0].p[2]); glScalef(vary->uv[0].r, vary->uv[0].r, vary->uv[0].r); glColor4f(c[0], c[1], c[2], c[3]); ball_draw(rend, ball_M, pend_M, bill_M, t); } glPopMatrix(); }
void video_calc_view(float *M, const float *c, const float *p, const float *u) { float x[3]; float y[3]; float z[3]; v_sub(z, p, c); v_nrm(z, z); v_crs(x, u, z); v_nrm(x, x); v_crs(y, z, x); m_basis(M, x, y, z); }
static void game_draw_balls(const struct s_file *fp) { float c[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; float M[16]; m_basis(M, fp->uv[0].e[0], fp->uv[0].e[1], fp->uv[0].e[2]); glPushMatrix(); { glTranslatef(fp->uv[0].p[0], fp->uv[0].p[1] + BALL_FUDGE, fp->uv[0].p[2]); glMultMatrixf(M); glScalef(fp->uv[0].r, fp->uv[0].r, fp->uv[0].r); glColor4fv(c); ball_draw(); } glPopMatrix(); }
static void game_draw_balls(struct s_rend *rend, const struct s_vary *fp, const float *bill_M, float t) { static const GLfloat color[5][4] = { { 1.0f, 1.0f, 1.0f, 0.7f }, { 1.0f, 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f, 1.0f }, { 0.0f, 0.0f, 1.0f, 1.0f }, { 1.0f, 1.0f, 0.0f, 1.0f }, }; int ui; sol_color_mtrl(rend, 1); for (ui = curr_party(); ui > 0; ui--) { if (ui == ball) { float ball_M[16]; float pend_M[16]; m_basis(ball_M, fp->uv[ui].e[0], fp->uv[ui].e[1], fp->uv[ui].e[2]); m_basis(pend_M, fp->uv[ui].E[0], fp->uv[ui].E[1], fp->uv[ui].E[2]); glPushMatrix(); { glTranslatef(fp->uv[ui].p[0], fp->uv[ui].p[1] + BALL_FUDGE, fp->uv[ui].p[2]); glScalef(fp->uv[ui].r, fp->uv[ui].r, fp->uv[ui].r); glColor4f(color[ui][0], color[ui][1], color[ui][2], color[ui][3]); ball_draw(rend, ball_M, pend_M, bill_M, t); } glPopMatrix(); } else { glPushMatrix(); { glTranslatef(fp->uv[ui].p[0], fp->uv[ui].p[1] - fp->uv[ui].r + BALL_FUDGE, fp->uv[ui].p[2]); glScalef(fp->uv[ui].r, fp->uv[ui].r, fp->uv[ui].r); glColor4f(color[ui][0], color[ui][1], color[ui][2], 0.5f); mark_draw(rend); } glPopMatrix(); } } glColor4f(1.0f, 1.0f, 1.0f, 1.0f); sol_color_mtrl(rend, 0); }
static void game_draw_balls(const struct s_file *fp, const float *bill_M, float t) { static const GLfloat color[5][4] = { { 1.0f, 1.0f, 1.0f, 0.7f }, { 1.0f, 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f, 1.0f }, { 0.0f, 0.0f, 1.0f, 1.0f }, { 1.0f, 1.0f, 0.0f, 1.0f }, }; int ui; for (ui = curr_party(); ui > 0; ui--) { if (ui == ball) { float ball_M[16]; float pend_M[16]; m_basis(ball_M, fp->uv[ui].e[0], fp->uv[ui].e[1], fp->uv[ui].e[2]); m_basis(pend_M, fp->uv[ui].E[0], fp->uv[ui].E[1], fp->uv[ui].E[2]); glPushMatrix(); { glTranslatef(fp->uv[ui].p[0], fp->uv[ui].p[1] + BALL_FUDGE, fp->uv[ui].p[2]); glScalef(fp->uv[ui].r, fp->uv[ui].r, fp->uv[ui].r); glEnable(GL_COLOR_MATERIAL); glColor4fv(color[ui]); ball_draw(ball_M, pend_M, bill_M, t); glDisable(GL_COLOR_MATERIAL); } glPopMatrix(); } else { glPushMatrix(); { glTranslatef(fp->uv[ui].p[0], fp->uv[ui].p[1] - fp->uv[ui].r + BALL_FUDGE, fp->uv[ui].p[2]); glScalef(fp->uv[ui].r, fp->uv[ui].r, fp->uv[ui].r); glColor4f(color[ui][0], color[ui][1], color[ui][2], 0.5f); mark_draw(); } glPopMatrix(); } } glColor4f(1.0f, 1.0f, 1.0f, 1.0f); }