public string GenerateSourceCode(ScenesData data, SceneSearcherPreferences preferences) { var menuItemTemplate = preferences.ProjectName + "/Scenes/"; var scenesSorted = data.Scenes; scenesSorted = preferences.SceneOrder == SearcherSceneOrder.Alphabetic ? scenesSorted.OrderBy(x => x.SceneVisibleName.ToLower()).ToList() : scenesSorted.OrderBy(x => x.OrderNumber).ToList(); var builder = new StringBuilder(GenerateHeader()); foreach (var scene in scenesSorted) { builder.Append(MethodTemplate(menuItemTemplate + scene.SceneVisibleName, GenerateMethodName(), scene.SceneVisblePathInProject)); } builder.Append(GenerateFooter()); return(builder.ToString()); }
private void GetPluginData() { var seaercherFolder = AssetDatabase.FindAssets("SceneSearcher", null); string pluginPath = ""; foreach (var s in seaercherFolder) { var file = AssetDatabase.GUIDToAssetPath(s); if (file.Contains('.')) { continue; } pluginPath = file; } pluginPath += "/"; if (!Directory.Exists(pluginPath)) { Debug.LogError("Directory " + pluginPath + " does not exist"); return; } //Here all the services json files live. pluginPath = pluginPath + "Data/"; var dataDirectory = !Directory.Exists(pluginPath) ? Directory.CreateDirectory(pluginPath) : new DirectoryInfo(pluginPath); // var files = dataDirectory.GetFiles("*.json"); //Cache files paths _dataFilePath = dataDirectory.FullName + DataFileName; _prefsFilePath = dataDirectory.FullName + PrefsFileName; //Parse data about plugin preferences if (File.Exists(dataDirectory.FullName + PrefsFileName)) { var fileContents = File.ReadAllText(_prefsFilePath); if (!string.IsNullOrEmpty(fileContents)) { _preferences = JsonUtility.FromJson <SceneSearcherPreferences>(fileContents); } } if (_preferences == null) { _preferences = new SceneSearcherPreferences(); } //Parse data about already cached scenes if (File.Exists(dataDirectory.FullName + DataFileName)) { var fileContents = File.ReadAllText(_dataFilePath); if (!string.IsNullOrEmpty(fileContents)) { _scenesData = JsonUtility.FromJson <ScenesData>(fileContents); } } if (_scenesData == null) { _scenesData = new ScenesData(); } }
private void DrawSelectFolderToSearchScenes() { _scenesInFolderLabel = "Add scenes in folder (" + _scenesInSelectedFolder.Count + ")"; _showSelectFolder = EditorGUILayout.Foldout(_showSelectFolder, _scenesInFolderLabel, true, EditorStyles.boldLabel); if (!_showSelectFolder) { return; } GuiLine(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Select folder to search scenes automatically. All found scenes in this folder will be processed."); EditorGUILayout.BeginHorizontal(); //Select folder and recusrively scan contents to find scenes if (GUILayout.Button("Select Folder")) { var path = EditorUtility.OpenFolderPanel("Select folder to scan", Application.dataPath, ""); var sceneFilesInDirectory = Directory.GetFiles(path, "*.unity", SearchOption.AllDirectories); _selectedFolder = path; foreach (var file in sceneFilesInDirectory) { var sceneModel = new SceneModel(file); _scenesInSelectedFolder.Scenes.Add(sceneModel); } } EditorGUILayout.LabelField("Selected folder : " + _selectedFolder); EditorGUILayout.EndHorizontal(); EditorGUILayout.LabelField("Scenes in selected folder : " + _scenesInSelectedFolder.Count); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Add Selected Scenes")) { var processedScenesDictionary = _scenesData.Scenes.ToDictionary(x => x.ScenePathInProject, x => x); foreach (var scene in _scenesInSelectedFolder.Scenes) { if (!processedScenesDictionary.ContainsKey(scene.ScenePathInProject)) { processedScenesDictionary.Add(scene.ScenePathInProject, scene); } } _scenesData.Scenes = processedScenesDictionary.Values.ToList(); _scenesInSelectedFolder.Scenes.Clear(); } if (GUILayout.Button("Reset Selection")) { if (EditorUtility.DisplayDialog("Reset selected folder?", "Are you sure you want to reset selected folder?", "YES", "NO")) { _selectedFolder = ""; _scenesInSelectedFolder = new ScenesData(); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.Space(); _showDataInSelectedFolder = EditorGUILayout.Foldout(_showDataInSelectedFolder, "Scenes in selected folder", true, EditorStyles.boldLabel); if (_showDataInSelectedFolder && _scenesInSelectedFolder.Count != 0) { _folderScenesPosition = GUILayout.BeginScrollView(_folderScenesPosition); foreach (var scene in _scenesInSelectedFolder.Scenes) { DrawSceneModel(scene, SceneDataLocation.FromSelectedFolder); } GUILayout.EndScrollView(); } }