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; } }
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); }
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); }
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(); }
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; } }
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); }
/*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); } }