示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (WaveVR_Controller.Input(mainControllerType).GetPress(WVR_InputId.WVR_InputId_Alias1_Touchpad))
        {
            isTouchpadDown = true;
        }
        else
        {
            isTouchpadDown = false;
        }

        if (WaveVR_Controller.Input(mainControllerType).GetPress(WVR_InputId.WVR_InputId_Alias1_Trigger))
        {
            isTriggerDown = true;
        }
        else
        {
            isTriggerDown = false;
        }

        // Move
        if (isTouchpadDown && !isTriggerDown && actStat == ActionStatus.Walk)   // Move forward
        {
            Move(true);
        }
        if (!isTouchpadDown && isTriggerDown && actStat == ActionStatus.Walk)   // Move backward
        {
            Move(false);
        }
    }
示例#2
0
    private bool isRenderModelNameSameAsPrevious()
    {
        WVR_DeviceType type       = WaveVR_Controller.Input(this.deviceType).DeviceType;
        bool           _connected = WaveVR_Controller.Input(this.deviceType).connected;
        bool           _same      = false;

        if (!_connected)
        {
            return(_same);
        }

        string parameterName = "GetRenderModelName";

        ptrParameterName = Marshal.StringToHGlobalAnsi(parameterName);
        ptrResult        = Marshal.AllocHGlobal(64);
        uint resultVertLength = 64;

        Interop.WVR_GetParameters(type, ptrParameterName, ptrResult, resultVertLength);
        string tmprenderModelName = Marshal.PtrToStringAnsi(ptrResult);

        PrintDebugLog("previous render model: " + renderModelName + ", current render model name: " + tmprenderModelName);

        if (tmprenderModelName == renderModelName)
        {
            _same = true;
        }
        Marshal.FreeHGlobal(ptrParameterName);
        Marshal.FreeHGlobal(ptrResult);

        return(_same);
    }
    // --------- Reticle -------- }

    private void UpdateButtonStates()
    {
        btnPressDown = Input.GetMouseButtonDown((int)EGazeTriggerMouseKey.LeftClick);
        btnPressed   = Input.GetMouseButton((int)EGazeTriggerMouseKey.LeftClick);
        btnPressUp   = Input.GetMouseButtonUp((int)EGazeTriggerMouseKey.LeftClick);
        if (GazeDevice == EGazeTriggerDevice.HMD ||
            GazeDevice == EGazeTriggerDevice.HMDWithNonDominantController ||
            GazeDevice == EGazeTriggerDevice.HMDWithDominantController ||
            GazeDevice == EGazeTriggerDevice.HMDWithTwoControllers)
        {
            btnPressDown |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Head).GetPressDown((WVR_InputId)ButtonToTrigger);
            btnPressed   |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Head).GetPress((WVR_InputId)ButtonToTrigger);
            btnPressUp   |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Head).GetPressUp((WVR_InputId)ButtonToTrigger);
        }

        if (GazeDevice == EGazeTriggerDevice.NonDominantController ||
            GazeDevice == EGazeTriggerDevice.HMDWithNonDominantController ||
            GazeDevice == EGazeTriggerDevice.HMDWithTwoControllers)
        {
            btnPressDown |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.NonDominant).GetPressDown((WVR_InputId)ButtonToTrigger);
            btnPressed   |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.NonDominant).GetPress((WVR_InputId)ButtonToTrigger);
            btnPressUp   |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.NonDominant).GetPressUp((WVR_InputId)ButtonToTrigger);
        }

        if (GazeDevice == EGazeTriggerDevice.DominantController ||
            GazeDevice == EGazeTriggerDevice.HMDWithDominantController ||
            GazeDevice == EGazeTriggerDevice.HMDWithTwoControllers)
        {
            btnPressDown |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).GetPressDown((WVR_InputId)ButtonToTrigger);
            btnPressed   |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).GetPress((WVR_InputId)ButtonToTrigger);
            btnPressUp   |= WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).GetPressUp((WVR_InputId)ButtonToTrigger);
        }
    }
