- gltrackball_rotate (c->trackball);
- glRotatef(theta*100, 0.0, 1.0, 0.0);
- glTranslatef(-0.5*BOARDSIZE, 0.0, -0.5*BOARDSIZE);
+ gltrackball_rotate (qs->trackball);
+ glRotatef(qs->theta*100, 0.0, 1.0, 0.0);
+ glTranslatef(-0.5*qs->BOARDSIZE, 0.0, -0.5*qs->BOARDSIZE);
+
+ /* find light positions */
+ qs->position[0] = qs->BOARDSIZE/2.0 + qs->BOARDSIZE/1.4*-sin(qs->theta*100*M_PI/180.0);
+ qs->position[2] = qs->BOARDSIZE/2.0 + qs->BOARDSIZE/1.4*cos(qs->theta*100*M_PI/180.0);
+ qs->position[1] = 6.0;
+
+ if(!wire) {
+ glEnable(GL_LIGHTING);
+ glLightfv(GL_LIGHT0, GL_POSITION, qs->position);
+ glEnable(GL_LIGHT0);
+ }
+
+ /* Since the lighting attenuation trick up there doesn't seem to be working,
+ let's drop the old board down and drop the new board in. */
+ if (qs->steps < (max/8.0)) {
+ GLfloat y = qs->steps / (max/8.0);
+ y = sin (M_PI/2 * y);
+ glTranslatef (0, 10 - (y * 10), 0);
+ } else if (qs->steps > max-(max/8.0)) {
+ GLfloat y = (qs->steps - (max-(max/8.0))) / (GLfloat) (max/8.0);
+ y = 1 - sin (M_PI/2 * (1-y));
+ glTranslatef (0, -y * 15, 0);
+ }