+ case SDL_KEYDOWN:
+ switch (keymap.Lookup(event.key)) {
+ case Keymap::CAMERA_RIGHT:
+ cam_fwd.x = 1.0f;
+ break;
+ case Keymap::CAMERA_LEFT:
+ cam_rev.x = 1.0f;
+ break;
+ case Keymap::CAMERA_UP:
+ cam_fwd.y = 1.0f;
+ break;
+ case Keymap::CAMERA_DOWN:
+ cam_rev.y = 1.0f;
+ break;
+ case Keymap::CAMERA_BACK:
+ cam_fwd.z = 1.0f;
+ break;
+ case Keymap::CAMERA_FORWARD:
+ cam_rev.z = 1.0f;
+ break;
+ case Keymap::CAMERA_NEARER:
+ cam_near = 1.0f;
+ break;
+ case Keymap::CAMERA_FARTHER:
+ cam_far = 1.0f;
+ break;
+ case Keymap::CAMERA_PITCH_CCW:
+ cam_rot_ccw.x = 1.0f;
+ break;
+ case Keymap::CAMERA_PITCH_CW:
+ cam_rot_cw.x = 1.0f;
+ break;
+ case Keymap::CAMERA_YAW_CCW:
+ cam_rot_ccw.y = 1.0f;
+ break;
+ case Keymap::CAMERA_YAW_CW:
+ cam_rot_cw.y = 1.0f;
+ break;
+ case Keymap::EXIT:
+ running = false;
+ break;
+ default:
+ case Keymap::NONE:
+ break;
+ }
+ break;
+ case SDL_KEYUP:
+ switch (keymap.Lookup(event.key)) {
+ case Keymap::CAMERA_RIGHT:
+ cam_fwd.x = 0.0f;
+ break;
+ case Keymap::CAMERA_LEFT:
+ cam_rev.x = 0.0f;
+ break;
+ case Keymap::CAMERA_UP:
+ cam_fwd.y = 0.0f;
+ break;
+ case Keymap::CAMERA_DOWN:
+ cam_rev.y = 0.0f;
+ break;
+ case Keymap::CAMERA_BACK:
+ cam_fwd.z = 0.0f;
+ break;
+ case Keymap::CAMERA_FORWARD:
+ cam_rev.z = 0.0f;
+ break;
+ case Keymap::CAMERA_NEARER:
+ cam_near = 0.0f;
+ break;
+ case Keymap::CAMERA_FARTHER:
+ cam_far = 0.0f;
+ break;
+ case Keymap::CAMERA_PITCH_CCW:
+ cam_rot_ccw.x = 0.0f;
+ break;
+ case Keymap::CAMERA_PITCH_CW:
+ cam_rot_cw.x = 0.0f;
+ break;
+ case Keymap::CAMERA_YAW_CCW:
+ cam_rot_ccw.y = 0.0f;
+ break;
+ case Keymap::CAMERA_YAW_CW:
+ cam_rot_cw.y = 0.0f;
+ break;
+ default:
+ case Keymap::NONE:
+ break;
+ }
+ break;
+ case SDL_MOUSEMOTION:
+ screen_mouse.x = event.motion.x;
+ screen_mouse.y = event.motion.y;
+ break;