Merge branch 'dev' of https://github.com/4sval/FModel into dev

This commit is contained in:
Marlon
2022-12-16 19:54:04 +01:00
22 changed files with 461 additions and 334 deletions

View File

@@ -17,6 +17,7 @@ using System.Windows;
using System.Windows.Media.Imaging;
using CUE4Parse.UE4.Assets.Exports.Texture;
using CUE4Parse_Conversion.Textures;
using Ookii.Dialogs.Wpf;
namespace FModel.ViewModels;
@@ -227,19 +228,20 @@ public class TabItem : ViewModel
});
}
public void AddImage(UTexture2D texture) => AddImage(texture.Name, texture.bRenderNearestNeighbor, texture.Decode(UserSettings.Default.OverridedPlatform));
public void AddImage(UTexture2D texture, bool bulkTexture)
=> AddImage(texture.Name, texture.bRenderNearestNeighbor, texture.Decode(UserSettings.Default.OverridedPlatform), bulkTexture);
public void AddImage(string name, bool rnn, SKBitmap[] img)
public void AddImage(string name, bool rnn, SKBitmap[] img, bool bulkTexture)
{
foreach (var i in img) AddImage(name, rnn, i);
foreach (var i in img) AddImage(name, rnn, i, bulkTexture);
}
public void AddImage(string name, bool rnn, SKBitmap img)
public void AddImage(string name, bool rnn, SKBitmap img, bool bulkTexture)
{
Application.Current.Dispatcher.Invoke(() =>
{
var t = new TabImage(name, rnn, img);
if (UserSettings.Default.IsAutoSaveTextures)
if (bulkTexture)
SaveImage(t, true);
_images.Add(t);
@@ -259,7 +261,7 @@ public class TabItem : ViewModel
Document ??= new TextDocument();
Document.Text = text;
if (UserSettings.Default.IsAutoSaveProps || bulkSave)
if (bulkSave)
SaveProperty(true);
});
}
@@ -273,16 +275,43 @@ public class TabItem : ViewModel
});
}
public void SaveImage(bool autoSave) => SaveImage(SelectedImage, autoSave);
public void SaveImages(bool bulkTexture)
{
if (_images.Count == 1)
{
SaveImage(bulkTexture);
return;
}
private void SaveImage(TabImage image, bool autoSave)
var directory = Path.Combine(UserSettings.Default.TextureDirectory,
UserSettings.Default.KeepDirectoryStructure ? Directory : "").Replace('\\', '/');
if (!bulkTexture)
{
var folderBrowser = new VistaFolderBrowserDialog();
if (folderBrowser.ShowDialog() == true)
directory = folderBrowser.SelectedPath;
else return;
}
else System.IO.Directory.CreateDirectory(directory);
foreach (var image in _images)
{
if (image == null) return;
var fileName = $"{image.ExportName}.png";
SaveImage(image, Path.Combine(directory, fileName), fileName);
}
}
public void SaveImage(bool bulkTexture) => SaveImage(SelectedImage, bulkTexture);
private void SaveImage(TabImage image, bool bulkTexture)
{
if (image == null) return;
var fileName = $"{image.ExportName}.png";
var directory = Path.Combine(UserSettings.Default.TextureDirectory,
var path = Path.Combine(UserSettings.Default.TextureDirectory,
UserSettings.Default.KeepDirectoryStructure ? Directory : "", fileName!).Replace('\\', '/');
if (!autoSave)
if (!bulkTexture)
{
var saveFileDialog = new SaveFileDialog
{
@@ -293,19 +322,23 @@ public class TabItem : ViewModel
};
var result = saveFileDialog.ShowDialog();
if (!result.HasValue || !result.Value) return;
directory = saveFileDialog.FileName;
}
else
{
System.IO.Directory.CreateDirectory(directory.SubstringBeforeLast('/'));
path = saveFileDialog.FileName;
}
else System.IO.Directory.CreateDirectory(path.SubstringBeforeLast('/'));
using (var fs = new FileStream(directory, FileMode.Create, FileAccess.Write, FileShare.Read))
{
fs.Write(image.ImageBuffer, 0, image.ImageBuffer.Length);
}
SaveImage(image, path, fileName);
}
SaveCheck(directory, fileName);
private void SaveImage(TabImage image, string path, string fileName)
{
SaveImage(image, path);
SaveCheck(path, fileName);
}
private void SaveImage(TabImage image, string path)
{
using var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read);
fs.Write(image.ImageBuffer, 0, image.ImageBuffer.Length);
}
public void SaveProperty(bool autoSave)