minor improvements

This commit is contained in:
Perfare 2018-11-26 08:47:20 +08:00
parent 96ea522e83
commit 7452d4275e
2 changed files with 26 additions and 30 deletions

View File

@ -707,14 +707,13 @@ namespace AssetStudio
return; return;
} }
using (var memStream = new MemoryStream()) var bitmap = new Texture2DConverter(tex2D).ConvertToBitmap(true);
if (bitmap != null)
{ {
var bitmap = new Texture2DConverter(tex2D).ConvertToBitmap(true); using (var stream = new MemoryStream())
if (bitmap != null)
{ {
bitmap.Save(memStream, ImageFormat.Png); bitmap.Save(stream, ImageFormat.Png);
memStream.Position = 0; iTex = new ImportedTexture(stream, name);
iTex = new ImportedTexture(memStream, name);
TextureList.Add(iTex); TextureList.Add(iTex);
bitmap.Dispose(); bitmap.Dispose();
} }

View File

@ -65,21 +65,21 @@ namespace AssetStudio
{ {
var polygon = GetPolygon(m_Sprite.m_RD); var polygon = GetPolygon(m_Sprite.m_RD);
var points = polygon.Select(x => x.Select(y => new PointF(y.X, y.Y)).ToArray()); var points = polygon.Select(x => x.Select(y => new PointF(y.X, y.Y)).ToArray());
using (var brush = new TextureBrush(spriteImage)) using (var path = new GraphicsPath())
{ {
using (var path = new GraphicsPath()) foreach (var p in points)
{ {
foreach (var p in points) path.AddPolygon(p);
}
using (var matr = new System.Drawing.Drawing2D.Matrix())
{
matr.Translate(m_Sprite.m_Rect.Width * m_Sprite.m_Pivot.X, m_Sprite.m_Rect.Height * m_Sprite.m_Pivot.Y);
matr.Scale(m_Sprite.m_PixelsToUnits, m_Sprite.m_PixelsToUnits);
path.Transform(matr);
var bitmap = new Bitmap((int)textureRect.Width, (int)textureRect.Height);
using (var graphic = Graphics.FromImage(bitmap))
{ {
path.AddPolygon(p); using (var brush = new TextureBrush(spriteImage))
}
using (var matr = new System.Drawing.Drawing2D.Matrix())
{
matr.Translate(m_Sprite.m_Rect.Width * m_Sprite.m_Pivot.X, m_Sprite.m_Rect.Height * m_Sprite.m_Pivot.Y);
matr.Scale(m_Sprite.m_PixelsToUnits, m_Sprite.m_PixelsToUnits);
path.Transform(matr);
var bitmap = new Bitmap((int)textureRect.Width, (int)textureRect.Height);
using (var graphic = Graphics.FromImage(bitmap))
{ {
graphic.FillPath(brush, path); graphic.FillPath(brush, path);
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY); bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
@ -91,7 +91,6 @@ namespace AssetStudio
} }
catch catch
{ {
spriteImage = originalImage.Clone(textureRect, PixelFormat.Format32bppArgb);
spriteImage.RotateFlip(RotateFlipType.RotateNoneFlipY); spriteImage.RotateFlip(RotateFlipType.RotateNoneFlipY);
return spriteImage; return spriteImage;
} }
@ -130,7 +129,8 @@ namespace AssetStudio
GetStreams(m_VertexData); GetStreams(m_VertexData);
var m_Channel = m_VertexData.m_Channels[0]; //kShaderChannelVertex var m_Channel = m_VertexData.m_Channels[0]; //kShaderChannelVertex
var m_Stream = m_VertexData.m_Streams[m_Channel.stream]; var m_Stream = m_VertexData.m_Streams[m_Channel.stream];
using (var vertexReader = new BinaryReader(new MemoryStream(m_VertexData.m_DataSize))) using (BinaryReader vertexReader = new BinaryReader(new MemoryStream(m_VertexData.m_DataSize)),
indexReader = new BinaryReader(new MemoryStream(m_RD.m_IndexBuffer)))
{ {
foreach (var subMesh in m_RD.m_SubMeshes) foreach (var subMesh in m_RD.m_SubMeshes)
{ {
@ -144,17 +144,14 @@ namespace AssetStudio
} }
var triangleCount = subMesh.indexCount / 3u; var triangleCount = subMesh.indexCount / 3u;
using (var indexReader = new BinaryReader(new MemoryStream(m_RD.m_IndexBuffer))) indexReader.BaseStream.Position = subMesh.firstByte;
for (int i = 0; i < triangleCount; i++)
{ {
indexReader.BaseStream.Position = subMesh.firstByte; var first = indexReader.ReadUInt16() - subMesh.firstVertex;
for (int i = 0; i < triangleCount; i++) var second = indexReader.ReadUInt16() - subMesh.firstVertex;
{ var third = indexReader.ReadUInt16() - subMesh.firstVertex;
int first = indexReader.ReadInt16(); var triangle = new[] { vertices[first], vertices[second], vertices[third] };
int second = indexReader.ReadInt16(); triangles.Add(triangle);
int third = indexReader.ReadInt16();
var triangle = new[] { vertices[first], vertices[second], vertices[third] };
triangles.Add(triangle);
}
} }
} }
} }