/// <summary>
        /// Loads data from the scriptable object
        /// </summary>
        private void LoadGraph()
        {
            states = new List <StateNode>();
            if (currentSM != null)
            {
                // Load data
                Object[] assets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(currentSM));
                Dictionary <State, StateNode> stateToNodeRelation = new Dictionary <State, StateNode>();

                foreach (Object obj in assets)
                {
                    if (obj != null)
                    {
                        if (obj.GetType() == typeof(State))
                        {
                            // Create all the states
                            State     state   = (State)obj;
                            StateNode newNode = new StateNode(state, OnClickRemoveState, OnStartTransition, OnStateClick, OnStateChange, OnTransitionClicked, OnSetStartState);
                            states.Add(newNode);
                            stateToNodeRelation.Add(state, newNode);
                            if (state == currentSM.CurrentState)
                            {
                                startingState = newNode;
                            }
                        }
                    }
                }

                if (currentSM.AnyState != null)
                {
                    anyStateNode = new StateNode(currentSM.AnyState, OnClickRemoveState, OnStartTransition, OnStateClick, OnStateChange, OnTransitionClicked, null);
                    for (int i = 0; i < currentSM.AnyState.Transitions.Count; i++)
                    {
                        anyStateNode.LoadTransition(stateToNodeRelation[currentSM.AnyState.Transitions[i].NextState], currentSM.AnyState.Transitions[i]);
                    }
                }

                // Create all the transitions
                for (int i = 0; i < states.Count; i++)
                {
                    for (int j = 0; j < states[i].NodeState.Transitions.Count; j++)
                    {
                        states[i].LoadTransition(stateToNodeRelation[states[i].NodeState.Transitions[j].NextState], states[i].NodeState.Transitions[j]);
                    }
                }
            }
        }