示例#4
0
    public bool SetLeftHandedMode(bool leftHandedInEditor = false)
    {
        if (!this.Initialized)
        {
            return(false);
        }

        bool _changed = false, _lefthanded = false;

#if UNITY_EDITOR && UNITY_ANDROID
        if (Application.isEditor)
        {
            _lefthanded = leftHandedInEditor;
        }
        else
                #endif
        {
            _lefthanded = Interop.WVR_GetDefaultControllerRole() == WVR_DeviceType.WVR_DeviceType_Controller_Left ? true : false;
        }

        if (WaveVR_Controller.IsLeftHanded != _lefthanded)
        {
            _changed = true;

            Log.i(LOG_TAG, Log.CSB.Append("SetLeftHandedMode() Set left-handed mode to ").Append(_lefthanded).ToString());
            WaveVR_Controller.SetLeftHandedMode(_lefthanded);
        }
        else
        {
            Log.i(LOG_TAG, Log.CSB.Append("SetLeftHandedMode() not change default role: ").Append(_lefthanded ? "LEFT." : "RIGHT.").ToString());
        }

        return(_changed);
    }
示例#5
0
    void FixedUpdate()
    {
        if (WaveVR_Controller.Input(curFocusControllerType).GetPressDown(WVR_InputId.WVR_InputId_Alias1_Trigger))
        {
            dragging = false;
            Vector3 fwd_L = m_LeftController.transform.TransformDirection(Vector3.forward);

            Ray ray = new Ray(WaveVR_Controller.Input(curFocusControllerType).transform.pos, fwd_L);
            //var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (GetComponent <Collider>().Raycast(ray, out hit, Mathf.Infinity))
            {
                dragging = true;
            }
        }
        if (WaveVR_Controller.Input(curFocusControllerType).GetPressUp(WVR_InputId.WVR_InputId_Alias1_Trigger))
        {
            dragging = false;
        }
        if (dragging && WaveVR_Controller.Input(curFocusControllerType).GetPress(WVR_InputId.WVR_InputId_Alias1_Trigger))
        {
            Vector3 fwd_L = m_LeftController.transform.TransformDirection(Vector3.forward);
            Ray     ray   = new Ray(WaveVR_Controller.Input(curFocusControllerType).transform.pos, fwd_L);
            //var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (GetComponent <Collider>().Raycast(ray, out hit, Mathf.Infinity))
            {
                var point = hit.point;
                point = GetComponent <Collider>().ClosestPointOnBounds(point);
                SetThumbPosition(point);
                SendMessage("OnDrag", Vector3.one - (thumb.position - GetComponent <Collider>().bounds.min) / GetComponent <Collider>().bounds.size.x);
            }
        }
    }
示例#6
0
    private void onDeviceConnected(params object[] args)
    {
        bool           _connected = false;
        WVR_DeviceType _type      = this.deviceType;

        #if UNITY_EDITOR
        if (Application.isEditor)
        {
            _connected = WaveVR_Controller.Input(this.deviceType).connected;
            _type      = WaveVR_Controller.Input(this.deviceType).DeviceType;
        }
        else
        #endif
        {
            WaveVR.Device _device = WaveVR.Instance.getDeviceByType(this.deviceType);
            _connected = _device.connected;
            _type      = _device.type;
        }

        PrintDebugLog("onDeviceConnected() " + _type + " is " + (_connected ? "connected" : "disconnected") + ", left-handed? " + WaveVR_Controller.IsLeftHanded);

        if (connected != _connected)
        {
            connected = _connected;
        }

        if (connected)
        {
            if (controllerPrefab == null)
            {
                onLoadController(_type);
            }
        }
    }
    private void SetNonDominantInputRequest()
    {
        this.usableButtons_nonDominant.Clear();
        if (!WaveVR.Instance.Initialized)
        {
            return;
        }

        WVR_DeviceType dev_type = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.NonDominant).DeviceType;
        bool           ret      = Interop.WVR_SetInputRequest(dev_type, this.inputAttributes_NonDominant, (uint)this.inputAttributes_NonDominant.Length);

        if (ret)
        {
            inputTableNonDominantSize = Interop.WVR_GetInputMappingTable(dev_type, inputTableNonDominant, inputTableSize);
            if (inputTableNonDominantSize > 0)
            {
                for (int i = 0; i < (int)inputTableNonDominantSize; i++)
                {
                    if (inputTableNonDominant [i].source.capability != 0)
                    {
                        this.usableButtons_nonDominant.Add(inputTableNonDominant [i].destination.id);
                        DEBUG("SetNonDominantInputRequest() " + dev_type
                              + " button: " + inputTableNonDominant [i].source.id + "(capability: " + inputTableNonDominant [i].source.capability + ")"
                              + " is mapping to NonDominant input ID: " + inputTableNonDominant [i].destination.id);
                    }
                    else
                    {
                        DEBUG("SetNonDominantInputRequest() " + dev_type
                              + " source button " + inputTableNonDominant [i].source.id + " has invalid capability.");
                    }
                }
            }
            WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.NonDominant).UpdateButtonEvents();
        }
    }
    private void GazeControl()
    {
        bool _connD = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).connected;
        bool _connN = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.NonDominant).connected;

        this.TimerControl = this.timerControlDefault;
        if (WaveVR_ButtonList.Instance == null || !this.ButtonControl)
        {
            // Set timer gaze if no button support.
            this.TimerControl = true;
        }
        else
        {
            if (!_connD && !_connN)
            {
                // Set timer gaze if no controller connected and HMD enter is unavailable.
                if (!WaveVR_ButtonList.Instance.IsButtonAvailable(WaveVR_Controller.EDeviceType.Head, WVR_InputId.WVR_InputId_Alias1_Enter))
                {
                    this.TimerControl = true;
                }
            }
        }

        preGazeObject = GetCurrentGameObject(pointerData);
        CastToCenterOfScreen();

        this.currUnscaledTime = Time.unscaledTime;
        OnTriggeGaze();

        UpdateProgressText();
        UpdateCounterText();
    }
