How to support any headset or input device with VRIF.
VRIF uses the TrackedPoseDriver by default to track the headset and controller position / rotations. Pico uses a custom setup, not driven by TrackedPoseDriver.
If you want to use a custom tracking system, all you need to do is make sure the CenterEyeAnchor Transform is moved with the head, and the LeftControllerAnchor / RightControllerAnchor Transforms move along with the controller.
VRIF supports a multitude of input systems out of the box, including XRInput, OVRInput, SteamVR, and Pico. Inputs can even be simulated on the Desktop, or driven purely from script.
Inputs are sent through an InputBridge component - this gives us a central location to read and write input. Input events are then sent to Grabbable objects, or read from various sources, including C# script or Unity Events. Some of these inputs include Grip, Trigger, Thumbstick, Trackpad, Button 1, Button 2 (Or A, B / X, Y on some devices), and Menu / Back button.
You can easily set these values from script without having to modify the InputBridge. This allows you to support just about any SDK without having to modify Core VRIF files. To do this, simply register to the OnInputsUpdated event, and assign the public variables there. This is how the VR Emulator works, for example. Take a look at that script for a guide on how to set up your own input handler.