public static void ShowTypes(Stencil stencil, Vector2 position, Action <TypeHandle, int> callback, SearcherFilter userFilter = null) { var databases = stencil.GetSearcherDatabaseProvider().GetTypesSearcherDatabases(); foreach (var database in databases) { database.MatchFilter = (query, item) => { if (!(item is TypeSearcherItem typeItem)) { return(false); } var filter = stencil.GetSearcherFilterProvider()?.GetTypeSearcherFilter(); var res = true; if (filter != null) { res &= GetFilterResult(filter, typeItem.Data); } if (userFilter != null) { res &= GetFilterResult(userFilter, typeItem.Data); } return(res); }; } var searcher = new Searcher.Searcher(databases, k_TypeAdapter) { SortComparison = k_TypeSort }; SearcherWindow.Show(EditorWindow.focusedWindow, searcher, item => { if (!(item is TypeSearcherItem typeItem)) { return(false); } callback(typeItem.Type, 0); return(true); }, position, null);
static void PromptSearcher <T>(List <SearcherDatabase> databases, SearcherFilter filter, ISearcherAdapter adapter, Vector2 position, Action <T> callback) where T : ISearcherItemDataProvider { ApplyDatabasesFilter <T>(databases, filter); var searcher = new Searcher.Searcher(databases, adapter) { SortComparison = k_GraphElementSort }; SearcherWindow.Show(EditorWindow.focusedWindow, searcher, item => { if (item is T dataProvider) { callback(dataProvider); return(true); } return(false); }, position, null); }
static void PromptSearcher <T>(List <SearcherDatabase> databases, SearcherFilter filter, ISearcherAdapter adapter, Vector2 position, Action <T> callback) where T : ISearcherItemDataProvider { ApplyDatabasesFilter <T>(databases, filter); var searcher = new Searcher.Searcher(databases, adapter) { SortComparison = k_GraphElementSort }; var ctx = typeof(T) == typeof(GraphNodeModelSearcherItem) ? SearcherContext.Graph : SearcherContext.Stack; SearcherWindow.Show(EditorWindow.focusedWindow, searcher, item => { if (item is T dataProvider) { callback(dataProvider); return(true); } return(false); }, position, e => AnalyticsDataDelegate(e, ctx)); }
public static void RegisterType(this SearcherFilter filter, Func <TypeSearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.Type); }
public static void RegisterGraphAsset(this SearcherFilter filter, Func <GraphAssetSearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.GraphModel); }
public static void RegisterFunctionRef(this SearcherFilter filter, Func <FunctionRefSearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.FunctionReference); }
public static void RegisterStickyNote(this SearcherFilter filter, Func <SearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.StickyNote); }
public static void RegisterProperty(this SearcherFilter filter, Func <PropertySearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.Property); }
public static void RegisterMethod(this SearcherFilter filter, Func <MethodSearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.Method); }
public static void RegisterGroup(this SearcherFilter filter, Func <SearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.Group); }
public static void RegisterInlineExpression(this SearcherFilter filter, Func <SearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.InlineExpression); }
public static void RegisterBinaryOperator(this SearcherFilter filter, Func <BinaryOperatorSearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.BinaryOperator); }
public static void RegisterControlFlow(this SearcherFilter filter, Func <ControlFlowSearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.ControlFlow); }
public static void RegisterConstructor(this SearcherFilter filter, Func <ConstructorSearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.Constructor); }
static void ApplyDatabasesFilter <T>(IEnumerable <SearcherDatabase> databases, SearcherFilter filter) where T : ISearcherItemDataProvider { foreach (var database in databases) { database.MatchFilter = (query, item) => { if (!(item is T dataProvider)) { return(false); } if (filter == null || filter == SearcherFilter.Empty) { return(true); } return(filter.ApplyFilters(dataProvider.Data)); }; } }
public static void RegisterEmptyFunction(this SearcherFilter filter, Func <SearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.EmptyFunction); }
public static void RegisterField(this SearcherFilter filter, Func <FieldSearcherItemData, bool> func) { filter.Register(func, SearcherItemTarget.Field); }