protected virtual void UpdateContinuous() { if (_continuousActive) { MMNViOSCoreHaptics.UpdateContinuousHapticPatternRational(ContinuousIntensity, ContinuousSharpness); DebugAudioContinuous.volume = ContinuousIntensity; DebugAudioContinuous.pitch = 0.5f + ContinuousSharpness / 2f; } }
/// <summary> /// Updates a continuous haptic while it's playing. Not supported on Android for now, until Google adds API support for that /// More options signature /// </summary> /// <param name="ios"></param> /// <param name="iosIntensity"></param> /// <param name="iosSharpness"></param> /// <param name="android"></param> /// <param name="androidIntensity"></param> /// <param name="androidSharpness"></param> /// <param name="rumble"></param> /// <param name="rumbleIntensity"></param> /// <param name="rumbleSharpness"></param> /// <param name="controllerID"></param> public static void UpdateContinuousHaptic(bool ios, float iosIntensity, float iosSharpness, bool android, float androidIntensity, float androidSharpness, bool rumble, float rumbleIntensity, float rumbleSharpness, int controllerID = -1) { if (iOS() && ios) { if ((iOSVersion >= 13) && HapticsSupported()) { MMNViOSCoreHaptics.UpdateContinuousHapticPatternRational(iosIntensity, iosSharpness); _hapticsPlayedOnce = true; } } if (rumble) { #if MOREMOUNTAINS_NICEVIBRATIONS_RUMBLE MMNVRumble.RumbleContinuous(rumbleIntensity, rumbleSharpness, controllerID); #endif } }
protected virtual void HandlePower() { _knobValue = Knob.Active ? Knob.Value : 0f; if (!_carStarted) { if ((_knobValue > MinimumKnobValue) && (Knob.Active)) { _carStarted = true; _carStartedAt = Time.time; //MMVibrationManager.Haptic(HapticTypes.Success); _lastStartClickAt = Time.time; MMVibrationManager.ContinuousHaptic(_knobValue, _knobValue, MaximumPowerDuration, HapticTypes.MediumImpact, this); CarEngineAudioSource.Play(); } else { Power += Time.deltaTime * ChargingSpeed; Power = Mathf.Clamp(Power, 0f, MaximumPowerDuration); if (Power == MaximumPowerDuration) { Knob.SetActive(true); Knob._rectTransform.localScale = Vector3.one; ReloadingPrompt.SetActive(false); } else { if (!Knob.Active) { Knob.SetValue(CarSpeed); } } } } else { if (Time.time - _carStartedAt > MaximumPowerDuration) { _carStarted = false; Knob.SetActive(false); Knob._rectTransform.localScale = Vector3.one * 0.9f; ReloadingPrompt.SetActive(true); } else { if (_knobValue > MinimumKnobValue) { Power -= Time.deltaTime; Power = Mathf.Clamp(Power, 0f, MaximumPowerDuration); MMNViOSCoreHaptics.UpdateContinuousHapticPatternRational(_knobValue, _knobValue); if (Power <= 0f) { _carStarted = false; Knob.SetActive(false); Knob._rectTransform.localScale = Vector3.one * 0.9f; ReloadingPrompt.SetActive(true); } } else { _carStarted = false; _lastStartClickAt = Time.time; MMVibrationManager.StopContinuousHaptic(); } } } }