예제 #1
0
        public override float GetAxis(XRNodeState node, InputAxis axis)
        {
            var controller = GetController(node);

            OVRPlugin.ControllerState4 state = OVRPlugin.GetControllerState4((uint)controller);

            switch (axis)
            {
            case InputAxis.LeftClick:
                return(controller == OVRInput.Controller.LTouch ? state.LIndexTrigger : state.RIndexTrigger);

            case InputAxis.RightClick:
                return(controller == OVRInput.Controller.LTouch ? state.LHandTrigger : state.RHandTrigger);

            case InputAxis.MiddleClick: {
                var buttonId = controller == OVRInput.Controller.LTouch ? 0x00000400 : 0x00000004;                 //see enum ovrButton_ in OVR_CAPI.h
                return((state.Buttons & buttonId) != 0 ? 1 : 0);
            }

            case InputAxis.JoyStickX:
            case InputAxis.JoyStickY: {
                var joy = controller == OVRInput.Controller.LTouch ? state.LThumbstick : state.RThumbstick;
                return(axis == InputAxis.JoyStickX ? joy.x : joy.y);
            }

            default:
                return(0);
            }
        }
예제 #2
0
        protected override float GetAxisValue(XRNodeState node, InputAxis axis)
        {
            var controller = GetController(node);

            OVRPlugin.ControllerState4 state = OVRPlugin.GetControllerState4((uint)controller);

            switch (axis)
            {
            case InputAxis.MainTrigger:
                return(controller == OVRInput.Controller.LTouch ? state.LIndexTrigger : state.RIndexTrigger);

            case InputAxis.Grip:
                return(controller == OVRInput.Controller.LTouch ? state.LHandTrigger : state.RHandTrigger);

            case InputAxis.JoypadX:
            case InputAxis.JoypadY: {
                var joy = controller == OVRInput.Controller.LTouch ? state.LThumbstick : state.RThumbstick;
                return(axis == InputAxis.JoypadX ? joy.x : joy.y);
            }

            case InputAxis.Joypad: {
                var buttonId = controller == OVRInput.Controller.LTouch ? 0x00000400 : 0x00000004;                 //see enum ovrButton_ in OVER_CAPI.h
                return((state.Buttons & buttonId) != 0 ? 1 : 0);
            }

            default:
                return(0);
            }
        }