Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
    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);
    }
Esempio n. 6
0
        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);
        }