private void Add(TransitionTable table, IState source, ITransition transition) { if (!table._transitions.TryGetValue(source, out var transitions)) { transitions = new List <ITransition>(); table._transitions.Add(source, transitions); } transitions.Add(transition); }
/// <summary> /// TODO /// </summary> public TransitionTable Build() { //find all the submitted states (needed for AnyTransition) foreach (var t in _collections) { _allStates.UnionWith(t.States); } var table = new TransitionTable(); foreach (var collection in _collections) { foreach (var transition in collection) { Add(table, transition.Source, transition.Transition); } } return(table); }