Use this file to discover all available pages before exploring further.
Experimental’s input system is split into two layers. InputLib reads raw hardware state from Gorilla Tag’s existing controller pollers and SteamVR actions, exposing clean boolean and Vector2 properties. InputSelectors sits on top of that, letting each mod pick which physical button it wants to use at runtime via an index the player selects in the UI.
InputLib is a static class whose properties wrap the lowest-level controller queries available in Gorilla Tag. Every property evaluates live — there is no caching — so reading the same property twice in one frame always reflects the same physical state.
On HTC Vive wands, there is only a single face button per controller. That button registers as both the primary and secondary input simultaneously, meaning both A+B (right) or both X+Y (left) report true when the Vive button is pressed.
InputSelectors is a static class that exposes one index property and one pressed property (or axis property) per mod. The index is set by the player in the mod’s UI dropdown; the pressed/axis property evaluates the corresponding InputLib entry at runtime.Each mod maintains its own isolated binding so two mods can safely use different buttons at the same time.
The following mods use a bool pressed signal. Unless noted otherwise, they share the same 10-option list:
10-option list (index 0–9): Right Grab, Left Grab, Right Trigger, Left Trigger, RightJoyStick (Hold), LeftJoyStick (Hold), A Button, B Button, X Button, Y Button
PullMod
Property
Type
Purpose
PSelectedIndex
int
Active binding index (0–9)
PPressed
bool
true when the selected button is held
Set PSelectedIndex from the UI dropdown; read PPressed each FixedUpdate to trigger pull behavior.
VelMax
Property
Type
Purpose
VSelectedIndex
int
Active binding index (0–9)
VPressed
bool
true when the selected button is held
Same 10-option list as PullMod. Controls when the velocity cap is actively enforced.
WallWalk
Uses a 4-option combo list — two buttons must be held simultaneously:
Index
Combo
0
Left Trigger & Right Trigger
1
Left Grab & Right Grab
2
Left Joystick Click & Right Joystick Click
3
Left Buttons (X or Y) & Right Buttons (A or B)
Property
Type
Purpose
UseWalkIndex
int
Active combo index (0–3)
UseWalkPressed
bool
true when both buttons in the combo are held
TurnMod (Left Hand)
4-option list for the left-hand activation button:
Index
Button
0
X Button
1
Y Button
2
Left Grab
3
Left Trigger
Property
Type
Purpose
ATLSelectedIndex
int
Active binding index (0–3)
ATLPressed
bool
true when the selected left-hand button is held
TurnMod (Right Hand)
4-option list for the right-hand activation button:
// In a FixedUpdate method — check if PullMod's configured button is heldif (InputSelectors.PPressed){ // apply pull force}// Read the PSA joystick axis directlyVector2 moveInput = InputSelectors.Axis;// Read a raw InputLib value without going through InputSelectorsif (InputLib.RightGrab && InputLib.LeftGrab){ // both grips held}
Prefer InputSelectors over direct InputLib calls inside mod logic. Using the selector means the player can rebind the action from the UI without requiring a code change.