private GenericSelector <object> CreateSelector() { IEnumerable <ValueDropdownItem> query = this.getValues(); if (query == null) { // God damm it bjarke. query = Enumerable.Empty <ValueDropdownItem>(); } var enableSearch = query.Take(10).Count() == 10; GenericSelector <object> selector = new GenericSelector <object>(this.Attribute.DropdownTitle, false, query.Select(x => new GenericSelectorItem <object>(x.Text, x.Value))); selector.CheckboxToggle = false; selector.EnableSingleClickToSelect(); selector.SelectionTree.Config.DrawSearchToolbar = enableSearch; IEnumerable <object> selection = Enumerable.Empty <object>(); if (!this.isList) { selection = this.getSelection(); } selection = selection.Select(x => (x == null ? null : x.GetType()) as object); selector.SetSelection(selection); selector.SelectionTree.EnumerateTree().AddThumbnailIcons(true); return(selector); }
private GenericSelector <UnityEngine.Object> CreateSelector() { var t = isList ? (this.Property.ChildResolver as ICollectionResolver).ElementType : typeof(T); var isGo = t == typeof(GameObject); var root = this.GetRoot(0); var children = root.GetComponentsInChildren(isGo ? typeof(Transform) : t) .Where(x => this.Attribute.IncludeSelf || x.transform != root) .OfType <UnityEngine.Object>(); if (isGo) { children = children.OfType <Component>().Select(x => x.gameObject).OfType <UnityEngine.Object>(); } Func <UnityEngine.Object, string> getName = x => { var c = x as Component; var o = x as GameObject; var transform = c ? c.transform : o.transform; return(this.GetGameObjectPath(root, transform)); }; var selector = new GenericSelector <UnityEngine.Object>( null, false, getName, children.Where(x => x.GetType().InheritsFrom(t))); selector.SelectionTree.Config.DrawSearchToolbar = true; selector.SetSelection(this.ValueEntry.SmartValue as UnityEngine.Object); selector.SelectionTree.EnumerateTree().AddThumbnailIcons(true); selector.SelectionTree.EnumerateTree().Where(x => x.Icon == null).ForEach(x => x.Icon = EditorIcons.UnityGameObjectIcon); selector.SelectionTree.EnumerateTree().ForEach(x => x.Toggled = true); selector.EnableSingleClickToSelect(); return(selector); }
public void Pick() { GenericSelector <string> selector = new GenericSelector <string>("", false, item => item, Table <T> .GetAllKeys()); var window = selector.ShowInPopup(); selector.SelectionConfirmed += selection => this.prettyName = Table <T> .Find(selection.FirstOrDefault(), true).PrettyName; selector.EnableSingleClickToSelect(); }
private OdinSelector <ValueDropdownItem <int> > DoSelector(Rect buttonRect) { var dropdownValues = SortingLayer.layers.Select(sortingLayer => new ValueDropdownItem <int>(sortingLayer.name, sortingLayer.id)); var genericSelector = new GenericSelector <ValueDropdownItem <int> >(dropdownValues); buttonRect.xMax = GUIHelper.GetCurrentLayoutRect().xMax; genericSelector.EnableSingleClickToSelect(); genericSelector.ShowInPopup(buttonRect); return(genericSelector); }
private OdinSelector <string> CreateSelector(Rect buttonRect) { var eventInstance = FMODUnity.RuntimeManager.CreateInstance(eventPathResolver.GetValue()); eventInstance.getDescription(out var description); description.getParameterDescriptionCount(out var parameterDescriptionCount); var parameters = new List <string>(); for (var i = 0; i < parameterDescriptionCount; i++) { description.getParameterDescriptionByIndex(i, out var parameterDescription); parameters.Add(parameterDescription.name); } var selector = new GenericSelector <string>(parameters); buttonRect.xMax = GUIHelper.GetCurrentLayoutRect().xMax; selector.EnableSingleClickToSelect(); selector.ShowInPopup(buttonRect); return(selector); }
private GenericSelector <object> CreateSelector() { // TODO: Attribute is now cached, could that become a problem here? this.Attribute.IsUniqueList = this.Attribute.IsUniqueList || this.Attribute.ExcludeExistingValuesInList; IEnumerable <ValueDropdownItem> query = this.getValues(); if (query == null) { // God damm it bjarke. query = Enumerable.Empty <ValueDropdownItem>(); } var isEmpty = query == null || query.Any() == false; if (!isEmpty) { if (this.isList && this.Attribute.ExcludeExistingValuesInList || (this.isListElement && this.Attribute.IsUniqueList)) { var list = query.ToList(); var listProperty = this.Property.FindParent(x => (x.ChildResolver as IOrderedCollectionResolver) != null, true); var comparer = new IValueDropdownEqualityComparer(false); listProperty.ValueEntry.WeakValues.Cast <IEnumerable>() .SelectMany(x => x.Cast <object>()) .ForEach(x => { list.RemoveAll(c => comparer.Equals(c, x)); }); query = list; } } var enableSearch = this.Attribute.NumberOfItemsBeforeEnablingSearch == 0 || (query != null && query.Take(this.Attribute.NumberOfItemsBeforeEnablingSearch).Count() == this.Attribute.NumberOfItemsBeforeEnablingSearch); GenericSelector <object> selector = new GenericSelector <object>(this.Attribute.DropdownTitle, false, query.Select(x => new GenericSelectorItem <object>(x.Text, x.Value))); this.enableMultiSelect = this.isList && this.Attribute.IsUniqueList && !this.Attribute.ExcludeExistingValuesInList; if (this.Attribute.FlattenTreeView) { selector.FlattenedTree = true; } if (this.isList && !this.Attribute.ExcludeExistingValuesInList && this.Attribute.IsUniqueList) { selector.CheckboxToggle = true; } else if (this.Attribute.DoubleClickToConfirm == false && !enableMultiSelect) { selector.EnableSingleClickToSelect(); } if (this.isList && enableMultiSelect) { selector.SelectionTree.Selection.SupportsMultiSelect = true; selector.DrawConfirmSelectionButton = true; } selector.SelectionTree.Config.DrawSearchToolbar = enableSearch; IEnumerable <object> selection = Enumerable.Empty <object>(); if (!this.isList) { selection = this.getSelection(); } else if (this.enableMultiSelect) { selection = this.getSelection().SelectMany(x => (x as IEnumerable).Cast <object>()); } selector.SetSelection(selection); selector.SelectionTree.EnumerateTree().AddThumbnailIcons(true); if (this.Attribute.ExpandAllMenuItems) { selector.SelectionTree.EnumerateTree(x => x.Toggled = true); } if (this.Attribute.SortDropdownItems) { selector.SelectionTree.SortMenuItemsByName(); } return(selector); }