UnityEditor.LayoutDropdownWindow.DrawArrow C# (CSharp) Method

DrawArrow() private static method

private static DrawArrow ( Rect lineRect ) : void
lineRect UnityEngine.Rect
return void
        private static void DrawArrow(Rect lineRect)
        {
            GUI.DrawTexture(lineRect, EditorGUIUtility.whiteTexture);
            if (lineRect.width == 1f)
            {
                GUI.DrawTexture(new Rect(lineRect.x - 1f, lineRect.y + 1f, 3f, 1f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(lineRect.x - 2f, lineRect.y + 2f, 5f, 1f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(lineRect.x - 1f, lineRect.yMax - 2f, 3f, 1f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(lineRect.x - 2f, lineRect.yMax - 3f, 5f, 1f), EditorGUIUtility.whiteTexture);
            }
            else
            {
                GUI.DrawTexture(new Rect(lineRect.x + 1f, lineRect.y - 1f, 1f, 3f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(lineRect.x + 2f, lineRect.y - 2f, 1f, 5f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(lineRect.xMax - 2f, lineRect.y - 1f, 1f, 3f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(lineRect.xMax - 3f, lineRect.y - 2f, 1f, 5f), EditorGUIUtility.whiteTexture);
            }
        }

Usage Example

示例#1
0
        internal static void DrawLayoutMode(Rect position, LayoutDropdownWindow.LayoutMode hMode, LayoutDropdownWindow.LayoutMode vMode, bool doPivot, bool doPosition)
        {
            if (LayoutDropdownWindow.s_Styles == null)
            {
                LayoutDropdownWindow.s_Styles = new LayoutDropdownWindow.Styles();
            }
            Color color = GUI.color;
            int   num   = (int)Mathf.Min(position.width, position.height);

            if (num % 2 == 0)
            {
                num--;
            }
            int num2 = num / 2;

            if (num2 % 2 == 0)
            {
                num2++;
            }
            Vector2 b      = (float)num * Vector2.one;
            Vector2 b2     = (float)num2 * Vector2.one;
            Vector2 vector = (position.size - b) / 2f;

            vector.x = Mathf.Floor(vector.x);
            vector.y = Mathf.Floor(vector.y);
            Vector2 vector2 = (position.size - b2) / 2f;

            vector2.x = Mathf.Floor(vector2.x);
            vector2.y = Mathf.Floor(vector2.y);
            Rect position2 = new Rect(position.x + vector.x, position.y + vector.y, b.x, b.y);
            Rect position3 = new Rect(position.x + vector2.x, position.y + vector2.y, b2.x, b2.y);

            if (doPosition)
            {
                for (int i = 0; i < 2; i++)
                {
                    LayoutDropdownWindow.LayoutMode layoutMode = (i != 0) ? vMode : hMode;
                    if (layoutMode == LayoutDropdownWindow.LayoutMode.Min)
                    {
                        Vector2 center = position3.center;
                        int     index;
                        center[index = i] = center[index] + (position2.min[i] - position3.min[i]);
                        position3.center  = center;
                    }
                    if (layoutMode == LayoutDropdownWindow.LayoutMode.Middle)
                    {
                    }
                    if (layoutMode == LayoutDropdownWindow.LayoutMode.Max)
                    {
                        Vector2 center2 = position3.center;
                        int     index2;
                        center2[index2 = i] = center2[index2] + (position2.max[i] - position3.max[i]);
                        position3.center    = center2;
                    }
                    if (layoutMode == LayoutDropdownWindow.LayoutMode.Stretch)
                    {
                        Vector2 min = position3.min;
                        Vector2 max = position3.max;
                        min[i]        = position2.min[i];
                        max[i]        = position2.max[i];
                        position3.min = min;
                        position3.max = max;
                    }
                }
            }
            Rect    rect  = default(Rect);
            Vector2 zero  = Vector2.zero;
            Vector2 zero2 = Vector2.zero;

            for (int j = 0; j < 2; j++)
            {
                LayoutDropdownWindow.LayoutMode layoutMode2 = (j != 0) ? vMode : hMode;
                if (layoutMode2 == LayoutDropdownWindow.LayoutMode.Min)
                {
                    zero[j]  = position2.min[j] + 0.5f;
                    zero2[j] = position2.min[j] + 0.5f;
                }
                if (layoutMode2 == LayoutDropdownWindow.LayoutMode.Middle)
                {
                    zero[j]  = position2.center[j];
                    zero2[j] = position2.center[j];
                }
                if (layoutMode2 == LayoutDropdownWindow.LayoutMode.Max)
                {
                    zero[j]  = position2.max[j] - 0.5f;
                    zero2[j] = position2.max[j] - 0.5f;
                }
                if (layoutMode2 == LayoutDropdownWindow.LayoutMode.Stretch)
                {
                    zero[j]  = position2.min[j] + 0.5f;
                    zero2[j] = position2.max[j] - 0.5f;
                }
            }
            rect.min = zero;
            rect.max = zero2;
            if (Event.current.type == EventType.Repaint)
            {
                GUI.color = LayoutDropdownWindow.s_Styles.parentColor * color;
                LayoutDropdownWindow.s_Styles.frame.Draw(position2, false, false, false, false);
            }
            if (hMode != LayoutDropdownWindow.LayoutMode.Undefined && hMode != LayoutDropdownWindow.LayoutMode.Stretch)
            {
                GUI.color = LayoutDropdownWindow.s_Styles.simpleAnchorColor * color;
                GUI.DrawTexture(new Rect(rect.xMin - 0.5f, position2.y + 1f, 1f, position2.height - 2f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(rect.xMax - 0.5f, position2.y + 1f, 1f, position2.height - 2f), EditorGUIUtility.whiteTexture);
            }
            if (vMode != LayoutDropdownWindow.LayoutMode.Undefined && vMode != LayoutDropdownWindow.LayoutMode.Stretch)
            {
                GUI.color = LayoutDropdownWindow.s_Styles.simpleAnchorColor * color;
                GUI.DrawTexture(new Rect(position2.x + 1f, rect.yMin - 0.5f, position2.width - 2f, 1f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(position2.x + 1f, rect.yMax - 0.5f, position2.width - 2f, 1f), EditorGUIUtility.whiteTexture);
            }
            if (hMode == LayoutDropdownWindow.LayoutMode.Stretch)
            {
                GUI.color = LayoutDropdownWindow.s_Styles.stretchAnchorColor * color;
                LayoutDropdownWindow.DrawArrow(new Rect(position3.x + 1f, position3.center.y - 0.5f, position3.width - 2f, 1f));
            }
            if (vMode == LayoutDropdownWindow.LayoutMode.Stretch)
            {
                GUI.color = LayoutDropdownWindow.s_Styles.stretchAnchorColor * color;
                LayoutDropdownWindow.DrawArrow(new Rect(position3.center.x - 0.5f, position3.y + 1f, 1f, position3.height - 2f));
            }
            if (Event.current.type == EventType.Repaint)
            {
                GUI.color = LayoutDropdownWindow.s_Styles.selfColor * color;
                LayoutDropdownWindow.s_Styles.frame.Draw(position3, false, false, false, false);
            }
            if (doPivot && hMode != LayoutDropdownWindow.LayoutMode.Undefined && vMode != LayoutDropdownWindow.LayoutMode.Undefined)
            {
                Vector2 vector3 = new Vector2(Mathf.Lerp(position3.xMin + 0.5f, position3.xMax - 0.5f, LayoutDropdownWindow.kPivotsForModes[(int)hMode]), Mathf.Lerp(position3.yMin + 0.5f, position3.yMax - 0.5f, LayoutDropdownWindow.kPivotsForModes[(int)vMode]));
                GUI.color = LayoutDropdownWindow.s_Styles.pivotColor * color;
                GUI.DrawTexture(new Rect(vector3.x - 2.5f, vector3.y - 1.5f, 5f, 3f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(vector3.x - 1.5f, vector3.y - 2.5f, 3f, 5f), EditorGUIUtility.whiteTexture);
            }
            if (hMode != LayoutDropdownWindow.LayoutMode.Undefined && vMode != LayoutDropdownWindow.LayoutMode.Undefined)
            {
                GUI.color = LayoutDropdownWindow.s_Styles.anchorCornerColor * color;
                GUI.DrawTexture(new Rect(rect.xMin - 1.5f, rect.yMin - 1.5f, 2f, 2f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(rect.xMax - 0.5f, rect.yMin - 1.5f, 2f, 2f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(rect.xMin - 1.5f, rect.yMax - 0.5f, 2f, 2f), EditorGUIUtility.whiteTexture);
                GUI.DrawTexture(new Rect(rect.xMax - 0.5f, rect.yMax - 0.5f, 2f, 2f), EditorGUIUtility.whiteTexture);
            }
            GUI.color = color;
        }