Ejemplo n.º 1
0
 public void UpdateInput(Passer.VRControllerState_t controllerState)
 {
     pogo3 = GetPress(controllerState, Passer.EVRButtonId.k_EButton_Grip);
     pogo4 = GetPress(controllerState, Passer.EVRButtonId.k_EButton_SteamVR_Trigger);
     pogo5 = GetPress(controllerState, Passer.EVRButtonId.k_EButton_SteamVR_Touchpad);
     pogo6 = GetPress(controllerState, Passer.EVRButtonId.k_EButton_ApplicationMenu);
 }
        private Vector2 GetAxis(Passer.VRControllerState_t state, Passer.EVRButtonId button)
        {
            var axisId = (uint)button - (uint)Passer.EVRButtonId.k_EButton_Axis0;

            switch (axisId)
            {
            case 0: return(new Vector2(state.rAxis0.x, state.rAxis0.y));

            case 1: return(new Vector2(state.rAxis1.x, state.rAxis1.y));

            case 2: return(new Vector2(state.rAxis2.x, state.rAxis2.y));

            case 3: return(new Vector2(state.rAxis3.x, state.rAxis3.y));

            case 4: return(new Vector2(state.rAxis4.x, state.rAxis4.y));
            }
            return(Vector2.zero);
        }
        private float GetAxisX(Passer.VRControllerState_t state, Passer.EVRButtonId button)
        {
            var axisId = (uint)button - (uint)Passer.EVRButtonId.k_EButton_Axis0;

            switch (axisId)
            {
            case 0: return(state.rAxis0.x);

            case 1: return(state.rAxis1.x);

            case 2: return(state.rAxis2.x);

            case 3: return(state.rAxis3.x);

            case 4: return(state.rAxis4.x);
            }
            return(0);
        }
Ejemplo n.º 4
0
        public override void UpdateComponent()
        {
            if (OpenVRDevice.status == Status.Unavailable)
            {
                status = Status.Unavailable;
            }

            if (trackerId < 0)
            {
                FindOutermostController(isLeft);
            }

            if (OpenVRDevice.GetConfidence(trackerId) == 0)
            {
                status             = OpenVRDevice.IsPresent(trackerId) ? Status.Present : Status.Unavailable;
                positionConfidence = 0;
                rotationConfidence = 0;
                gameObject.SetActive(false);
                return;
            }

            status = Status.Tracking;
            Vector3    localSensorPosition = Target.ToVector3(OpenVRDevice.GetPosition(trackerId));
            Quaternion localSensorRotation = Target.ToQuaternion(OpenVRDevice.GetRotation(trackerId));

            transform.position = trackerTransform.TransformPoint(localSensorPosition);
            transform.rotation = trackerTransform.rotation * localSensorRotation;

            positionConfidence = OpenVRDevice.GetConfidence(trackerId);
            rotationConfidence = OpenVRDevice.GetConfidence(trackerId);
            gameObject.SetActive(true);

            Passer.VRControllerState_t controllerState = new Passer.VRControllerState_t();
            var  system = Passer.OpenVR.System;
            uint controllerStateSize = (uint)Marshal.SizeOf(typeof(Passer.VRControllerState_t));
            bool newControllerState  = system.GetControllerState((uint)trackerId, ref controllerState, controllerStateSize);

            if (system != null && newControllerState)
            {
                UpdateInput(controllerState);
            }

            Skeletal();
        }
