Prosiłbym o poinformowanie mnie, co jest nie tak tym kodem, ponieważ program nie wykrywa wciśnięcia klawisza SHIFT.
Kilka razy program wyłapał jego wciśnięcie, ale TYLKO kilka razy.
glutKeyboardFunc();
void Keyboard(unsigned char key, int x, int y)
{
if(key == 27) {
exit(0);
}
if(key == 'p') {
g_fps_mode = !g_fps_mode;
if(g_fps_mode) {
glutSetCursor(GLUT_CURSOR_NONE);
glutWarpPointer(g_viewport_width/2, g_viewport_height/2);
}
else {
glutSetCursor(GLUT_CURSOR_LEFT_ARROW);
}
}
if(glutGetModifiers() == GLUT_ACTIVE_SHIFT) {
g_shift_down = true;
printf("active");
}
else {
g_shift_down = false;
}
g_key[key] = true;
}
glutTimerFunc();
void Timer(int value)
{
if(g_fps_mode) {
if(g_key['w'] || g_key['W']) {
g_camera.Move(g_translation_speed);
}
if(g_key['s'] || g_key['S']) {
g_camera.Move(-g_translation_speed);
}
if(g_key['a'] || g_key['A']) {
g_camera.Strafe(g_translation_speed);
}
if(g_key['d'] || g_key['D']) {
g_camera.Strafe(-g_translation_speed);
}
if(g_shift_down){
g_camera.Fly(-g_translation_speed);
printf("Works! ");
}
if(g_key[' ']) {
g_camera.Fly(g_translation_speed);
}
}
glutTimerFunc(1, Timer, 0);
}