public Transition(State start, State end, Predicate predicate, State.Action action = null) { this.start = start; this.end = end; this.predicate = predicate; this.action = action; }
private void InitStateMachine() { _stateMachine = new StateMachine(); _stateMachine.name = "Machine"; State.Action randomAction = new State.Action(() => { UpdateRoadRandom(); }); State.Action esquiveAction = new State.Action(() => { UpdateRoadEsquive(); }); State random = new State(_stateMachine, randomAction); random.name = "Random"; State esquive = new State(_stateMachine, esquiveAction); random.name = "Esquive"; Transition.IsTransitioning transitionBullet = new Transition.IsTransitioning(() => { return _bullets.Count > 0; }); Transition.IsTransitioning transitionNoBullet = new Transition.IsTransitioning(() => { return _bullets.Count == 0; }); Transition bulletDetected = new Transition(esquive, transitionBullet); Transition bulletNotDetected = new Transition(random, transitionNoBullet); random.AddTransition(bulletDetected); esquive.AddTransition(bulletNotDetected); _stateMachine._currentState = random; }