void keyboard(unsigned char key, int x, int y) { switch(key) { case 'r': // Add code for reset localCarSpeed.z = 0; carPosition.x = 3; carPosition.z = 45; carDirection = 180; localCarSpeed.z = 0; counter = 0; trafficLight.setSignal(NS_Signal); trafficLight2.setSignal(WE_Signal); trafficLight3.setSignal(WE_Signal); trafficLight4.setSignal(NS_Signal); worldCarSpeed = computeRotatedVector(localCarSpeed, carDirection); break; case 'b': localCarSpeed.z = 0; worldCarSpeed = computeRotatedVector(localCarSpeed, carDirection); break; case 's': ScreenShot(winHeight, winWidth); break; case 27: exit(0); break; } glutPostRedisplay(); }
void update() { //Calculate direction speed = localCarSpeed.z / .02; if (carDirection==180) { carHeading = "N"; } else if (carDirection > 180 && carDirection < 270) { carHeading = "NW"; } else if (carDirection == 270 ) { carHeading = "W"; } else if (carDirection > 270 && carDirection < 360) { carHeading = "SW"; } else if (carDirection == 0) { carHeading = "S"; } else if (carDirection > 0 && carDirection < 90) { carHeading = "SE"; } else if (carDirection == 90 ) { carHeading = "E"; } else if (carDirection > 90 && carDirection < 180) { carHeading = "NE"; } // Light controller if (counter == 5000) { if (NS_Signal == Green) NS_Signal = Yellow; if ( WE_Signal == Green) { WE_Signal = Yellow; } trafficLight.setSignal(NS_Signal); trafficLight4.setSignal(NS_Signal); trafficLight2.setSignal(WE_Signal); trafficLight3.setSignal(WE_Signal); } // Light controller if (counter == 6000) { if (NS_Signal == Red) NS_Signal = Green; if (WE_Signal == Red) { WE_Signal = Green; } if (NS_Signal == Yellow) NS_Signal = Red; if (WE_Signal == Yellow) { WE_Signal = Red; } trafficLight.setSignal(NS_Signal); trafficLight4.setSignal(NS_Signal); trafficLight2.setSignal(WE_Signal); trafficLight3.setSignal(WE_Signal); counter = 0; } //update carposition and camera carPosition.x += worldCarSpeed.x; carPosition.y += worldCarSpeed.y; carPosition.z += worldCarSpeed.z; worldCameraOffset = computeRotatedVector(localCameraOffset, carDirection); worldCameraOffset.x += carPosition.x; worldCameraOffset.y += carPosition.y; worldCameraOffset.z += carPosition.z; }
void drawScene() {// covert speed to string string speedword = to_string(speed); string SpeedPhrase = "Speed: "; SpeedPhrase.append(speedword); string Direction = "Direction: "; Direction.append(carHeading); glColor3f(1, 0, 0); //print words glWindowPos2i((winWidth / 2) -125, winHeight - (sHeight*1.2)); printString(SpeedPhrase); glWindowPos2i((winWidth / 2) + 75, winHeight - (sHeight*1.2)); printString(Direction); // Draw terrain glCallList(terrainID); glEnable(GL_LIGHTING); trafficLight.setMaterials(); /*vector<string> test; test=trafficLight.GetMaterialNames(); for (int i = 0; i < test.size(); i++) cout << "name: " << test[i] << endl;*/ // North-East (NS_Signal) glPushMatrix(); glTranslatef(10, 0, -10.5); glScalef(1/3.28/12, 1/3.28/12, 1/3.28/12); trafficLight.setSignal(NS_Signal); trafficLight.Draw(); glPopMatrix(); glPushMatrix(); glTranslatef(10, 0, -10); glRotatef(-45, 0, 1, 0); glCallList(surveillanceCameraID); glPopMatrix(); // North-West (WE_Signal) ///board 1 //glColor3f(1, 1, 0); glPushMatrix(); board.Draw(); glPopMatrix(); // board 2 glPushMatrix(); board2.Draw(); glPopMatrix(); glPushMatrix(); glTranslatef(-10, 0, -10.5); glScalef(1 / 3.28 / 12, 1 / 3.28 / 12, 1 / 3.28 / 12); glRotatef(90, 0, 1, 0); trafficLight2.setSignal(WE_Signal); trafficLight2.Draw(); glPopMatrix(); glPushMatrix(); glTranslatef(-10, 0, -10); glRotatef(45, 0, 1, 0); glCallList(surveillanceCameraID); glPopMatrix(); // South-East (WE_Signal) glPushMatrix(); glTranslatef(10, 0, 10); glScalef(1 / 3.28 / 12, 1 / 3.28 / 12, 1 / 3.28 / 12); glRotatef(-90, 0, 1, 0); trafficLight3.setSignal(WE_Signal); trafficLight3.Draw(); glPopMatrix(); glPushMatrix(); glTranslatef(10, 0, 10.5); glRotatef(-135, 0, 1, 0); glCallList(surveillanceCameraID); glPopMatrix(); // South West(SN_Signal) glPushMatrix(); glTranslatef(-10, 0, 10); glScalef(1 / 3.28 / 12, 1 / 3.28 / 12, 1 / 3.28 / 12); glRotatef(180, 0, 1, 0); trafficLight4.setSignal(NS_Signal); trafficLight4.Draw(); glPopMatrix(); glPushMatrix(); glTranslatef(-10, 0, 10.5); glRotatef(135, 0, 1, 0); glCallList(surveillanceCameraID); glPopMatrix(); // Draw the car. glPushMatrix(); glTranslatef(carPosition.x, carPosition.y, carPosition.z); glRotatef(carDirection, 0, 1, 0); glCallList(carID); glPopMatrix(); }