Version 2.1.0.0

TypeSelector class

Namespace: Sirenix.OdinInspector.Editor
Assembly: Sirenix.OdinInspector.Editor
public class TypeSelector : OdinSelector<Type>
A feature-rich type selector.
Inheritance
Example
Type[] selectedTypes;

void OnGUI()
{
    // Use the selector manually. See the documentation for OdinSelector for more information.
    if (GUILayout.Button("Open My Selector"))
    {
        TypeSelector selector = new TypeSelector(customListOfTypes);
        TypeSelector selector = new TypeSelector(AssemblyTypeFlags.CustomTypes, supportsMultiSelect: true);
        selector.SetSelection(this.selectedTypes);
        selector.SelectionConfirmed += selection => this.selectedTypes = selection.ToArray();
        selector.ShowInPopup(); // Returns the Odin Editor Window instance, in case you want to mess around with that as well.
    }
}
Example
private static Type currentSelectedType;
private static IEnumerable<Type> currentSource;
private static Func<Rect, OdinSelector<Type>> createTypeSelector = (rect) =>
{
    TypeSelector selector = new TypeSelector(currentSource, false);
    selector.SetSelection(currentSelectedType);
    selector.ShowInPopup(rect);
    return selector;
};

public static Type DrawTypeSelectorDropdown(GUIContent label, Type selectedType, IEnumerable<Type> source)
{
    currentSource = source;
    currentSelectedType = selectedType;

    var dropdownText = selectedType == null ? "None" : selectedType.GetNiceName();
    var selected = TypeSelector.DrawSelectorDropdown(label, dropdownText, createTypeSelector);
    if (selected != null && selected.Any())
    {
        selectedType = selected.FirstOrDefault();
    }
    return selectedType;
}

Constructors

TypeSelector(AssemblyTypeFlags, Boolean)
public TypeSelector(AssemblyTypeFlags assemblyFlags, bool supportsMultiSelect)
Parameters
AssemblyTypeFlags assemblyFlags

System.Boolean supportsMultiSelect

TypeSelector(IEnumerable<Type>, Boolean)
public TypeSelector(IEnumerable<Type> types, bool supportsMultiSelect)
Parameters
System.Collections.Generic.IEnumerable<System.Type> types

System.Boolean supportsMultiSelect

Fields

FlattenTree
public bool FlattenTree
HideNamespaces
public bool HideNamespaces

Properties

Title
public override string Title { get; }

Methods

BuildSelectionTree(OdinMenuTree)
Builds the selection tree.
protected override void BuildSelectionTree(OdinMenuTree tree)
Parameters
OdinMenuTree tree

DefaultWindowWidth()
450
protected override float DefaultWindowWidth()
Returns
System.Single

IsValidSelection(IEnumerable<Type>)
public override bool IsValidSelection(IEnumerable<Type> collection)
Parameters
System.Collections.Generic.IEnumerable<System.Type> collection

Returns
System.Boolean

SetSelection(Type)
Sets the selected types.
public override void SetSelection(Type selected)
Parameters
System.Type selected

This website is brand new and built with the Odin 2.1 beta in mind. This means you might discover some features such as attribute expressions that are only available in the beta.

You can download the 2.1 beta from here and read the patch-notes here.