protected void AddStateLeaveTransit(int stateFlags, StateLeaveTransitDelegate leaveTransit) { if (stateLeaveTransitDic == null) { stateLeaveTransitDic = new Dictionary <int, StateLeaveTransitDelegate>(); } stateMachine.FindContainState(stateFlags, stateType => { if (!stateLeaveTransitDic.ContainsKey(stateType)) { stateLeaveTransitDic.Add(stateType, leaveTransit); } }); }
public bool CanLeave(IState enterState, IStateEvent evt) { bool canLeave = true; StateLeaveTransitDelegate leaveDel = null; if (stateLeaveTransitDic != null) { stateLeaveTransitDic.TryGetValue(enterState, out leaveDel); if (leaveDel != null) { canLeave = leaveDel(enterState, evt); } } return(canLeave); }