public static void CreateFSMScript(string className, string path = "Assets/", string baseClass = "FSMState")
    {
        string classCode =
            @"
using UnityEngine;
using System.Collections;
public class " + className + " : " + baseClass + @"{
 
    public override void Enter(FSMState lastState)
    {
        base.Enter(lastState);
    }

    public override FSMEvent Process ()
	{
		return null;	
	}

    public override void Leave(FSMState nextState)
    {
        base.Leave(nextState);
    }

}";

        if (baseClass != "FSMState" && !FSMScriptManager.ScriptExists(baseClass))
        {
            FSMScriptManager.CreateFSMScript(baseClass, path);
        }

        string copyPath = path + className + ".cs";

        Debug.Log("Creating Classfile: " + copyPath);

        if (File.Exists(copyPath) == false)   // do not overwrite
        {
            using (StreamWriter outfile =
                       new StreamWriter(copyPath))
            {
                outfile.WriteLine(classCode);
            }//File written
        }
    }
 void ProcessCreateState()
 {
     if (selectedScriptCreationOptionIndex == 0)
     {
         if (!FSMScriptManager.ScriptExists(newScriptName))
         {
             FSMScriptManager.CreateFSMScript(newScriptName, MyFSMEditor.MyFSM.DefaultScriptPath, MyFSMEditor.MyFSM.BaseStateScriptClass);
             AssetDatabase.Refresh();
             isScriptCompiling = true;
         }
         else
         {
             Debug.LogError("Script " + stateName + " already exists!!!");
         }
     }
     else if (selectedScriptCreationOptionIndex == 1)
     {
         string existingScriptName = scriptList[selectedExistingScriptIndex];
         CreateState(existingScriptName);
     }
 }