private void DrawPath(UnitySO_GeneratorConfig pConfig, string strExplainName, ref string strEditPath, bool bIsFolder, bool bIsRelative) { GUILayout.BeginHorizontal(); if (bIsFolder) { GUILayout.Label($"{strExplainName} Folder Path : ", GUILayout.Width(300f)); } else { GUILayout.Label($"{strExplainName} File Path : ", GUILayout.Width(300f)); } GUILayout.Label(strEditPath, GUILayout.Width(400f)); if (GUILayout.Button($"Edit {strExplainName}")) { string strPath = bIsFolder ? EditorUtility.OpenFolderPanel("Root Folder", "", "") : EditorUtility.OpenFilePanel("File Path", "", ""); if (bIsRelative) { Uri pCurrentURI = new Uri(Application.dataPath); strEditPath = pCurrentURI.MakeRelativeUri(new Uri(strPath)).ToString(); } else { strEditPath = strPath; } pConfig.DoSave(); } GUILayout.EndHorizontal(); }
public static void DoUpdate_FromLocalFile() { Stopwatch pStopWatch = new Stopwatch(); pStopWatch.Start(); Debug.Log($"{nameof(DoUpdate_FromLocalFile)} Start"); if (_pTypeDataList == null || _pTypeDataList.listTypeData.Count == 0) { Debug.LogError("Error"); return; } UnitySO_GeneratorConfig pConfig = UnitySO_GeneratorConfig.instance; ClearData(); foreach (TypeData pTypeData in _pTypeDataList.listTypeData) { Generate_TypeToSO(pTypeData, pConfig); } Reference_OtherSO(); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); Debug.Log($"{nameof(DoUpdate_FromLocalFile)} Finish Elapse : " + pStopWatch.Elapsed); }
private void DrawSheetsScroll(UnitySO_GeneratorConfig pConfig, bool bIsPossibleUpdate, bool bIsPossibleDownload) { GUILayout.BeginHorizontal(GUI.skin.box); _vecScrollVector = EditorGUILayout.BeginScrollView(_vecScrollVector); for (int i = 0; i < _pTypeDataList.listTypeData.Count; i++) { GUILayout.BeginHorizontal(); TypeData pTypeData = _pTypeDataList.listTypeData[i]; pTypeData.bEnable = EditorGUILayout.Toggle(pTypeData.strFileName, pTypeData.bEnable); GUI.enabled = bIsPossibleDownload; if (GUILayout.Button("Download And Update")) { SettingWork_FromConfig(); Download(pTypeData); ClearData(); Generate_TypeToSO(pTypeData, pConfig); } GUI.enabled = bIsPossibleUpdate; if (GUILayout.Button("Update From Local")) { ClearData(); Generate_TypeToSO(pTypeData, pConfig); } GUILayout.EndHorizontal(); } GUI.enabled = true; EditorGUILayout.EndScrollView(); GUILayout.EndHorizontal(); }
private static void GenerateSO(UnitySO_GeneratorConfig pConfig, Type pType_Container, Type pType_SO, TypeData pTypeData, JArray pJArray_Instance) { ScriptableObject pContainerInstance = (ScriptableObject)UnitySO_GeneratorConfig.CreateSOFile(pType_Container, pConfig.strDataExport_FolderPath + "/" + pTypeData.strFileName + "_Container", true); _mapSOInstance.Add(pType_SO, new SOInstance(pTypeData, pContainerInstance)); List <Container_CachingLogicBase> listCachingLogic = new List <Container_CachingLogicBase>(); Dictionary <string, FieldInfo> mapFieldInfo_SO = pType_SO.GetFields().ToDictionary((pFieldInfo) => pFieldInfo.Name); IEnumerable <FieldInfo> arrFieldInfo_Container = pType_Container.GetFields(); foreach (var pFieldInfo in arrFieldInfo_Container) { Type pTypeField = pFieldInfo.FieldType; Type pTypeField_Generic = pTypeField.GetGenericTypeDefinition(); if (pTypeField_Generic == typeof(List <>)) { listCachingLogic.Add(new Container_CachingLogic_List(pContainerInstance, pFieldInfo)); } } Generate_SOInstance(pTypeData, pType_SO, pJArray_Instance, pContainerInstance, mapFieldInfo_SO, listCachingLogic, pTypeData.listFieldData); }
private static void SettingWork_FromConfig() { UnitySO_GeneratorConfig pConfig = UnitySO_GeneratorConfig.instance; _pWork_Json.strExportPath = pConfig.strJsonData_FolderPath; _pWork_SO.strExportPath = pConfig.strSOScript_FolderPath; _pWork_SO.strCommandLine = pConfig.strSOCommandLine; }
/* protected - [abstract & virtual] */ // ========================================================================== // #region Private private static bool ParsingConfig(UnitySO_GeneratorConfig pConfig) { _pTypeDataList = new TypeDataList(""); if (GetData_FromJson(pConfig.pTypeDataFile, ref _pTypeDataList) == false) { _pTypeDataList = null; return(false); } return(true); }
static void Init() { // Get existing open window or if none, make a new one: UnitySO_Generator window = (UnitySO_Generator)GetWindow(typeof(UnitySO_Generator), false); window.minSize = new Vector2(900, 300); window.Show(); UnitySO_GeneratorConfig pConfig = UnitySO_GeneratorConfig.instance; if (string.IsNullOrEmpty(pConfig.strSheetID) == false) { #pragma warning disable CS4014 // 이 호출을 대기하지 않으므로 호출이 완료되기 전에 현재 메서드가 계속 실행됩니다. DoConnect(); #pragma warning restore CS4014 // 이 호출을 대기하지 않으므로 호출이 완료되기 전에 현재 메서드가 계속 실행됩니다. } }
public static async Task DoConnect() { UnitySO_GeneratorConfig pConfig = UnitySO_GeneratorConfig.instance; await _pConnector.DoConnect(pConfig.strSheetID, (strSheetID, strFileName, eSheetType, listSheet, pException_OnError) => { _strSheetID_Connected = strSheetID; if (pException_OnError != null) { Debug.LogError(pException_OnError); return; } Debug.Log("Success Connect - " + strSheetID); }, pConfig.strCredential_FilePath ); }
private static void Generate_TypeToSO(TypeData pTypeData, UnitySO_GeneratorConfig pConfig) { if (pTypeData.bEnable == false) { return; } Debug.Log($"{nameof(Generate_TypeToSO)} {pTypeData.strFileName} - Start"); Stopwatch pStopWatch = new Stopwatch(); pStopWatch.Start(); string strTypeName = pTypeData.strFileName; Type pType_SO = GetTypeFromAssemblies(strTypeName, typeof(ScriptableObject)); if (pType_SO == null) { Debug.LogError($"pType_SO == null - {strTypeName} - {strTypeName}"); return; } Type pType_Container = GetTypeFromAssemblies(strTypeName + "_Container"); if (pType_Container == null) { Debug.LogError($"pType_Container == null - {strTypeName} - {strTypeName}"); return; } JArray pJArray_Instance = GetDataArray_FromJson(strTypeName); if (pJArray_Instance.Count == 0) { Debug.LogError($"{strTypeName} - pJArray_Instance.Count == 0"); return; } GenerateSO(pConfig, pType_Container, pType_SO, pTypeData, pJArray_Instance); Debug.Log($"{nameof(Generate_TypeToSO)} {pTypeData.strFileName} - Finish Elapse : " + pStopWatch.Elapsed); }
private static bool Check_IsPossible_Update(UnitySO_GeneratorConfig pConfig) { return(_pTypeDataList != null && string.IsNullOrEmpty(pConfig.strJsonData_FolderPath) == false); }
private void DrawPath_File(UnitySO_GeneratorConfig pConfig, string strExplainName, ref string strFilePath, bool bIsRelative = true) { DrawPath(pConfig, strExplainName, ref strFilePath, false, bIsRelative); }
private void DrawPath_Folder(UnitySO_GeneratorConfig pConfig, string strExplainName, ref string strFolderPath, bool bIsRelative = true) { DrawPath(pConfig, strExplainName, ref strFolderPath, true, bIsRelative); }
// ========================================================================== // /* protected - Override & Unity API */ private void OnGUI() { UnitySO_GeneratorConfig pConfig = UnitySO_GeneratorConfig.instance; if (pConfig == null) { Debug.LogError("pConfig == null"); return; } GUILayout.Space(10f); DrawPath_File(pConfig, "Credential Path", ref pConfig.strCredential_FilePath); GUILayout.Space(10f); DrawPath_Folder(pConfig, "SOScript Folder Path", ref pConfig.strSOScript_FolderPath); DrawPath_Folder(pConfig, "Json Data Folder Path", ref pConfig.strJsonData_FolderPath); GUILayout.Space(10f); DrawPath_Folder(pConfig, "SO Export Path", ref pConfig.strDataExport_FolderPath); if (_pTypeDataList == null) { ParsingConfig(pConfig); } GUILayout.BeginHorizontal(); { EditorGUI.BeginChangeCheck(); pConfig.pTypeDataFile = (TextAsset)EditorGUILayout.ObjectField("TypeData File : ", pConfig.pTypeDataFile, typeof(TextAsset), false, GUILayout.Width(700f)); if (EditorGUI.EndChangeCheck()) { pConfig.DoSave(); } if (GUILayout.Button("Parsing File")) { if (ParsingConfig(pConfig) == false) { Debug.LogError("TypeDataList JsonParsing Fail"); return; } } } GUILayout.EndHorizontal(); GUILayout.Space(30f); if (_pTypeDataList != null) { GUILayout.Label($"TypeData File is Valid"); } else { GUILayout.Label($"TypeData File is InValid"); } bool bIsPossibleUpdate = Check_IsPossible_Update(pConfig); GUI.enabled = bIsPossibleUpdate; if (GUILayout.Button("Update Form Local", GUILayout.Width(200f))) { DoUpdate_FromLocalFile(); } GUILayout.Space(30f); GUILayout.BeginHorizontal(); { GUILayout.Label($"SheetID : ", GUILayout.Width(100f)); EditorGUI.BeginChangeCheck(); pConfig.strSheetID = GUILayout.TextField(pConfig.strSheetID); if (EditorGUI.EndChangeCheck()) { pConfig.DoSave(); } if (GUILayout.Button("Connect!", GUILayout.Width(100f))) { #pragma warning disable 4014 DoConnect(); #pragma warning restore 4014 } } GUILayout.EndHorizontal(); if (_pConnector.bIsConnected) { GUILayout.Label($"Excel is Connected : {_strSheetID_Connected} - Sheet List"); } else { GUILayout.Label($"Excel is Not Connected", GetRedGUIStyle()); } GUILayout.Space(30f); if (_pTypeDataList == null) { return; } bool bIsMatchSheetID = Check_IsMatch_SheetID(); bool bIsPossibleDownload = Check_IsPossibleDownload(bIsMatchSheetID); DrawSheetsScroll(pConfig, bIsPossibleUpdate, bIsPossibleDownload); GUILayout.Space(30f); if (bIsMatchSheetID == false) { GUILayout.Label($"SheetID Is Not Match - Local : {_pTypeDataList.strFileName}, Current Connected : {_strSheetID_Connected}", GetRedGUIStyle()); } GUILayout.BeginHorizontal(); { GUILayout.Label($"CommandLine : ", GUILayout.Width(100f)); EditorGUI.BeginChangeCheck(); pConfig.strSOCommandLine = GUILayout.TextField(pConfig.strSOCommandLine); if (EditorGUI.EndChangeCheck()) { pConfig.DoSave(); } } GUILayout.EndHorizontal(); GUI.enabled = bIsPossibleDownload; if (GUILayout.Button("Download And Update", GUILayout.Width(200f))) { DoDownload_And_Update(); } }