IdentifyTrackers.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.Diagnostics;
  3. using System.Text;
  4. using UnityEngine;
  5. using Valve.VR;
  6. using Debug = UnityEngine.Debug;
  7. namespace Tracking
  8. {
  9. public class IdentifyTrackers : MonoBehaviour
  10. {
  11. private void OnEnable() {
  12. SteamVR_Events.DeviceConnected.Listen(OnDeviceConnected);
  13. }
  14. private void OnDeviceConnected(int index, bool connected)
  15. {
  16. if (index < 0) return;
  17. if(connected) {
  18. if(OpenVR.System != null) {
  19. //lets figure what type of device got connected
  20. ETrackedDeviceClass deviceClass = OpenVR.System.GetTrackedDeviceClass((uint)index);
  21. ETrackedPropertyError error = ETrackedPropertyError.TrackedProp_UnknownProperty;
  22. StringBuilder serialNumberBuilder = new StringBuilder();
  23. var result = OpenVR.System.GetStringTrackedDeviceProperty((uint)index,
  24. ETrackedDeviceProperty.Prop_ControllerType_String, serialNumberBuilder, 32, ref error);
  25. if(deviceClass == ETrackedDeviceClass.Controller) {
  26. Debug.Log("Controller got connected at index:" + index);
  27. } else if(deviceClass == ETrackedDeviceClass.GenericTracker) {
  28. Debug.Log("Tracker got connected at index:" + index);
  29. Debug.Log("With serial number:" + serialNumberBuilder.ToString());
  30. }
  31. }
  32. else
  33. {
  34. Debug.LogWarning("No VR System");
  35. }
  36. }
  37. }
  38. }
  39. }