IEnumerator VibrateController(VibratingController vController) { if (!vController.IsVibrating) { vController.IsVibrating = true; PlayerActions playerActions = vController.Player.inputcontroller.playerActions; if (playerActions.Device != null) { playerActions.Device.Vibrate(vController.Intensity); yield return(new WaitForSeconds(vController.Duration)); playerActions.Device.StopVibration(); vController.IsVibrating = false; vibratingControllers.Remove(vController); vibratingControllers.TrimExcess(); } } }
public void StartControllerVibration(PlayerController pController, float intensity, float duration) { bool foundMatch = false; for (int i = 0; i < vibratingControllers.Count; i++) { if (!foundMatch) { foundMatch = vibratingControllers[i].Player == pController; if (foundMatch) { break; } } } if (!foundMatch) { VibratingController vController = new VibratingController(pController, intensity, duration); vibratingControllers.Add(vController); StartCoroutine(VibrateController(vController)); } }