} // SceneLoadTrigger() IEnumerator LevelEndAnimEnded() { yield return(new WaitForSeconds(levelEndSweepTime)); UIManager._instance.TriggerLevelSuccesed(); MMVibrationManager.Haptic(HapticTypes.MediumImpact); } // LevelEndAnimEnded()
/// <summary> /// A coroutine used to update continuous haptics as they're playing /// </summary> /// <returns></returns> protected virtual IEnumerator ContinuousHapticsCoroutine() { _continuousStartedAt = (Timescale == Timescales.ScaledTime) ? Time.time : Time.unscaledTime; _continuousPlaying = true; float elapsedTime = ComputeElapsedTime(); MMVibrationManager.ContinuousHaptic(InitialContinuousIntensity, InitialContinuousSharpness, ContinuousDuration, HapticTypes.Success, this); while (_continuousPlaying && (elapsedTime < ContinuousDuration)) { elapsedTime = ComputeElapsedTime(); float remappedTime = Remap(elapsedTime, 0f, ContinuousDuration, 0f, 1f); float intensity = ContinuousIntensityCurve.Evaluate(remappedTime); float sharpness = ContinuousSharpnessCurve.Evaluate(remappedTime); MMVibrationManager.UpdateContinuousHaptic(intensity, sharpness, true); if (AllowRumble) { #if MOREMOUNTAINS_NICEVIBRATIONS_RUMBLE MMNVRumble.RumbleContinuous(intensity, sharpness, ControllerID); #endif } yield return(null); } if (_continuousPlaying) { _continuousPlaying = false; MMVibrationManager.StopContinuousHaptic(AllowRumble); } }
void OnTriggerEnter(Collider col) { if (col.tag == "DragonTooth") { _enemy.healthSliderActive.SetActive(true); healths -= 10 + DamageFromPlayer + SwordDamage; if (PlayerPrefs.GetInt("VibrationActive") == 0) { MMVibrationManager.Haptic(HapticTypes.SoftImpact, false, true, this); } blood.SetActive(true); BloodActive_sound.GetComponent <AudioSource>().Play(); } if (healths <= 0) { KillSelf(); fragR += 1; PlayerPrefs.SetFloat("fragR", fragR); AxeActive.GetComponent <BoxCollider>().enabled = false; _isDead = true; } else { Invoke("latencyBlood", 2.0f); Invoke("latencyCrouch", 0.01f); } }
public void ToggleSettings() { MMVibrationManager.Haptic(HapticTypes.Selection); SettingsOpen = !SettingsOpen; SetSettingsOpen(); GameManager.Instance.Save(); }
public virtual void Reset(bool fromRightSideButton) { bool skipAnimation = false; if (!fromRightSideButton) { winType.Hide(); StartCoroutine(winType.WhenTilesOffScreen(() => { Won = false; winType.Reset(); })); skipAnimation = true; } else if (Won) { return; } MMVibrationManager.Haptic(HapticTypes.Selection); AcceptingInputs = true; collectedStars = 0; goalFlag?.Reset(); Grid?.Reset(); Player?.SetAlive(false, skipAnimation); Preview.Show(false); TimerRunning = false; ElapsedTime = 0; LevelInfo.SetTimer(ElapsedTime); SetPause(false); }
public void ButtonSelected(NumberedLevelSelectButton button) { MMVibrationManager.Haptic(HapticTypes.Selection); if (LevelSelectOpen) { int buildIndex = SceneHelpers.GetBuildIndexFromLevel(WorldSelected, button.TempNumber.HasValue ? button.TempNumber.Value : button.Number); MusicManager.Instance.SlideVolume(0.4f, 1f); GameManager.Instance.LoadScene(buildIndex, null); } else { if (button.Paywalled) { Debug.Log($"TAKE ME TO THE STORE TO BUY WORLD {button.Number}!"); } else { levelData = GameManager.Instance.SaveData.LevelData; CopyManager.OnLevelChange(button.Number); (this.MirroredComponent as LevelSelect).OnLevelSelectNoAction(button.MirroredComponent as NumberedLevelSelectButton); OnLevelSelectNoAction(button); // tell camera to wipe // world one and no world share the same style if (WorldSelected > 1) { StartCoroutine(CameraWipe(0)); } } } }
public static void Haptic(HapticTypes type) { if (Application.platform == RuntimePlatform.IPhonePlayer && false) { MMVibrationManager.Haptic(type); } }
public static void Scatter <T>(T[] objectTransforms, Vector3 pos, Action <T> callback) where T : Component { if (!_instance) { Debug.LogError($"Create {nameof(ScatterObjects)} instance in scene before using! Not scattering."); return; } var positions = objectTransforms.Select(transform1 => { var insideUnitCircle = (Vector3)Random.insideUnitCircle * _instance._Radius; insideUnitCircle = new Vector3(insideUnitCircle.x, 0, insideUnitCircle.y) + pos; return(insideUnitCircle); }).ToArray(); for (var index = 0; index < objectTransforms.Length; index++) { var obj = objectTransforms[index]; var startPos = obj.transform.position; var endPos = positions[index]; new Operation(duration: _instance._Duration, delay: _instance._DelayRange.GetRandomValueAsRange(), #if SCATTER_OBJECTS_MM_HAPTIC action: () => { MMVibrationManager.Haptic(HapticTypes.RigidImpact); }, #endif updateAction: tVal => { obj.transform.position = Vector3.Lerp(startPos, endPos, tVal) + (Vector3.up * (_instance._HeightCurve.Evaluate(tVal) * _instance._MaxHeight)); }, endAction: () => callback?.Invoke(obj)).Start(); } }
public void OnMuteButtonToggle() { MMVibrationManager.Haptic(HapticTypes.Selection); bool isMuting = slider.value > 0; slider.value = isMuting ? 0 : 1; // maybe should animate OnSliderValueChange(); }
} // TriggerCubeCollect() public void TriggerGemCollectedHaptic() { if (isVibrationOn) { MMVibrationManager.Haptic(gemCollectionHapticType); Debug.Log("vibratedGem"); } } // TriggerGemCollectedHaptic()
protected override void CustomPlayFeedback(Vector3 position, float attenuation = 1.0f) { if (Active) { #if NICEVIBRATIONS_INSTALLED MMVibrationManager.Haptic(HapticType); #endif } }
/// <summary> /// When this feedback gets played /// </summary> /// <param name="position"></param> /// <param name="feedbacksIntensity"></param> protected override void CustomPlayFeedback(Vector3 position, float feedbacksIntensity = 1.0f) { if (!Active) { return; } switch (HapticMethod) { case HapticMethods.AdvancedPattern: string iOSString = (AHAPFileForIOS == null) ? "" : AHAPFileForIOS.text; long[] androidPattern = (AndroidWaveFormFile == null) ? null : AndroidWaveFormFile.WaveForm.Pattern; int[] androidAmplitude = (AndroidWaveFormFile == null) ? null : AndroidWaveFormFile.WaveForm.Amplitudes; long[] rumblePattern = (RumbleWaveFormFile == null) ? null : RumbleWaveFormFile.WaveForm.Pattern; int[] lowFreqAmplitude = (RumbleWaveFormFile == null) ? null : RumbleWaveFormFile.WaveForm.LowFrequencyAmplitudes; int[] highFreqAmplitude = (RumbleWaveFormFile == null) ? null : RumbleWaveFormFile.WaveForm.HighFrequencyAmplitudes; MMVibrationManager.AdvancedHapticPattern(APVibrateIOS, iOSString, APVibrateAndroid, androidPattern, androidAmplitude, AndroidRepeat, APVibrateAndroidIfNoSupport, APRumble, rumblePattern, lowFreqAmplitude, highFreqAmplitude, RumbleRepeat, OldIOSFallback, this, ControllerID); break; case HapticMethods.Continuous: StartCoroutine(ContinuousHapticsCoroutine()); break; case HapticMethods.NativePreset: MMVibrationManager.Haptic(HapticType, false, AllowRumble, this, ControllerID); break; case HapticMethods.Transient: MMVibrationManager.TransientHaptic(TransientIntensity, TransientSharpness, AllowRumble, this, ControllerID); break; case HapticMethods.AdvancedTransient: MMVibrationManager.TransientHaptic(ATVibrateIOS, ATIOSIntensity, ATIOSSharpness, ATVibrateAndroid, ATAndroidIntensity, ATAndroidSharpness, ATVibrateAndroidIfNoSupport, ATRumble, ATRumbleIntensity, ATRumbleSharpness, ATRumbleControllerID, this); break; case HapticMethods.AdvancedContinuous: break; case HapticMethods.Stop: if (_continuousPlaying) { MMVibrationManager.StopContinuousHaptic(AllowRumble); _continuousPlaying = false; } break; } }
private void _onCanBroken() { //canRenderer.sprite = ExplodedSprite; FoamParticleSystem.gameObject.SetActive(true); #if UNITY_ANDROID || UNITY_IOS MMVibrationManager.Haptic(HapticTypes.HeavyImpact); #endif _dispatchOnCanBroken(); }
public void Menu() { MMVibrationManager.Haptic(HapticTypes.Selection); GameManager.Instance.LoadScene( SceneHelpers.MenuBuildIndex, null, () => GameManager.Instance.MenuManager.OpenLevelSelect(true) ); }
public void VibrateSuccess() { if (vibrationActive != null && !vibrationActive.Value) { return; } MMVibrationManager.Haptic(HapticTypes.Success); LogVibration(HapticTypes.Success); }
public void GooglePlayGamesClicked() { MMVibrationManager.Haptic(HapticTypes.Selection); GameManager.Instance.StoreCommunicator.SignIn((signedIn) => { if (signedIn) { GooglePlayGamesModal.gameObject.SetActive(true); } }); }
public void VibrateSelectionChange() { if (vibrationActive != null && !vibrationActive.Value) { return; } MMVibrationManager.Haptic(HapticTypes.Selection); LogVibration(HapticTypes.Selection); }
public void VibrateFailure() { if (vibrationActive != null && !vibrationActive.Value) { return; } MMVibrationManager.Haptic(HapticTypes.Failure); LogVibration(HapticTypes.Failure); }
public void OnVibrationButtonPressed() { PlayerPrefs.SetInt("VibrationEnabled", PlayerPrefs.GetInt("VibrationEnabled", 1) == 1 ? 0 : 1); ChangeButtonIcon(ButtonType.Vibration); if (PlayerPrefs.GetInt("VibrationEnabled") == 1) { MMVibrationManager.Haptic(HapticTypes.MediumImpact, false, true, this); } }
public void SignOut() { MMVibrationManager.Haptic(HapticTypes.Selection); GameManager.Instance.StoreCommunicator.SignOut((signedOut) => { if (signedOut) { CloseGooglePlayGamesModal(); } }); }
public void VibrateHeavy() { if (vibrationActive != null && !vibrationActive.Value) { return; } MMVibrationManager.Haptic(HapticTypes.HeavyImpact); LogVibration(HapticTypes.HeavyImpact); }
} // SetPlayerPrefSettings() public void TriggerCubeCollect() { CameraController._instance.GetCollectedCubeCount(); if (isVibrationOn) { MMVibrationManager.Haptic(cubeCollectionHapticType); Debug.Log("vibratedCube"); } } // TriggerCubeCollect()
private void _Vibration(HapticTypes type, float delta, string key) { this._vibrations[key] = Time.time + delta; MMVibrationManager.Haptic(type); #if UNITY_EDITOR if (this.ycManager.ycConfig.VibrationDebugLog) { Debug.Log("[VIBRATION] " + type + " " + key); } #endif }
private IEnumerator PlayerReachedFireworks() { particles.gameObject.SetActive(true); audio.gameObject.SetActive(true); yield return(new WaitForSeconds(0.75f)); while (true) { MMVibrationManager.Haptic(HapticTypes.LightImpact); yield return(new WaitForSeconds(UnityEngine.Random.value * 0.95f + 0.05f)); } }
public void ActionSelected(WinTypeAction w) { AcceptingInputs = false; int currentScene = SceneHelpers.GetCurrentLevelBuildIndex(); // if we're not going to the next scene, cancel the load of the next scene if (w != WinTypeAction.Next) { cts.Cancel(); } MMVibrationManager.Haptic(HapticTypes.Selection); switch (w) { case WinTypeAction.Menu: GameManager.Instance.LoadScene(SceneHelpers.MenuBuildIndex, StartCoroutine(winType.WhenTilesOffScreen())); break; case WinTypeAction.Reset: GameManager.Instance.ShowAd(); Reset(false); break; case WinTypeAction.LevelSelect: GoToLevelSelect(false); break; case WinTypeAction.Next: // TODO: All this logic can be removed once we've guaranteed that every world has 10 levels int current_bi = SceneHelpers.GetCurrentLevelBuildIndex(); int current_bi_world = SceneHelpers.GetWorldFromBuildIndex(current_bi); int next_bi = SceneHelpers.GetNextLevelBuildIndex(); int next_bi_world = SceneHelpers.GetWorldFromBuildIndex(next_bi); if (next_bi < SceneHelpers.SceneCount || (current_bi_world > 0 && current_bi_world < next_bi_world)) { GameManager.Instance.ShowAd(); // hide objects in the current level so that as the wintype animation is playing, we see the next level HideLevel(); // once the tiles are offscreen, we can finally unload the level StartCoroutine(winType.WhenTilesOffScreen(() => { GameManager.Instance.UnloadScene(currentScene, null); })); } else { GoToLevelSelect(false); } break; } }
public void BoneTouchedGroundHandler() { if (_isVibrationEnabled && GameplayManager.CurrentEntity == EntityType.Player) { MMVibrationManager.Haptic(HapticTypes.MediumImpact, false, true, this); } if (_isSoundEnabled) { _audioSource.volume = Mathf.Clamp((_rigidbody.velocity.magnitude / 10f) + 0.4f, 0f, 1f); _audioSource.Play(); } }
public void BackSelected() { MMVibrationManager.Haptic(HapticTypes.Selection); // wipe // world one and no world share the same style if (WorldSelected > 1) { StartCoroutine(CameraWipe(1)); } MusicManager.Instance.LoadMusicForWorldAndChangeTrack(1, 1f, 0.4f); (this.MirroredComponent as LevelSelect).BackAction(); BackAction(); }
public static void StartVibration(HapticTypes vibrationType) { if (IsVibroOn) { try { MMVibrationManager.Haptic(vibrationType, false, true); } catch (Exception e) { //TODO: :ODOT\\ } } }
public virtual void PlayPauseButtonClicked() { if (!Won) { MMVibrationManager.Haptic(HapticTypes.Selection); if (Player.Alive) { SetPause(!Paused); } else { RespawnManager.RespawnPlayer(); StartTimer(); } } }
public void Continue() { MMVibrationManager.Haptic(HapticTypes.Selection); int nextWorld = World + 1; if (nextWorld <= GameManager.AvailableWorlds) { GameManager.Instance.SaveData.LastPlayedWorld = nextWorld; MusicManager.Instance.LoadMusicForWorldAndChangeTrack(nextWorld); GameManager.Instance.LoadScene(SceneHelpers.GetBuildIndexFromLevel(nextWorld, 1)); } else { GameManager.Instance.LoadScene(SceneHelpers.SceneCount - 1); } }