2021년 4학년 1학기 기업연계프로젝트2 컴퓨터소프트웨어공학과 <원광투어팀> 팀장 : 송유진 팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
3.7 KiB

5 years ago
  1. //========= Copyright 2016-2020, HTC Corporation. All rights reserved. ===========
  2. using HTC.UnityPlugin.VRModuleManagement;
  3. using System;
  4. using UnityEngine;
  5. namespace HTC.UnityPlugin.Vive
  6. {
  7. /// <summary>
  8. /// Defines roles for those devices that have tracking data
  9. /// </summary>
  10. [ViveRoleEnum((int)DeviceRole.Invalid)]
  11. public enum DeviceRole
  12. {
  13. Invalid = -2,
  14. Hmd,
  15. Device1,
  16. Device2,
  17. Device3,
  18. Device4,
  19. Device5,
  20. Device6,
  21. Device7,
  22. Device8,
  23. Device9,
  24. Device10,
  25. Device11,
  26. Device12,
  27. Device13,
  28. Device14,
  29. Device15,
  30. [HideInInspector]
  31. [Obsolete("Use HandRole.RightHand instead")]
  32. RightHand = Device1,
  33. [HideInInspector]
  34. [Obsolete("Use HandRole.LeftHand instead")]
  35. LeftHand,
  36. [HideInInspector]
  37. [Obsolete("Use HandRole.Controller3 instead")]
  38. Controller3,
  39. [HideInInspector]
  40. [Obsolete("Use HandRole.Controller4 instead")]
  41. Controller4,
  42. [HideInInspector]
  43. [Obsolete("Use HandRole.Controller5 instead")]
  44. Controller5,
  45. [HideInInspector]
  46. [Obsolete("Use HandRole.Controller6 instead")]
  47. Controller6,
  48. [HideInInspector]
  49. [Obsolete("Use HandRole.Controller7 instead")]
  50. Controller7,
  51. [HideInInspector]
  52. [Obsolete("Use HandRole.Controller8 instead")]
  53. Controller8,
  54. [HideInInspector]
  55. [Obsolete("Use HandRole.Controller9 instead")]
  56. Controller9,
  57. [HideInInspector]
  58. [Obsolete("Use HandRole.Controller10 instead")]
  59. Controller10,
  60. [HideInInspector]
  61. [Obsolete("Use HandRole.Controller11 instead")]
  62. Controller11,
  63. [HideInInspector]
  64. [Obsolete("Use HandRole.Controller12 instead")]
  65. Controller12,
  66. [HideInInspector]
  67. [Obsolete("Use HandRole.Controller13 instead")]
  68. Controller13,
  69. [HideInInspector]
  70. [Obsolete("Use HandRole.Controller14 instead")]
  71. Controller14,
  72. [HideInInspector]
  73. [Obsolete("Use HandRole.Controller15 instead")]
  74. Controller15,
  75. }
  76. public class DeviceRoleHandler : ViveRole.MapHandler<DeviceRole>
  77. {
  78. public override bool BlockBindings { get { return true; } }
  79. public override void OnAssignedAsCurrentMapHandler() { Refresh(); }
  80. public override void OnConnectedDeviceChanged(uint deviceIndex, VRModuleDeviceClass deviceClass, string deviceSN, bool connected)
  81. {
  82. if (connected)
  83. {
  84. if (RoleMap.IsDeviceBound(deviceSN)) { return; }
  85. }
  86. else
  87. {
  88. return;
  89. }
  90. Refresh();
  91. }
  92. public override void OnBindingChanged(string deviceSN, bool previousIsBound, DeviceRole previousRole, bool currentIsBound, DeviceRole currentRole)
  93. {
  94. uint deviceIndex;
  95. if (!VRModule.TryGetConnectedDeviceIndex(deviceSN, out deviceIndex)) { return; }
  96. Refresh();
  97. }
  98. public void Refresh()
  99. {
  100. var deviceIndex = 0u;
  101. for (var role = RoleInfo.MinValidRole; role <= RoleInfo.MaxValidRole && deviceIndex < VRModule.MAX_DEVICE_COUNT; ++role, ++deviceIndex)
  102. {
  103. if (!RoleInfo.IsValidRole(role)) { continue; }
  104. if (VRModule.GetCurrentDeviceState(deviceIndex).isConnected)
  105. {
  106. MappingRoleIfUnbound(role, deviceIndex);
  107. }
  108. else
  109. {
  110. UnmappingRole(role);
  111. }
  112. }
  113. }
  114. }
  115. }