示例#9
0
    private void onDeviceConnected(params object[] args)
    {
        bool           _connected = false;
        WVR_DeviceType _type      = this.type;

#if UNITY_EDITOR && UNITY_ANDROID
        if (Application.isEditor)
        {
            _connected = WaveVR_Controller.Input(this.type).connected;
            _type      = WaveVR_Controller.Input(this.type).DeviceType;
        }
        else
#endif
        {
            WaveVR.Device _device = WaveVR.Instance.getDeviceByType(this.type);
            _connected = _device.connected;
            _type      = _device.type;
        }

        PrintDebugLog("onDeviceConnected() " + _type + " is " + (_connected ? "connected" : "disconnected") + ", left-handed? " + WaveVR_Controller.IsLeftHanded);

        if (connected != _connected)
        {
            connected = _connected;
            setActive(connected && (!mFocusCapturedBySystem));
        }
    }
示例#10
0
        /// <summary>
        /// GetTouch gets touch position adjusted coordinates. Abs(x) and abs(y) always 0 to 1
        /// </summary>
        /// <param name="origin">like a numeric keypad, 1= lower left, 2=lower-center, 5=center etc</param>
        /// <returns>A Vector2 of the touch position.</returns>
        private Vector2 GetTouch(int origin = 5)
        {
            if (!WaveVR_Controller.Input(wvr.WVR_DeviceType.WVR_DeviceType_Controller_Right).GetTouch(wvr.WVR_InputId.WVR_InputId_Alias1_Touchpad))
            {
                return(Vector2.zero);
            }

            Vector2 touch = -WaveVR_Controller.Input(wvr.WVR_DeviceType.WVR_DeviceType_Controller_Right).GetAxis(wvr.WVR_InputId.WVR_InputId_Alias1_Touchpad);

            // raw: 0,0 is top left, x is left-right, y is front-back
            // invert y axis
            touch.y = 1.0f - touch.y;

            switch (origin)
            {
            case 1:
                break;

            case 2:
                touch.x = touch.x * 2f - 1f;
                break;

            case 5:
                touch.y = touch.y * 2f - 1f;
                touch.x = touch.x * 2f - 1f;
                break;
            }

            return(touch);
        }
