Skip to content

Commit

Permalink
Editor: Texture Import allow flipping textures
Browse files Browse the repository at this point in the history
  • Loading branch information
CallumDev committed Dec 16, 2018
1 parent 11a411d commit 20f4699
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 9 deletions.
15 changes: 9 additions & 6 deletions src/Editor/LancerEdit/TextureImport.cs
Expand Up @@ -50,31 +50,33 @@ public static void LoadLibraries()
}
}

static List<TeximpNet.Surface> GenerateMipmapsRGBA(string input, MipmapMethod mipm)
static List<TeximpNet.Surface> GenerateMipmapsRGBA(string input, MipmapMethod mipm, bool flip)
{
List<TeximpNet.Surface> mips = new List<TeximpNet.Surface>();
var surface = TeximpNet.Surface.LoadFromFile(input);
if (flip) surface.FlipVertically();
surface.ConvertTo(TeximpNet.ImageConversion.To32Bits);
surface.GenerateMipMaps(mips, (TeximpNet.ImageFilter)mipm);
return mips;
}

public static byte[] TGANoMipmap(string input)
public static byte[] TGANoMipmap(string input, bool flip)
{
LoadLibraries();
using(var stream = new MemoryStream()) {
using(var surface = TeximpNet.Surface.LoadFromFile(input)) {
if (flip) surface.FlipVertically();
surface.ConvertTo(TeximpNet.ImageConversion.To32Bits);
surface.SaveToStream(TeximpNet.ImageFormat.TARGA, stream);
}
return stream.ToArray();
}
}
public static unsafe List<LUtfNode> TGAMipmaps(string input, MipmapMethod mipm)
public static unsafe List<LUtfNode> TGAMipmaps(string input, MipmapMethod mipm, bool flip)
{
LoadLibraries();
var nodes = new List<LUtfNode>();
var mips = GenerateMipmapsRGBA(input, mipm);
var mips = GenerateMipmapsRGBA(input, mipm, flip);
for (int i = 0; i < mips.Count; i++) {
using(var stream = new MemoryStream()) {
mips[i].SaveToStream(TeximpNet.ImageFormat.TARGA, stream);
Expand All @@ -85,7 +87,7 @@ public static unsafe List<LUtfNode> TGAMipmaps(string input, MipmapMethod mipm)
}
return nodes;
}
public static byte[] CreateDDS(string input, DDSFormat format, MipmapMethod mipm, bool slow)
public static byte[] CreateDDS(string input, DDSFormat format, MipmapMethod mipm, bool slow, bool flip)
{
LoadLibraries();
using (var stream = new MemoryStream())
Expand All @@ -98,10 +100,11 @@ public static byte[] CreateDDS(string input, DDSFormat format, MipmapMethod mipm
{
using (var surface = TeximpNet.Surface.LoadFromFile(input))
{
if (flip) surface.FlipVertically();
compress.Input.SetData(surface);
}
} else {
var mips = GenerateMipmapsRGBA(input, mipm);
var mips = GenerateMipmapsRGBA(input, mipm, flip);
compress.Input.SetTextureLayout(TextureType.Texture2D, mips[0].Width, mips[0].Height);

for (int i = 0; i < mips.Count; i++) {
Expand Down
8 changes: 5 additions & 3 deletions src/Editor/LancerEdit/UtfTab.Popups.cs
Expand Up @@ -47,6 +47,7 @@ void RegisterPopups()
};
int mipmapOption = 6;
bool compressSlow = false;
bool texFlip = false;
void TexImportDialog(PopupData data)
{
if (teximportprev == null)
Expand Down Expand Up @@ -78,6 +79,7 @@ void TexImportDialog(PopupData data)
ImGui.Text(string.Format("Dimensions: {0}x{1}", teximportprev.Width, teximportprev.Height));
ImGui.Combo("Format", ref compressOption, texOptions, texOptions.Length);
ImGui.Combo("Mipmaps", ref mipmapOption, mipmapOptions, mipmapOptions.Length);
ImGui.Checkbox("Flip Vertically", ref texFlip);
ImGui.Checkbox("High Quality (slow)", ref compressSlow);
if (ImGui.Button("Import"))
{
Expand Down Expand Up @@ -125,11 +127,11 @@ void TexImportDialog(PopupData data)
break;
}
if (mipm == MipmapMethod.None && format == DDSFormat.Uncompressed)
texImportData = TextureImport.TGANoMipmap(teximportpath);
texImportData = TextureImport.TGANoMipmap(teximportpath, texFlip);
else if (format == DDSFormat.Uncompressed)
texImportChildren = TextureImport.TGAMipmaps(teximportpath, mipm);
texImportChildren = TextureImport.TGAMipmaps(teximportpath, mipm, texFlip);
else
texImportData = TextureImport.CreateDDS(teximportpath, format, mipm, compressSlow);
texImportData = TextureImport.CreateDDS(teximportpath, format, mipm, compressSlow, texFlip);
texImportWaiting = false;
}).Start();
}
Expand Down

0 comments on commit 20f4699

Please sign in to comment.