// 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(); } } } }
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); }
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)); }
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(); } }
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 }); } }
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. }
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(); }; }