public static List <FSMState> SaveFSMStates(this NodeCanvas.Framework.GraphOwner graphOwner) { FSM fsm = graphOwner.graph as FSM; if (fsm == null) { return(null); } var states = new List <FSMState>(); var current = fsm.currentState; states.Add(current); while (current is NestedFSMState subState) { current = subState.nestedFSM?.currentState; if (current != null) { states.Add(current); } } return(states); }
public static void LoadFSMStates(this NodeCanvas.Framework.GraphOwner graphOwner, List <FSMState> states) { FSM fsm = graphOwner.graph as FSM; if (fsm == null) { return; } foreach (var state in states) { fsm.EnterState(state); if (fsm.currentState is NestedFSMState subState) { fsm = subState.nestedFSM ?? null; } } }