public void SaveCurrentType(bool warning = false, string baseType = null) { // Verify properties list for (var i = 0; i < _selectedProperties.Length; i++) { CustomPropertyInfo property = _selectedProperties[i]; if (string.IsNullOrEmpty(property.Name) || char.IsNumber(property.Name[0])) { property.Name = ""; if (warning) { EditorUtility.DisplayDialog("Save script error", "Property name cannot be a digit, null or empty!", "OK"); } return; } for (var j = 0; j < _selectedProperties.Length; j++) { if (j != i && _selectedProperties[i].Name.ToLower() == _selectedProperties[j].Name.ToLower()) { _selectedProperties[j].Name = ""; if (warning) { EditorUtility.DisplayDialog("Save script error", "There are one or more properties are have the same name!", "OK"); } return; } } } if (baseType == null) { baseType = _selectedType.BaseType.Name; } var inheritance = baseType == nameof(ObservableModel) ? $" : {baseType}" : string.Empty; if (!string.IsNullOrEmpty(_currentScriptPath)) { var backupCode = UIManCodeGenerator.DeleteScript(_handlerScriptPath); var code = UIManCodeGenerator.GenerateType(_selectedType.Name, inheritance, _selectedTypeIsSealed, _config, this.namespaceField.Text, _selectedProperties); var saved = UIManCodeGenerator.SaveScript(_currentScriptPath, code, true); if (baseType != nameof(ObservableModel)) { GenerateHandler(backupCode, baseType); saved = false; } if (saved) { AssetDatabase.Refresh(ImportAssetOptions.Default); } } }
private void DrawHeaderButtons() { GUILayout.BeginHorizontal(); if (!File.Exists(_handlerScriptPath)) { if (ColorButton.Draw("Generate Type Handler", CommonColor.LightGreen, GUILayout.Height(30))) { var backupCode = UIManCodeGenerator.DeleteScript(_handlerScriptPath); GenerateHandler(backupCode, _selectedType.BaseType.Name); } } else { if (ColorButton.Draw("Edit Type Handler", CommonColor.LightBlue, GUILayout.Height(30))) { var handler = UIManCodeGenerator.GetScriptPathByType(_selectedType); handler = handler.Replace(".cs", ".Handler.cs"); UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(handler, 1); } } if (ColorButton.Draw("Edit Type View", CommonColor.LightBlue, GUILayout.Height(30))) { GameObject prefabInstance; UnityEngine.Object obj = FindObjectOfType(_selectedType); if (obj != null) { prefabInstance = ((MonoBehaviour)obj).gameObject; } else { var isDialog = _selectedType.BaseType == typeof(UIManDialog); var prefabFolder = GetUIPrefabPath(_selectedType, isDialog); var prefabFile = _selectedType.Name + PREFAB_EXT; var prefabPath = Path.Combine(prefabFolder, prefabFile); GameObject prefab = AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath); if (prefab == null) { prefab = FindAssetObject <GameObject>(_selectedType.Name, PREFAB_EXT); } prefabInstance = PrefabUtility.InstantiatePrefab(prefab) as GameObject; if (isDialog) { prefabInstance.transform.SetParent(UIMan.Instance.dialogRoot, false); } else { prefabInstance.transform.SetParent(UIMan.Instance.screenRoot, false); } } Selection.activeGameObject = prefabInstance; } if (ColorButton.Draw("Delete", CommonColor.LightRed, GUILayout.Height(30))) { var cs = UIManCodeGenerator.GetScriptPathByType(_selectedType); var handler = cs.Replace(".cs", ".Handler.cs"); AssetDatabase.DeleteAsset(cs); AssetDatabase.DeleteAsset(handler); var isDialog = _selectedType.BaseType == typeof(UIManDialog); var prefabFolder = GetUIPrefabPath(_selectedType, isDialog); var prefabFile = _selectedType.Name + PREFAB_EXT; var prefabPath = UIManDefine.ASSETS_FOLDER + prefabFolder + prefabFile; AssetDatabase.DeleteAsset(prefabPath); AssetDatabase.Refresh(); } GUILayout.EndHorizontal(); LineHelper.Draw(Color.gray); }