示例#11
0
 // Update is called once per frame
 void Update()
 {
     if (!isSaved)
     {
         if (isControllerFocus && isReachable)
         {
             if (WaveVR_Controller.Input(mainControllerType).GetPress(WVR_InputId.WVR_InputId_Alias1_Touchpad))
             {
                 progress.Update();
                 barImage.fillAmount = progress.GetProgressNorm();
                 if (barImage.fillAmount >= 0.999f)
                 {
                     isSaved = true;
                 }
             }
             if (WaveVR_Controller.Input(mainControllerType).GetPressUp(WVR_InputId.WVR_InputId_Alias1_Touchpad))
             {
                 progress.Reset();
                 barImage.fillAmount = progress.GetProgressNorm();
             }
         }
         //Use else to handle isReachable == false
     }
     else
     {
         BecomeSaved();
     }
 }
    // Update is called once per frame
    void Update()
    {
        if (autoStopAction != null)
        {
            autoStopAction.Invoke();
            autoStopAction = null;
        }

        WaveVR_Utils.RigidTransform transform = WaveVR_Utils.RigidTransform.identity;
        if (0 == mSelectDevice)
        {
            transform     = WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_HMD).transform;
            mHmdInfo.text = "Euler:(" + transform.rot.eulerAngles.y.ToString("0.0") + ", "
                            + transform.rot.eulerAngles.x.ToString("0.0") + ", "
                            + transform.rot.eulerAngles.z.ToString("0.0") + ")\n"
                            + "Pos:(" + transform.pos.x.ToString("0.000") + ", "
                            + transform.pos.y.ToString("0.000") + ", "
                            + transform.pos.z.ToString("0.000") + ")\n"
                            + aberration;
        }
        else
        {
            transform            = WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).transform;
            mControllerInfo.text = "Euler:(" + transform.rot.eulerAngles.y.ToString("0.0") + ", "
                                   + transform.rot.eulerAngles.x.ToString("0.0") + ", "
                                   + transform.rot.eulerAngles.z.ToString("0.0") + ")\n"
                                   + "Position:(" + transform.pos.x.ToString("0.000") + ", "
                                   + transform.pos.y.ToString("0.000") + ", "
                                   + transform.pos.z.ToString("0.000") + ")\n"
                                   + aberration;
        }
    }
    void OnEnable()
    {
        for (int i = 0; i < ControllerObjects.Length; i++)
        {
            var obj = ControllerObjects[i];
            if (obj != null)
            {
                PrintDebugLog ("OnEnable() disable controller " + i);
                obj.SetActive (false);
            }
        }

        for (int i = 0; i < WaveVR.DeviceTypes.Length; i++)
        {
            #if UNITY_EDITOR
            if (WaveVR_Controller.Input(WaveVR.DeviceTypes[i]).connected)
            #else
            if (WaveVR.Instance.connected [i])
            #endif
            {
                PrintDebugLog ("OnEnable() device " + WaveVR.DeviceTypes [i] + " is connected.");
                onDeviceConnected (WaveVR.DeviceTypes [i], true);
            }
        }

        WaveVR_Utils.Event.Listen(WaveVR_Utils.Event.DEVICE_CONNECTED, onDeviceConnected);
    }
    private void SetHmdInputRequest()
    {
        this.usableButtons_hmd.Clear();
        if (!WaveVR.Instance.Initialized)
        {
            return;
        }

        WVR_DeviceType _type = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Head).DeviceType;
        bool           _ret  = Interop.WVR_SetInputRequest(_type, this.inputAttributes_hmd, (uint)this.inputAttributes_hmd.Length);

        if (_ret)
        {
            inputTableHMDSize = Interop.WVR_GetInputMappingTable(_type, inputTableHMD, WaveVR_ButtonList.inputTableSize);
            if (inputTableHMDSize > 0)
            {
                for (int _i = 0; _i < (int)inputTableHMDSize; _i++)
                {
                    if (inputTableHMD [_i].source.capability != 0)
                    {
                        this.usableButtons_hmd.Add(inputTableHMD [_i].destination.id);
                        DEBUG("SetHmdInputRequest() " + _type
                              + " button: " + inputTableHMD [_i].source.id + "(capability: " + inputTableHMD [_i].source.capability + ")"
                              + " is mapping to HMD input ID: " + inputTableHMD [_i].destination.id);
                    }
                    else
                    {
                        DEBUG("SetHmdInputRequest() " + _type
                              + " source button " + inputTableHMD [_i].source.id + " has invalid capability.");
                    }
                }
            }
            WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Head).UpdateButtonEvents();
        }
    }
示例#15
0
    // private WaveVR_Reticle rp;

    private void Update()
    {
        if (WaveVR_Controller.Input(wvr.WVR_DeviceType.WVR_DeviceType_Controller_Right).GetTouch(wvr.WVR_InputId.WVR_InputId_Alias1_Touchpad))
        {
            var   axis  = WaveVR_Controller.Input(device).GetAxis(WVR_InputId.WVR_InputId_Alias1_Touchpad);
            float angle = VectorAngle(new Vector2(1, 0), axis);

            //上
            if (angle < -45 && angle > -135)
            {
                player.Translate(dic.forward * Time.deltaTime * speed);
                //transform.Translate(transform.forward * Time.deltaTime * speed);
            }
            //下
            else if (angle > 45 && angle < 135)
            {
                player.Translate(-dic.forward * Time.deltaTime * speed);
                //transform.Translate(-transform.forward * Time.deltaTime * speed);
            }
            //左
            else if ((angle < 180 && angle > 135) || (angle < -135 && angle > -180))
            {
                player.Translate(-dic.right * Time.deltaTime * speed);
                //transform.Translate(-transform.forward * Time.deltaTime * speed);
            }
            //右
            else if ((angle > 0 && angle < 45) || (angle < 0 && angle > -45))
            {
                player.Translate(dic.right * Time.deltaTime * speed);
                //transform.Translate(transform.forward * Time.deltaTime * speed);
            }
        }
    }