Ejemplo n.º 5
0
        public void UpdateInput(Passer.VRControllerState_t controllerState)
        {
            Vector2 joystickPosition = GetVector2(actionHandleJoystick);
            float   joystickButton   =
                GetBoolean(actionHandleJoystickPress) ? 1 :
                GetBoolean(actionHandleJoystickTouch) ? 0 : -1;

            joystick = new Vector3(joystickPosition.x, joystickPosition.y, joystickButton);

            Vector2 touchPadPosition = GetVector2(actionHandleTouchpad);
            float   touchPadButton   =
                GetBoolean(actionHandleTouchpadTouch) ?
                (GetBoolean(actionHandleTouchpadClick) ? 1 :
                 GetFloat(actionHandleTouchpadPress)) : -1;

            touchpad = new Vector3(touchPadPosition.x, touchPadPosition.y, touchPadButton);

            float triggerPress = GetFloat(actionHandleTrigger);

            trigger =
                triggerPress == 0 && !GetBoolean(actionHandleTriggerTouch) ?
                -1 : triggerPress;

            float gripPress = GetBoolean(actionHandleGripClick) ? 1 : GetFloat(actionHandleGrip);

            grip =
                gripPress == 0 && !GetBoolean(actionHandleGripTouch) ?
                -1 : gripPress;
            //(GetBoolean(actionHandleGripClick) ? 1 : GetFloat(actionHandleGrip))
            // : -1;

            aButton =
                GetBoolean(actionHandleButtonA) ? 1 :
                GetBoolean(actionHandleButtonATouch) ? 0 : -1;
            bButton =
                GetBoolean(actionHandleButtonB) ? 1 :
                GetBoolean(actionHandleButtonBTouch) ? 0 : -1;
        }
        public void UpdateInput(Passer.VRControllerState_t controllerState)
        {
            Vector2 thumbstickPosition = GetAxis(controllerState, Passer.EVRButtonId.k_EButton_Axis2);
            Vector2 touchPadPosition   = GetAxis(controllerState, Passer.EVRButtonId.k_EButton_SteamVR_Touchpad);

            touchPadPosition += thumbstickPosition;

            float touchPadButton =
                GetPress(controllerState, Passer.EVRButtonId.k_EButton_SteamVR_Touchpad) ? 1 :
                (GetTouch(controllerState, Passer.EVRButtonId.k_EButton_SteamVR_Touchpad) ? 0 : -1);

            touchPad = new Vector3(touchPadPosition.x, touchPadPosition.y, touchPadButton);

            gripButton = GetPress(controllerState, Passer.EVRButtonId.k_EButton_Grip) ? 1 : 0;
            trigger    = GetAxisX(controllerState, Passer.EVRButtonId.k_EButton_SteamVR_Trigger);

            menuButton =
                GetPress(controllerState, Passer.EVRButtonId.k_EButton_ApplicationMenu) ? 1 :
                (GetTouch(controllerState, Passer.EVRButtonId.k_EButton_ApplicationMenu) ? 0 : -1);
            aButton =
                GetPress(controllerState, Passer.EVRButtonId.k_EButton_A) ? 1 :
                (GetTouch(controllerState, Passer.EVRButtonId.k_EButton_A) ? 0 : -1);
        }
 private bool GetTouch(Passer.VRControllerState_t controllerState, Passer.EVRButtonId button)
 {
     return((controllerState.ulButtonTouched & ButtonMaskFromId(button)) != 0);
 }
Ejemplo n.º 8
0
        public override void UpdateComponent()
        {
#if hSTEAMVR
            if (SteamDevice.status == Status.Unavailable)
            {
                status = Status.Unavailable;
            }

            if (SteamDevice.GetConfidence(trackerId) == 0)
            {
                status             = SteamDevice.IsPresent(trackerId) ? Status.Present : Status.Unavailable;
                positionConfidence = 0;
                rotationConfidence = 0;
                gameObject.SetActive(false);
                return;
            }

            status = Status.Tracking;
            Vector3    localSensorPosition = Target.ToVector3(SteamDevice.GetPosition(trackerId));
            Quaternion localSensorRotation = Target.ToQuaternion(SteamDevice.GetRotation(trackerId)) * Quaternion.Euler(270, 0, 180);
            transform.position = trackerTransform.TransformPoint(localSensorPosition);
            transform.rotation = trackerTransform.rotation * localSensorRotation;

            positionConfidence = SteamDevice.GetConfidence(trackerId);
            rotationConfidence = SteamDevice.GetConfidence(trackerId) * 0.6F;
#elif hOPENVR
            if (OpenVRDevice.status == Status.Unavailable)
            {
                status = Status.Unavailable;
            }

            if (OpenVRDevice.GetConfidence(trackerId) == 0)
            {
                status             = OpenVRDevice.IsPresent(trackerId) ? Status.Present : Status.Unavailable;
                positionConfidence = 0;
                rotationConfidence = 0;
                gameObject.SetActive(false);
                return;
            }

            status = Status.Tracking;
            Vector3    localSensorPosition = Target.ToVector3(OpenVRDevice.GetPosition(trackerId));
            Quaternion localSensorRotation = Target.ToQuaternion(OpenVRDevice.GetRotation(trackerId)) * Quaternion.Euler(270, 0, 180);
            transform.position = trackerTransform.TransformPoint(localSensorPosition);
            transform.rotation = trackerTransform.rotation * localSensorRotation;

            positionConfidence = OpenVRDevice.GetConfidence(trackerId);
            rotationConfidence = OpenVRDevice.GetConfidence(trackerId);
#endif

            gameObject.SetActive(true);

            Passer.VRControllerState_t controllerState = new Passer.VRControllerState_t();
            var  system = Passer.OpenVR.System;
            uint controllerStateSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(Passer.VRControllerState_t));
            bool newControllerState  = system.GetControllerState((uint)trackerId, ref controllerState, controllerStateSize);
            if (system != null && newControllerState)
            {
                UpdateInput(controllerState);
            }
        }