/* ============================== AdjustPitch ============================== */ void CInput::AdjustPitch( float speed, QAngle& viewangles ) { // only allow keyboard looking if mouse look is disabled if ( UsingMouselook() == false ) { float up, down; if ( in_klook.state & 1 ) { view->StopPitchDrift (); viewangles[PITCH] -= speed*cl_pitchspeed.GetFloat() * KeyState (&in_forward); viewangles[PITCH] += speed*cl_pitchspeed.GetFloat() * KeyState (&in_back); } up = KeyState ( &in_lookup ); down = KeyState ( &in_lookdown ); viewangles[PITCH] -= speed*cl_pitchspeed.GetFloat() * up; viewangles[PITCH] += speed*cl_pitchspeed.GetFloat() * down; if ( up || down ) { view->StopPitchDrift (); } } }
//----------------------------------------------------------------------------- // Purpose: AccumulateMouse //----------------------------------------------------------------------------- void CInput::AccumulateMouse( int nSlot ) { if( !cl_mouseenable.GetBool() ) { return; } if( !UsingMouselook( nSlot ) ) { return; } int w, h; engine->GetScreenSize( w, h ); // x,y = screen center int x = w >> 1; int y = h >> 1; // Clamp if ( m_fMouseActive ) { int ox, oy; GetMousePos( ox, oy ); ox = clamp( ox, 0, w - 1 ); oy = clamp( oy, 0, h - 1 ); SetMousePos( ox, oy ); } //only accumulate mouse if we are not moving the camera with the mouse PerUserInput_t &user = GetPerUser( nSlot ); if ( !user.m_fCameraInterceptingMouse && vgui::surface()->IsCursorLocked() ) { //Assert( !vgui::surface()->IsCursorVisible() ); #ifdef WIN32 int current_posx, current_posy; GetMousePos(current_posx, current_posy); user.m_flAccumulatedMouseXMovement += current_posx - x; user.m_flAccumulatedMouseYMovement += current_posy - y; // force the mouse to the center, so there's room to move ResetMouse(); #elif defined(OSX) CGMouseDelta deltaX, deltaY; CGGetLastMouseDelta( &deltaX, &deltaY ); user.m_flAccumulatedMouseXMovement += deltaX; user.m_flAccumulatedMouseYMovement += deltaY; #else #error #endif } }
/* =========== IN_CenterView_f =========== */ void IN_CenterView_f (void) { QAngle viewangles; if ( UsingMouselook() == false ) { if ( !::input->CAM_InterceptingMouse() ) { engine->GetViewAngles( viewangles ); viewangles[PITCH] = 0; engine->SetViewAngles( viewangles ); } } }