void Control(float movevel,float mousevel,bool mi) { if(mi) { int MidX=320; int MidY=240; SDL_ShowCursor(SDL_DISABLE); int tmpx,tmpy; SDL_GetMouseState(&tmpx,&tmpy); camYaw+=mousevel*(MidX-tmpx); camPitch+=mousevel*(MidY-tmpy); lockCamera(); SDL_WarpMouse(MidX,MidY); Uint8* state=SDL_GetKeyState(NULL); if(state[SDLK_w]) { if(camPitch!=90 && camPitch!=-90) moveCamera(movevel,0.0); moveCameraUp(movevel,0.0); }else if(state[SDLK_s]) { if(camPitch!=90 && camPitch!=-90) moveCamera(movevel,180.0); moveCameraUp(movevel,180.0); } if(state[SDLK_a]) moveCamera(movevel,90.0); else if(state[SDLK_d]) moveCamera(movevel,270); } glRotatef(-camPitch,1.0,0.0,0.0); glRotatef(-camYaw,0.0,1.0,0.0); }
void EG_FirstPersonPovCamera::Control(int mid_x, int mid_y) { if(m_mouseIn) { int MidX=mid_x; int MidY=mid_y; SDL_ShowCursor(SDL_DISABLE); int tmpx,tmpy; SDL_GetMouseState(&tmpx,&tmpy); m_yawDegrees += CAMERA_ROTATION_SPEED*(MidX-tmpx); m_pitchDegrees += CAMERA_ROTATION_SPEED*(MidY-tmpy); lockCamera(); SDL_WarpMouse(MidX,MidY); Uint8* state=SDL_GetKeyState(NULL); ismoved=false; if(state[SDLK_w]) { ismoved=true; if(m_pitchDegrees!=90 && m_pitchDegrees!=-90) moveCamera(0.0); moveCameraUp(0.0); }else if(state[SDLK_s]) { ismoved=true; if(m_pitchDegrees!=90 && m_pitchDegrees!=-90) moveCamera(180.0); moveCameraUp(180.0); } if(state[SDLK_a]) { ismoved=true; moveCamera(90.0); } else if(state[SDLK_d]) { ismoved=true; moveCamera(270); } } }
void Navigation::moveCameraDown(float length) { moveCameraUp( -length ); }