public void AnimateMenuEntry() { //TODO: hack fix sometimes mediator is still there after the gameobject has been destroyed by Unity if (View != null) { View.StartEntryAnimation(() => SceneMenuStateEntryAnimationEndedSignal.Dispatch()); if (MenuState.EnterBGM != BibaBGM.None) { PlayBibaBGMSignal.Dispatch(MenuState.EnterBGM); } if (MenuState.EnterSFX != BibaSFX.None) { PlayBibaSFXSignal.Dispatch(MenuState.EnterSFX); } } }
public override void Execute() { if (BibaSceneStack.Count > 0) { var menuState = BibaSceneStack.Peek(); if (menuState != null && menuState is SceneMenuState) { var menuStateGo = BibaSceneStack.GetTopGameObjectForTopMenuState(); if (menuStateGo != null) { var menuStateMediator = menuStateGo.GetComponent <SceneMenuStateMediator>(); if (menuStateMediator != null) { Retain(); menuStateMediator.AnimateMenuEntry(); SceneMenuStateEntryAnimationEndedSignal.AddListener(MenuEntryAnimationCompleted); } } } } }
void MenuEntryAnimationCompleted() { SceneMenuStateEntryAnimationEndedSignal.RemoveListener(MenuEntryAnimationCompleted); Release(); }