This commit is contained in:
Perfare 2018-09-01 07:23:37 +08:00
parent a7c5330042
commit ec8c3e71d6

View File

@ -18,15 +18,21 @@ namespace AssetStudio
{ {
var m_SpriteAtlas = new SpriteAtlas(assetPreloadData); var m_SpriteAtlas = new SpriteAtlas(assetPreloadData);
var index = m_SpriteAtlas.guids.FindIndex(x => x == m_Sprite.first); var index = m_SpriteAtlas.guids.FindIndex(x => x == m_Sprite.first);
if (index >= 0 && assetsfileList.TryGetPD(m_SpriteAtlas.textures[index], out assetPreloadData)) if (index >= 0 && assetsfileList.TryGetPD(m_SpriteAtlas.textures[index], out assetPreloadData))
{ {
SpriteInfo(asset, assetPreloadData, m_SpriteAtlas.textureRects[index]);
try try
{ {
return CutImage(asset, assetPreloadData, m_SpriteAtlas.textureRects[index], m_Sprite); if (m_Sprite.m_PhysicsShape.Length > 0)
{
return CutImage(assetPreloadData, m_SpriteAtlas.textureRects[index], m_Sprite);
}
return CutImage(assetPreloadData, m_SpriteAtlas.textureRects[index]);
} }
catch catch
{ {
return CutImage(asset, assetPreloadData, m_SpriteAtlas.textureRects[index]); return CutImage(assetPreloadData, m_SpriteAtlas.textureRects[index]);
} }
} }
} }
@ -34,24 +40,29 @@ namespace AssetStudio
{ {
if (assetsfileList.TryGetPD(m_Sprite.texture, out assetPreloadData)) if (assetsfileList.TryGetPD(m_Sprite.texture, out assetPreloadData))
{ {
return CutImage(asset, assetPreloadData, m_Sprite.textureRect); SpriteInfo(asset, assetPreloadData, m_Sprite.textureRect);
return CutImage(assetPreloadData, m_Sprite.textureRect);
} }
} }
return null; return null;
} }
private static Bitmap CutImage(AssetPreloadData asset, AssetPreloadData texture2DAsset, RectangleF textureRect) private static void SpriteInfo(AssetPreloadData asset, AssetPreloadData texture2DAsset, RectangleF textureRect)
{
var info = texture2DAsset.InfoText;
var start = info.IndexOf("Format");
info = info.Substring(start, info.Length - start);
asset.InfoText = $"Width: {textureRect.Width}\nHeight: {textureRect.Height}\n" + info;
}
private static Bitmap CutImage(AssetPreloadData texture2DAsset, RectangleF textureRect)
{ {
var texture2D = new Texture2DConverter(new Texture2D(texture2DAsset, true)); var texture2D = new Texture2DConverter(new Texture2D(texture2DAsset, true));
using (var originalImage = texture2D.ConvertToBitmap(false)) using (var originalImage = texture2D.ConvertToBitmap(false))
{ {
if (originalImage != null) if (originalImage != null)
{ {
var info = texture2DAsset.InfoText;
var start = info.IndexOf("Format");
info = info.Substring(start, info.Length - start);
asset.InfoText = $"Width: {textureRect.Width}\nHeight: {textureRect.Height}\n" + info;
var spriteImage = originalImage.Clone(textureRect, PixelFormat.Format32bppArgb); var spriteImage = originalImage.Clone(textureRect, PixelFormat.Format32bppArgb);
spriteImage.RotateFlip(RotateFlipType.RotateNoneFlipY); spriteImage.RotateFlip(RotateFlipType.RotateNoneFlipY);
return spriteImage; return spriteImage;
@ -61,17 +72,13 @@ namespace AssetStudio
return null; return null;
} }
private static Bitmap CutImage(AssetPreloadData asset, AssetPreloadData texture2DAsset, RectangleF textureRect, Sprite sprite) private static Bitmap CutImage(AssetPreloadData texture2DAsset, RectangleF textureRect, Sprite sprite)
{ {
var texture2D = new Texture2DConverter(new Texture2D(texture2DAsset, true)); var texture2D = new Texture2DConverter(new Texture2D(texture2DAsset, true));
using (var originalImage = texture2D.ConvertToBitmap(false)) using (var originalImage = texture2D.ConvertToBitmap(false))
{ {
if (originalImage != null) if (originalImage != null)
{ {
var info = texture2DAsset.InfoText;
var start = info.IndexOf("Format");
info = info.Substring(start, info.Length - start);
asset.InfoText = $"Width: {textureRect.Width}\nHeight: {textureRect.Height}\n" + info;
var spriteImage = originalImage.Clone(textureRect, PixelFormat.Format32bppArgb); var spriteImage = originalImage.Clone(textureRect, PixelFormat.Format32bppArgb);
using (var brush = new TextureBrush(spriteImage)) using (var brush = new TextureBrush(spriteImage))
{ {