Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
 public static void RegisterType(this SearcherFilter filter, Func <TypeSearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.Type);
 }
Ejemplo n.º 5
0
 public static void RegisterGraphAsset(this SearcherFilter filter, Func <GraphAssetSearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.GraphModel);
 }
Ejemplo n.º 6
0
 public static void RegisterFunctionRef(this SearcherFilter filter, Func <FunctionRefSearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.FunctionReference);
 }
Ejemplo n.º 7
0
 public static void RegisterStickyNote(this SearcherFilter filter, Func <SearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.StickyNote);
 }
Ejemplo n.º 8
0
 public static void RegisterProperty(this SearcherFilter filter, Func <PropertySearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.Property);
 }
Ejemplo n.º 9
0
 public static void RegisterMethod(this SearcherFilter filter, Func <MethodSearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.Method);
 }
Ejemplo n.º 10
0
 public static void RegisterGroup(this SearcherFilter filter, Func <SearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.Group);
 }
Ejemplo n.º 11
0
 public static void RegisterInlineExpression(this SearcherFilter filter, Func <SearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.InlineExpression);
 }
Ejemplo n.º 12
0
 public static void RegisterBinaryOperator(this SearcherFilter filter, Func <BinaryOperatorSearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.BinaryOperator);
 }
Ejemplo n.º 13
0
 public static void RegisterControlFlow(this SearcherFilter filter, Func <ControlFlowSearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.ControlFlow);
 }
Ejemplo n.º 14
0
 public static void RegisterConstructor(this SearcherFilter filter, Func <ConstructorSearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.Constructor);
 }
Ejemplo n.º 15
0
        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));
                };
            }
        }
Ejemplo n.º 16
0
 public static void RegisterEmptyFunction(this SearcherFilter filter, Func <SearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.EmptyFunction);
 }
Ejemplo n.º 17
0
 public static void RegisterField(this SearcherFilter filter, Func <FieldSearcherItemData, bool> func)
 {
     filter.Register(func, SearcherItemTarget.Field);
 }