/// <summary> /// Updates the state of the buttons in the Remote /// </summary> /// <param name="hmd">The HMD handler</param> internal void Update(Hmd hmd) { OVRTypes.InputState inputState = hmd.GetInputState(OVRTypes.ControllerType.Remote); this.IsConnected = inputState.ControllerType == OVRTypes.ControllerType.Remote; this.Up = (inputState.Buttons & (uint)OVRTypes.Button.Up) != 0 ? ButtonState.Pressed : ButtonState.Released; this.Down = (inputState.Buttons & (uint)OVRTypes.Button.Down) != 0 ? ButtonState.Pressed : ButtonState.Released; this.Left = (inputState.Buttons & (uint)OVRTypes.Button.Left) != 0 ? ButtonState.Pressed : ButtonState.Released; this.Right = (inputState.Buttons & (uint)OVRTypes.Button.Right) != 0 ? ButtonState.Pressed : ButtonState.Released; this.Start = (inputState.Buttons & (uint)OVRTypes.Button.Enter) != 0 ? ButtonState.Pressed : ButtonState.Released; this.Back = (inputState.Buttons & (uint)OVRTypes.Button.Back) != 0 ? ButtonState.Pressed : ButtonState.Released; }
/// <summary> /// Updates the state of the buttons and poses in the Oculus Touch controllers /// </summary> /// <param name="hmd">The HMD handler</param> internal void Update(Hmd hmd) { OVRTypes.InputState inputState = hmd.GetInputState(OVRTypes.ControllerType.Touch); this.controllerType = inputState.ControllerType; this.IsConnected = this.controllerType == OVRTypes.ControllerType.Touch; // Update button state this.A = (inputState.Buttons & (uint)OVRTypes.Button.A) != 0 ? ButtonState.Pressed : ButtonState.Released; this.B = (inputState.Buttons & (uint)OVRTypes.Button.B) != 0 ? ButtonState.Pressed : ButtonState.Released; this.RThumb = (inputState.Buttons & (uint)OVRTypes.Button.RThumb) != 0 ? ButtonState.Pressed : ButtonState.Released; this.X = (inputState.Buttons & (uint)OVRTypes.Button.X) != 0 ? ButtonState.Pressed : ButtonState.Released; this.Y = (inputState.Buttons & (uint)OVRTypes.Button.Y) != 0 ? ButtonState.Pressed : ButtonState.Released; this.LThumb = (inputState.Buttons & (uint)OVRTypes.Button.LThumb) != 0 ? ButtonState.Pressed : ButtonState.Released; this.Start = (inputState.Buttons & (uint)OVRTypes.Button.Enter) != 0 ? ButtonState.Pressed : ButtonState.Released; // Update touch state this.TouchState.A = (inputState.Touches & (uint)OVRTypes.Touch.A) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.B = (inputState.Touches & (uint)OVRTypes.Touch.B) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.RThumb = (inputState.Touches & (uint)OVRTypes.Touch.RThumb) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.RIndexTrigger = (inputState.Touches & (uint)OVRTypes.Touch.RIndexTrigger) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.X = (inputState.Touches & (uint)OVRTypes.Touch.X) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.Y = (inputState.Touches & (uint)OVRTypes.Touch.Y) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.LThumb = (inputState.Touches & (uint)OVRTypes.Touch.LThumb) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.LIndexTrigger = (inputState.Touches & (uint)OVRTypes.Touch.LIndexTrigger) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.RIndexPointing = (inputState.Touches & (uint)OVRTypes.Touch.RIndexPointing) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.RThumbUp = (inputState.Touches & (uint)OVRTypes.Touch.RThumbUp) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.LIndexPointing = (inputState.Touches & (uint)OVRTypes.Touch.LIndexPointing) != 0 ? ButtonState.Pressed : ButtonState.Released; this.TouchState.LThumbUp = (inputState.Touches & (uint)OVRTypes.Touch.LThumbUp) != 0 ? ButtonState.Pressed : ButtonState.Released; // Update axes this.LeftIndexTrigger = inputState.IndexTrigger[(int)OVRTypes.HandType.Left]; this.RightIndexTrigger = inputState.IndexTrigger[(int)OVRTypes.HandType.Right]; this.LeftHandTrigger = inputState.HandTrigger[(int)OVRTypes.HandType.Left]; this.RightHandTrigger = inputState.HandTrigger[(int)OVRTypes.HandType.Right]; this.LeftThumbstick.X = inputState.Thumbstick[(int)OVRTypes.HandType.Left].X; this.LeftThumbstick.Y = inputState.Thumbstick[(int)OVRTypes.HandType.Left].Y; this.RightThumbstick.X = inputState.Thumbstick[(int)OVRTypes.HandType.Right].X; this.RightThumbstick.Y = inputState.Thumbstick[(int)OVRTypes.HandType.Right].Y; }