public static void CreateNewGraph(string path) { vFSMBehaviour curGraph = ScriptableObject.CreateInstance <vFSMBehaviour>(); if (curGraph != null) { AssetDatabase.CreateAsset(curGraph, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); Selection.activeObject = curGraph; var entryNode = CreateNode <vFSMState>("Entry", curGraph); entryNode.resetCurrentDestination = false; entryNode.parentGraph = curGraph; entryNode.useDecisions = false; entryNode.useActions = false; entryNode.canEditName = false; entryNode.canRemove = false; entryNode.canTranstTo = false; entryNode.canEditColor = false; entryNode.canSetAsDefault = false; entryNode.description = "This State Run Just in Start\n to init first state"; entryNode.nodeColor = Color.green; var anyState = CreateNode <vFSMState>("AnyState", curGraph); anyState.resetCurrentDestination = false; anyState.useDecisions = true; anyState.useActions = false; anyState.canEditName = false; anyState.canRemove = false; anyState.canTranstTo = false; anyState.canEditColor = false; anyState.canSetAsDefault = false; anyState.description = "This State Run after current state"; anyState.nodeColor = Color.cyan; anyState.nodeRect.y += 100; anyState.parentGraph = curGraph; curGraph.states.Add(entryNode); curGraph.states.Add(anyState); curGraph.InitGraph(); vFSMNodeEditorWindow.InitEditorWindow(curGraph); } else { EditorUtility.DisplayDialog("Node Message", "Unable to create new graph, please see your friendly programmer!", "OK"); } }