openvr
openvr copied to clipboard
Simple Question: how do I find out which controllers are being used?
how do I find out which controllers are being used in code in Unity?
Can't find this anywhere.
You can use GetStringTrackedDeviceProperty and fetch Prop_ModelNumber_String.
Thanks. I ended up using this. I take it it will work just as well.
void OnEnable() {
InputDevices.deviceConnected += DeviceConnected;
List<InputDevice> devices = new List<InputDevice>();
InputDevices.GetDevices(devices);
foreach (var device in devices)
DeviceConnected(device);
}
void OnDisable() {
InputDevices.deviceConnected -= DeviceConnected;
}
void DeviceConnected(InputDevice device) {
string name = "";
// The Left Hand
if ((device.characteristics & InputDeviceCharacteristics.Left) != 0) {
//Use device.name here to identify the current Left Handed Device
print("Left: " + device.name);
name = device.name;
}
// The Right hand
else if ((device.characteristics & InputDeviceCharacteristics.Right) != 0) {
//Use device.Name here to identify the current Right Handed Device
print("Right: " + device.name);
name = device.name;
}
if (name.Contains("quest", StringComparison.OrdinalIgnoreCase) || name.Contains("rift", StringComparison.OrdinalIgnoreCase)) {
Menu.menu.controllerHasMenuButton = false;
Menu.menu.controllerIsVive = false;
Menu.menu.controllerIsIndex = false;
} else if (name.Contains("vive", StringComparison.OrdinalIgnoreCase) && !name.Contains("cosmos", StringComparison.OrdinalIgnoreCase)) {
Menu.menu.controllerHasMenuButton = true;
Menu.menu.controllerIsVive = true;
Menu.menu.controllerIsIndex = false;
} else if (name.Contains("index", StringComparison.OrdinalIgnoreCase)) {
Menu.menu.controllerHasMenuButton = false;
Menu.menu.controllerIsVive = false;
Menu.menu.controllerIsIndex = true;
} else {
Menu.menu.controllerHasMenuButton = true;
Menu.menu.controllerIsVive = false;
Menu.menu.controllerIsIndex = false;
}
}
I believe this is the wrong forum to be discussing this topic, this looks like you're using some kind of wrapper on top of openvr to achieve this.