public override void OnEnable(CPUOrGPUProfilerModule cpuModule, IProfilerWindowController profilerWindow, bool isGpuView) { base.OnEnable(cpuModule, profilerWindow, isGpuView); m_FrameIndex = FrameDataView.invalidOrCurrentFrameIndex; m_DetailedObjectsView?.OnEnable(cpuModule, this); m_DetailedCallsView?.OnEnable(cpuModule, this); profilerWindow.frameDataViewAboutToBeDisposed += OnFrameDataViewAboutToBeDisposed; }
public override void OnEnable(CPUorGPUProfilerModule cpuModule, IProfilerWindowController profilerWindow, bool isGpuView) { base.OnEnable(cpuModule, profilerWindow, isGpuView); m_DetailedObjectsView?.OnEnable(cpuModule); m_DetailedCallsView?.OnEnable(cpuModule); }
void InitIfNeeded() { if (m_Initialized) { return; } var cpuHierarchyColumns = new[] { HierarchyFrameDataView.columnName, HierarchyFrameDataView.columnTotalPercent, HierarchyFrameDataView.columnSelfPercent, HierarchyFrameDataView.columnCalls, HierarchyFrameDataView.columnGcMemory, HierarchyFrameDataView.columnTotalTime, HierarchyFrameDataView.columnSelfTime, HierarchyFrameDataView.columnWarningCount }; var gpuHierarchyColumns = new[] { HierarchyFrameDataView.columnName, HierarchyFrameDataView.columnTotalGpuPercent, HierarchyFrameDataView.columnDrawCalls, HierarchyFrameDataView.columnTotalGpuTime }; var profilerColumns = gpuView ? gpuHierarchyColumns : cpuHierarchyColumns; var defaultSortColumn = gpuView ? HierarchyFrameDataView.columnTotalGpuTime : HierarchyFrameDataView.columnTotalTime; var columns = CreateColumns(profilerColumns); var multiColumnHeaderStateData = SessionState.GetString(multiColumnHeaderStatePrefKey, ""); if (!string.IsNullOrEmpty(multiColumnHeaderStateData)) { try { var restoredHeaderState = JsonUtility.FromJson <MultiColumnHeaderState>(multiColumnHeaderStateData); if (restoredHeaderState != null) { m_MultiColumnHeaderState = restoredHeaderState; } } catch {} // Nevermind, we'll just fall back to the default } var headerState = CreateDefaultMultiColumnHeaderState(columns, defaultSortColumn); if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState)) { MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState); } var firstInit = m_MultiColumnHeaderState == null; m_MultiColumnHeaderState = headerState; var multiColumnHeader = new ProfilerFrameDataMultiColumnHeader(m_MultiColumnHeaderState, columns) { height = 25 }; if (firstInit) { multiColumnHeader.ResizeToFit(); } multiColumnHeader.visibleColumnsChanged += OnMultiColumnHeaderChanged; multiColumnHeader.sortingChanged += OnMultiColumnHeaderChanged; // Check if it already exists (deserialized from window layout file or scriptable object) if (m_TreeViewState == null) { m_TreeViewState = new TreeViewState(); } m_TreeView = new ProfilerFrameDataTreeView(m_TreeViewState, multiColumnHeader, cpuModule, m_ProfilerWindow); m_TreeView.selectionChanged += OnMainTreeViewSelectionChanged; m_TreeView.searchChanged += OnMainTreeViewSearchChanged; m_TreeView.Reload(); m_SearchField = new SearchField(); m_SearchField.downOrUpArrowKeyPressed += m_TreeView.SetFocusAndEnsureSelectedItem; if (m_DetailedObjectsView == null) { m_DetailedObjectsView = new ProfilerDetailedObjectsView(detailedObjectsViewPrefKeyPrefix); } m_DetailedObjectsView.gpuView = gpuView; m_DetailedObjectsView.frameItemEvent += FrameItem; m_DetailedObjectsView.OnEnable(cpuModule, this); if (m_DetailedCallsView == null) { m_DetailedCallsView = new ProfilerDetailedCallsView(detailedCallsViewPrefKeyPrefix); } m_DetailedCallsView.OnEnable(cpuModule, this); m_DetailedCallsView.frameItemEvent += FrameItem; if (m_DetailedViewSpliterState == null || !m_DetailedViewSpliterState.IsValid()) { m_DetailedViewSpliterState = SplitterState.FromRelative(new[] { SessionState.GetFloat(splitter0StatePrefKey, 70f), SessionState.GetFloat(splitter1StatePrefKey, 30f) }, new[] { 450f, 50f }, null); } if (!m_Serialized) { m_DetailedViewType = (DetailedViewType)SessionState.GetInt(detailedViewTypeStatePrefKey, (int)DetailedViewType.None); } m_Serialized = true; m_Initialized = true; }