X-Git-Url: https://git.ucc.asn.au/?p=atyndall%2Fcits2231.git;a=blobdiff_plain;f=scene.c;h=450d16019e17ca86246a533feee76067804534df;hp=03f98169b3dc7a2b89d387bbcc5aa77a33e33b32;hb=5b211bce232b1e75aa7cd3a08c533a8dd446f2fa;hpb=a426259db2f0953878dd443d93ec9fc885a5abfd diff --git a/scene.c b/scene.c index 03f9816..450d160 100644 --- a/scene.c +++ b/scene.c @@ -87,7 +87,7 @@ void processMaterialEvents(int id) { void processLightEvents(int id) { switch (id) { case M_LIGHT_MOVE_LIGHT_1: - // Do stuff + manipulateState = STATE_LIGHT_1_MOVE; break; case M_LIGHT_RGBALL_LIGHT_1: @@ -95,7 +95,7 @@ void processLightEvents(int id) { break; case M_LIGHT_MOVE_LIGHT_2: - // Do stuff + manipulateState = STATE_LIGHT_2_MOVE; break; case M_LIGHT_RGBALL_LIGHT_2: @@ -346,6 +346,29 @@ void motion(int x, int y) { break; + case STATE_LIGHT_1_MOVE: + case STATE_LIGHT_2_MOVE: + ; // Semi-colon required to allow variable declaration below + + int i = 0; + if ( manipulateState == STATE_LIGHT_2_MOVE ) i = 1; + + if ( buttonSelected == GLUT_LEFT_BUTTON ) { + // w: left/right, h: near/far + float angler = 2 * M_PI * ( (rotate*camRotateFactor)/360.0 ); + lightObjs[i].position[0] += diffx * cos(angler) * lleftrightFactor + diffy * cos(M_PI/2 + angler) * lnearfarFactor; + lightObjs[i].position[2] += diffx * sin(angler) * lleftrightFactor + diffy * sin(M_PI/2 + angler) * lnearfarFactor; + + } else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) { + // w: increase/decrease some light param + // **NOTE: Currently not implemented + + // h: up/down + lightObjs[i].position[1] -= diffy * updownFactor; + } + + break; + } starty = y; @@ -389,21 +412,6 @@ void display() { glRotatef(camAngle*camAngleFactor, 1.0, 0.0, 0.0); // Set camera angle upward - /* Reposition the light source 0. */ - lightObjs[0].position[0] = cos(45); - lightObjs[0].position[1] = 5; - lightObjs[0].position[2] = 0;//12*sin(0); - lightObjs[0].position[3] = 0.0; - - /* Reposition the light source 1. */ - lightObjs[1].position[0] = 12*cos(90); - lightObjs[1].position[1] = 5; - lightObjs[1].position[2] = 0;//12*sin(90); - lightObjs[1].position[3] = 0.0; - - //direction0[0] = lightPosition0[0]; - //direction0[2] = lightPosition0[2]; - glPushMatrix(); /* Perform scene rotations based on user mouse/keyboard input. */ @@ -494,7 +502,7 @@ int main(int argc, char **argv) { glDepthRange(0,1); glEnable(GL_DEPTH_TEST); // Enables Depth Testing glDepthFunc(GL_LEQUAL); // the type - glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); glLineWidth(2.0); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); @@ -506,8 +514,8 @@ int main(int argc, char **argv) { glutMotionFunc(motion); makeMenu(); - initializeLights(); + initializeState(); glutMainLoop(); } \ No newline at end of file