public static IEnumerator ExecuteImport(ConvertSetting s) { downloadSuccess = false; yield return(EditorCoroutineRunner.StartCoroutine(ExecuteDownload(s))); if (!downloadSuccess) { yield break; } CreateAssetsJob createAssetsJob = new CreateAssetsJob(s); // Generate Code if type script is not found. Type assetType; if (s.isEnum || !CsvConvert.TryGetTypeWithError(s.className, out assetType, s.checkFullyQualifiedName, dialog: false)) { GlobalCCSettings gSettings = CCLogic.GetGlobalSettings(); GenerateOneCode(s, gSettings); if (!s.isEnum) { EditorUtility.DisplayDialog( "Code Generated", "Please reimport for creating assets after compiling", "ok" ); } } // Create Assets else { createAssetsJob.Execute(); } // AfterImport 処理 for (int i = 0; i < s.executeAfterImport.Count; i++) { var afterSettings = s.executeAfterImport[i]; if (afterSettings != null) { yield return(EditorCoroutineRunner.StartCoroutine(ExecuteImport(afterSettings))); } } }
public static IEnumerator ExecuteDownload(ConvertSetting s) { GSPluginSettings.Sheet sheet = new GSPluginSettings.Sheet(); sheet.sheetId = s.sheetID; sheet.gid = s.gid; GlobalCCSettings gSettings = CCLogic.GetGlobalSettings(); string csvPath = s.GetCsvPath(gSettings); if (string.IsNullOrWhiteSpace(csvPath)) { Debug.LogError("unexpected downloadPath: " + csvPath); downloadSuccess = false; yield break; } string absolutePath = CCLogic.GetFilePathRelativesToAssets(s.GetDirectoryPath(), csvPath); // 先頭の Assets を削除する if (absolutePath.StartsWith("Assets" + Path.DirectorySeparatorChar)) { sheet.targetPath = absolutePath.Substring(6); } else { Debug.LogError("unexpected downloadPath: " + absolutePath); downloadSuccess = false; yield break; } sheet.isCsv = true; sheet.verbose = false; string title = "Google Spreadsheet Loader"; yield return(EditorCoroutineRunner.StartCoroutineWithUI(GSEditorWindow.Download(sheet, s.GetDirectoryPath()), title, true)); // 成功判定を行う. if (GSEditorWindow.previousDownloadSuccess) { downloadSuccess = true; } yield break; }
public void Execute() { GlobalCCSettings gSettings = CCLogic.GetGlobalSettings(); try { CsvConvert.CreateAssets(settings, gSettings); } catch (Exception e) { Debug.LogException(e); } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorUtility.ClearProgressBar(); }
public static IEnumerator Download(GSPluginSettings.Sheet ss, string settingDir) { previousDownloadSuccess = false; string sheetId = ss.sheetId; string gid = ss.gid; string label = "Downloading " + ss.targetPath; EditorCoroutineRunner.UpdateUILabel(label); var gsLoader = new GSLoader(); var globalSettings = CCLogic.GetGlobalSettings(); string apiKey = globalSettings.apiKey; bool useV4 = globalSettings.useV4; yield return(EditorCoroutineRunner.StartCoroutine(gsLoader.LoadGS(sheetId, gid, apiKey, useV4))); if (!gsLoader.isSuccess) { Debug.Log("Failed to load spreadsheet data."); yield break; } CsvData csvData = gsLoader.loadedCsvData; string targetPathRelativeToAssets = ss.GetFilePathRelativesToAssets(settingDir); if (csvData != null) { if (ss.isCsv) { string targetDir = Path.GetDirectoryName(targetPathRelativeToAssets); if (!Directory.Exists(targetDir)) { try { Directory.CreateDirectory(targetDir); Debug.Log("指定のフォルダが存在しないため、作成しました: " + targetDir); } catch (Exception e) { Debug.LogError("指定のフォルダの作成に失敗: " + e.Message); } // Debug.LogError("指定のフォルダは存在しません: " + targetDir); // return; } using (var s = new StreamWriter(targetPathRelativeToAssets)) { s.Write(csvData.ToString()); } } else { // AssetDatabase.CreateAsset(csvData, targetPathRelativeToAssets); Debug.LogError("CsvData の書き出しには未対応になりました"); } if (ss.verbose) { Debug.Log("Write " + ss.targetPath); } previousDownloadSuccess = true; AssetDatabase.Refresh(); } else { Debug.LogError("Fails for " + ss.ToString()); } }
private void OnGUI() { GUILayout.Space(6f); ConvertSetting[] settings = null; if (cachedAllSettings != null) { settings = cachedAllSettings; } // 検索ボックスを表示 GUILayout.BeginHorizontal(); searchTxt = SearchField(searchTxt); searchTxt = searchTxt.ToLower(); GUILayout.EndHorizontal(); if (settings != null) { scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (int i = 0; i < settings.Length; i++) { var s = settings[i]; // 設定が削除されている場合などに対応 if (s == null) { continue; } // 検索ワードチェック if (!string.IsNullOrEmpty(searchTxt)) { if (s.tableGenerate) { if (!searchTxt.IsSubsequence(s.tableAssetName.ToLower())) { continue; } } else { if (!searchTxt.IsSubsequence(s.className.ToLower())) { continue; } } } GUILayout.BeginHorizontal("box"); #if ODIN_INSPECTOR // ------------------------------ // 設定を複製ボタン. // ------------------------------ if (GUILayout.Button("+", GUILayout.Width(20))) { var copied = s.Copy(); var window = CCSettingsEditWindow.OpenWindow(); window.SetNewSettings(copied, s.GetDirectoryPath()); GUIUtility.ExitGUI(); } // ------------------------------ // 設定を編集ボタン. // ------------------------------ var edit = EditorGUIUtility.Load("editicon.sml") as Texture2D; if (GUILayout.Button(edit, GUILayout.Width(20))) { var window = CCSettingsEditWindow.OpenWindow(); window.SetSettings(s); GUIUtility.ExitGUI(); } #endif // ------------------------------ // テーブル名 (enum の場合は enum名) を表示. // クリックして、設定ファイルに飛べるようにする. // ------------------------------ if (s.tableGenerate) { if (GUILayout.Button(s.tableAssetName, "Label")) { EditorGUIUtility.PingObject(s.GetInstanceID()); GUIUtility.ExitGUI(); } } else { if (GUILayout.Button(s.className, "Label")) { EditorGUIUtility.PingObject(s.GetInstanceID()); GUIUtility.ExitGUI(); } } // ------------------------------ // GS Plugin 使う場合のボタン. // // Import ボタン // Open ボタン // ------------------------------ if (s.useGSPlugin) { if (GUILayout.Button("Import", GUILayout.Width(110))) { EditorCoroutineRunner.StartCoroutine(ExecuteImport(s)); GUIUtility.ExitGUI(); } // GS Plugin を使う場合は Open ボタンを用意する. if (s.useGSPlugin) { if (GUILayout.Button("Open", GUILayout.Width(80)) && !isDownloading) { GSUtils.OpenURL(s.sheetID, s.gid); GUIUtility.ExitGUI(); } } if (s.verboseBtn) { if (GUILayout.Button("DownLoad", GUILayout.Width(110))) { EditorCoroutineRunner.StartCoroutine(ExecuteDownload(s)); GUIUtility.ExitGUI(); } } } // ------------------------------ // コード生成ボタン. // v0.1.2 からは Import に置き換え. // ------------------------------ if (s.verboseBtn) { GUI.enabled = s.canGenerateCode; if (GUILayout.Button("Generate Code", GUILayout.Width(110)) && !isDownloading) { GlobalCCSettings gSettings = CCLogic.GetGlobalSettings(); isDownloading = true; GenerateOneCode(s, gSettings); isDownloading = false; GUIUtility.ExitGUI(); } } // ------------------------------ // アセット生成ボタン. // v0.1.2 からは Import に置き換え. // ------------------------------ if (s.verboseBtn) { GUI.enabled = s.canCreateAsset; if (GUILayout.Button("Create Assets", GUILayout.Width(110)) && !isDownloading) { CreateAssetsJob createAssetsJob = new CreateAssetsJob(s); createAssetsJob.Execute(); GUIUtility.ExitGUI(); } } GUI.enabled = true; // ------------------------------ // 成果物参照まど. // ------------------------------ { Object outputRef = null; if (s.join) { outputRef = s.targetTable; } else { string mainOutputPath = CCLogic.GetMainOutputPath(s); if (mainOutputPath != null) { outputRef = AssetDatabase.LoadAssetAtPath <Object>(mainOutputPath); } } EditorGUI.BeginDisabledGroup(true); EditorGUILayout.ObjectField(outputRef, typeof(Object), false, GUILayout.Width(100)); EditorGUI.EndDisabledGroup(); } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); GUILayout.BeginHorizontal("box"); if (GUILayout.Button("Generate All Codes", "LargeButtonMid") && !isDownloading) { GlobalCCSettings gSettings = CCLogic.GetGlobalSettings(); isDownloading = true; GenerateAllCode(settings, gSettings); isDownloading = false; GUIUtility.ExitGUI(); } if (GUILayout.Button("Create All Assets", "LargeButtonMid") && !isDownloading) { GlobalCCSettings gSettings = CCLogic.GetGlobalSettings(); isDownloading = true; CreateAllAssets(settings, gSettings); isDownloading = false; GUIUtility.ExitGUI(); } GUILayout.EndHorizontal(); } }