X-Git-Url: https://git.ucc.asn.au/?p=atyndall%2Fcits2231.git;a=blobdiff_plain;f=scene.c;h=220d2e95fac4b17c09813cc1135f338e7b6aaf14;hp=c46f1739dd236e29efee83966da803b8e890317f;hb=6251d089718f7e14a4654c3f88818824ec033ecc;hpb=3e4ca5f8fbd515f749d11f52191356ea90ea3041 diff --git a/scene.c b/scene.c index c46f173..220d2e9 100644 --- a/scene.c +++ b/scene.c @@ -153,9 +153,9 @@ void makeMenu() { // Construct light menu int lightMenu = glutCreateMenu(processLightEvents); glutAddMenuEntry("Move Light 1", M_LIGHT_MOVE_LIGHT_1); - glutAddMenuEntry("R/G/B/All Light 1", M_LIGHT_RGBALL_LIGHT_1); + //glutAddMenuEntry("R/G/B/All Light 1", M_LIGHT_RGBALL_LIGHT_1); glutAddMenuEntry("Move Light 2", M_LIGHT_MOVE_LIGHT_2); - glutAddMenuEntry("R/G/B/All Light 2", M_LIGHT_RGBALL_LIGHT_2); + //glutAddMenuEntry("R/G/B/All Light 2", M_LIGHT_RGBALL_LIGHT_2); // Construct object menu int objectMenu = makeSubmenuFromArray( objectMenuEntries, NMESH, processObjectEvents ); @@ -173,7 +173,7 @@ void makeMenu() { //glutAddSubMenu("Material", materialMenu); glutAddSubMenu("Texture", textureMenu); glutAddSubMenu("Ground texture", gTextureMenu); - //glutAddSubMenu("Lights", lightMenu); + glutAddSubMenu("Lights", lightMenu); glutAddMenuEntry("Exit", M_EXIT); // Bind to right mouse button @@ -305,19 +305,9 @@ void motion(int x, int y) { if ( buttonSelected == GLUT_LEFT_BUTTON ) { // w: left/right, h: near/far - - // **NOTE: Currently a work in progress, does not work correctly float angler = 2 * M_PI * ( (rotate*camRotateFactor)/360.0 ); - printf("cam angle: %f\n", rotate*camRotateFactor); - - sceneObjs[curObject].x += diffy * sin(angler) * 0.1; - //sceneObjs[curObject].x += diffx * cos(angler) * 0.1; - - sceneObjs[curObject].z += diffx * sin(angler) * 0.1; - //sceneObjs[curObject].z += diffy * cos(angler) * 0.1; - - //sceneObjs[curObject].x += ; - //sceneObjs[curObject].z += ; + sceneObjs[curObject].x += diffx * cos(angler) * leftrightFactor + diffy * cos(M_PI/2 + angler) * nearfarFactor; + sceneObjs[curObject].z += diffx * sin(angler) * leftrightFactor + diffy * sin(M_PI/2 + angler) * nearfarFactor; } else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) { // w: big/small @@ -400,22 +390,19 @@ void display() { glRotatef(camAngle*camAngleFactor, 1.0, 0.0, 0.0); // Set camera angle upward /* Reposition the light source 0. */ - lightPosition0[0] = 12*cos(lightAngle0); - lightPosition0[1] = lightHeight0; - lightPosition0[2] = 12*sin(lightAngle0); - lightPosition0[3] = 0.0; - - direction0[0] = lightPosition0[0]; - direction0[2] = lightPosition0[2]; + lightObjs[0].position[0] = 9*cos(45); + lightObjs[0].position[1] = 5; + lightObjs[0].position[2] = 9*sin(45); + lightObjs[0].position[3] = 0.0; /* Reposition the light source 1. */ - lightPosition1[0] = 12*cos(lightAngle1); - lightPosition1[1] = lightHeight1; - lightPosition1[2] = 12*sin(lightAngle1); - lightPosition1[3] = 0.0; + lightObjs[1].position[0] = 9*cos(45 + 180); + lightObjs[1].position[1] = 5; + lightObjs[1].position[2] = 9*sin(45 + 180); + lightObjs[1].position[3] = 0.0; - direction1[0] = lightPosition1[0]; - direction1[2] = lightPosition1[2]; + //direction0[0] = lightPosition0[0]; + //direction0[2] = lightPosition0[2]; glPushMatrix(); @@ -424,9 +411,6 @@ void display() { glTranslatef(camx, camy, camz); glRotatef(keyrot, 1.0, 0.0, 0.0); - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition0); - glLightfv(GL_LIGHT1, GL_POSITION, lightPosition1); - drawFloor(); // Draw sceneObjs array @@ -470,21 +454,7 @@ void display() { glPopMatrix(); } - // Draw a white ball over the light sources - glDisable(GL_LIGHTING); - glColor3f(1.0, 1.0, 1.0); - - glPushMatrix(); - glTranslatef(lightPosition0[0], lightPosition0[1], lightPosition0[2]); - glutSolidSphere(0.5, 50, 50); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(lightPosition1[0], lightPosition1[1], lightPosition1[2]); - glutSolidSphere(0.5, 50, 50); - glPopMatrix(); - - glEnable(GL_LIGHTING); + updateLights(); drawAxisLines(); @@ -493,28 +463,6 @@ void display() { glutSwapBuffers(); } -/** - * init function; sets initial OpenGL state - */ -void init() { - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0); - glLightfv(GL_LIGHT0, GL_SPECULAR, specular0); - glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, direction0); - - glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1); - glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1); - glLightfv(GL_LIGHT1, GL_SPECULAR, specular1); - glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, direction1); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, glightmodel); - glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); - - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_LIGHTING); -} - /** * Main function * @param argc Number of arguments @@ -559,7 +507,7 @@ int main(int argc, char **argv) { makeMenu(); - init(); + initializeLights(); glutMainLoop(); } \ No newline at end of file