/// <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())); } }
/// <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())); } }