public bool GoToState(BaseState <T> state) { if (!CurrentState.Value.ValidNextStates.Contains(state.GetType()) || !CurrentState.Value.Exit()) { return(false); } BeforeStateChange.Execute(state); CurrentState.Value = state; CurrentState.Value.Enter(this); AfterStateChange.Execute(state); return(true); }
protected virtual void OnBeforeStateChange() { BeforeStateChange.Invoke(this); }