Ejemplo n.º 1
0
        void OnGUI()
        {
            if (s_Styles == null)
            {
                s_Styles = new Styles();
            }

            GUI.Label(new Rect(0.0f, 0.0f, position.width, position.height), GUIContent.none, s_Styles.background);
            if (m_DirtyList)
            {
                CreateComponentTree();
            }
            HandleKeyboard();
            GUILayout.Space(7f);


            EditorGUI.FocusTextInControl(s_ItemSearchKey);
            Rect rect = GUILayoutUtility.GetRect(10f, 20f);

            rect.x     += 8f;
            rect.width -= 16f;
            GUI.SetNextControlName(s_ItemSearchKey);

            string str = EditorGUIWrap.SearchField(rect, m_DelayedSearch ?? m_Search);

            if (str != m_Search || m_DelayedSearch != null)
            {
                if (!isAnimating)
                {
                    m_Search = m_DelayedSearch ?? str;
                    EditorPrefs.SetString(s_ItemSearchKey, m_Search);
                    RebuildSearch();
                    m_DelayedSearch = null;
                }
                else
                {
                    m_DelayedSearch = str;
                }
            }

            ListGUI(activeTree, m_Anim, GetElementRelative(0), GetElementRelative(-1));
            if (m_Anim < 1.0)
            {
                ListGUI(activeTree, m_Anim + 1f, GetElementRelative(-1), GetElementRelative(-2));
            }

            if (!isAnimating || Event.current.type != EventType.Repaint)
            {
                return;
            }

            long  ticks = DateTime.Now.Ticks;
            float num   = (ticks - m_LastTime) / 1E+07f;

            m_LastTime = ticks;
            m_Anim     = Mathf.MoveTowards(m_Anim, m_AnimTarget, num * 4f);
            if (m_AnimTarget == 0 && m_Anim == 0.0)
            {
                m_Anim       = 1f;
                m_AnimTarget = 1;
                m_Stack.RemoveAt(m_Stack.Count - 1);
            }
            Repaint();
        }