Пример #1
0
    public void Vibrate(VibrationForce vibrationForce)
    {
        var channel = OVRHaptics.RightChannel;

        if (controllerMask == OVRInput.Controller.LTouch)
        {
            channel = OVRHaptics.LeftChannel;
        }

        switch (vibrationForce)
        {
        case VibrationForce.Min:
            channel.Preempt(clipMin);
            break;

        case VibrationForce.Light:
            channel.Preempt(clipLight);
            break;

        case VibrationForce.Medium:
            channel.Preempt(clipMedium);
            break;

        case VibrationForce.Hard:
            channel.Preempt(clipHard);
            break;
        }
    }
Пример #2
0
    public IEnumerator VibrateTime(VibrationForce force, float time)
    {
        var channel = OVRHaptics.RightChannel;

        if (controllerMask == OVRInput.Controller.LTouch)
        {
            channel = OVRHaptics.LeftChannel;
        }

        for (float t = 0; t <= time; t += Time.deltaTime)
        {
            switch (force)
            {
            case VibrationForce.Light:
                channel.Queue(clipLight);
                break;

            case VibrationForce.Medium:
                channel.Queue(clipMedium);
                break;

            case VibrationForce.Hard:
                channel.Queue(clipHard);
                break;
            }
        }
        yield return(new WaitForSeconds(time));

        channel.Clear();

        yield return(null);
    }
Пример #3
0
    public static void Vibrate(PlayerIndex _playerIndex, float _duration, VibrationForce _force, AnimationCurve _forceCurve = default)
    {
        if (_forceCurve == default)
        {
            _forceCurve = new AnimationCurve();
            _forceCurve.AddKey(new Keyframe(0, 1f));
            _forceCurve.AddKey(new Keyframe(1f, 1f));
        }
        Vibrator i_vibrator = new GameObject().AddComponent <Vibrator>();

        i_vibrator.vibrationCoroutine = i_vibrator.StartCoroutine(i_vibrator.Vibrate_C(_playerIndex, _duration, _force, _forceCurve, (PlayerPrefs.GetFloat("REU_Haptic_intensity", 100) / 100)));
        vibrators.Add(i_vibrator);
    }
Пример #4
0
    public void Vibrate(VibrationForce vibrationForce)
    {
        //var channel = OVRHaptics.RightChannel;
        //if (controllerMask == OVRInput.Controller.LTouch)
        //    channel = OVRHaptics.LeftChannel;

        //channel = OVRHaptics.Channels[1];

        //switch (vibrationForce)
        //{
        //    case VibrationForce.Light:
        //        channel.Preempt(clipLight);
        //        break;
        //    case VibrationForce.Medium:
        //        channel.Preempt(clipMedium);
        //        break;
        //    case VibrationForce.Hard:
        //        channel.Preempt(clipHard);
        //        break;
        //}


        OVRHaptics.Channels[0].Clear();
        OVRHaptics.Channels[1].Clear();

        if (vibrationForce == VibrationForce.Light)
        {
            noize = new byte[10] {
                60, 60, 60, 60, 60, 60, 60, 60, 60, 60
            }
        }
        ;
        else if (vibrationForce == VibrationForce.Medium)
        {
            noize = new byte[10] {
                120, 120, 120, 120, 120, 120, 120, 120, 120, 120
            }
        }
        ;
        else
        {
            noize = new byte[10] {
                240, 240, 240, 240, 240, 240, 240, 240, 240, 240
            }
        };

        OVRHaptics.Channels[1].Preempt(new OVRHapticsClip(noize, 10));
        OVRHaptics.Process();
    }
Пример #5
0
    public void VibrateRight(VibrationForce vibrationForce)
    {
        var channel = OVRHaptics.RightChannel;

        switch (vibrationForce)
        {
        case VibrationForce.Light:
            channel.Preempt(clipLightRight);
            break;

        case VibrationForce.Medium:
            channel.Preempt(clipMediumRight);
            break;

        case VibrationForce.Hard:
            channel.Preempt(clipHardRight);
            break;
        }
    }
