// Token: 0x06000269 RID: 617 RVA: 0x0002CAE8 File Offset: 0x0002ACE8
        public static void SetHierarchySearchFilter(string filter, SearchableEditorWindow.SearchMode mode)
        {
            if (SearchableEditorWindow2._searchableWindows == null || SearchableEditorWindow2._setSearchFilter == null || SearchableEditorWindow2._m_HierarchyType == null || SearchableEditorWindow2._m_HasSearchFilterFocus == null)
            {
                Debug.LogWarning("Could not execute 'SetHierarySearchFilter' because some of the required fields are missing.");
                return;
            }
            IEnumerable enumerable = SearchableEditorWindow2._searchableWindows.GetValue(null) as IEnumerable;

            if (enumerable == null)
            {
                return;
            }
            foreach (object obj in enumerable)
            {
                SearchableEditorWindow searchableEditorWindow = obj as SearchableEditorWindow;
                if (!(searchableEditorWindow == null))
                {
                    HierarchyType hierarchyType = (HierarchyType)SearchableEditorWindow2._m_HierarchyType.GetValue(searchableEditorWindow);
                    if ((int)hierarchyType == 2)
                    {
                        object[] parameters = new object[]
                        {
                            filter,
                            mode,
                            false
                        };
                        SearchableEditorWindow2._setSearchFilter.Invoke(searchableEditorWindow, parameters);
                        SearchableEditorWindow2._m_HasSearchFilterFocus.SetValue(searchableEditorWindow, true);
                        searchableEditorWindow.Repaint();
                    }
                }
            }
        }
Example #2
0
    public static void SetSearchFilter(string filter, int filterMode)
    {
        SearchableEditorWindow hierarchy = null;

        SearchableEditorWindow[] windows = (SearchableEditorWindow[])Resources.FindObjectsOfTypeAll(typeof(SearchableEditorWindow));

        foreach (SearchableEditorWindow window in windows)
        {
            if (window.GetType().ToString() == "UnityEditor.SceneHierarchyWindow")
            {
                hierarchy = window;
                break;
            }
        }

        if (hierarchy == null)
        {
            return;
        }

        MethodInfo setSearchType = typeof(SearchableEditorWindow).GetMethod("SetSearchFilter", BindingFlags.NonPublic | BindingFlags.Instance);

        object[] parameters = new object[] { filter, filterMode, false, false };

        setSearchType.Invoke(hierarchy, parameters);
    }
Example #3
0
 private static HierarchyType GetHierarchyType(SearchableEditorWindow win)
 {
     if (m_HierarchyType == null)
     {
         m_HierarchyType = typeof(SearchableEditorWindow).GetField("m_HierarchyType", BindingFlags.Instance | BindingFlags.NonPublic);
     }
     return((HierarchyType)m_HierarchyType.GetValue(win));
 }
Example #4
0
 public static void SetSearchFilter(this SearchableEditorWindow win, string searchFilter, SearchMode mode)
 {
     if (m_SetSearchFilter == null)
     {
         m_SetSearchFilter = typeof(SearchableEditorWindow).GetMethod("SetSearchFilter", BindingFlags.Instance | BindingFlags.NonPublic);
     }
     m_SetSearchFilter.Invoke(win, new object[] { searchFilter, mode, false, false });
 }
        /// <summary>
        /// Sets the filter in the Hierarchy
        /// </summary>
        /// <param name="filter">The string filter</param>
        /// <param name="searchMode">The search mode</param>
        public static void Search(string filter, SearchMode searchMode = SearchMode.All)
        {
            SearchableEditorWindow[] windows   = (SearchableEditorWindow[])Resources.FindObjectsOfTypeAll(typeof(SearchableEditorWindow));
            SearchableEditorWindow   hierarchy = windows.First(w => w.GetType().ToString() == "UnityEditor.SceneHierarchyWindow");

            if (hierarchy == null)
            {
                throw new System.InvalidOperationException("Cannot filter hirerarchy because it does not exist");
            }
            object[] parameters = new object[] { filter, (SearchableEditorWindow.SearchMode)searchMode, false, false };
            searchableEditorWindowSetSearchType.Invoke(hierarchy, parameters);
        }
 private static void Init()
 {
     if (window == null)
     {
         window = (SearchForGUID)SearchableEditorWindow.GetWindow(typeof(SearchForGUID));
         window.Show();
     }
     else
     {
         window.SearchGUID();
     }
 }
