/// <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;
        }
예제 #2
0
        /// <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;
        }