protected void DoTextureGUI()
    {
        if (m_Texture == null)
        {
            return;
        }

        if (m_Zoom < 0.0)
        {
            m_Zoom = GetMinZoom();
        }

        m_TextureRect = new Rect(m_TextureViewRect.width / 2.0f - m_Texture.width * m_Zoom / 2.0f, m_TextureViewRect.height / 2.0f - m_Texture.height * m_Zoom / 2.0f, m_Texture.width * m_Zoom, m_Texture.height * m_Zoom);
        HandleScrollbars();
        SetupHandlesMatrix();
        HandleZoom();
        HandlePanning();
        DrawScreenspaceBackground();

        GUIClipWrap.Push(m_TextureViewRect, -m_ScrollPosition, Vector2.zero, false);
        if (Event.current.type == EventType.Repaint)
        {
            DrawTexturespaceBackground();
            DrawTexture();
            DrawGizmos();
        }
        DoTextureGUIExtras();
        GUIClipWrap.Pop();
    }
Exemple #2
0
    public void HandlePing()
    {
        if (!isPinging)
        {
            return;
        }

        float num1 = m_ZoomTime + m_WaitTime + m_FadeOutTime;
        float num2 = Time.realtimeSinceStartup - m_TimeStart;

        if (num2 > 0.0 && num2 < num1)
        {
            Color     color   = GUI.color;
            Matrix4x4 matrix1 = GUI.matrix;
            if (num2 < m_ZoomTime)
            {
                float     num3    = m_ZoomTime / 2f;
                float     num4    = (float)((m_PeakScale - 1.0) * ((m_ZoomTime - Mathf.Abs(num3 - num2)) / num3 - 1.0) + 1.0);
                Matrix4x4 matrix2 = GUI.matrix;
                Vector2   vector2 = GUIClipWrap.Unclip(m_ContentRect.xMax >= m_AvailableWidth ? new Vector2(m_AvailableWidth, m_ContentRect.center.y) : m_ContentRect.center);
                GUI.matrix = Matrix4x4.TRS(vector2, Quaternion.identity, new Vector3(num4, num4, 1f)) * Matrix4x4.TRS(-vector2, Quaternion.identity, Vector3.one) * matrix2;
            }
            else if (num2 > m_ZoomTime + m_WaitTime)
            {
                float num3 = (num1 - num2) / m_FadeOutTime;
                GUI.color = new Color(color.r, color.g, color.b, color.a * num3);
            }
            if (m_ContentDraw != null && Event.current.type == EventType.Repaint)
            {
                Rect position = m_ContentRect;
                position.x -= m_PingStyle.padding.left;
                position.y -= m_PingStyle.padding.top;
                m_PingStyle.Draw(position, GUIContent.none, false, false, false, false);
                m_ContentDraw(m_ContentRect);
            }
            GUI.matrix = matrix1;
            GUI.color  = color;
        }
        else
        {
            m_TimeStart = -1f;
        }
    }
    internal static Vector2 MouseDeltaReader(Rect position, bool activated)
    {
        int   controlId = GUIUtility.GetControlID("MouseDeltaReader".GetHashCode(), FocusType.Passive, position);
        Event current   = Event.current;

        switch (current.GetTypeForControl(controlId))
        {
        case EventType.MouseDown:
            if (activated && GUIUtility.hotControl == 0 && (position.Contains(current.mousePosition) && current.button == 0))
            {
                GUIUtility.hotControl      = controlId;
                GUIUtility.keyboardControl = 0;
                s_MouseDeltaReaderLastPos  = GUIClipWrap.Unclip(current.mousePosition);
                current.Use();
            }
            break;

        case EventType.MouseUp:
            if (GUIUtility.hotControl == controlId && current.button == 0)
            {
                GUIUtility.hotControl = 0;
                current.Use();
            }
            break;

        case EventType.MouseDrag:
            if (GUIUtility.hotControl == controlId)
            {
                Vector2 vector2_1 = GUIClipWrap.Unclip(current.mousePosition);
                Vector2 vector2_2 = vector2_1 - s_MouseDeltaReaderLastPos;
                s_MouseDeltaReaderLastPos = vector2_1;
                current.Use();
                return(vector2_2);
            }
            break;
        }
        return(Vector2.zero);
    }