public static void CheckForNewDataTypes() { // Doesnt find type if no assets of it exist. List <DataType> allDataTypeAssets = FolderUtility.FindAssetsByType <DataType>(); List <DataManagerSettingsEntry> possibleEntries = new List <DataManagerSettingsEntry>(); List <DataManagerSettingsEntry> entriesToAdd = new List <DataManagerSettingsEntry>(); DataManagerSettingsAccessor.Settings.ResetEntriesList(); // Checks the all the different kinds of data types foreach (DataType asset in allDataTypeAssets) { DataManagerSettingsEntry newEntry = new DataManagerSettingsEntry(asset.AssemblyName, asset.TypeAsString); bool isAlreadyPossibleEntry = false; // Checks the list of possible entries for duplicates. foreach (DataManagerSettingsEntry possibleEntry in possibleEntries) { if (newEntry.Compare(newEntry, possibleEntry) == 0) { isAlreadyPossibleEntry = true; break; } } // Adds to possible entries if no duplicates exist. if (!isAlreadyPossibleEntry) { possibleEntries.Add(newEntry); } } // Checks the list of possible entries against the list of existing entries to see if any should be added. foreach (DataManagerSettingsEntry possibleEntry in possibleEntries) { bool isAlreadyEntry = false; // Comparing possible entries against existing entries. foreach (DataManagerSettingsEntry entry in DataManagerSettingsAccessor.Settings.EntriesArray) { if (possibleEntry.Compare(possibleEntry, entry) == 0) { isAlreadyEntry = true; break; } } // Adds possible entries to the add list if they're no duplicates already existing. if (!isAlreadyEntry) { entriesToAdd.Add(possibleEntry); } } // Adds the new entries to the settings list. foreach (DataManagerSettingsEntry entry in entriesToAdd) { DataManagerSettingsAccessor.Settings.AddEntry(entry); } }
/// <summary> Changes the visiblity of the given entry. </summary> /// <param name="newVisiblity"> New visiblity for the given entry. </param> public void ChangeVisiblityOf(DataManagerSettingsEntry entry, VisiblityToManager newVisiblity) { int index = entriesList.IndexOf(entry); DataManagerSettingsEntry[] array = EntriesArray; array[index].visiblity = newVisiblity; EditorUtility.SetDirty(this); entriesList = array.ToList(); }
/// <summary> Draws the right column based on the currently selected type. </summary> private void DrawRightColumnItems() { // Clears out old visual elements. rightColumnItems.Clear(); if (DataTypeSelected) { #region Sets up List. selectedDataEntry = visibleEntries.ToArray()[leftList.selectedIndex]; Type stringToType = Type.GetType(selectedDataEntry.assemblyName); List <UnityEngine.Object> objectArray = FolderUtility.FindAssetsByType(stringToType); selectedDataObjects = new List <DataType>(); foreach (UnityEngine.Object obj in objectArray) { selectedDataObjects.Add((DataType)obj); } #endregion #region Sets up ListView. Label itemLabel = new Label(); itemLabel.AddToClassList("list_item"); Func <VisualElement> makeItem = () => new Label(); // Using the itemLabel cause the list to not add the first result for some reason. Action <VisualElement, int> bindItem = (e, i) => (e as Label).text = selectedDataObjects.ToArray()[i].name; const int itemHeight = 20; rightList = new ListView(selectedDataObjects, itemHeight, makeItem, bindItem); rightList.AddToClassList("list"); rightList.selectionType = SelectionType.Single; rightList.onSelectionChanged += CheckForSelectedObject; rightColumnItems.Add(rightList); #endregion } }
/// <summary> Removes a new entry from the private list. </summary> /// <param name="entry"> The entry to remove. </param> /// <returns> Returns true if the entry is removed. </returns> public bool RemoveEntry(DataManagerSettingsEntry entry) { EditorUtility.SetDirty(this); return(entriesList.Remove(entry)); }
/// <summary> Checks if a given entry is within the entriesList. </summary> /// <param name="entry"> The entry to check for in entriesList. </param> /// <returns> Returns entriesList.Contains(entry). </returns> public bool Contains(DataManagerSettingsEntry entry) { return(entriesList.Contains(entry)); }
/// <summary> Adds a new entry to the private list. </summary> /// <param name="entry"> The entry to add. </param> public void AddEntry(DataManagerSettingsEntry entry) { EditorUtility.SetDirty(this); entriesList.Add(entry); entriesList.Sort(entry); }