Oculus.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. #if UNITY_INPUT_SYSTEM_ENABLE_XR && !DISABLE_BUILTIN_INPUT_SYSTEM_OCULUS && !PACKAGE_DOCS_GENERATION
  2. using UnityEngine.InputSystem;
  3. using UnityEngine.Scripting;
  4. using UnityEngine.InputSystem.XR;
  5. using UnityEngine.InputSystem.Controls;
  6. using UnityEngine.InputSystem.Layouts;
  7. namespace Unity.XR.Oculus.Input
  8. {
  9. /// <summary>
  10. /// An Oculus VR headset (such as the Oculus Rift series of devices).
  11. /// </summary>
  12. [InputControlLayout(displayName = "Oculus Headset")]
  13. [Preserve]
  14. public class OculusHMD : XRHMD
  15. {
  16. [Preserve]
  17. [InputControl]
  18. [InputControl(name = "trackingState", layout = "Integer", aliases = new[] { "devicetrackingstate" })]
  19. [InputControl(name = "isTracked", layout = "Button", aliases = new[] { "deviceistracked" })]
  20. public ButtonControl userPresence { get; private set; }
  21. [Preserve]
  22. [InputControl(noisy = true)]
  23. public Vector3Control deviceAngularVelocity { get; private set; }
  24. [Preserve]
  25. [InputControl(noisy = true)]
  26. public Vector3Control deviceAcceleration { get; private set; }
  27. [Preserve]
  28. [InputControl(noisy = true)]
  29. public Vector3Control deviceAngularAcceleration { get; private set; }
  30. [Preserve]
  31. [InputControl(noisy = true)]
  32. public Vector3Control leftEyeAngularVelocity { get; private set; }
  33. [Preserve]
  34. [InputControl(noisy = true)]
  35. public Vector3Control leftEyeAcceleration { get; private set; }
  36. [Preserve]
  37. [InputControl(noisy = true)]
  38. public Vector3Control leftEyeAngularAcceleration { get; private set; }
  39. [Preserve]
  40. [InputControl(noisy = true)]
  41. public Vector3Control rightEyeAngularVelocity { get; private set; }
  42. [Preserve]
  43. [InputControl(noisy = true)]
  44. public Vector3Control rightEyeAcceleration { get; private set; }
  45. [Preserve]
  46. [InputControl(noisy = true)]
  47. public Vector3Control rightEyeAngularAcceleration { get; private set; }
  48. [Preserve]
  49. [InputControl(noisy = true)]
  50. public Vector3Control centerEyeAngularVelocity { get; private set; }
  51. [Preserve]
  52. [InputControl(noisy = true)]
  53. public Vector3Control centerEyeAcceleration { get; private set; }
  54. [Preserve]
  55. [InputControl(noisy = true)]
  56. public Vector3Control centerEyeAngularAcceleration { get; private set; }
  57. protected override void FinishSetup()
  58. {
  59. base.FinishSetup();
  60. userPresence = GetChildControl<ButtonControl>("userPresence");
  61. deviceAngularVelocity = GetChildControl<Vector3Control>("deviceAngularVelocity");
  62. deviceAcceleration = GetChildControl<Vector3Control>("deviceAcceleration");
  63. deviceAngularAcceleration = GetChildControl<Vector3Control>("deviceAngularAcceleration");
  64. leftEyeAngularVelocity = GetChildControl<Vector3Control>("leftEyeAngularVelocity");
  65. leftEyeAcceleration = GetChildControl<Vector3Control>("leftEyeAcceleration");
  66. leftEyeAngularAcceleration = GetChildControl<Vector3Control>("leftEyeAngularAcceleration");
  67. rightEyeAngularVelocity = GetChildControl<Vector3Control>("rightEyeAngularVelocity");
  68. rightEyeAcceleration = GetChildControl<Vector3Control>("rightEyeAcceleration");
  69. rightEyeAngularAcceleration = GetChildControl<Vector3Control>("rightEyeAngularAcceleration");
  70. centerEyeAngularVelocity = GetChildControl<Vector3Control>("centerEyeAngularVelocity");
  71. centerEyeAcceleration = GetChildControl<Vector3Control>("centerEyeAcceleration");
  72. centerEyeAngularAcceleration = GetChildControl<Vector3Control>("centerEyeAngularAcceleration");
  73. }
  74. }
  75. /// <summary>
  76. /// An Oculus Touch controller.
  77. /// </summary>
  78. [Preserve]
  79. [InputControlLayout(displayName = "Oculus Touch Controller", commonUsages = new[] { "LeftHand", "RightHand" })]
  80. public class OculusTouchController : XRControllerWithRumble
  81. {
  82. [Preserve]
  83. [InputControl(aliases = new[] { "Primary2DAxis", "Joystick" })]
  84. public Vector2Control thumbstick { get; private set; }
  85. [Preserve]
  86. [InputControl]
  87. public AxisControl trigger { get; private set; }
  88. [Preserve]
  89. [InputControl]
  90. public AxisControl grip { get; private set; }
  91. [Preserve]
  92. [InputControl(aliases = new[] { "A", "X", "Alternate" })]
  93. public ButtonControl primaryButton { get; private set; }
  94. [Preserve]
  95. [InputControl(aliases = new[] { "B", "Y", "Primary" })]
  96. public ButtonControl secondaryButton { get; private set; }
  97. [Preserve]
  98. [InputControl(aliases = new[] { "GripButton" })]
  99. public ButtonControl gripPressed { get; private set; }
  100. [Preserve]
  101. [InputControl]
  102. public ButtonControl start { get; private set; }
  103. [Preserve]
  104. [InputControl(aliases = new[] { "JoystickOrPadPressed", "thumbstickClick" })]
  105. public ButtonControl thumbstickClicked { get; private set; }
  106. [Preserve]
  107. [InputControl(aliases = new[] { "ATouched", "XTouched", "ATouch", "XTouch" })]
  108. public ButtonControl primaryTouched { get; private set; }
  109. [Preserve]
  110. [InputControl(aliases = new[] { "BTouched", "YTouched", "BTouch", "YTouch" })]
  111. public ButtonControl secondaryTouched { get; private set; }
  112. [Preserve]
  113. [InputControl(aliases = new[] { "indexTouch", "indexNearTouched" })]
  114. public AxisControl triggerTouched { get; private set; }
  115. [Preserve]
  116. [InputControl(aliases = new[] { "indexButton", "indexTouched" })]
  117. public ButtonControl triggerPressed { get; private set; }
  118. [Preserve]
  119. [InputControl(aliases = new[] { "JoystickOrPadTouched", "thumbstickTouch" })]
  120. [InputControl(name = "trackingState", layout = "Integer", aliases = new[] { "controllerTrackingState" })]
  121. [InputControl(name = "isTracked", layout = "Button", aliases = new[] { "ControllerIsTracked" })]
  122. [InputControl(name = "devicePosition", layout = "Vector3", aliases = new[] { "controllerPosition" })]
  123. [InputControl(name = "deviceRotation", layout = "Quaternion", aliases = new[] { "controllerRotation" })]
  124. public ButtonControl thumbstickTouched { get; private set; }
  125. [Preserve]
  126. [InputControl(noisy = true, aliases = new[] { "controllerVelocity" })]
  127. public Vector3Control deviceVelocity { get; private set; }
  128. [Preserve]
  129. [InputControl(noisy = true, aliases = new[] { "controllerAngularVelocity" })]
  130. public Vector3Control deviceAngularVelocity { get; private set; }
  131. [Preserve]
  132. [InputControl(noisy = true, aliases = new[] { "controllerAcceleration" })]
  133. public Vector3Control deviceAcceleration { get; private set; }
  134. [Preserve]
  135. [InputControl(noisy = true, aliases = new[] { "controllerAngularAcceleration" })]
  136. public Vector3Control deviceAngularAcceleration { get; private set; }
  137. protected override void FinishSetup()
  138. {
  139. base.FinishSetup();
  140. thumbstick = GetChildControl<Vector2Control>("thumbstick");
  141. trigger = GetChildControl<AxisControl>("trigger");
  142. triggerTouched = GetChildControl<AxisControl>("triggerTouched");
  143. grip = GetChildControl<AxisControl>("grip");
  144. primaryButton = GetChildControl<ButtonControl>("primaryButton");
  145. secondaryButton = GetChildControl<ButtonControl>("secondaryButton");
  146. gripPressed = GetChildControl<ButtonControl>("gripPressed");
  147. start = GetChildControl<ButtonControl>("start");
  148. thumbstickClicked = GetChildControl<ButtonControl>("thumbstickClicked");
  149. primaryTouched = GetChildControl<ButtonControl>("primaryTouched");
  150. secondaryTouched = GetChildControl<ButtonControl>("secondaryTouched");
  151. thumbstickTouched = GetChildControl<ButtonControl>("thumbstickTouched");
  152. triggerPressed = GetChildControl<ButtonControl>("triggerPressed");
  153. deviceVelocity = GetChildControl<Vector3Control>("deviceVelocity");
  154. deviceAngularVelocity = GetChildControl<Vector3Control>("deviceAngularVelocity");
  155. deviceAcceleration = GetChildControl<Vector3Control>("deviceAcceleration");
  156. deviceAngularAcceleration = GetChildControl<Vector3Control>("deviceAngularAcceleration");
  157. }
  158. }
  159. [Preserve]
  160. public class OculusTrackingReference : TrackedDevice
  161. {
  162. [Preserve]
  163. [InputControl(aliases = new[] { "trackingReferenceTrackingState" })]
  164. public new IntegerControl trackingState { get; private set; }
  165. [Preserve]
  166. [InputControl(aliases = new[] { "trackingReferenceIsTracked" })]
  167. public new ButtonControl isTracked { get; private set; }
  168. protected override void FinishSetup()
  169. {
  170. base.FinishSetup();
  171. trackingState = GetChildControl<IntegerControl>("trackingState");
  172. isTracked = GetChildControl<ButtonControl>("isTracked");
  173. }
  174. }
  175. /// <summary>
  176. /// An Oculus Remote controller.
  177. /// </summary>
  178. [InputControlLayout(displayName = "Oculus Remote")]
  179. [Preserve]
  180. public class OculusRemote : InputDevice
  181. {
  182. [Preserve]
  183. [InputControl]
  184. public ButtonControl back { get; private set; }
  185. [Preserve]
  186. [InputControl]
  187. public ButtonControl start { get; private set; }
  188. [Preserve]
  189. [InputControl]
  190. public Vector2Control touchpad { get; private set; }
  191. protected override void FinishSetup()
  192. {
  193. base.FinishSetup();
  194. back = GetChildControl<ButtonControl>("back");
  195. start = GetChildControl<ButtonControl>("start");
  196. touchpad = GetChildControl<Vector2Control>("touchpad");
  197. }
  198. }
  199. /// <summary>
  200. /// A Standalone VR headset that includes on-headset controls.
  201. /// </summary>
  202. [InputControlLayout(displayName = "Oculus Headset (w/ on-headset controls)")]
  203. [Preserve]
  204. public class OculusHMDExtended : OculusHMD
  205. {
  206. [Preserve]
  207. [InputControl]
  208. public ButtonControl back { get; private set; }
  209. [Preserve]
  210. [InputControl]
  211. public Vector2Control touchpad { get; private set; }
  212. protected override void FinishSetup()
  213. {
  214. base.FinishSetup();
  215. back = GetChildControl<ButtonControl>("back");
  216. touchpad = GetChildControl<Vector2Control>("touchpad");
  217. }
  218. }
  219. /// <summary>
  220. /// A Gear VR controller.
  221. /// </summary>
  222. [Preserve]
  223. [InputControlLayout(displayName = "GearVR Controller", commonUsages = new[] { "LeftHand", "RightHand" })]
  224. public class GearVRTrackedController : XRController
  225. {
  226. [Preserve]
  227. [InputControl]
  228. public Vector2Control touchpad { get; private set; }
  229. [Preserve]
  230. [InputControl]
  231. public AxisControl trigger { get; private set; }
  232. [Preserve]
  233. [InputControl]
  234. public ButtonControl back { get; private set; }
  235. [Preserve]
  236. [InputControl]
  237. public ButtonControl triggerPressed { get; private set; }
  238. [Preserve]
  239. [InputControl]
  240. public ButtonControl touchpadClicked { get; private set; }
  241. [Preserve]
  242. [InputControl]
  243. public ButtonControl touchpadTouched { get; private set; }
  244. [Preserve]
  245. [InputControl(noisy = true)]
  246. public Vector3Control deviceAngularVelocity { get; private set; }
  247. [Preserve]
  248. [InputControl(noisy = true)]
  249. public Vector3Control deviceAcceleration { get; private set; }
  250. [Preserve]
  251. [InputControl(noisy = true)]
  252. public Vector3Control deviceAngularAcceleration { get; private set; }
  253. protected override void FinishSetup()
  254. {
  255. base.FinishSetup();
  256. touchpad = GetChildControl<Vector2Control>("touchpad");
  257. trigger = GetChildControl<AxisControl>("trigger");
  258. back = GetChildControl<ButtonControl>("back");
  259. triggerPressed = GetChildControl<ButtonControl>("triggerPressed");
  260. touchpadClicked = GetChildControl<ButtonControl>("touchpadClicked");
  261. touchpadTouched = GetChildControl<ButtonControl>("touchpadTouched");
  262. deviceAngularVelocity = GetChildControl<Vector3Control>("deviceAngularVelocity");
  263. deviceAcceleration = GetChildControl<Vector3Control>("deviceAcceleration");
  264. deviceAngularAcceleration = GetChildControl<Vector3Control>("deviceAngularAcceleration");
  265. }
  266. }
  267. }
  268. #endif