private StateTransition GetNextTransition() { int index = transitions.IndexOf(currentTransition); if (currentTransition != null && PlayingLastTransition()) { isFininshed = true; return(null); } TransitionFininshed(this, new TransitionPlayerEventArgs(currentTransition)); StateTransition next = transitions[index + 1]; next.LastTransition = currentTransition; if (!PlayingLastTransition()) { if (index + 2 < transitions.Count) { next.NextTransition = transitions[index + 2]; } } next.Start(); return(next); }
public void Start() { if (running) { return; } foreach (StateTransition transition in transitions) { transition.NextGameState = nextGameState; transition.CurrentGameState = currentGameState; } running = true; currentTransition = transitions[0]; if (!PlayingLastTransition()) { currentTransition.NextTransition = transitions[1]; } currentTransition.Start(); }