diff --git a/Projects/Android/AndroidManifest.xml b/Projects/Android/AndroidManifest.xml index d0116ce..18acd47 100644 --- a/Projects/Android/AndroidManifest.xml +++ b/Projects/Android/AndroidManifest.xml @@ -2,8 +2,8 @@ diff --git a/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c b/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c index 65afa49..98a4654 100644 --- a/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c +++ b/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c @@ -316,7 +316,8 @@ void Android_MessageBox(const char *title, const char *text) convar_t *vibration_enable; -convar_t *vr_snapturn_angle; +convar_t *vr_smoothturn; +convar_t *vr_turn_angle; convar_t *vr_reloadtimeoutms; convar_t *vr_positional_factor; convar_t *vr_walkdirection; @@ -366,7 +367,8 @@ void VR_Init() srand(time(NULL)); //Create Cvars - vr_snapturn_angle = Cvar_Get( "vr_snapturn_angle", "45", CVAR_ARCHIVE, "Sets the angle for snap-turn, set to < 10.0 to enable smooth turning" ); + vr_smoothturn = Cvar_Get( "vr_smoothturn", "0", CVAR_ARCHIVE, "Enables smooth turning" ); + vr_turn_angle = Cvar_Get( "vr_turn_angle", "45", CVAR_ARCHIVE, "Sets the angle for snap-turn, set to < 10.0 to enable smooth turning" ); vr_reloadtimeoutms = Cvar_Get( "vr_reloadtimeoutms", "200", CVAR_ARCHIVE, "How quickly the grip trigger needs to be release to initiate a reload" ); vr_positional_factor = Cvar_Get( "vr_positional_factor", "3000", CVAR_ARCHIVE, "Number that makes positional tracking work" ); vr_walkdirection = Cvar_Get( "vr_walkdirection", "1", CVAR_ARCHIVE, "1 - Use HMD for direction, 0 - Use off-hand controller for direction" ); @@ -401,7 +403,7 @@ void VR_Init() vr_headtorch = Cvar_Get( "vr_headtorch", "0", CVAR_ARCHIVE, "Set to 1 to enable head-torch flashlight mode" ); vr_reversetorch = Cvar_Get( "vr_reversetorch", "0", CVAR_ARCHIVE, "Set to 1 to enable reverse-direction flashlight mode" ); vr_quick_crouchjump = Cvar_Get( "vr_quick_crouchjump", "1", CVAR_ARCHIVE, "Set to 0 to disable quick crouch-jump mode (double clicking jump button triggers duck)" ); - vr_gesture_triggered_use = Cvar_Get( "vr_gesture_triggered_use", "0", CVAR_ARCHIVE, "Set to 0 to disable use gesture, 1 to enable" ); + vr_gesture_triggered_use = Cvar_Get( "vr_gesture_triggered_use", "1", CVAR_ARCHIVE, "Set to 0 to disable use gesture, 1 to enable" ); vr_use_gesture_boundary = Cvar_Get( "vr_use_gesture_boundary", "0.35", CVAR_ARCHIVE, "Use gesture boundary" ); //Not to be changed by users, as it will be overwritten anyway diff --git a/Projects/Android/jni/src/Lambda1VR/VrCvars.h b/Projects/Android/jni/src/Lambda1VR/VrCvars.h index fe95742..20859ac 100644 --- a/Projects/Android/jni/src/Lambda1VR/VrCvars.h +++ b/Projects/Android/jni/src/Lambda1VR/VrCvars.h @@ -2,7 +2,8 @@ #include #include -extern convar_t *vr_snapturn_angle; +extern convar_t *vr_smoothturn; +extern convar_t *vr_turn_angle; extern convar_t *vr_reloadtimeoutms; extern convar_t *vr_positional_factor; extern convar_t *vr_walkdirection; diff --git a/Projects/Android/jni/src/Lambda1VR/VrInputAlt.c b/Projects/Android/jni/src/Lambda1VR/VrInputAlt.c index a4f3119..5880238 100644 --- a/Projects/Android/jni/src/Lambda1VR/VrInputAlt.c +++ b/Projects/Android/jni/src/Lambda1VR/VrInputAlt.c @@ -326,7 +326,7 @@ void HandleInput_Alt( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovr rotation[PITCH] = 25.0f; vec3_t inverseflashlightangles; QuatToYawPitchRoll(pOffTracking->Pose.orientation, rotation, inverseflashlightangles); - if (vr_reversetorch->integer) + if (vr_reversetorch->integer && cl.frame.client.flags & FL_HAS_FLASHLIGHT) { VectorNegate(inverseflashlightangles, flashlightangles); flashlightangles[YAW] *= -1.0f; @@ -349,7 +349,7 @@ void HandleInput_Alt( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovr { //This section corrects for the fact that the controller actually controls direction of movement, but we want to move relative to the direction the //player is facing for positional tracking - float multiplier = vr_positional_factor->value / (cl_forwardspeed->value * + float multiplier = (vr_positional_factor->value * (vr_refresh->value / 72.f)) / (cl_forwardspeed->value * ((pOffTrackedRemoteNew->Buttons & xrButton_Trigger) ? cl_movespeedkey->value : 1.0f)); //If player is ducked then multiply by 3 otherwise positional tracking feels very wrong @@ -601,15 +601,15 @@ void HandleInput_Alt( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovr if (!selectingWeapon) { //engage comfort mask if using smooth rotation - player_moving |= (vr_snapturn_angle->value <= 10.0f && + player_moving |= (vr_smoothturn->value && fabs(joystickX) > 0.7f); if (joystickX > 0.7f) { if (increaseSnap) { - snapTurn -= vr_snapturn_angle->value; - if (vr_snapturn_angle->value > 10.0f) { + snapTurn -= vr_turn_angle->value / (vr_smoothturn->value ? 10.f : 1.f); + if (!vr_smoothturn->value) { increaseSnap = false; } @@ -629,10 +629,10 @@ void HandleInput_Alt( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovr { if (decreaseSnap) { - snapTurn += vr_snapturn_angle->value; + snapTurn += vr_turn_angle->value / (vr_smoothturn->value ? 10.f : 1.f); //If snap turn configured for less than 10 degrees - if (vr_snapturn_angle->value > 10.0f) { + if (!vr_smoothturn->value) { decreaseSnap = false; } diff --git a/Projects/Android/jni/src/Lambda1VR/VrInputAlt2.c b/Projects/Android/jni/src/Lambda1VR/VrInputAlt2.c index 6502c45..3d6f2bb 100644 --- a/Projects/Android/jni/src/Lambda1VR/VrInputAlt2.c +++ b/Projects/Android/jni/src/Lambda1VR/VrInputAlt2.c @@ -338,7 +338,7 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov rotation[PITCH] = 25.0f; vec3_t inverseflashlightangles; QuatToYawPitchRoll(pOffTracking->Pose.orientation, rotation, inverseflashlightangles); - if (vr_reversetorch->integer) + if (vr_reversetorch->integer && cl.frame.client.flags & FL_HAS_FLASHLIGHT) { VectorNegate(inverseflashlightangles, flashlightangles); flashlightangles[YAW] *= -1.0f; @@ -361,7 +361,7 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov { //This section corrects for the fact that the controller actually controls direction of movement, but we want to move relative to the direction the //player is facing for positional tracking - float multiplier = vr_positional_factor->value / (cl_forwardspeed->value * + float multiplier = (vr_positional_factor->value * (vr_refresh->value / 72.f)) / (cl_forwardspeed->value * ((pOffTrackedRemoteNew->Buttons & xrButton_Trigger) ? cl_movespeedkey->value : 1.0f)); //If player is ducked then multiply by 3 otherwise positional tracking feels very wrong @@ -463,7 +463,7 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov //Weapon Chooser static bool weaponSwitched = false; - if (vr_snapturn_angle->value != 0) // if snap angle feature is enabled + if (vr_turn_angle->value != 0) // if snap angle feature is enabled { if (between(-0.25f, pOffTrackedRemoteNew->Joystick.x, 0.25f) && (between(0.75f, pOffTrackedRemoteNew->Joystick.y, 1.0f) || @@ -616,7 +616,7 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov float joystickX = (joyx[0] + joyx[1] + joyx[2] + joyx[3]) / 4.0f; //engage comfort mask if using smooth rotation - player_moving |= (vr_snapturn_angle->value <= 10.0f && + player_moving |= (vr_smoothturn->value && fabs(joystickX) > 0.6f); static bool increaseSnap = true; @@ -624,8 +624,8 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov { if (increaseSnap) { - snapTurn -= vr_snapturn_angle->value; - if (vr_snapturn_angle->value > 10.0f) { + snapTurn -= vr_turn_angle->value / (vr_smoothturn->value ? 10.f : 1.f); + if (!vr_smoothturn->value) { increaseSnap = false; } @@ -643,10 +643,10 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov { if (decreaseSnap) { - snapTurn += vr_snapturn_angle->value; + snapTurn += vr_turn_angle->value / (vr_smoothturn->value ? 10.f : 1.f); //If snap turn configured for less than 10 degrees - if (vr_snapturn_angle->value > 10.0f) { + if (!vr_smoothturn->value) { decreaseSnap = false; } diff --git a/Projects/Android/jni/src/Lambda1VR/VrInputCommon.c b/Projects/Android/jni/src/Lambda1VR/VrInputCommon.c index a34d6b3..628de9a 100644 --- a/Projects/Android/jni/src/Lambda1VR/VrInputCommon.c +++ b/Projects/Android/jni/src/Lambda1VR/VrInputCommon.c @@ -138,34 +138,23 @@ void interactWithTouchScreen(ovrTrackedController *tracking, ovrInputStateTracke float remoteAngles[3]; vec3_t rotation = {0, 0, 0}; QuatToYawPitchRoll(tracking->Pose.orientation, rotation, remoteAngles); - float yaw = remoteAngles[YAW] - playerYaw; - //Adjust for maximum yaw values - if (yaw >= 180.0f) yaw -= 180.0f; - if (yaw <= -180.0f) yaw += 180.0f; + int newRemoteTrigState = (newState->Buttons & xrButton_Trigger) != 0; + int prevRemoteTrigState = (oldState->Buttons & xrButton_Trigger) != 0; - if (yaw > -40.0f && yaw < 40.0f && - remoteAngles[PITCH] > -22.5f && remoteAngles[PITCH] < 22.5f) { - - int newRemoteTrigState = (newState->Buttons & xrButton_Trigger) != 0; - int prevRemoteTrigState = (oldState->Buttons & xrButton_Trigger) != 0; - - touchEventType t = event_motion; - - float touchX = (-yaw + 40.0f) / 80.0f; - float touchY = (remoteAngles[PITCH] + 22.5f) / 45.0f; - if (newRemoteTrigState != prevRemoteTrigState) + float cursorX = -sinf(DEG2RAD(remoteAngles[YAW] - playerYaw)) + 0.5f; + float cursorY = (float)(remoteAngles[PITCH] / 90.0) + 0.5f; + touchEventType t = event_motion; + if (newRemoteTrigState != prevRemoteTrigState) + { + t = newRemoteTrigState ? event_down : event_up; + if (newRemoteTrigState) { - t = newRemoteTrigState ? event_down : event_up; - if (newRemoteTrigState) - { - initialTouchX = touchX; - initialTouchY = touchY; - } + initialTouchX = cursorX; + initialTouchY = cursorY; } - - IN_TouchEvent(t, 0, touchX, touchY, initialTouchX - touchX, initialTouchY - touchY); } + IN_TouchEvent(t, 0, cursorX, cursorY, initialTouchX - cursorX, initialTouchY - cursorY); } diff --git a/Projects/Android/jni/src/Lambda1VR/VrInputDefault.c b/Projects/Android/jni/src/Lambda1VR/VrInputDefault.c index d027165..20a00f7 100644 --- a/Projects/Android/jni/src/Lambda1VR/VrInputDefault.c +++ b/Projects/Android/jni/src/Lambda1VR/VrInputDefault.c @@ -339,7 +339,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, rotation[PITCH] = 25.0f; vec3_t inverseflashlightangles; QuatToYawPitchRoll(pOffTracking->Pose.orientation, rotation, inverseflashlightangles); - if (vr_reversetorch->integer) + if (vr_reversetorch->integer && cl.frame.client.flags & FL_HAS_FLASHLIGHT) { VectorNegate(inverseflashlightangles, flashlightangles); flashlightangles[YAW] *= -1.0f; @@ -361,7 +361,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, { //This section corrects for the fact that the controller actually controls direction of movement, but we want to move relative to the direction the //player is facing for positional tracking - float multiplier = vr_positional_factor->value / (cl_forwardspeed->value * + float multiplier = (vr_positional_factor->value * (vr_refresh->value / 72.f)) / (cl_forwardspeed->value * ((pOffTrackedRemoteNew->Buttons & xrButton_Trigger) ? cl_movespeedkey->value : 1.0f)); //If player is ducked then multiply by 3 otherwise positional tracking feels very wrong @@ -463,7 +463,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, //Weapon Chooser static bool weaponSwitched = false; - if (vr_snapturn_angle->value != 0) // if snap angle feature is enabled + if (vr_turn_angle->value != 0) // if snap angle feature is enabled { if (between(0.6f, pDominantTrackedRemoteNew->Joystick.y, 1.0f) || between(-1.0f, pDominantTrackedRemoteNew->Joystick.y, -0.6f)) @@ -617,7 +617,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, float joystickX = (joyx[0] + joyx[1] + joyx[2] + joyx[3]) / 4.0f; //engage comfort mask if using smooth rotation - player_moving |= (vr_snapturn_angle->value <= 10.0f && + player_moving |= (vr_smoothturn->value && fabs(joystickX) > 0.6f); static bool increaseSnap = true; @@ -625,8 +625,8 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, { if (increaseSnap) { - snapTurn -= vr_snapturn_angle->value; - if (vr_snapturn_angle->value > 10.0f) { + snapTurn -= vr_turn_angle->value / (vr_smoothturn->value ? 10.f : 1.f); + if (!vr_smoothturn->value) { increaseSnap = false; } @@ -644,10 +644,10 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, { if (decreaseSnap) { - snapTurn += vr_snapturn_angle->value; + snapTurn += vr_turn_angle->value / (vr_smoothturn->value ? 10.f : 1.f); //If snap turn configured for less than 10 degrees - if (vr_snapturn_angle->value > 10.0f) { + if (!vr_smoothturn->value) { decreaseSnap = false; } diff --git a/Projects/Android/jni/src/Lambda1VR/VrInputOne.c b/Projects/Android/jni/src/Lambda1VR/VrInputOne.c index ad48898..e03c5ad 100644 --- a/Projects/Android/jni/src/Lambda1VR/VrInputOne.c +++ b/Projects/Android/jni/src/Lambda1VR/VrInputOne.c @@ -176,7 +176,7 @@ void HandleInput_OneController( ovrInputStateTrackedRemote *pDominantTrackedRemo rotation[PITCH] = 25.0f; vec3_t inverseflashlightangles; QuatToYawPitchRoll(pOffTracking->Pose.orientation, rotation, inverseflashlightangles); - if (vr_reversetorch->integer) + if (vr_reversetorch->integer && cl.frame.client.flags & FL_HAS_FLASHLIGHT) { VectorNegate(inverseflashlightangles, flashlightangles); flashlightangles[YAW] *= -1.0f; @@ -193,7 +193,7 @@ void HandleInput_OneController( ovrInputStateTrackedRemote *pDominantTrackedRemo { //This section corrects for the fact that the controller actually controls direction of movement, but we want to move relative to the direction the //player is facing for positional tracking - float multiplier = vr_positional_factor->value / (cl_forwardspeed->value * + float multiplier = (vr_positional_factor->value * (vr_refresh->value / 72.f)) / (cl_forwardspeed->value * ((pOffTrackedRemoteNew->Buttons & xrButton_Trigger) ? cl_movespeedkey->value : 1.0f)); //If player is ducked then multiply by 3 otherwise positional tracking feels very wrong diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_view.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_view.c index 15b8d4d..a661ff3 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_view.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_view.c @@ -155,7 +155,10 @@ void V_SetupRefDef( void ) VectorCopy(weaponangles[2], cl.refdef.weapon.angles.melee); //Scope - if (cl.scr_fov < 90) { + // Reducing this to 85 (from 90) fixes the issue where on the highest IPD setting on Quest 2 or Quest 3s + // the player's view is moved around by the right controller, it's because that was changing the FOV to 88! + if (cl.scr_fov < 85) + { VectorAdd(cl.refdef.simorg, cl.refdef.weapon.org, cl.refdef.simorg); VectorSet(cl.refdef.weapon.org, 0, 0, 0); } diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/gl_studio.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/gl_studio.c index f0d0c2b..bc831b7 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/gl_studio.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/gl_studio.c @@ -3726,7 +3726,10 @@ extern convar_t *vr_mirror_weapons; extern convar_t *vr_weapon_backface_culling; int bScopeEngaged() { - return (cl.scr_fov != 0 && cl.scr_fov < 90.0f); + return (cl.scr_fov != 0 && + // Reducing this to 85 (from 90) fixes the issue where on the highest IPD setting on Quest 2 or Quest 3s + // the player's view is moved around by the right controller, it's because that was changing the FOV to 88! + cl.scr_fov < 85.0f); } void R_DrawViewModel( void ) @@ -3794,8 +3797,15 @@ void R_DrawViewModel( void ) extern convar_t *vr_hand_model; extern convar_t *vr_control_scheme; +extern convar_t *vr_reversetorch; -void R_DrawHandModel( int hand ) +void getHandAdjustVector(vec3_t angles, vec3_t forward) { + AngleVectors(angles, forward, NULL, NULL); + VectorNegate(forward, forward); + VectorM(5, forward, forward); +} + +void R_DrawHandModel(int hand ) { if( RI.refdef.onlyClientDraw || r_drawviewmodel->integer == 0 || vr_hand_model->integer == 0 || bScopeEngaged()) return; @@ -3841,15 +3851,23 @@ void R_DrawHandModel( int hand ) int off_hand = (vr_control_scheme->integer >= 10) ? 1 : 0; if (hand == off_hand) { - //Off hand + vec3_t forward; + getHandAdjustVector(cl.refdef.flashlight.angles.adjusted, forward); + //Off hand VectorAdd(cl.refdef.vieworg, cl.refdef.flashlight.org, clgame.handent.origin); + VectorAdd(clgame.handent.origin, forward, clgame.handent.origin); VectorCopy(cl.refdef.flashlight.angles.adjusted, clgame.handent.curstate.angles); clgame.handent.curstate.angles[0] *= -1.0f; } else { + VectorCopy(cl.refdef.weapon.angles.unadjusted, clgame.handent.curstate.angles); + clgame.handent.curstate.angles[0] *= -1.0f; + vec3_t forward; + getHandAdjustVector(clgame.handent.curstate.angles, forward); //Dominant hand VectorAdd(cl.refdef.vieworg, cl.refdef.weapon.org, clgame.handent.origin); - VectorCopy(cl.refdef.weapon.angles.adjusted, clgame.handent.curstate.angles); + VectorAdd(clgame.handent.origin, forward, clgame.handent.origin); + clgame.handent.curstate.angles[0] *= -1.0f; } //Optional culling for the viewmodel diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/common/build.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/common/build.c index d5da748..ffaafb9 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/common/build.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/common/build.c @@ -139,7 +139,7 @@ Q_buildcommit will identify this build as release or "notset" */ const char *Q_buildcommit( void ) { - return "Lambda1VR-v1.7.0"; + return "Lambda1VR-v1.7.2"; } /* diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_game.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_game.c index f0ec411..d38a70c 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_game.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_game.c @@ -3059,7 +3059,9 @@ void SV_SetStringArrayMode( qboolean dynamic ) #ifdef XASH_64BIT #ifndef _WIN32 -#define USE_MMAP +//We don't want to use this as sometimes if causes a hang on the start of the game.. +//seems to work fine without it! (hopefully!!) +//#define USE_MMAP #include #endif #endif diff --git a/Projects/Android/jni/src/Xash3D/xash3d/mainui/menus/Controls.cpp b/Projects/Android/jni/src/Xash3D/xash3d/mainui/menus/Controls.cpp index f93abcf..a1a12a1 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/mainui/menus/Controls.cpp +++ b/Projects/Android/jni/src/Xash3D/xash3d/mainui/menus/Controls.cpp @@ -70,6 +70,7 @@ private: CMenuCheckBox handModels; CMenuCheckBox quickCrouchJump; CMenuCheckBox useGesture; + CMenuCheckBox smoothTurn; CMenuSlider snapTurnAngle; CMenuSlider useGestureBoundary; @@ -109,37 +110,41 @@ void CMenuControls::_Init( void ) quickCrouchJump.LinkCvar( "vr_quick_crouchjump" ); mirrorWeapons.SetNameAndStatus( "Mirror Weapon Models", "Check to mirror weapon models (for left-handed play to avoid seeing missing sides)" ); - mirrorWeapons.SetCoord( 320, 510 ); + mirrorWeapons.SetCoord( 320, 500 ); mirrorWeapons.LinkCvar( "vr_mirror_weapons" ); handModels.SetNameAndStatus( "Draw Hand Models", "Check to enable controllers rendered as hand models" ); - handModels.SetCoord( 720, 510 ); + handModels.SetCoord( 720, 500 ); handModels.LinkCvar( "vr_hand_model" ); headTorch.SetNameAndStatus( "Head-based Torch", "Check to enable head-torch (Half-life & Blueshift only)" ); - headTorch.SetCoord( 320, 570 ); + headTorch.SetCoord( 320, 550 ); headTorch.LinkCvar( "vr_headtorch" ); - reverseTorch.SetNameAndStatus( "Reverse Torch Direction", "Check to reverse torch direction" ); - reverseTorch.SetCoord( 320, 640 ); - reverseTorch.LinkCvar( "vr_reversetorch" ); - useGesture.SetNameAndStatus( "Gesture Triggered Use", "Toggles triggering of use action by gesture" ); - useGesture.SetCoord( 720, 570 ); + useGesture.SetCoord( 720, 550 ); useGesture.LinkCvar( "vr_gesture_triggered_use" ); - snapTurnAngle.SetNameAndStatus( "Snap/Smooth Turn: %.1f degrees", "Controller turn angle, < 10 is smooth turning per frame" ); + reverseTorch.SetNameAndStatus( "Reverse Torch Direction", "Check to reverse torch direction" ); + reverseTorch.SetCoord( 320, 600 ); + reverseTorch.LinkCvar( "vr_reversetorch" ); + + smoothTurn.SetNameAndStatus( "Smooth Turn", "Toggles smooth turning" ); + smoothTurn.SetCoord( 720, 600 ); + smoothTurn.LinkCvar( "vr_smoothturn" ); + + snapTurnAngle.SetNameAndStatus( "Snap/Smooth Turn:", "Controller turn angle per frame" ); snapTurnAngle.Setup( 0.0, 90.0, 1.0f ); snapTurnAngle.onChanged = CMenuEditable::WriteCvarCb; snapTurnAngle.SetCoord( 320, 750 ); snapTurnAngle.SetSize( 520, 40 ); snapTurnAngle.SetDrawValue(true); - snapTurnAngle.LinkCvar("vr_snapturn_angle"); + snapTurnAngle.LinkCvar("vr_turn_angle"); useGestureBoundary.SetNameAndStatus( "Use Gesture Boundary", "Configures how far you need to reach to activate use gesture" ); useGestureBoundary.Setup( 0.2, 0.5, 0.01f ); useGestureBoundary.onChanged = CMenuEditable::WriteCvarCb; - useGestureBoundary.SetCoord( 320, 840 ); + useGestureBoundary.SetCoord( 320, 850 ); useGestureBoundary.SetSize( 520, 40 ); useGestureBoundary.SetDrawValue(true); useGestureBoundary.LinkCvar("vr_use_gesture_boundary"); @@ -152,6 +157,7 @@ void CMenuControls::_Init( void ) AddItem( reverseTorch ); AddItem( handModels ); AddItem( snapTurnAngle ); + AddItem( smoothTurn ); AddItem( useGesture ); AddItem( useGestureBoundary ); @@ -185,6 +191,7 @@ void CMenuControls::SetConfig( ) reverseTorch.WriteCvar(); handModels.WriteCvar(); snapTurnAngle.WriteCvar(); + smoothTurn.WriteCvar(); useGesture.WriteCvar(); useGestureBoundary.WriteCvar();