示例#16
0
    public bool GetInputMappingPair(WaveVR_Controller.EDeviceType device, ref WVR_InputId destination)
    {
        if (!WaveVR.Instance.Initialized)
        {
            return(false);
        }

        // Default true in editor mode, destination will be equivallent to source.
        bool _result = true;

        WVR_DeviceType _type = WaveVR_Controller.Input(device).DeviceType;

        /*
         *      uint _ret = Interop.WVR_GetInputMappingTable (_type, this.inputTable, WaveVR_ButtonList.inputTableSize);
         *      for (int _i = 0; _i < (int)_ret; _i++)
         *      {
         *              PrintDebugLog ("GetInputMappingPair " + device + " table: " + _type + " " + this.inputTable [_i].source.id + " to " + inputTable [_i].destination.id);
         *              if (this.inputTable [_i].destination.id == destination)
         *              {
         *                      destination = this.inputTable [_i].source.id;
         *                      _result = true;
         *                      break;
         *              }
         *      }
         */
        _result = Interop.WVR_GetInputMappingPair(_type, destination, ref this.inputPair);
        if (_result)
        {
            destination = this.inputPair.source.id;
        }

        return(_result);
    }
示例#17
0
    /// <summary>
    /// Executes every frame
    /// </summary>
    void Update()
    {
        //Check if button on right controller is pressed
        var isTriggered = WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).GetPressDown(WVR_InputId.WVR_InputId_Alias1_Menu);

        if (isTriggered)
        {
            //Get controller's transform from plugin
            var trans = WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).transform;
            //Calculate controller's forward vector in world coordinates
            var dir = (trans.TransformPoint(new Vector3(0f, 0f, 1f)) - trans.pos).normalized;
            //Create a ray starting from the controller's position, pointing to its forward vector
            var        ray = new Ray(trans.pos, dir);
            RaycastHit hit;
            //Check if anything is hit by ray
            if (Physics.Raycast(ray, out hit, 100f))
            {
                //Check if what is being hit has 'START' tag
                if (hit.transform.tag == "START")
                {
                    //Reset HMD's roaming position
                    ResetWorldPivot();
                    //Start game
                    levelController.StartLevel();
                }
            }
        }
    }
示例#18
0
    private void SetNonDominantInputRequest()
    {
        this.usableButtons_nonDominant.Clear();
        if (!WaveVR.Instance.Initialized)
        {
            return;
        }

        WVR_DeviceType _type = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.NonDominant).DeviceType;
        bool           _ret  = Interop.WVR_SetInputRequest(_type, this.inputAttributes_NonDominant, (uint)this.inputAttributes_NonDominant.Length);

        if (_ret)
        {
            uint _size = Interop.WVR_GetInputMappingTable(_type, this.inputTable, WaveVR_ButtonList.inputTableSize);
            if (_size > 0)
            {
                for (int _i = 0; _i < (int)_size; _i++)
                {
                    if (this.inputTable [_i].source.capability != 0)
                    {
                        this.usableButtons_nonDominant.Add(this.inputTable [_i].destination.id);
                        PrintDebugLog("SetNonDominantInputRequest() " + _type
                                      + " button: " + this.inputTable [_i].source.id + "(capability: " + this.inputTable [_i].source.capability + ")"
                                      + " is mapping to NonDominant input ID: " + this.inputTable [_i].destination.id);
                    }
                    else
                    {
                        PrintDebugLog("SetNonDominantInputRequest() " + _type
                                      + " source button " + this.inputTable [_i].source.id + " has invalid capability.");
                    }
                }
            }
        }
    }
    private void updateDevicePose(WVR_DevicePosePair_t pose, WaveVR_Utils.RigidTransform rtPose)
    {
        if (TrackPosition)
        {
            if (InversePosition)
            {
                transform.localPosition = -rtPose.pos;
            }
            else
            {
                transform.localPosition = rtPose.pos;
            }

            if (SetCustomHand && pose.pose.Is6DoFPose == false)
            {
                v3ChangeAxisX.x =
                    WaveVR_Controller.Input(this.Type).DeviceType == WVR_DeviceType.WVR_DeviceType_Controller_Right ?
                    1 : -1;
                transform.localPosition = Vector3.Scale(transform.localPosition, v3ChangeAxisX);
            }
        }
        if (TrackRotation)
        {
            if (InverseRotation)
            {
                transform.localRotation = Quaternion.Inverse(rtPose.rot);
            }
            else
            {
                transform.localRotation = rtPose.rot;
            }
        }
    }
