/// <summary> Triggers this behavior by executing its actions </summary>
        /// <param name="toggle"> UIToggle that triggered this behavior </param>
        public void Invoke(UIToggle toggle)
        {
            PlayAnimation(toggle);

            if (toggle.IsOn)
            {
                OnToggleOn.ExecuteEffect(OnToggleOn.GetCanvas(toggle.gameObject));
                OnToggleOn.InvokeAnimatorEvents();
                if (!TriggerEventsAfterAnimation)
                {
                    OnToggleOn.SendGameEvents(toggle.gameObject);
                    OnToggleOn.InvokeAction(toggle.gameObject);
                    OnToggleOn.InvokeUnityEvent();
                    return;
                }

                Coroutiner.Start(InvokeCallbackAfterDelay(() =>
                {
                    if (toggle == null)
                    {
                        return;
                    }
                    OnToggleOn.SendGameEvents(toggle.gameObject);
                    OnToggleOn.InvokeAction(toggle.gameObject);
                    OnToggleOn.InvokeUnityEvent();
                },
                                                          GetAnimationTotalDuration()));
            }
            else
            {
                OnToggleOff.ExecuteEffect(OnToggleOff.GetCanvas(toggle.gameObject));
                OnToggleOff.InvokeAnimatorEvents();
                if (!TriggerEventsAfterAnimation)
                {
                    OnToggleOff.SendGameEvents(toggle.gameObject);
                    OnToggleOff.InvokeAction(toggle.gameObject);
                    OnToggleOff.InvokeUnityEvent();
                    return;
                }

                Coroutiner.Start(InvokeCallbackAfterDelay(() =>
                {
                    if (toggle == null)
                    {
                        return;
                    }
                    OnToggleOff.SendGameEvents(toggle.gameObject);
                    OnToggleOff.InvokeAction(toggle.gameObject);
                    OnToggleOff.InvokeUnityEvent();
                },
                                                          GetAnimationTotalDuration()));
            }
        }
Example #2
0
        /// <summary> Triggers this behavior by executing its actions </summary>
        /// <param name="toggle"> UIToggle that triggered this behavior </param>
        /// <param name="playAnimation"> Play the set animation </param>
        /// <param name="playSound"> Play the set sound </param>
        /// <param name="executeEffect"> Run the effect </param>
        /// <param name="executeAnimatorEvents"> Trigger all the animator events </param>
        /// <param name="sendGameEvents"> Send all the game events </param>
        /// <param name="executeUnityEvent"> Execute the Action and the UnityEvent </param>
        public void Invoke(UIToggle toggle, bool playAnimation = true, bool playSound = true, bool executeEffect = true, bool executeAnimatorEvents = true, bool sendGameEvents = true, bool executeUnityEvent = true)
        {
            if (toggle == null)
            {
                return;
            }
            UIAction uiAction = toggle.IsOn ? OnToggleOn : OnToggleOff;

            if (playAnimation)
            {
                PlayAnimation(toggle, false);                                                 //Animation
            }
            if (playSound)
            {
                uiAction.PlaySound();                                                         //Sound
            }
            if (executeEffect)
            {
                uiAction.ExecuteEffect(uiAction.GetCanvas(toggle.gameObject));                //Effect
            }
            if (executeAnimatorEvents)
            {
                uiAction.InvokeAnimatorEvents();                                              //Animator Events
            }
            if (!sendGameEvents && !executeUnityEvent)
            {
                return;
            }
            if (!TriggerEventsAfterAnimation)
            {
                if (sendGameEvents)
                {
                    uiAction.SendGameEvents(toggle.gameObject);                 //Game Events
                }
                if (!executeUnityEvent)
                {
                    return;
                }
                uiAction.InvokeAction(toggle.gameObject); //Action
                uiAction.InvokeUnityEvent();              //UnityEvent
            }
            else
            {
                Coroutiner.Start(InvokeCallbackAfterDelay(() =>
                {
                    if (toggle == null)
                    {
                        return;
                    }
                    if (sendGameEvents)
                    {
                        uiAction.SendGameEvents(toggle.gameObject);                                                           //Game Events
                    }
                    if (!executeUnityEvent)
                    {
                        return;
                    }
                    uiAction.InvokeAction(toggle.gameObject);                                           //Action
                    uiAction.InvokeUnityEvent();                                                        //UnityEvent
                },
                                                          GetAnimationTotalDuration()));
            }
        }