Пример #6
0
    public IEnumerator Vibrate_C(PlayerIndex _playerIndex, float _duration, VibrationForce _force, AnimationCurve _forceCurve, float _settingsVibrationModificator)
    {
        float i_momentumMultiplier;

                #if !UNITY_EDITOR
        i_momentumMultiplier = MomentumManager.GetValue(MomentumManager.datas.vibrationMultiplier);
                #endif
                #if UNITY_EDITOR
        i_momentumMultiplier = 1f;
                #endif
        for (float i = 0; i < _duration; i += Time.deltaTime)
        {
            float forceCurveMultiplier = (_forceCurve.Evaluate(i / _duration)) * _settingsVibrationModificator;
            switch (_force)
            {
            case VibrationForce.VeryLight:
                GamePad.SetVibration(_playerIndex, 0.1f * i_momentumMultiplier * forceCurveMultiplier, 0.1f * i_momentumMultiplier * forceCurveMultiplier);
                break;

            case VibrationForce.Light:
                GamePad.SetVibration(_playerIndex, 0.2f * i_momentumMultiplier * forceCurveMultiplier, 0.2f * i_momentumMultiplier * forceCurveMultiplier);
                break;

            case VibrationForce.Medium:
                GamePad.SetVibration(_playerIndex, 0.3f * i_momentumMultiplier * forceCurveMultiplier, 0.3f * i_momentumMultiplier * forceCurveMultiplier);
                break;

            case VibrationForce.Heavy:
                GamePad.SetVibration(_playerIndex, 0.4f * i_momentumMultiplier * forceCurveMultiplier, 0.4f * i_momentumMultiplier * forceCurveMultiplier);
                break;

            case VibrationForce.VeryHeavy:
                GamePad.SetVibration(_playerIndex, 0.5f * i_momentumMultiplier * forceCurveMultiplier, 0.5f * i_momentumMultiplier * forceCurveMultiplier);
                break;
            }
            yield return(new WaitForEndOfFrame());
        }
        GamePad.SetVibration(_playerIndex, 0f, 0f);
        DestroyImmediate(this.gameObject);
    }
Пример #7
0
    /*private void InitializeOVRHaptics()
     * {
     *      const int cnt = 10;
     *      clipLight = new OVRHapticsClip(cnt);
     *      clipMedium = new OVRHapticsClip(cnt);
     *      clipHard = new OVRHapticsClip(cnt);
     *      Debug.Log (clipLight.Samples.Length.ToString ());
     *      Debug.Log (clipMedium.Samples.Length.ToString ());
     *      Debug.Log (clipHard.Samples.Length.ToString ());
     *      for (int i = 0; i < cnt; i++)
     *      {
     *              clipLight.Samples[i] = i % 2 == 0 ? (byte)0 : (byte)75;
     *              clipMedium.Samples[i] = i % 2 == 0 ? (byte)0 : (byte)150;
     *              clipHard.Samples[i] = i % 2 == 0 ? (byte)0 : (byte)255;
     *      }
     *
     *      clipLight = new OVRHapticsClip(clipLight.Samples, clipLight.Samples.Length);
     *      clipMedium = new OVRHapticsClip(clipMedium.Samples, clipMedium.Samples.Length);
     *      clipHard = new OVRHapticsClip(clipHard.Samples, clipHard.Samples.Length);
     * }
     *
     * public void Vibrate(VibrationForce vibrationForce)
     * {
     *      var channel = OVRHaptics.RightChannel;
     *      if (leftHand)
     *              channel = OVRHaptics.LeftChannel;
     *
     *      switch (vibrationForce)
     *      {
     *      case VibrationForce.Light:
     *              channel.Preempt(clipLight);
     *              break;
     *      case VibrationForce.Medium:
     *              channel.Preempt(clipMedium);
     *              break;
     *      case VibrationForce.Hard:
     *              channel.Preempt(clipHard);
     *              break;
     *      }
     * }*/

    public void ApplyHapticFeedback(VibrationForce vibrationForce)
    {
        HapticsClip.Reset();
        int cnt = 10;

        for (int i = 0; i < cnt; i++)
        {
            switch (vibrationForce)
            {
            case VibrationForce.Light:
                HapticsClip.WriteSample(i % 2 == 0 ? (byte)0 : (byte)75);
                break;

            case VibrationForce.Medium:
                HapticsClip.WriteSample(i % 2 == 0 ? (byte)0 : (byte)150);
                break;

            case VibrationForce.Hard:
                HapticsClip.WriteSample(i % 2 == 0 ? (byte)0 : (byte)255);
                break;
            }
        }
        HapticsClip.WriteSample(0);
        HapticsClip.WriteSample(0);
        HapticsClip.WriteSample(0);
        HapticsClip.WriteSample(0);

        if (leftHand)
        {
            OVRHaptics.LeftChannel.Preempt(HapticsClip);
        }
        else
        {
            OVRHaptics.RightChannel.Preempt(HapticsClip);
        }
    }