internal static void DrawPreview(IPreviewable defaultPreview, Rect previewArea, UnityEngine.Object[] targets)
{
if (ObjectPreview.s_Styles == null)
{
ObjectPreview.s_Styles = new ObjectPreview.Styles();
}
string text = string.Empty;
Event current = Event.current;
if (targets.Length > 1)
{
Rect rect = new RectOffset(16, 16, 20, 25).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 num4 = Mathf.Min(targets.Length, 25);
bool flag = true;
int[] array = new int[]
{
num2,
num
};
if (num4 < num3)
{
array = ObjectPreview.GetGridDivision(rect, num4, 12);
flag = false;
}
int num5 = Mathf.Min(array[0] * array[1], targets.Length);
rect.width += 10f;
rect.height += 10f;
Vector2 vector = new Vector2((float)Mathf.FloorToInt(rect.width / (float)array[0] - 10f), (float)Mathf.FloorToInt(rect.height / (float)array[1] - 10f));
float num6 = Mathf.Min(vector.x, vector.y - 12f);
if (flag)
{
num6 = Mathf.Min(num6, 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 + (float)(i % array[0]) * rect.width / (float)array[0], rect.y + (float)(i / array[0]) * rect.height / (float)array[1], vector.x, vector.y);
if (flag2 && position.Contains(Event.current.mousePosition))
{
Selection.objects = new UnityEngine.Object[]
{
defaultPreview.target
};
}
position.height -= 12f;
Rect position2 = new Rect(position.x + (position.width - num6) * 0.5f, position.y + (position.height - num6) * 0.5f, num6, num6);
GUI.BeginGroup(position2);
Editor.m_AllowMultiObjectAccess = false;
defaultPreview.OnInteractivePreviewGUI(new Rect(0f, 0f, num6, num6), ObjectPreview.s_Styles.preBackgroundSolid);
Editor.m_AllowMultiObjectAccess = true;
GUI.EndGroup();
position.y = position2.yMax;
position.height = 16f;
GUI.Label(position, targets[i].name, ObjectPreview.s_Styles.previewMiniLabel);
defaultPreview.MoveNextTarget();
}
defaultPreview.ResetTarget();
if (Event.current.type == EventType.Repaint)
{
text = string.Format("Previewing {0} of {1} Objects", num5, targets.Length);
}
}
else
{
defaultPreview.OnInteractivePreviewGUI(previewArea, ObjectPreview.s_Styles.preBackground);
if (Event.current.type == EventType.Repaint)
{
text = defaultPreview.GetInfoString();
if (text != string.Empty)
{
text = text.Replace("\n", " ");
text = string.Format("{0}\n{1}", defaultPreview.target.name, text);
}
}
}
if (Event.current.type == EventType.Repaint && text != string.Empty)
{
float num7 = ObjectPreview.s_Styles.dropShadowLabelStyle.CalcHeight(GUIContent.Temp(text), previewArea.width);
EditorGUI.DropShadowLabel(new Rect(previewArea.x, previewArea.yMax - num7 - 5f, previewArea.width, num7), text);
}
}