void MatchFormWithExistingEnum() { if (_list == null) { return; } if (currentEnum == null) { return; } if (currentEnumFileDetails != null) { return; } currentEnum.UpdateFilePath(); string currentFilePath = currentEnum.filePath; foreach (KeyValuePair <string, EnumFileDetails> _item in _list) { if (_item.Key == currentFilePath) { currentEnumFileDetails = _item.Value; StartEditingExistingEnum(currentEnumFileDetails); return; } } }
void OnGUI_DoEditableEnumItem(string filePath, EnumFileDetails details) { GUILayout.BeginHorizontal("box", GUILayout.ExpandHeight(false)); GUILayout.Label(details.nameSpace + "." + details.enumName); GUILayout.FlexibleSpace(); if (GUILayout.Button("Select in Project", "MiniButton")) { var _object = AssetDatabase.LoadAssetAtPath("Assets/" + details.projectPath, typeof(UnityEngine.Object)); EditorGUIUtility.PingObject(_object.GetInstanceID()); Selection.activeInstanceID = _object.GetInstanceID(); } if (currentEnumFileDetails == details) { Color _prev = GUI.color; GUI.color = Color.green; GUILayout.Button("Edit", "MiniButton"); GUI.color = _prev; } else { if (GUILayout.Button("Edit", "MiniButton")) { StartEditingExistingEnum(details); } } GUILayout.EndHorizontal(); }
void StartEditingNewEnum() { currentEnumFileDetails = null; currentEnum = new EnumCreator.EnumDefinition(); if (_list == null) { return; } if (currentEnum == null) { return; } currentEnum.UpdateFilePath(); string currentFilePath = currentEnum.filePath; }
void StartEditingNewEnum() { Debug.Log("start New Enum: "); allowReordering = true; currentEnumFileDetails = null; currentEnum = new EnumCreator.EnumDefinition(); if (_list == null) { return; } if (currentEnum == null) { return; } currentEnum.UpdateFilePath(); // string currentFilePath = currentEnum.filePath; }
public static Dictionary <string, EnumFileDetails> FindEnumFiles() { //Lookup enums in file names Dictionary <string, EnumFileDetails> enumDetailsList = new Dictionary <string, EnumFileDetails>(); classFiles = new List <string>(); FindAllCSharpScriptFiles(Application.dataPath); //Lookup class name in the class file text for (int i = 0; i < classFiles.Count; i++) { string filePath = classFiles[i]; string codeFile = File.ReadAllText(filePath); if (codeFile.Contains("[" + "PLAYMAKER_ENUM]")) // compose the tag to avoid this file to be found... { // read all lines, we are going to parse data string[] lines = File.ReadAllLines(filePath); // safety precaution if (lines.Length < 10) { continue; } string nameSpace = lines[5].Substring(10); string enumName = lines[7].Substring(13); EnumFileDetails _details = new EnumFileDetails( enumName, nameSpace, filePath, File.GetLastWriteTimeUtc(filePath) ); enumDetailsList.Add(filePath, _details); } } return(enumDetailsList); }
void StartEditingExistingEnum(EnumFileDetails enumDetails) { allowReordering = false; //Debug.Log("startEditing: "+enumDetails.enumName); //Debug.Log(enumDetails); _sourceDetails = enumDetails; currentEnum = new EnumCreator.EnumDefinition(); list = null; currentEnumFileDetails = enumDetails; // nameSpace currentEnum.NameSpace = enumDetails.nameSpace; currentEnum.Name = enumDetails.enumName; Type _type = System.Type.GetType(currentEnum.NameSpace + "." + currentEnum.Name + ", Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"); currentEnum.entries = new List <string>(); FieldInfo[] fields = _type.GetFields(); foreach (var field in fields) { if (field.Name.Equals("value__")) { continue; } currentEnum.entries.Add(field.Name); //Debug.Log(field.Name + ":" + field.GetRawConstantValue()); } Repaint(); ReBuildPreview = true; GUI.FocusControl(_unfocusControlName); }