public void TransferTo(int stateType, FSMEvent ev = null) { foreach (var item in _states) { if (item.StateType == stateType) { TransferTo(item, ev); return; } } }
public void SendEvent(FSMEvent ev) { if (CurState == null) { return; } if (CurState.OnEvent(ev)) { return; } _curEvent = ev; }
void TransferTo(FSMState state, FSMEvent ev) { if (state == null) { return; } if (state == CurState) { return; } if (CheckTransfer(state) == false) { return; } CurState.OnExit(); CurState = state; CurState.OnEnter(ev); }
protected virtual FSMState StateFromEvent(FSMEvent ev) { FSMState ret = (ev == null ? null : GetState(ev.FSMStateTypeToTransfer)); return(CheckTransfer(ret) ? ret : null); }