/// <summary> /// Sets the hierarchy's expanded state to only contain the current selection. /// </summary> public static void FocusProfilerWindowToSelection(EditorWindow profilerWindow) { var interfaceType = Type.GetType("UnityEditorInternal.IProfilerWindowController,UnityEditor"); // Get the selected profiler module, with fallbacks. PropertyInfo selectedModuleProperty = interfaceType.GetProperty("selectedModule", PublicInstance); if (selectedModuleProperty == null) { selectedModuleProperty = interfaceType.GetProperty("SelectedModule", PublicInstance); } object module; if (selectedModuleProperty == null) { // m_ProfilerModules[(int) m_CurrentArea]. Type profilerWindowType = profilerWindow.GetType(); Array modules = (Array)profilerWindowType.GetField("m_ProfilerModules", NonPublicInstance) .GetValue(profilerWindow); int index = (int)profilerWindowType.GetField("m_CurrentArea", NonPublicInstance) .GetValue(profilerWindow); module = modules.GetValue(index); } else { module = selectedModuleProperty.GetValue(profilerWindow); // ProfilerModule } // CPUOrGPUProfilerModule.FrameDataHierarchyView PropertyInfo frameDataHierarchyViewProperty = module.GetType() .GetProperty("FrameDataHierarchyView", NonPublicInstance); if (frameDataHierarchyViewProperty != null) { // ProfilerFrameDataHierarchyView object frameDataHierarchyView = frameDataHierarchyViewProperty.GetValue(module); TreeView treeView = (TreeView)frameDataHierarchyView.GetType().GetProperty("treeView", PublicInstance) .GetValue(frameDataHierarchyView); treeView.state.expandedIDs = new List <int>(); treeView.SetSelection(treeView.state.selectedIDs, TreeViewSelectionOptions.RevealAndFrame); treeView.Reload(); } }
public TreeViewControlGUI(TreeViewController treeView, TreeView owner) : base(treeView) { m_Owner = owner; cellMargin = MultiColumnHeader.DefaultGUI.columnContentMargin; }