{0.000000, 0.000000, 0.000000},
{2.000000, 1.000000, 0.000000},
{4.000000, 0.000000, 0.000000},
{0.000000, 0.000000, 0.000000},
{2.000000, 1.000000, 0.000000},
{4.000000, 0.000000, 0.000000},
{
/* Vector multiply */
C->x = A->y*B->z - A->z*B->y;
C->y = A->z*B->x - A->x*B->z;
C->z = A->x*B->y - A->y*B->x;
}
{
/* Vector multiply */
C->x = A->y*B->z - A->z*B->y;
C->y = A->z*B->x - A->x*B->z;
C->z = A->x*B->y - A->y*B->x;
}
-void RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp)
+static void RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp)
-void DrawTunnel(int do_texture, int do_light, GLuint *textures)
+void DrawTunnel(struct tunnel_state *st,
+ int do_texture, int do_light, GLuint *textures)
{
tnPath *p, *p1, *cmpos;
cvPoint op, p4[4], T, ppp, ppp1, op1, op2;
{
tnPath *p, *p1, *cmpos;
cvPoint op, p4[4], T, ppp, ppp1, op1, op2;
- glRotatef(alpha, 0, 0, -1);
- alpha += 1;
+ glRotatef(st->alpha, 0, 0, -1);
+ st->alpha += 1;
/* Set camera position */
gluLookAt(op.x, op.y, op.z, op1.x, op1.y, op1.z, 0, 1, 0);
/* Set camera position */
gluLookAt(op.x, op.y, op.z, op1.x, op1.y, op1.z, 0, 1, 0);
- prev_points[i].x = op2.x;
- prev_points[i].y = op2.y;
- prev_points[i].z = op2.z;
+ st->prev_points[i].x = op2.x;
+ st->prev_points[i].y = op2.y;
+ st->prev_points[i].z = op2.z;
- glTexCoord2f(0, 0); glVertex3f(prev_points[i].x, prev_points[i].y, prev_points[i].z);
+ glTexCoord2f(0, 0); glVertex3f(st->prev_points[i].x, st->prev_points[i].y, st->prev_points[i].z);
glNormal3f(0, 0, 1);
glTexCoord2f(1, 0); glVertex3f(points[i].x, points[i].y, points[i].z);
glNormal3f(0, 0, 1);
glTexCoord2f(1, 1); glVertex3f(points[j].x, points[j].y, points[j].z);
glNormal3f(0, 0, 1);
glNormal3f(0, 0, 1);
glTexCoord2f(1, 0); glVertex3f(points[i].x, points[i].y, points[i].z);
glNormal3f(0, 0, 1);
glTexCoord2f(1, 1); glVertex3f(points[j].x, points[j].y, points[j].z);
glNormal3f(0, 0, 1);
- glTexCoord2f(0, 1); glVertex3f(prev_points[j].x, prev_points[j].y, prev_points[j].z);
+ glTexCoord2f(0, 1); glVertex3f(st->prev_points[j].x, st->prev_points[j].y, st->prev_points[j].z);
- prev_points[i].x = points[i].x;
- prev_points[i].y = points[i].y;
- prev_points[i].z = points[i].z;
+ st->prev_points[i].x = points[i].x;
+ st->prev_points[i].y = points[i].y;
+ st->prev_points[i].z = points[i].z;
-void SplashScreen(int do_wire, int do_texture, int do_light)
+void SplashScreen(struct tunnel_state *st,
+ int do_wire, int do_texture, int do_light)
glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
glEnable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
glEnable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
- glColor4f(1, 1, 1, ModeX);
+ glColor4f(1, 1, 1, st->ModeX);