protected Automata move_transition(Transition trans) { // if the from_state is above ours, we need to get to the pivot first trans.invoke_entry(this); if (current != null){ while (current != trans.pivot) { if (current == null){ Debug.LogError("Automata not on transition path."); return this; } eject(); } } else { move_direct(trans.pivot); } trans.invoke_transfer(this); foreach(State down in trans.downswing){ move_direct(down); } trans.invoke_exit(this); return this; }