/// <summary> /// Generates a transition with an extra check-delegate! /// </summary> /// <param name="states"></param> /// <param name="start"></param> /// <param name="end"></param> /// <param name="inverted"></param> /// <param name="eventType"></param> /// <param name="checkDelegate"></param> /// <param name="finishedDelegate"></param> /// <returns></returns> public static FiniteStateMachineTransition <EventType> Generate( List <FiniteStateMachineState <EventType> > states, int start, int end, bool inverted, Type eventType, OsmSharp.Math.StateMachines.FiniteStateMachineTransitionCondition <EventType> .FiniteStateMachineTransitionConditionDelegate checkDelegate, TransitionFinishedDelegate finishedDelegate) { var conditions = new List <FiniteStateMachineTransitionCondition <EventType> >(); conditions.Add(new FiniteStateMachineTransitionCondition <EventType>() { EventTypeObject = eventType, CheckDelegate = checkDelegate }); var trans = new FiniteStateMachineTransition <EventType>() { SourceState = states[start], TargetState = states[end], TransitionConditions = conditions, Finished = finishedDelegate, Inverted = inverted }; states[start].Outgoing.Add(trans); return(trans); }
/// <summary> /// Generates a non-inverted transition with an extra check-delegate! /// </summary> /// <param name="states"></param> /// <param name="start"></param> /// <param name="end"></param> /// <param name="eventType"></param> /// <param name="checkDelegate"></param> /// <param name="finishedDelegate"></param> /// <returns></returns> public static FiniteStateMachineTransition <EventType> Generate( List <FiniteStateMachineState <EventType> > states, int start, int end, Type eventType, OsmSharp.Math.StateMachines.FiniteStateMachineTransitionCondition <EventType> .FiniteStateMachineTransitionConditionDelegate checkDelegate, TransitionFinishedDelegate finishedDelegate) { return(FiniteStateMachineTransition <EventType> .Generate(states, start, end, false, eventType, checkDelegate, finishedDelegate)); }