IRL Crouch (@MuadDib)

Real Life Crouch implementation, courtesy of @MuadDib, complete with menu options
This commit is contained in:
Simon 2022-11-16 21:27:36 +00:00
parent c372dd455b
commit 96f6be0be9
10 changed files with 347 additions and 169 deletions

View file

@ -1334,6 +1334,8 @@ void JKVR_Init()
vr_two_handed_weapons = Cvar_Get ("vr_two_handed_weapons", "1", CVAR_ARCHIVE);
vr_force_motion_controlled = Cvar_Get ("vr_force_motion_controlled", "1", CVAR_ARCHIVE);
vr_crouch_toggle = Cvar_Get ("vr_crouch_toggle", "0", CVAR_ARCHIVE);
vr_irl_crouch_enabled = Cvar_Get ("vr_irl_crouch_enabled", "0", CVAR_ARCHIVE);
vr_irl_crouch_to_stand_ratio = Cvar_Get ("vr_irl_crouch_to_stand_ratio", "0.65", CVAR_ARCHIVE);
vr_saber_block_debounce_time = Cvar_Get ("vr_saber_block_debounce_time", "200", CVAR_ARCHIVE);
cvar_t *expanded_menu_enabled = Cvar_Get ("expanded_menu_enabled", "0", CVAR_ARCHIVE);
@ -1698,6 +1700,13 @@ void JKVR_getHMDOrientation() {//Get orientation
updateHMDOrientation();
// Max-height is set only once on start, or after re-calibration
// (ignore too low value which is sometimes provided on start)
if (!vr.maxHeight || vr.maxHeight < 1.0) {
vr.maxHeight = positionHmd.y;
}
vr.curHeight = positionHmd.y;
///ALOGV(" HMD-Position: %f, %f, %f", positionHmd.x, positionHmd.y, positionHmd.z);
}

View file

@ -67,6 +67,9 @@ typedef struct {
vec3_t offhandposition;
vec3_t offhandoffset;
float maxHeight;
float curHeight;
//////////////////////////////////////
// Test stuff for weapon alignment
//////////////////////////////////////

View file

@ -14,5 +14,7 @@ extern cvar_t *vr_force_velocity_trigger;
extern cvar_t *vr_two_handed_weapons;
extern cvar_t *vr_force_motion_controlled;
extern cvar_t *vr_crouch_toggle;
extern cvar_t *vr_irl_crouch_enabled;
extern cvar_t *vr_irl_crouch_to_stand_ratio;
extern cvar_t *vr_saber_block_debounce_time;

View file

@ -34,6 +34,8 @@ cvar_t *vr_force_velocity_trigger;
cvar_t *vr_two_handed_weapons;
cvar_t *vr_force_motion_controlled;
cvar_t *vr_crouch_toggle;
cvar_t *vr_irl_crouch_enabled;
cvar_t *vr_irl_crouch_to_stand_ratio;
cvar_t *vr_saber_block_debounce_time;
ovrInputStateTrackedRemote leftTrackedRemoteState_old;

View file

@ -662,6 +662,9 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG
{
sendButtonAction("+movedown", (secondaryButtonsNew & secondaryThumb));
}
// Reset max height for IRL crouch
vr.maxHeight = 0;
}
//Use

View file

