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; }