/// <summary>
        /// Fires complete events if needed
        /// </summary>
        /// <param name="source"></param>
        public virtual void TriggerOnComplete(MMFeedbacks source)
        {
            if (!OnCompleteIsNull && TriggerUnityEvents)
            {
                OnComplete.Invoke();
            }

            if (TriggerMMFeedbacksEvents)
            {
                MMFeedbacksEvent.Trigger(source, MMFeedbacksEvent.EventTypes.Complete);
            }
        }
        /// <summary>
        /// Fires Play events if needed
        /// </summary>
        /// <param name="source"></param>
        public virtual void TriggerOnPlay(MMFeedbacks source)
        {
            if (!OnPlayIsNull && TriggerUnityEvents)
            {
                OnPlay.Invoke();
            }

            if (TriggerMMFeedbacksEvents)
            {
                MMFeedbacksEvent.Trigger(source, MMFeedbacksEvent.EventTypes.Play);
            }
        }
        /// <summary>
        /// Fires revert events if needed
        /// </summary>
        /// <param name="source"></param>
        public virtual void TriggerOnRevert(MMFeedbacks source)
        {
            if (!OnRevertIsNull && TriggerUnityEvents)
            {
                OnRevert.Invoke();
            }

            if (TriggerMMFeedbacksEvents)
            {
                MMFeedbacksEvent.Trigger(source, MMFeedbacksEvent.EventTypes.Revert);
            }
        }
        /// <summary>
        /// Fires skip events if needed
        /// </summary>
        /// <param name="source"></param>
        public virtual void TriggerOnSkip(MMFeedbacks source)
        {
            if (!OnPauseIsNull && TriggerUnityEvents)
            {
                OnPause.Invoke();
            }

            if (TriggerMMFeedbacksEvents)
            {
                MMFeedbacksEvent.Trigger(source, MMFeedbacksEvent.EventTypes.Skip);
            }
        }