protected override void InitialiseBrain()
        {
            brain = new StateMachine.FSM(this);
            var patrol = new Patrol();
            var dead   = new Dead();

            patrol.AddTransition(dead, () => { return(!IsAlive); });

            brain.AddState(patrol);
            brain.AddState(dead);
            brain.Initialise("Patrol");
        }
        protected override void InitialiseBrain()
        {
            brain = new StateMachine.FSM(this);
            var patrol = new Patrol();
            var dying  = new Dying(CorpseAppearance);
            var dead   = new Dead();

            patrol.AddTransition(dying, () => { return(!IsAlive); });
            dying.AddTransition(dead, () => { return(dying.HitGround); });

            brain.AddState(patrol);
            brain.AddState(dying);
            brain.AddState(dead);
            brain.Initialise("Patrol");
        }
        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");
        }