示例#20
0
    private bool updateBatteryInfo()
    {
        if (Application.isEditor)
        {
            return(false);
        }

        WVR_DeviceType _type      = WaveVR_Controller.Input(this.device).DeviceType;
        float          batteryPer = Interop.WVR_GetDeviceBatteryPercentage(_type);

        PrintDebugLog("updateBatteryInfo() _type: " + _type + ", percentage: " + batteryPer);
        if (batteryPer < 0)
        {
            PrintDebugLog("updateBatteryInfo() _type: " + _type + " BatteryPercentage is negative, return false");
            return(false);
        }
        foreach (BatteryPercentage bp in batteryPercentages)
        {
            if (batteryPer >= bp.minBatteryPercentage && batteryPer <= bp.maxBatteryPercentage)
            {
                batteryMeshRenderer.material.mainTexture = bp.texture;
                Log.d(LOG_TAG, "BatteryPercentage device: " + device + ", between " + bp.minBatteryPercentage + " and " + bp.maxBatteryPercentage);
                Battery_Change.SetActive(true);
            }
        }

        return(true);
    }
示例#21
0
 public void TriggerHapticPulse(
     uint _durationMicroSec = 1000000,
     WVR_InputId _id        = WVR_InputId.WVR_InputId_Alias1_Touchpad
     )
 {
     WaveVR_Controller.Input(this.DeviceType).TriggerHapticPulse();
 }
示例#22
0
    // Update is called once per frame
    void Update()
    {
        //debugText.text = string.Format("Saved bot: {0}", gm.numBotSaved);
        debugText.text = string.Format("my pos: {0}", subject.GetPosition2D().ToString());
        //bot0 distance
        //float d0 = Vector2.Distance(subject.GetPosition2D(), new Vector2(20, 20));
        //float d1 = Vector2.Distance(subject.GetPosition2D(), new Vector2(16, 30));
        //debugText.text = string.Format("d0: {0}, d1: {1}", d0, d1);

        //Show minimap or not
        if (WaveVR_Controller.Input(mainControllerType).GetPress(WVR_InputId.WVR_InputId_Alias1_Menu))
        {
            ShowCanvas();
        }
        else
        {
            HideCanvas();
        }

        // Update countdown time left
        cdText.text = "剩余时间:" + timeLeft;
        if (timeLeft <= 0)
        {
            StopCoroutine("DecrementTime");
            gmGO.BroadcastMessage("BC_Timesup", SendMessageOptions.DontRequireReceiver);
        }
    }
    private void onDeviceConnected(params object[] args)
    {
        if (!ptmEnabled)
        {
            PrintDebugLog("onDeviceConnected() do NOTHING when disabled.");
            return;
        }

        bool           _connected = false;
        WVR_DeviceType _type      = this.Type;

        #if UNITY_EDITOR
        if (Application.isEditor)
        {
            _connected = WaveVR_Controller.Input(this.Type).connected;
            _type      = WaveVR_Controller.Input(this.Type).DeviceType;
        }
        else
        #endif
        {
            WaveVR.Device _device = WaveVR.Instance.getDeviceByType(this.Type);
            _connected = _device.connected;
            _type      = _device.type;
        }

        PrintDebugLog("onDeviceConnected() " + _type + " is " + (_connected ? "connected" : "disconnected") + ", left-handed? " + WaveVR_Controller.IsLeftHanded);

        if (this.connected != _connected)
        {
            this.connected = _connected;
            ActivateTargetObjects(this.connected && (!mFocusCapturedBySystem));
        }
    }
