internal static void DrawPreview(IPreviewable defaultPreview, Rect previewArea, Object[] targets)
{
if (s_Styles == null)
{
s_Styles = new Styles();
}
string infoString = string.Empty;
Event current = Event.current;
if (targets.Length > 1)
{
Rect rect = new RectOffset(0x10, 0x10, 20, 0x19).Remove(previewArea);
int num = Mathf.Max(1, Mathf.FloorToInt((rect.height + 10f) / 77f));
int num2 = Mathf.Max(1, Mathf.FloorToInt((rect.width + 10f) / 65f));
int num3 = num * num2;
int minimumNr = Mathf.Min(targets.Length, 0x19);
bool flag = true;
int[] numArray = new int[] { num2, num };
if (minimumNr < num3)
{
numArray = GetGridDivision(rect, minimumNr, 12);
flag = false;
}
int num5 = Mathf.Min(numArray[0] * numArray[1], targets.Length);
rect.width += 10f;
rect.height += 10f;
Vector2 vector = new Vector2((float) Mathf.FloorToInt((rect.width / ((float) numArray[0])) - 10f), (float) Mathf.FloorToInt((rect.height / ((float) numArray[1])) - 10f));
float a = Mathf.Min(vector.x, vector.y - 12f);
if (flag)
{
a = Mathf.Min(a, 55f);
}
bool flag2 = (((current.type == EventType.MouseDown) && (current.button == 0)) && (current.clickCount == 2)) && previewArea.Contains(current.mousePosition);
defaultPreview.ResetTarget();
for (int i = 0; i < num5; i++)
{
Rect position = new Rect(rect.x + (((i % numArray[0]) * rect.width) / ((float) numArray[0])), rect.y + (((i / numArray[0]) * rect.height) / ((float) numArray[1])), vector.x, vector.y);
if (flag2 && position.Contains(Event.current.mousePosition))
{
Selection.objects = new Object[] { defaultPreview.target };
}
position.height -= 12f;
Rect rect3 = new Rect(position.x + ((position.width - a) * 0.5f), position.y + ((position.height - a) * 0.5f), a, a);
GUI.BeginGroup(rect3);
Editor.m_AllowMultiObjectAccess = false;
defaultPreview.OnInteractivePreviewGUI(new Rect(0f, 0f, a, a), s_Styles.preBackgroundSolid);
Editor.m_AllowMultiObjectAccess = true;
GUI.EndGroup();
position.y = rect3.yMax;
position.height = 16f;
GUI.Label(position, targets[i].name, s_Styles.previewMiniLabel);
defaultPreview.MoveNextTarget();
}
defaultPreview.ResetTarget();
if (Event.current.type == EventType.Repaint)
{
infoString = string.Format("Previewing {0} of {1} Objects", num5, targets.Length);
}
}
else
{
defaultPreview.OnInteractivePreviewGUI(previewArea, s_Styles.preBackground);
if (Event.current.type == EventType.Repaint)
{
infoString = defaultPreview.GetInfoString();
if (infoString != string.Empty)
{
infoString = infoString.Replace("\n", " ");
infoString = string.Format("{0}\n{1}", defaultPreview.target.name, infoString);
}
}
}
if ((Event.current.type == EventType.Repaint) && (infoString != string.Empty))
{
float height = s_Styles.dropShadowLabelStyle.CalcHeight(GUIContent.Temp(infoString), previewArea.width);
EditorGUI.DropShadowLabel(new Rect(previewArea.x, (previewArea.yMax - height) - 5f, previewArea.width, height), infoString);
}
}