static void CreateFolderInit(FolderInit FolderInit) { string FolderInitPath = null; if (FolderInit.parentPath == null) FolderInitPath = FolderInit.folderName; else FolderInitPath = FolderInit.parentPath + "/" + FolderInit.folderName; if (!PathExists(FolderInitPath)) { AssetDatabase.CreateFolder(FolderInit.parentPath, FolderInit.folderName); } foreach (FolderInit childFolderInit in FolderInit.childFolders) { CreateFolderInit(childFolderInit); } }
private static void DrawFolderInits(FolderInit FolderInit) { EditorGUI.indentLevel++; if (FolderInit.readOnly) { // Assets FolderInit ONLY EditorGUILayout.BeginHorizontal(); GUIStyle option = null; if (FolderInit.folderName == "Assets" || assetsOnlyReadOnly) option = EditorStyles.miniButton; else option = EditorStyles.miniButtonLeft; int widthOfButton = buttonWidth; if (GUILayout.Button("Add Folder", option, GUILayout.Width(100))) { if (FolderInit.folderName == "Assets") FolderInitsAdded = true; string parentPath = FolderInit.parentPath == null ? "" : FolderInit.parentPath + "/"; FolderInit newFolderInit = new FolderInit(parentPath + FolderInit.folderName, "New Folder"); if (!FolderInitExists(newFolderInit)) { FolderInits.Add(newFolderInit); FolderInit.childFolders.Add(newFolderInit); } } if (FolderInit.folderName != "Assets") { FolderInit.readOnly = false; EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndHorizontal(); } else { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("> " + FolderInit.folderName); FolderInit.folderName = GUILayout.TextField(FolderInit.folderName, GUILayout.Width(textWidth)); if (GUILayout.Button(" + ", EditorStyles.miniButtonLeft, GUILayout.Width(buttonWidth))) { if (FolderInit.folderName == "") FolderInit.folderName = "New Folder"; FolderInit newFolderInit = new FolderInit(FolderInit.parentPath + "/" + FolderInit.folderName, "New Folder"); if (!FolderInitExists(newFolderInit)) { FolderInits.Add(newFolderInit); FolderInit.childFolders.Add(newFolderInit); } } if (GUILayout.Button("-", EditorStyles.miniButtonRight, GUILayout.Width(buttonWidth))) { if (FolderInits.Contains(FolderInit)) { FolderInit.delete = true; } EditorGUILayout.EndHorizontal(); return; } EditorGUILayout.EndHorizontal(); } foreach (FolderInit childFolderInit in FolderInit.childFolders) { if (!childFolderInit.delete) DrawFolderInits(childFolderInit); } EditorGUI.indentLevel--; for (int i = 0; i < FolderInit.childFolders.Count; i++) { if (FolderInit.childFolders[i].delete) { FolderInit.childFolders.Remove(FolderInit.childFolders[i]); break; } } }
// Update is called once per frame private static void init() { FolderInits = new List<FolderInit>(); FolderInit assetsFolderInit = new FolderInit(); if (FolderInits.Count == 0 || !FolderInitExists(assetsFolderInit)) FolderInits.Add(assetsFolderInit); }
private static bool FolderInitExists(FolderInit FolderInit) { if (!FolderInits.Contains(FolderInit)) return false; return true; }