From da094fa04ed2915f243e65ad1735f2302858fc7c Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Thu, 11 Oct 2018 00:04:23 +0300 Subject: [PATCH] input: provide a common function for collecting input from different sources --- engine/client/input.c | 116 ++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 66 deletions(-) diff --git a/engine/client/input.c b/engine/client/input.c index d08977ae..4795a7ac 100644 --- a/engine/client/input.c +++ b/engine/client/input.c @@ -493,6 +493,47 @@ void IN_JoyAppendMove( usercmd_t *cmd, float forwardmove, float sidemove ) } } +void IN_CollectInput( float *forward, float *side, float *pitch, float *yaw, qboolean includeSdlMouse ) +{ + if( !m_ignore->value ) + { +#if XASH_INPUT == INPUT_SDL + if( includeSdlMouse ) + { + int x, y; + SDL_GetMouseState( &x, &y ); + *pitch += y * m_pitch->value; + *yaw -= x * m_yaw->value; + } +#endif // INPUT_SDL + +#ifdef __ANDROID__ + { + float x, y; + Android_MouseMove( &x, &y ); + *pitch += y * m_pitch->value; + *yaw -= x * m_yaw->value; + } +#endif // ANDROID + } + + Joy_FinalizeMove( forward, side, yaw, pitch ); + IN_TouchMove( forward, side, yaw, pitch ); + +#ifdef USE_EVDEV + IN_EvdevMove( yaw, pitch ); +#endif + + if( look_filter->value ) + { + *pitch = ( inputstate.lastpitch + *pitch ) / 2; + *yaw = ( inputstate.lastyaw + *yaw ) / 2; + inputstate.lastpitch = *pitch; + inputstate.lastyaw = *yaw; + } + +} + /* ================ IN_EngineAppendMove @@ -502,7 +543,7 @@ Called from cl_main.c after generating command in client */ void IN_EngineAppendMove( float frametime, usercmd_t *cmd, qboolean active ) { - float forward, side, dpitch, dyaw; + float forward, side, pitch, yaw; if( clgame.dllFuncs.pfnLookEvent ) return; @@ -510,45 +551,18 @@ void IN_EngineAppendMove( float frametime, usercmd_t *cmd, qboolean active ) if( cls.key_dest != key_game || cl.paused || cl.intermission ) return; - forward = side = dpitch = dyaw = 0; + forward = side = pitch = yaw = 0; - if(active) + if( active ) { float sensitivity = ( (float)RI.fov_x / (float)90.0f ); -#if XASH_INPUT == INPUT_SDL - if( m_enginemouse->value && !m_ignore->value ) - { - int mouse_x, mouse_y; - SDL_GetRelativeMouseState( &mouse_x, &mouse_y ); - RI.viewangles[PITCH] += mouse_y * m_pitch->value * sensitivity; - RI.viewangles[YAW] -= mouse_x * m_yaw->value * sensitivity; - } -#endif -#ifdef __ANDROID__ - if( !m_ignore->value ) - { - float mouse_x, mouse_y; - Android_MouseMove( &mouse_x, &mouse_y ); - RI.viewangles[PITCH] += mouse_y * m_pitch->value * sensitivity; - RI.viewangles[YAW] -= mouse_x * m_yaw->value * sensitivity; - } -#endif - Joy_FinalizeMove( &forward, &side, &dyaw, &dpitch ); - IN_TouchMove( &forward, &side, &dyaw, &dpitch ); + + IN_CollectInput( &forward, &side, &yaw, &pitch, m_enginemouse->value ); + IN_JoyAppendMove( cmd, forward, side ); -#ifdef USE_EVDEV - IN_EvdevMove( &dyaw, &dpitch ); -#endif - if( look_filter->value ) - { - dpitch = ( inputstate.lastpitch + dpitch ) / 2; - dyaw = ( inputstate.lastyaw + dyaw ) / 2; - inputstate.lastpitch = dpitch; - inputstate.lastyaw = dyaw; - } - RI.viewangles[YAW] += dyaw * sensitivity; - RI.viewangles[PITCH] += dpitch * sensitivity; + RI.viewangles[YAW] += yaw * sensitivity; + RI.viewangles[PITCH] += pitch * sensitivity; RI.viewangles[PITCH] = bound( -90, RI.viewangles[PITCH], 90 ); } } @@ -573,37 +587,7 @@ void Host_InputFrame( void ) if( clgame.dllFuncs.pfnLookEvent ) { - int dx, dy; - -#ifndef __ANDROID__ - if( in_mouseinitialized && !m_ignore->value ) - { - SDL_GetRelativeMouseState( &dx, &dy ); - pitch += dy * m_pitch->value, yaw -= dx * m_yaw->value; //mouse speed - } -#endif - -#ifdef __ANDROID__ - if( !m_ignore->value ) - { - float mouse_x, mouse_y; - Android_MouseMove( &mouse_x, &mouse_y ); - pitch += mouse_y * m_pitch->value, yaw -= mouse_x * m_yaw->value; //mouse speed - } -#endif - - Joy_FinalizeMove( &forward, &side, &yaw, &pitch ); - IN_TouchMove( &forward, &side, &yaw, &pitch ); -#ifdef USE_EVDEV - IN_EvdevMove( &yaw, &pitch ); -#endif - if( look_filter->value ) - { - pitch = ( inputstate.lastpitch + pitch ) / 2; - yaw = ( inputstate.lastyaw + yaw ) / 2; - inputstate.lastpitch = pitch; - inputstate.lastyaw = yaw; - } + IN_CollectInput( &forward, &side, &yaw, &pitch, in_mouseinitialized ); if( cls.key_dest == key_game ) {