void LoadFactionData() { string path = AssetDatabase.GetAssetPath(Resources.Load("Faction Data")); EmeraldAIFactionData FactionData = (EmeraldAIFactionData)AssetDatabase.LoadAssetAtPath(path, typeof(EmeraldAIFactionData)); serializedObject = new SerializedObject(FactionData); foreach (string s in FactionData.FactionNameList) { if (!FactionData.FactionNameList.Contains(s) && s != "") { FactionData.FactionNameList.Add(s); } } FactionList = new List <string>(FactionData.FactionNameList); FactionListProp = new ReorderableList(serializedObject, serializedObject.FindProperty("FactionNameList"), true, true, true, true); FactionListProp.drawHeaderCallback = rect => { EditorGUI.LabelField(rect, "Faction List", EditorStyles.boldLabel); }; FactionListProp.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => { var element = FactionListProp.serializedProperty.GetArrayElementAtIndex(index); EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), element, GUIContent.none); }; }
void RemoveFactionData(string FactionToRemove) { string path = AssetDatabase.GetAssetPath(Resources.Load("Faction Data")); EmeraldAIFactionData FactionData = (EmeraldAIFactionData)AssetDatabase.LoadAssetAtPath(path, typeof(EmeraldAIFactionData)); FactionData.FactionNameList.Remove(FactionToRemove); FactionList = new List <string>(FactionData.FactionNameList); EmeraldAISystem.StringFactionList = FactionList; EditorUtility.SetDirty(FactionData); EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene()); }
void AddFactionData(string FactionToAdd) { string path = AssetDatabase.GetAssetPath(Resources.Load("Faction Data")); EmeraldAIFactionData FactionData = (EmeraldAIFactionData)AssetDatabase.LoadAssetAtPath(path, typeof(EmeraldAIFactionData)); if (!FactionData.FactionNameList.Contains(FactionToAdd) && FactionToAdd != "") { FactionData.FactionNameList.Add(FactionToAdd); } FactionList = new List <string>(FactionData.FactionNameList); EmeraldAISystem.StringFactionList = FactionList; EditorUtility.SetDirty(FactionData); EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene()); }