/// <summary> /// Plays a haptic pattern, the most complex type of haptic, defined by a JSON string on iOS, and a pattern on Android /// </summary> /// <param name="iOSJSONString"></param> /// <param name="androidPattern"></param> /// <param name="androidAmplitudes"></param> /// <param name="androidRepeat"></param> /// <param name="fallbackOldiOS"></param> public static void AdvancedHapticPattern(string iOSJSONString, long[] androidPattern, int[] androidAmplitudes, int androidRepeat, HapticTypes fallbackOldiOS = HapticTypes.None) { if (!_vibrationsActive) { return; } DebugLog("[MMVibrationManager] Advanced Haptic Pattern"); if (Android()) { MMNVAndroid.AndroidVibrate(androidPattern, androidAmplitudes, androidRepeat); } else if (iOS()) { if (iOSVersion >= 13) { MMNViOSCoreHaptics.PlayCoreHapticsFromJSON(iOSJSONString); } else { MMNViOS.iOSTriggerHaptics(fallbackOldiOS); } } }
/// <summary> /// Plays a advanced haptic pattern, /// </summary> /// <param name="ios"></param> /// <param name="iOSJSONString"></param> /// <param name="android"></param> /// <param name="androidPattern"></param> /// <param name="androidAmplitudes"></param> /// <param name="androidRepeat"></param> /// <param name="vibrateAndroidIfNoSupport"></param> /// <param name="rumble"></param> /// <param name="rumblePattern"></param> /// <param name="rumbleLowFreqAmplitudes"></param> /// <param name="rumbleHighFreqAmplitudes"></param> /// <param name="rumbleRepeat"></param> /// <param name="fallbackOldiOS"></param> /// <param name="coroutineSupport"></param> /// <param name="controllerID"></param> public static void AdvancedHapticPattern(bool ios, string iOSJSONString, bool android, long[] androidPattern, int[] androidAmplitudes, int androidRepeat, bool vibrateAndroidIfNoSupport, bool rumble, long[] rumblePattern, int[] rumbleLowFreqAmplitudes, int[] rumbleHighFreqAmplitudes, int rumbleRepeat, HapticTypes fallbackOldiOS = HapticTypes.None, MonoBehaviour coroutineSupport = null, int controllerID = -1, bool threaded = false) { if (!_vibrationsActive) { return; } DebugLog("[MMVibrationManager] Advanced Haptic Pattern"); if (Android()) { if (!MMNVAndroid.AndroidHasAmplitudeControl() && !vibrateAndroidIfNoSupport) { return; } MMNVAndroid.AndroidVibrate(androidPattern, androidAmplitudes, androidRepeat, threaded); } else if (iOS()) { if ((iOSVersion >= 13) && HapticsSupported()) { MMNViOSCoreHaptics.PlayCoreHapticsFromJSON(iOSJSONString, threaded); _hapticsPlayedOnce = true; } else { MMNViOS.iOSTriggerHaptics(fallbackOldiOS); } } #if MOREMOUNTAINS_NICEVIBRATIONS_RUMBLE if (coroutineSupport != null) { MMNVRumble.Rumble(rumblePattern, rumbleLowFreqAmplitudes, rumbleHighFreqAmplitudes, rumbleRepeat, coroutineSupport, controllerID); } #endif }