private void Init() { if (_didInit) { return; } _didInit = true; for (int index = 0; index < states.Count; index++) { FSMState fsmState = states[index]; if (fsmState == null) { return; } fsmState.Awake(this); var outgoingTransitions = new List <TransitionStatePair>(); TransitionMap[fsmState] = outgoingTransitions; foreach (SrlTransitionPair srlTransitionPair in transitions) { if (srlTransitionPair.fromState == index) { outgoingTransitions.Add(new TransitionStatePair() { State = GetState(srlTransitionPair.toState), Transition = srlTransitionPair.transition }); } } } }