From 11fab1b967a63705ea7a1fa8ec7a4b47fed810de Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 14 Jul 2019 10:28:20 +0100 Subject: [PATCH] Ladders now work.. --- .../src/hlsdk-xash3d/cl_dll/input_xash3d.cpp | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/Projects/Android/jni/src/hlsdk-xash3d/cl_dll/input_xash3d.cpp b/Projects/Android/jni/src/hlsdk-xash3d/cl_dll/input_xash3d.cpp index fa474f6..fcca733 100644 --- a/Projects/Android/jni/src/hlsdk-xash3d/cl_dll/input_xash3d.cpp +++ b/Projects/Android/jni/src/hlsdk-xash3d/cl_dll/input_xash3d.cpp @@ -46,11 +46,26 @@ cvar_t *cl_laddermode; int CL_IsDead( void ); extern Vector dead_viewangles; +#ifdef VR +//We have to use this because in VR the tiniest positional movement means forwardmove and sidem0ve never go to +//zero, which means the button flags _never_ get reset. As long as we are close to zero then we should accept that +//as being close enough, and therefore button flags can be reset. I have arbitrariliy picked 0.05f as "close". +//This was preventing the use of ladders +static inline bool valueCloseToZero(float value) +{ + return (value > -0.05f && value < 0.05f); +} +#endif + void IN_ToggleButtons( float forwardmove, float sidemove ) { static unsigned int moveflags = T | S; - if( forwardmove ) +#ifdef VR + if( !valueCloseToZero( forwardmove )) +#else + if( forwardmove ) +#endif moveflags &= ~T; else { @@ -65,8 +80,12 @@ void IN_ToggleButtons( float forwardmove, float sidemove ) moveflags |= T; } } - if( sidemove ) - moveflags &= ~S; +#ifdef VR + if( !valueCloseToZero( sidemove )) +#else + if( sidemove ) +#endif + moveflags &= ~S; else { //gEngfuncs.Con_Printf("l%d r%d\n", in_moveleft.state, in_moveright.state);