Esempio n. 1
0
        private void SetupEditors(SearchSelection selection, ShowDetailsOptions showOptions)
        {
            int selectionHash = 0;

            foreach (var s in selection)
            {
                selectionHash ^= s.id.GetHashCode();
            }

            if (selectionHash == m_EditorsHash)
            {
                return;
            }

            ResetEditors();

            if (!showOptions.HasAny(ShowDetailsOptions.Inspector))
            {
                return;
            }

            var targets = new List <UnityEngine.Object>();

            foreach (var s in selection)
            {
                var item = s;
                LoadEditor(item, targets);

                if (item.GetFieldCount() > 0)
                {
                    targets.Add(new SearchServiceItem()
                    {
                        name = item.label ?? item.value.ToString(),
                        item = item
                    });
                }
            }

            if (targets.Count > 0)
            {
                int maxGroupCount = targets.GroupBy(t => t.GetType()).Max(g => g.Count());
                m_Editors = targets.GroupBy(t => t.GetType()).Where(g => g.Count() == maxGroupCount).Select(g =>
                {
                    var editor = Editor.CreateEditor(g.ToArray());
                    Utils.SetFirstInspectedEditor(editor);
                    return(editor);
                }).ToArray();
            }
            m_EditorsHash = selectionHash;
        }
 public static bool HasAll(this ShowDetailsOptions flags, ShowDetailsOptions all) => (flags & all) == all;
 public static bool HasAny(this ShowDetailsOptions flags, ShowDetailsOptions f) => (flags & f) != 0;
Esempio n. 4
0
        private void DrawActions(SearchContext context, SearchItem item, Action <SearchItem, bool> selectCallback, ShowDetailsOptions showOptions)
        {
            GUILayout.Space(10);

            if (selectCallback == null)
            {
                if (showOptions.HasFlag(ShowDetailsOptions.Actions))
                {
                    foreach (var action in item.provider.actions)
                    {
                        if (action == null || action.Id == "context" || action.content == null || action.handler == null)
                        {
                            continue;
                        }
                        if (GUILayout.Button(new GUIContent(action.DisplayName, action.content.image, action.content.tooltip), GUILayout.ExpandWidth(true)))
                        {
                            m_SearchView.ExecuteAction(action, item, context, true);
                            GUIUtility.ExitGUI();
                        }
                    }
                }
            }
            else if (GUILayout.Button("Select", GUILayout.ExpandWidth(true)))
            {
                selectCallback(item, false);
                m_SearchView.Close();
                GUIUtility.ExitGUI();
            }
        }