public void InstantiateOrOpenConditionEditor(XNode.Node targetNode)
        {
            TransitionNode   node      = targetNode as TransitionNode;
            ConditionalGraph condGraph = node.conditionGraph;

            if (condGraph == null)
            {
                condGraph = CreateNewConditionalGraph(node);
            }

            NodeEditorWindow.Open(condGraph);
        }
        /// <summary>
        /// Creates a new conditional graph as an asset
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        public ConditionalGraph CreateNewConditionalGraph(TransitionNode node)
        {
            ConditionalGraph condGraph = ScriptableObject.CreateInstance <ConditionalGraph>();
            string           nodePath  = AssetDatabase.GetAssetPath(node);

            string condPath = nodePath.Substring(0, nodePath.LastIndexOf("/") + 1);

            condPath      += "cndGraph_" + node.graph.name + "_" + node.name + ".asset";
            condGraph.name = node.graph.name + "_" + node.name + "_ConditionalGraph";
            string finalPath = AssetDatabase.GenerateUniqueAssetPath(condPath);

            AssetDatabase.CreateAsset(condGraph, finalPath);

            node.conditionGraph  = condGraph;
            condGraph.parentNode = node;

            ConditionalRootNode rootnode = condGraph.AddNode <ConditionalRootNode>();

            rootnode.name = "Condition Root Node";
            AssetDatabase.AddObjectToAsset(rootnode, condGraph);

            condGraph.rootNode = rootnode;
            return(condGraph);
        }