internal void OnGUI() { if (s_Styles == null) { s_Styles = new Styles(); } GUI.Label(new Rect(0, 0, position.width, position.height), GUIContent.none, s_Styles.background); if (s_DirtyList) { CreateSearchTree(); } // Keyboard HandleKeyboard(); GUILayout.Space(7); // Search EditorGUI.FocusTextInControl("ComponentSearch"); Rect searchRect = GUILayoutUtility.GetRect(10, 20); searchRect.x += 8; searchRect.width -= 16; GUI.SetNextControlName("ComponentSearch"); EditorGUI.BeginChangeCheck(); string newSearch = GraphViewStaticBridge.SearchField(searchRect, m_DelayedSearch ?? m_Search); if (EditorGUI.EndChangeCheck() && (newSearch != m_Search || m_DelayedSearch != null)) { if (!isAnimating) { m_Search = m_DelayedSearch ?? newSearch; RebuildSearch(); m_DelayedSearch = null; } else { m_DelayedSearch = newSearch; } } // Show lists ListGUI(activeTree, m_Anim, GetSearchTreeEntryRelative(0), GetSearchTreeEntryRelative(-1)); if (m_Anim < 1) { ListGUI(activeTree, m_Anim + 1, GetSearchTreeEntryRelative(-1), GetSearchTreeEntryRelative(-2)); } // Animate if (isAnimating && Event.current.type == EventType.Repaint) { long now = System.DateTime.Now.Ticks; float deltaTime = (now - m_LastTime) / (float)System.TimeSpan.TicksPerSecond; m_LastTime = now; m_Anim = Mathf.MoveTowards(m_Anim, m_AnimTarget, deltaTime * 4); if (m_AnimTarget == 0 && m_Anim == 0) { m_Anim = 1; m_AnimTarget = 1; m_SelectionStack.RemoveAt(m_SelectionStack.Count - 1); } Repaint(); } }