Example #1
0
        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();
            }
        }