public override void OnPreviewGUI(Rect r, GUIStyle background)
{
if (Event.current.type == EventType.Repaint)
{
background.Draw(r, false, false, false, false);
}
Texture target = base.target as Texture;
RenderTexture texture2 = target as RenderTexture;
if (texture2 != null)
{
if (!SystemInfo.SupportsRenderTextureFormat(texture2.format))
{
return;
}
texture2.Create();
}
if (this.IsCubemap())
{
this.m_CubemapPreview.OnPreviewGUI(target, r, background);
}
else
{
int num = Mathf.Max(target.width, 1);
int num2 = Mathf.Max(target.height, 1);
float mipLevelForRendering = this.GetMipLevelForRendering();
float num4 = Mathf.Min(Mathf.Min((float) (r.width / ((float) num)), (float) (r.height / ((float) num2))), 1f);
Rect viewRect = new Rect(r.x, r.y, num * num4, num2 * num4);
PreviewGUI.BeginScrollView(r, this.m_Pos, viewRect, "PreHorizontalScrollbar", "PreHorizontalScrollbarThumb");
float mipMapBias = target.mipMapBias;
TextureUtil.SetMipMapBiasNoDirty(target, mipLevelForRendering - this.Log2(((float) num) / viewRect.width));
FilterMode filterMode = target.filterMode;
TextureUtil.SetFilterModeNoDirty(target, FilterMode.Point);
if (this.m_ShowAlpha)
{
EditorGUI.DrawTextureAlpha(viewRect, target);
}
else
{
Texture2D textured = target as Texture2D;
if ((textured != null) && textured.alphaIsTransparency)
{
EditorGUI.DrawTextureTransparent(viewRect, target);
}
else
{
EditorGUI.DrawPreviewTexture(viewRect, target);
}
}
if ((viewRect.width > 32f) && (viewRect.height > 32f))
{
TextureImporter atPath = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(target)) as TextureImporter;
SpriteMetaData[] dataArray = (atPath == null) ? null : atPath.spritesheet;
if ((dataArray != null) && (atPath.spriteImportMode == SpriteImportMode.Multiple))
{
Rect outScreenRect = new Rect();
Rect outSourceRect = new Rect();
GUI.CalculateScaledTextureRects(viewRect, ScaleMode.StretchToFill, ((float) target.width) / ((float) target.height), ref outScreenRect, ref outSourceRect);
int width = target.width;
int height = target.height;
atPath.GetWidthAndHeight(ref width, ref height);
float num8 = ((float) target.width) / ((float) width);
HandleUtility.ApplyWireMaterial();
GL.PushMatrix();
GL.MultMatrix(Handles.matrix);
GL.Begin(1);
GL.Color(new Color(1f, 1f, 1f, 0.5f));
foreach (SpriteMetaData data in dataArray)
{
Rect rect = data.rect;
Rect rect5 = new Rect {
xMin = outScreenRect.xMin + (outScreenRect.width * ((rect.xMin / ((float) target.width)) * num8)),
xMax = outScreenRect.xMin + (outScreenRect.width * ((rect.xMax / ((float) target.width)) * num8)),
yMin = outScreenRect.yMin + (outScreenRect.height * (1f - ((rect.yMin / ((float) target.height)) * num8))),
yMax = outScreenRect.yMin + (outScreenRect.height * (1f - ((rect.yMax / ((float) target.height)) * num8)))
};
this.DrawRect(rect5);
}
GL.End();
GL.PopMatrix();
}
}
TextureUtil.SetMipMapBiasNoDirty(target, mipMapBias);
TextureUtil.SetFilterModeNoDirty(target, filterMode);
this.m_Pos = PreviewGUI.EndScrollView();
if (mipLevelForRendering != 0f)
{
EditorGUI.DropShadowLabel(new Rect(r.x, r.y, r.width, 20f), "Mip " + mipLevelForRendering);
}
}
}