Example #7
0
        private void SelectInHierarchy(string message, object callback)
        {
            var decompressedMessage = Encoding.UTF8.GetString(CLZF2.Decompress(Convert.FromBase64String(message)));

            Utility.DebugLog("Find References in Hierarchy: " + decompressedMessage);

            var assets = decompressedMessage.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            if (assets.Length == 0)
            {
                return;
            }

            SearchableEditorWindow hierarchyWindow = null;

            SearchableEditorWindow[] windows = (SearchableEditorWindow[])Resources.FindObjectsOfTypeAll(typeof(SearchableEditorWindow));
            foreach (SearchableEditorWindow window in windows)
            {
                if (window.GetType().ToString() == "UnityEditor.SceneHierarchyWindow")
                {
                    hierarchyWindow = window;
                    break;
                }
            }

            if (hierarchyWindow == null)
            {
                return;
            }

            var guid       = Utility.GetGuidFromAssetId(assets[0]);
            var instanceId = Utility.GetInstanceIdFromAssetId(assets[0]);

            if (!string.IsNullOrEmpty(instanceId))
            {
                instanceId += ":";
            }

            string filter = string.Format("ref:{0}\"{1}\"", instanceId, AssetDatabase.GUIDToAssetPath(guid).Substring(7));

            var setSearchType = typeof(SearchableEditorWindow).GetMethod("SetSearchFilter", BindingFlags.NonPublic | BindingFlags.Instance);

            try
            {
                setSearchType.Invoke(hierarchyWindow, new object[] { filter, 0, false });
            }
            catch
            {
                setSearchType.Invoke(hierarchyWindow, new object[] { filter, 0, false, false });
            }
        }
Example #8
0
        private static void SetSearchFilter(Object obj)
        {
            SearchableEditorWindow[] windows   = (SearchableEditorWindow[])Resources.FindObjectsOfTypeAll(typeof(SearchableEditorWindow));
            SearchableEditorWindow   hierarchy = windows.FirstOrDefault(window => window.GetType().ToString() == "UnityEditor.SceneHierarchyWindow");

            if (hierarchy == null)
            {
                return;
            }
            // SearchableEditorWindow.SearchForReferencesToInstanceID(Selection.activeInstanceID);

            MethodInfo setSearchType = typeof(SearchableEditorWindow).GetMethod("SearchForReferencesToInstanceID", BindingFlags.NonPublic | BindingFlags.Static);

            object[] parameters = { obj.GetInstanceID() };
            setSearchType.Invoke(hierarchy, parameters);
        }
        /// <summary>
        ///  ヒエラルキー内にフィルター検索を掛けます.
        /// </summary>
        public static void SetSearchFilter(SearchableEditorWindow hierarchyFilter, string searchFilter, SearchableEditorWindow.SearchMode searchMode)
        {
            const string reflectionMethodName = "SetSearchFilter";

            var setSearchFilterMethod = hierarchyFilter.GetType().GetMethod(reflectionMethodName, BindingFlags.Instance | BindingFlags.NonPublic);

                #if UNITY_2018_2_3
            setSearchFilterMethod.Invoke(hierarchyFilter, new object[] { searchFilter, searchMode, false });
                #elif UNITY_2018_2_21
            setSearchFilterMethod.Invoke(hierarchyFilter, new object[] { searchFilter, searchMode, false, false });
                #elif UNITY_2019_1_14
            setSearchFilterMethod.Invoke(hierarchyFilter, new object[] { searchFilter, searchMode, false, false });
                #else // UNITY_2018_3
            setSearchFilterMethod.Invoke(hierarchyFilter, new object[] { searchFilter, searchMode });
                #endif // UNITY VERSION.
        }
Example #10
0
 private void OnEnable()
 {
     state             = (State)target;
     _serializedObject = new SerializedObject(state);
     list = new ReorderableList(_serializedObject, _serializedObject.FindProperty("pathes"), true, true, true, true);
     list.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) =>
     {
         rect.y += 2;
         EditorGUI.LabelField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), ((State)target).pathes[index].text);
         if (new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight).Contains(Event.current.mousePosition) && Event.current.type == EventType.mouseDown && Event.current.button == 0)
         {
             Selection.activeObject = list.serializedProperty.GetArrayElementAtIndex(index).objectReferenceValue as Path;
             Repaint();
         }
     };
     list.drawHeaderCallback = (Rect rect) =>
     {
         EditorGUI.LabelField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), "pathes");
     };
     list.onReorderCallback = (ReorderableList l) =>
     {
         Undo.RecordObject(state, "state path reorder");
         List <Path> newPathList = new List <Path>();
         for (int i = list.count - 1; i >= 0; i--)
         {
             newPathList.Add(l.serializedProperty.GetArrayElementAtIndex(i).objectReferenceValue as Path);
         }
         state.pathes = newPathList;
         SearchableEditorWindow.GetWindow(typeof(EditorWindow)).Repaint();
     };
     list.onAddCallback = (ReorderableList l) =>
     {
         AssetDatabase.AddObjectToAsset(state.AddPath(), AssetDatabase.GetAssetPath(state));
         Repaint();
         SearchableEditorWindow.GetWindow(typeof(EditorWindow)).Repaint();
     };
     list.onRemoveCallback = (ReorderableList l) =>
     {
         Undo.RecordObject(state, "state path remove");
         state.RemovePath(l.serializedProperty.GetArrayElementAtIndex(l.index).objectReferenceValue as Path);
         Undo.DestroyObjectImmediate(l.serializedProperty.GetArrayElementAtIndex(l.index).objectReferenceValue as Path);
         Repaint();
         EditorWindow.GetWindow(typeof(EditorWindow)).Repaint();
     };
 }