示例#24
0
    // --------- Reticle -------- }

    private void UpdateBtnState()
    {
        btnPressDown = Input.GetMouseButtonDown((int)EGazeTriggerMouseKey.LeftClick);
        btnPressed   = Input.GetMouseButton((int)EGazeTriggerMouseKey.LeftClick);
        btnPressUp   = Input.GetMouseButtonUp((int)EGazeTriggerMouseKey.LeftClick);
        if (GazeDevice == EGazeTriggerDevice.HMD ||
            GazeDevice == EGazeTriggerDevice.HMDWithLeftController ||
            GazeDevice == EGazeTriggerDevice.HMDWithRightController ||
            GazeDevice == EGazeTriggerDevice.HMDWithTwoControllers)
        {
            btnPressDown |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_HMD).GetPressDown((WVR_InputId)ButtonToTrigger);
            btnPressed   |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_HMD).GetPress((WVR_InputId)ButtonToTrigger);
            btnPressUp   |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_HMD).GetPressUp((WVR_InputId)ButtonToTrigger);
        }

        if (GazeDevice == EGazeTriggerDevice.LeftController ||
            GazeDevice == EGazeTriggerDevice.HMDWithLeftController ||
            GazeDevice == EGazeTriggerDevice.HMDWithTwoControllers)
        {
            btnPressDown |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Left).GetPressDown((WVR_InputId)ButtonToTrigger);
            btnPressed   |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Left).GetPress((WVR_InputId)ButtonToTrigger);
            btnPressUp   |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Left).GetPressUp((WVR_InputId)ButtonToTrigger);
        }

        if (GazeDevice == EGazeTriggerDevice.RightController ||
            GazeDevice == EGazeTriggerDevice.HMDWithRightController ||
            GazeDevice == EGazeTriggerDevice.HMDWithTwoControllers)
        {
            btnPressDown |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).GetPressDown((WVR_InputId)ButtonToTrigger);
            btnPressed   |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).GetPress((WVR_InputId)ButtonToTrigger);
            btnPressUp   |= WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).GetPressUp((WVR_InputId)ButtonToTrigger);
        }
    }
示例#25
0
    public bool SetLeftHandedMode(bool leftHandedInEditor = false)
    {
        if (!this.Initialized)
        {
            return(false);
        }

        bool _changed = false, _lefthanded = false;

        #if UNITY_EDITOR
        if (Application.isEditor)
        {
            _lefthanded = leftHandedInEditor;
        }
        else
        #endif
        {
            _lefthanded = Interop.WVR_GetDefaultControllerRole() == WVR_DeviceType.WVR_DeviceType_Controller_Left ? true : false;
        }

        if (WaveVR_Controller.IsLeftHanded != _lefthanded)
        {
            _changed = true;

            PrintInfoLog("SetLeftHandedMode() Set left-handed mode to " + _lefthanded);
            WaveVR_Controller.SetLeftHandedMode(_lefthanded);
        }
        else
        {
            PrintInfoLog("SetLeftHandedMode() not change default role: " + (_lefthanded ? "LEFT." : "RIGHT."));
        }

        return(_changed);
    }
    private void updateDPadAxisText()
    {
        if (this.dpad_axis_text == null)
        {
            return;
        }

        bool _touched = false;

        foreach (WVR_InputId _dpadId in this.dpadIds)
        {
            if (WaveVR_ButtonList.Instance != null && WaveVR_ButtonList.Instance.IsButtonAvailable(this.DeviceType, _dpadId))
            {
                if (WaveVR_Controller.Input(this.DeviceType).GetTouch(_dpadId))
                {
                    _touched    = true;
                    this.v2axis = WaveVR_Controller.Input(this.DeviceType).GetAxis(_dpadId);
                    this.dpad_axis_text.text = this.v2axis.x.ToString() + ", " + this.v2axis.y.ToString();
                    PrintDebugLog("updateDPadAxisText() " + _dpadId + " axis: (" + this.v2axis.x + ", " + this.v2axis.y + ")");
                }
            }
        }
        if (!_touched)
        {
            this.dpad_axis_text.text = "";
        }
    }
