/// <summary> /// On enable we start listening for events /// </summary> protected virtual void OnEnable() { MMSfxEvent.Register(OnMMSfxEvent); MMSoundManagerSoundPlayEvent.Register(OnMMSoundManagerSoundPlayEvent); this.MMEventStartListening <MMSoundManagerEvent>(); this.MMEventStartListening <MMSoundManagerTrackEvent>(); this.MMEventStartListening <MMSoundManagerSoundControlEvent>(); this.MMEventStartListening <MMSoundManagerTrackFadeEvent>(); this.MMEventStartListening <MMSoundManagerSoundFadeEvent>(); this.MMEventStartListening <MMSoundManagerAllSoundsControlEvent>(); }
/// <summary> /// Instantiates an achievement display prefab and shows it for the specified duration /// </summary> /// <returns>The achievement.</returns> /// <param name="achievement">Achievement.</param> public virtual IEnumerator DisplayAchievement(MMAchievement achievement) { if ((this.transform == null) || (AchievementDisplayPrefab == null)) { yield break; } // we instantiate our achievement display prefab, and add it to the group that will automatically handle its position GameObject instance = (GameObject)Instantiate(AchievementDisplayPrefab.gameObject); instance.transform.SetParent(this.transform, false); // we get the achievement displayer MMAchievementDisplayItem achievementDisplay = instance.GetComponent <MMAchievementDisplayItem> (); if (achievementDisplay == null) { yield break; } // we fill our achievement achievementDisplay.Title.text = achievement.Title; achievementDisplay.Description.text = achievement.Description; achievementDisplay.Icon.sprite = achievement.UnlockedImage; if (achievement.AchievementType == AchievementTypes.Progress) { achievementDisplay.ProgressBarDisplay.gameObject.SetActive(true); } else { achievementDisplay.ProgressBarDisplay.gameObject.SetActive(false); } // we play a sound if set if (achievement.UnlockedSound != null) { MMSfxEvent.Trigger(achievement.UnlockedSound); } // we fade it in and out CanvasGroup achievementCanvasGroup = instance.GetComponent <CanvasGroup> (); if (achievementCanvasGroup != null) { achievementCanvasGroup.alpha = 0; StartCoroutine(MMFade.FadeCanvasGroup(achievementCanvasGroup, AchievementFadeDuration, 1)); yield return(_achievementFadeOutWFS); StartCoroutine(MMFade.FadeCanvasGroup(achievementCanvasGroup, AchievementFadeDuration, 0)); } }
/// <summary> /// On disable we stop listening for events /// </summary> protected virtual void OnDisable() { if (_enabled) { MMSfxEvent.Unregister(OnMMSfxEvent); MMSoundManagerSoundPlayEvent.Unregister(OnMMSoundManagerSoundPlayEvent); this.MMEventStopListening <MMSoundManagerEvent>(); this.MMEventStopListening <MMSoundManagerTrackEvent>(); this.MMEventStopListening <MMSoundManagerSoundControlEvent>(); this.MMEventStopListening <MMSoundManagerTrackFadeEvent>(); this.MMEventStopListening <MMSoundManagerSoundFadeEvent>(); this.MMEventStopListening <MMSoundManagerAllSoundsControlEvent>(); } }
/// <summary> /// Plays all the feedbacks that were enabled for this /// </summary> /// <param name="position"></param> public virtual void Play(Vector3 position) { // Camera shake if (ShakeCamera) { MMCameraShakeEvent.Trigger(CameraShakeProperties.Duration, CameraShakeProperties.Amplitude, CameraShakeProperties.Frequency); } if (UpdateAnimator) { if (AnimatorTriggerParameterName != null) { FeedbackAnimator.SetTrigger(AnimatorTriggerParameterName); } if (AnimatorBoolParameterName != null) { FeedbackAnimator.SetBool(AnimatorBoolParameterName, true); } } // instantiated particles if (InstantiateVFX && VfxToInstantiate != null) { if (_objectPool != null) { _newGameObject = _objectPool.GetPooledGameObject(); if (_newGameObject != null) { _newGameObject.transform.position = position + VfxPositionOffset; _newGameObject.SetActive(true); } } else { _newGameObject = GameObject.Instantiate(VfxToInstantiate) as GameObject; _newGameObject.transform.position = position + VfxPositionOffset; } } if (ZoomCamera) { MMCameraZoomEvent.Trigger(ZoomMode, ZoomFieldOfView, ZoomTransitionDuration, ZoomDuration); } // Freeze Frame if (FreezeFrame) { MMFreezeFrameEvent.Trigger(FreezeFrameDuration); } // Time Scale if (ModifyTimescale) { MMTimeScaleEvent.Trigger(MMTimeScaleMethods.For, TimeScale, TimeScaleDuration, TimeScaleLerp, TimeScaleLerpSpeed, false); } // Particles if (Particles != null) { Particles.Play(); } // Chromatic Aberration if (ChromaticAberration) { MMChromaticAberrationShakeEvent.Trigger(ChromaticAberrationDuration); } // Sounds if (Sfx != null) { MMSfxEvent.Trigger(Sfx); } // Flash if (TriggerFlash) { MMFlashEvent.Trigger(FlashColor, FlashDuration, FlashAlpha, FlashID); } }