@ -3525,6 +3525,74 @@ static void PM_CheckDuck (void)
pm->ps->pm_flags |= PMF_DUCKED;
return;
}
// IRL Crouch
cvar_t *vr_irl_crouch_enabled = gi.cvar("vr_irl_crouch_enabled", "0", CVAR_ARCHIVE); // defined in VrCvars.h
if (vr && !pm->ps->clientNum && vr_irl_crouch_enabled->integer && (!cg.renderingThirdPerson || vr_irl_crouch_enabled->integer > 1)) {
// In-game view height always matches full stand height
// (we are crouching IRL, no need to artificially lower view)
pm->ps->viewheight = standheight + STANDARD_VIEWHEIGHT_OFFSET;
// Compute in-game height based on HMD height above floor
// (adjust height only when crouching, ignore IRL jumps)
int computedHeight = standheight;
if (crouchheight < standheight && vr->curHeight < vr->maxHeight) {
// Count minimum IRL crouch height based on maximum IRL height
cvar_t *vr_irl_crouch_to_stand_ratio = gi.cvar("vr_irl_crouch_to_stand_ratio", "0.65", CVAR_ARCHIVE); // defined in VrCvars.h
float minHeight = vr->maxHeight * vr_irl_crouch_to_stand_ratio->value;
if (vr->curHeight < minHeight) { // Do not allow to crawl (set min height)
computedHeight = crouchheight;
} else {
float heightRatio = (vr->curHeight - minHeight) / (vr->maxHeight - minHeight);
computedHeight = crouchheight + (int)(heightRatio * (standheight - crouchheight));
}
}
// When in the air, move origin (we are lifting or dropping legs)
bool liftingLegs = computedHeight < oldHeight;
if (pm->ps->groundEntityNum == ENTITYNUM_NONE) {
pm->ps->origin[2] += oldHeight - computedHeight;
// Compensate view height
pm->ps->viewheight -= oldHeight - computedHeight;
}
// Adjust height based on where are you standing
// (cannot stand up if there is no place, find nearest possible height)
for (int i = computedHeight; i > 0; i--) {
pm->maxs[2] = i;
pm->trace( &trace, pm->ps->origin, pm->mins, pm->maxs, pm->ps->origin, pm->ps->clientNum, pm->tracemask, G2_NOCOLLIDE, 0 );
if ( !trace.allsolid ) {
break;
} else if (pm->ps->groundEntityNum == ENTITYNUM_NONE) {
// When in the air, adjust origin (we are lifting or dropping legs)
if (liftingLegs) {
pm->ps->origin[2]--;
// Compensate view height
pm->ps->viewheight++;
} else {
pm->ps->origin[2]++;
// Compensate view height
pm->ps->viewheight--;
}
} else {
// Lower view height to not see through ceiling
// (in case you stand up IRL in tight place)
pm->ps->viewheight--;
}
}
// Toggle duck flag based on in-game height (need to be at least half-way crouched)
if (pm->maxs[2] < crouchheight + (standheight - crouchheight)/2) {
//Com_Printf( "CROUCHING: %.2f/%.2f -> %i ->%i\n", vr->curHeight, vr->maxHeight, computedHeight, (int) pm->maxs[2] );
pm->ps->pm_flags |= PMF_DUCKED;
} else {
//Com_Printf( "STANDING: %.2f/%.2f -> %i -> %i\n", vr->curHeight, vr->maxHeight, computedHeight, (int) pm->maxs[2] );
pm->ps->pm_flags &= ~PMF_DUCKED;
}
return;
}
if ( pm->cmd.upmove < 0 )
{ // trying to duck
pm->maxs[2] = crouchheight;

Binary file not shown.

View file

@ -3,7 +3,7 @@ CONFIG W:\bin\striped.cfg
ID 100
REFERENCE MENUS_VR
DESCRIPTION "VR Menu Localizations"
COUNT 114
COUNT 117
INDEX 0
{
REFERENCE COMMON_CONTROLS_ITEM
@ -574,3 +574,18 @@ INDEX 113
REFERENCE CROUCH_TOGGLE_DESC
TEXT_LANGUAGE1 "Turn on to enable crouch toggle."
}
INDEX 114
{
REFERENCE CROUCH_IRL_ITEM
TEXT_LANGUAGE1 "IRL Crouch:"
}
INDEX 115
{
REFERENCE CROUCH_IRL_DESC
TEXT_LANGUAGE1 "Crouch IRL to crouch in game (use crouch button to recalibrate standing height)."
}
INDEX 116
{
REFERENCE CROUCH_IRL_1ST_PERSON
TEXT_LANGUAGE1 "1st Person"
}

View file

@ -1051,7 +1051,7 @@
type ITEM_TYPE_SLIDER
text @MENUS_VR_MOVEMENT_SPEED_ITEM
cvarfloat "vr_movement_multiplier" 0 0.4 1.2
rect 305 191 300 20
rect 305 171 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
@ -1068,12 +1068,12 @@
mouseenter
{
show highlight2
show highlight1
}
mouseexit
{
hide highlight2
hide highlight1
}
}
@ -1089,7 +1089,7 @@
@MENUS_VR_DIRECTION_MODE_CONTROLLER 0
@MENUS_VR_DIRECTION_MODE_HMD 1
}
rect 305 211 300 20
rect 305 191 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
@ -1106,12 +1106,12 @@
mouseenter
{
show highlight3
show highlight2
}
mouseexit
{
hide highlight3
hide highlight2
}
}
@ -1129,7 +1129,7 @@
@MENUS_VR_SMOOTH_TURN_3RD_PERSON 1
@MENUS0_YES 2
}
rect 305 231 300 20
rect 305 211 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
@ -1144,6 +1144,44 @@
play sound/interface/button1
}
mouseenter
{
show highlight3
}
mouseexit
{
hide highlight3
}
}
itemDef
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_TURN_ANGLE_ITEM
cvar "vr_turn_angle"
cvarFloatList
{
@MENUS_VR_TURN_ANGLE_30DEGREES 30
@MENUS_VR_TURN_ANGLE_45DEGREES 45
@MENUS_VR_TURN_ANGLE_90DEGREES 90
}
rect 305 231 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
font 2
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 4
descText @MENUS_VR_TURN_ANGLE_DESC
action
{
play sound/interface/button1
}
mouseenter
{
show highlight4
@ -1158,15 +1196,9 @@
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_TURN_ANGLE_ITEM
cvar "vr_turn_angle"
cvarFloatList
{
@MENUS_VR_TURN_ANGLE_30DEGREES 30
@MENUS_VR_TURN_ANGLE_45DEGREES 45
@MENUS_VR_TURN_ANGLE_90DEGREES 90
}
type ITEM_TYPE_YESNO
text @MENUS_VR_SWITCH_STICKS_ITEM
cvar "vr_switch_sticks"
rect 305 251 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
@ -1175,8 +1207,8 @@
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 4
descText @MENUS_VR_TURN_ANGLE_DESC
// appearance_slot 5
descText @MENUS_VR_SWITCH_STICKS_DESC
action
{
play sound/interface/button1
@ -1196,9 +1228,14 @@
{
name none
group comfortcontrols
type ITEM_TYPE_YESNO
text @MENUS_VR_SWITCH_STICKS_ITEM
cvar "vr_switch_sticks"
type ITEM_TYPE_MULTI
text @MENUS_VR_LEFT_HANDED_ITEM
cvar "vr_control_scheme"
cvarFloatList
{
@MENUS0_NO 0
@MENUS0_YES 10
}
rect 305 271 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
@ -1208,7 +1245,7 @@
forecolor 1 1 1 1
visible 0
// appearance_slot 5
descText @MENUS_VR_SWITCH_STICKS_DESC
descText @MENUS_VR_LEFT_HANDED_DESC
action
{
play sound/interface/button1
@ -1224,43 +1261,6 @@
}
}
itemDef
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_LEFT_HANDED_ITEM
cvar "vr_control_scheme"
cvarFloatList
{
@MENUS0_NO 0
@MENUS0_YES 10
}
rect 305 291 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
font 2
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 5
descText @MENUS_VR_LEFT_HANDED_DESC
action
{
play sound/interface/button1
}
mouseenter
{
show highlight7
}
mouseexit
{
hide highlight7
}
}
itemDef
{
name none
@ -1268,7 +1268,7 @@
type ITEM_TYPE_YESNO
text @MENUS_VR_IMMERSIVE_CINEMATICS_ITEM
cvar "vr_immersive_cinematics"
rect 305 311 300 20
rect 305 291 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
@ -1283,6 +1283,45 @@
play sound/interface/button1
}
mouseenter
{
show highlight7
}
mouseexit
{
hide highlight7
}
}
itemDef
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_SCREEN_DISTANCE_ITEM
cvar "vr_screen_dist"
cvarFloatList
{
@MENUS_VR_SCREEN_DISTANCE_NEAR 1.5
@MENUS_VR_SCREEN_DISTANCE_MEDIUM 2.5
@MENUS_VR_SCREEN_DISTANCE_FAR 3.5
}
rect 305 311 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
font 2
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 1
descText @MENUS_VR_SCREEN_DISTANCE_DESC
action
{
play sound/interface/button1
}
mouseenter
{
show highlight8
@ -1298,15 +1337,9 @@
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_SCREEN_DISTANCE_ITEM
cvar "vr_screen_dist"
cvarFloatList
{
@MENUS_VR_SCREEN_DISTANCE_NEAR 1.5
@MENUS_VR_SCREEN_DISTANCE_MEDIUM 2.5
@MENUS_VR_SCREEN_DISTANCE_FAR 3.5
}
type ITEM_TYPE_SLIDER
text @MENUS_VR_HEIGHT_ADJUST_ITEM
cvarfloat "cg_heightAdjust" 0 0 1
rect 305 331 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
@ -1316,7 +1349,7 @@
forecolor 1 1 1 1
visible 0
// appearance_slot 1
descText @MENUS_VR_SCREEN_DISTANCE_DESC
descText @MENUS_VR_HEIGHT_ADJUST_DESC
action
{
play sound/interface/button1
@ -1337,9 +1370,9 @@
{
name none
group comfortcontrols
type ITEM_TYPE_SLIDER
text @MENUS_VR_HEIGHT_ADJUST_ITEM
cvarfloat "cg_heightAdjust" 0 0 1
type ITEM_TYPE_YESNO
text @MENUS_VR_CROUCH_TOGGLE_ITEM
cvar "vr_crouch_toggle"
rect 305 351 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
@ -1349,7 +1382,7 @@
forecolor 1 1 1 1
visible 0
// appearance_slot 1
descText @MENUS_VR_HEIGHT_ADJUST_DESC
descText @MENUS_VR_CROUCH_TOGGLE_DESC
action
{
play sound/interface/button1
@ -1370,33 +1403,38 @@
{
name none
group comfortcontrols
type ITEM_TYPE_YESNO
text @MENUS_VR_CROUCH_TOGGLE_ITEM
cvar "vr_crouch_toggle"
type ITEM_TYPE_MULTI
text @MENUS_VR_CROUCH_IRL_ITEM
cvar "vr_irl_crouch_enabled"
cvarFloatList
{
@MENUS0_NO 0
@MENUS_VR_CROUCH_IRL_1ST_PERSON 1
@MENUS0_YES 2
}
rect 305 371 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textalignx 151
textaligny -2
font 2
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 1
descText @MENUS_VR_CROUCH_TOGGLE_DESC
// appearance_slot 3
descText @MENUS_VR_CROUCH_IRL_DESC
action
{
play sound/interface/button1
}
mouseenter
{
{
show highlight11
}
mouseexit
{
hide highlight11
}
}
}

View file

@ -1051,7 +1051,7 @@
type ITEM_TYPE_SLIDER
text @MENUS_VR_MOVEMENT_SPEED_ITEM
cvarfloat "vr_movement_multiplier" 0 0.4 1.2
rect 305 191 300 20
rect 305 171 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
@ -1068,12 +1068,12 @@
mouseenter
{
show highlight2
show highlight1
}
mouseexit
{
hide highlight2
hide highlight1
}
}
@ -1089,7 +1089,7 @@
@MENUS_VR_DIRECTION_MODE_CONTROLLER 0
@MENUS_VR_DIRECTION_MODE_HMD 1
}
rect 305 211 300 20
rect 305 191 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
@ -1106,12 +1106,12 @@
mouseenter
{
show highlight3
show highlight2
}
mouseexit
{
hide highlight3
hide highlight2
}
}
@ -1129,7 +1129,7 @@
@MENUS_VR_SMOOTH_TURN_3RD_PERSON 1
@MENUS0_YES 2
}
rect 305 231 300 20
rect 305 211 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
@ -1144,6 +1144,44 @@
play sound/interface/button1
}
mouseenter
{
show highlight3
}
mouseexit
{
hide highlight3
}
}
itemDef
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_TURN_ANGLE_ITEM
cvar "vr_turn_angle"
cvarFloatList
{
@MENUS_VR_TURN_ANGLE_30DEGREES 30
@MENUS_VR_TURN_ANGLE_45DEGREES 45
@MENUS_VR_TURN_ANGLE_90DEGREES 90
}
rect 305 231 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
font 2
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 4
descText @MENUS_VR_TURN_ANGLE_DESC
action
{
play sound/interface/button1
}
mouseenter
{
show highlight4
@ -1158,15 +1196,9 @@
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_TURN_ANGLE_ITEM
cvar "vr_turn_angle"
cvarFloatList
{
@MENUS_VR_TURN_ANGLE_30DEGREES 30
@MENUS_VR_TURN_ANGLE_45DEGREES 45
@MENUS_VR_TURN_ANGLE_90DEGREES 90
}
type ITEM_TYPE_YESNO
text @MENUS_VR_SWITCH_STICKS_ITEM
cvar "vr_switch_sticks"
rect 305 251 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
@ -1175,8 +1207,8 @@
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 4
descText @MENUS_VR_TURN_ANGLE_DESC
// appearance_slot 5
descText @MENUS_VR_SWITCH_STICKS_DESC
action
{
play sound/interface/button1
@ -1196,9 +1228,14 @@
{
name none
group comfortcontrols
type ITEM_TYPE_YESNO
text @MENUS_VR_SWITCH_STICKS_ITEM
cvar "vr_switch_sticks"
type ITEM_TYPE_MULTI
text @MENUS_VR_LEFT_HANDED_ITEM
cvar "vr_control_scheme"
cvarFloatList
{
@MENUS0_NO 0
@MENUS0_YES 10
}
rect 305 271 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
@ -1208,7 +1245,7 @@
forecolor 1 1 1 1
visible 0
// appearance_slot 5
descText @MENUS_VR_SWITCH_STICKS_DESC
descText @MENUS_VR_LEFT_HANDED_DESC
action
{
play sound/interface/button1
@ -1224,43 +1261,6 @@
}
}
itemDef
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_LEFT_HANDED_ITEM
cvar "vr_control_scheme"
cvarFloatList
{
@MENUS0_NO 0
@MENUS0_YES 10
}
rect 305 291 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
font 2
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 5
descText @MENUS_VR_LEFT_HANDED_DESC
action
{
play sound/interface/button1
}
mouseenter
{
show highlight7
}
mouseexit
{
hide highlight7
}
}
itemDef
{
name none
@ -1268,7 +1268,7 @@
type ITEM_TYPE_YESNO
text @MENUS_VR_IMMERSIVE_CINEMATICS_ITEM
cvar "vr_immersive_cinematics"
rect 305 311 300 20
rect 305 291 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
@ -1283,6 +1283,45 @@
play sound/interface/button1
}
mouseenter
{
show highlight7
}
mouseexit
{
hide highlight7
}
}
itemDef
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_SCREEN_DISTANCE_ITEM
cvar "vr_screen_dist"
cvarFloatList
{
@MENUS_VR_SCREEN_DISTANCE_NEAR 1.5
@MENUS_VR_SCREEN_DISTANCE_MEDIUM 2.5
@MENUS_VR_SCREEN_DISTANCE_FAR 3.5
}
rect 305 311 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textaligny -2
font 2
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 1
descText @MENUS_VR_SCREEN_DISTANCE_DESC
action
{
play sound/interface/button1
}
mouseenter
{
show highlight8
@ -1298,15 +1337,9 @@
{
name none
group comfortcontrols
type ITEM_TYPE_MULTI
text @MENUS_VR_SCREEN_DISTANCE_ITEM
cvar "vr_screen_dist"
cvarFloatList
{
@MENUS_VR_SCREEN_DISTANCE_NEAR 1.5
@MENUS_VR_SCREEN_DISTANCE_MEDIUM 2.5
@MENUS_VR_SCREEN_DISTANCE_FAR 3.5
}
type ITEM_TYPE_SLIDER
text @MENUS_VR_HEIGHT_ADJUST_ITEM
cvarfloat "cg_heightAdjust" 0 0 1
rect 305 331 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
@ -1316,7 +1349,7 @@
forecolor 1 1 1 1
visible 0
// appearance_slot 1
descText @MENUS_VR_SCREEN_DISTANCE_DESC
descText @MENUS_VR_HEIGHT_ADJUST_DESC
action
{
play sound/interface/button1
@ -1337,9 +1370,9 @@
{
name none
group comfortcontrols
type ITEM_TYPE_SLIDER
text @MENUS_VR_HEIGHT_ADJUST_ITEM
cvarfloat "cg_heightAdjust" 0 0 1
type ITEM_TYPE_YESNO
text @MENUS_VR_CROUCH_TOGGLE_ITEM
cvar "vr_crouch_toggle"
rect 305 351 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
@ -1349,7 +1382,7 @@
forecolor 1 1 1 1
visible 0
// appearance_slot 1
descText @MENUS_VR_HEIGHT_ADJUST_DESC
descText @MENUS_VR_CROUCH_TOGGLE_DESC
action
{
play sound/interface/button1
@ -1370,33 +1403,38 @@
{
name none
group comfortcontrols
type ITEM_TYPE_YESNO
text @MENUS_VR_CROUCH_TOGGLE_ITEM
cvar "vr_crouch_toggle"
type ITEM_TYPE_MULTI
text @MENUS_VR_CROUCH_IRL_ITEM
cvar "vr_irl_crouch_enabled"
cvarFloatList
{
@MENUS0_NO 0
@MENUS_VR_CROUCH_IRL_1ST_PERSON 1
@MENUS0_YES 2
}
rect 305 371 300 20
textalign ITEM_ALIGN_RIGHT
textalignx 151
textalignx 151
textaligny -2
font 2
textscale 0.8
forecolor 1 1 1 1
visible 0
// appearance_slot 1
descText @MENUS_VR_CROUCH_TOGGLE_DESC
// appearance_slot 3
descText @MENUS_VR_CROUCH_IRL_DESC
action
{
play sound/interface/button1
}
mouseenter
{
{
show highlight11
}
mouseexit
{
hide highlight11
}
}
}