示例#27
0
    private void DeleteControllerWhenDisconnect()
    {
        if (mLoadingState != LoadingState.LoadingState_LOADED)
        {
            return;
        }

        bool _connected = WaveVR_Controller.Input(this.deviceType).connected;

        if (_connected)
        {
            WVR_DeviceType type          = WaveVR_Controller.Input(this.deviceType).DeviceType;
            string         parameterName = "GetRenderModelName";
            ptrParameterName = Marshal.StringToHGlobalAnsi(parameterName);
            ptrResult        = Marshal.AllocHGlobal(64);
            uint resultVertLength = 64;

            uint   ret = Interop.WVR_GetParameters(type, ptrParameterName, ptrResult, resultVertLength);
            string tmprenderModelName = Marshal.PtrToStringAnsi(ptrResult);

            Marshal.FreeHGlobal(ptrParameterName);
            Marshal.FreeHGlobal(ptrResult);

            if ((ret > 0) && (tmprenderModelName != renderModelName))
            {
                deleteChild("Destroy controller prefeb because render model is different");
            }
        }
        else
        {
            deleteChild("Destroy controller prefeb because it is disconnect");
        }
        return;
    }
    private void updateDpadPressText()
    {
        if (this.dpad_press_text == null)
        {
            return;
        }

        WVR_DeviceType _type = WaveVR_Controller.Input(this.DeviceType).DeviceType;

        foreach (WVR_InputId _dpadId in this.dpadIds)
        {
            if (WaveVR_ButtonList.Instance != null && WaveVR_ButtonList.Instance.IsButtonAvailable(this.DeviceType, _dpadId))
            {
                if (WaveVR_Controller.Input(this.DeviceType).GetPressDown(_dpadId))
                {
                    this.dpad_press_text.text = _dpadId.ToString();
                    PrintDebugLog("updateDpadPressText() " + _dpadId + " is pressed down.");

                    WVR_InputId _btn    = _dpadId;
                    bool        _result = WaveVR_ButtonList.Instance.GetInputMappingPair(this.DeviceType, ref _btn);
                    if (_result)
                    {
                        PrintDebugLog("updateDpadPressText() " + _dpadId + " is mapping from " + _type + " button " + _btn);
                    }
                }

                if (WaveVR_Controller.Input(this.DeviceType).GetPressUp(_dpadId))
                {
                    this.dpad_press_text.text = "";
                    PrintDebugLog("updateDpadPressText() " + _dpadId + " is pressed up.");
                }
            }
        }
    }
    private void GazeControl()
    {
        bool _connD = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.Dominant).connected;
        bool _connN = WaveVR_Controller.Input(WaveVR_Controller.EDeviceType.NonDominant).connected;

        if (WaveVR_ButtonList.Instance == null)
        {
            // Set timer gaze if no button support.
            this.WithTimeGaze = true;
        }
        else
        {
            this.WithTimeGaze = this.defWithTimeGaze;
            if (!_connD && !_connN)
            {
                // Set timer gaze if no controller connected and HMD enter is unavailable.
                if (!WaveVR_ButtonList.Instance.IsButtonAvailable(WaveVR_Controller.EDeviceType.Head, WVR_InputId.WVR_InputId_Alias1_Enter))
                {
                    this.WithTimeGaze = true;
                }
            }
        }

        CastToCenterOfScreen();

        this.currUnscaledTime = Time.unscaledTime;
        OnTriggeGaze();

        UpdateProgressText();
        UpdateCounterText();
    }
示例#30
0
        /// <summary>
        /// 获取TouchPad触摸坐标
        /// </summary>
        /// <param name="handType"></param>
        /// <returns></returns>
        public Vector2 GetTouchPadPos(HandType handType)
        {
            Vector2 v2_temp = Vector2.zero;

#if OVR
#elif VIVE
#elif WVR
            (WaveVR_Controller.EDeviceType, WaveVR_Controller.EDeviceType)left_and_right = getLeftAndRight();
            switch (handType)
            {
            case HandType.Left:
                v2_temp = WaveVR_Controller.Input(left_and_right.Item1).GetAxis(WaveVR_ButtonList.EButtons.Touchpad);
                break;

            case HandType.Right:
                v2_temp = WaveVR_Controller.Input(left_and_right.Item2).GetAxis(WaveVR_ButtonList.EButtons.Touchpad);
                break;

            case HandType.Single:
                v2_temp = WaveVR_Controller.Input(left_and_right.Item1).GetAxis(WaveVR_ButtonList.EButtons.Touchpad);
                break;

            default:
                break;
            }
#elif HVR
#elif PVR
            v2_temp = Pvr_UnitySDKAPI.Controller.UPvr_GetTouchPadPosition((int)handType);
#endif
            return(v2_temp);
        }