protected override void InitialiseBrain() { brain = new StateMachine.FSM(this); var start = new Start(); var idle1 = new Idle(); var idle2 = new Idle(); var up = new Up(this); var down = new Down(this); //Transitions out of start state start.AddTransition(down, () => { return(start.down); }); start.AddTransition(up, () => { return(start.up); }); //Behaviour loop: down -> idle -> up -> idle -> down idle1.AddTransition(down, () => { return(idle1.DurationOver); }); down.AddTransition(idle2, () => { return(down.Done); }); idle2.AddTransition(up, () => { return(idle2.DurationOver); }); up.AddTransition(idle1, () => { return(up.Done); }); brain.AddStates(start, idle1, idle2, up, down); brain.Initialise("Start"); }