diff --git a/FFXIV_TexTools/FFXIV_TexTools.csproj b/FFXIV_TexTools/FFXIV_TexTools.csproj index d73c8e4b..c2b74b52 100644 --- a/FFXIV_TexTools/FFXIV_TexTools.csproj +++ b/FFXIV_TexTools/FFXIV_TexTools.csproj @@ -23,9 +23,9 @@ FFXIV_TexTools Copyright © 2024 - 3.0.8.1 - 3.0.8.1 - 3.0.8.1 + 3.0.8.2 + 3.0.8.2 + 3.0.8.2 9.0 true @@ -65,7 +65,7 @@ - + @@ -93,7 +93,7 @@ - + diff --git a/FFXIV_TexTools/MainWindow.xaml b/FFXIV_TexTools/MainWindow.xaml index 0651b025..87510808 100644 --- a/FFXIV_TexTools/MainWindow.xaml +++ b/FFXIV_TexTools/MainWindow.xaml @@ -73,6 +73,7 @@ + diff --git a/FFXIV_TexTools/MainWindow.xaml.cs b/FFXIV_TexTools/MainWindow.xaml.cs index 4933a5e0..c2071110 100644 --- a/FFXIV_TexTools/MainWindow.xaml.cs +++ b/FFXIV_TexTools/MainWindow.xaml.cs @@ -414,8 +414,19 @@ private async Task HandleArgs(string[] args) FlexibleMessageBox.Show("An error occurred while initializing:\n\n" + ex.Message, "Init Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } - ImportOnlyWindow.ShowImportDialog(args[0]); - Application.Current.Shutdown(); + // Set a unique temp path. + var tempDir = IOUtil.GetUniqueSubfolder(Path.GetTempPath(), "tt_io"); + XivCache.FrameworkSettings.TempDirectory = tempDir; + + try + { + ImportOnlyWindow.ShowImportDialog(args[0]); + } + finally + { + IOUtil.ClearTempFolder(); + Application.Current.Shutdown(); + } } private void OnKeyDown(object sender, System.Windows.Input.KeyEventArgs e) @@ -2133,5 +2144,50 @@ private void ViewBGPart_Click(object sender, RoutedEventArgs e) { _ = SimpleItemViewWindow.ShowModel(null, this); } + + private async void Menu_ImportModpackPenumbra_Click(object sender, RoutedEventArgs e) + { + var ofd = new OpenFileDialog(); + ofd.Filter = ViewHelpers.LoadModpackFilter; + ofd.Title = "Import Modpack to Penumbra..."; + if(ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK) + { + return; + } + + var success = false; + await LockUi("Upgrading and Importing Modpack to Penumbra", "Please wait..."); + try + { + var modpack = ofd.FileName; + var info = await TTMP.GetModpackInfo(modpack); + var fname = IOUtil.MakePathSafe(info.ModPack.Name); + var dir = PenumbraAPI.GetPenumbraDirectory(); + + if (string.IsNullOrWhiteSpace(dir)) + { + throw new Exception("Penumbra is not installed or the library directory could not be found."); + } + var newPath = IOUtil.GetUniqueSubfolder(dir, fname, true); + + var newName = System.IO.Path.GetFileName(newPath); + + await ModpackUpgrader.UpgradeModpack(modpack, newPath, true, true); + await PenumbraAPI.ReloadMod(newName); + success = true; + } catch (Exception ex) + { + this.ShowError("Import Error", "An error occurred while upgrading or importing the modpack: " + ex.Message); + } + finally + { + await UnlockUi(); + } + + if (success) + { + await this.ShowMessageAsync("Penumbra Import Complete", "The modpack was imported successfully."); + } + } } } diff --git a/FFXIV_TexTools/ViewModels/FullModelViewport3DViewModel.cs b/FFXIV_TexTools/ViewModels/FullModelViewport3DViewModel.cs index 0ae6f32d..14a164a8 100644 --- a/FFXIV_TexTools/ViewModels/FullModelViewport3DViewModel.cs +++ b/FFXIV_TexTools/ViewModels/FullModelViewport3DViewModel.cs @@ -88,7 +88,6 @@ public async Task UpdateModel(TTModel model, Dictionary t var slot = ViewHelpers.GetModelSlot(model.Source); SharpDX.BoundingBox? boundingBox = null; - ModelModifiers.CalculateTangents(model); // Remove any existing models of the same item type RemoveSlot(slot); diff --git a/FFXIV_TexTools/ViewModels/Viewport3DViewModel.cs b/FFXIV_TexTools/ViewModels/Viewport3DViewModel.cs index 3a75c512..5d3dd673 100644 --- a/FFXIV_TexTools/ViewModels/Viewport3DViewModel.cs +++ b/FFXIV_TexTools/ViewModels/Viewport3DViewModel.cs @@ -269,12 +269,6 @@ public async Task UpdateModel(TTModel importModel = null, List // Push all the potentially CPU intense stuff onto a new thread. await Task.Run(async () => { - if (newModel && originalModel != _Model) - { - // Only recalculate if an actually new-new model, since this doesn't change on shape application. - ModelModifiers.CalculateTangents(model); - } - if (newModel) { lock (_Geometry) diff --git a/FFXIV_TexTools/Views/Controls/RawFloatValueDisplay.xaml.cs b/FFXIV_TexTools/Views/Controls/RawFloatValueDisplay.xaml.cs index 2ff3870d..f84fb1ee 100644 --- a/FFXIV_TexTools/Views/Controls/RawFloatValueDisplay.xaml.cs +++ b/FFXIV_TexTools/Views/Controls/RawFloatValueDisplay.xaml.cs @@ -64,7 +64,10 @@ private void SaveButton_Click(object sender, RoutedEventArgs e) Red = float.Parse(RedBox.Text); Green = float.Parse(GreenBox.Text); Blue = float.Parse(BlueBox.Text); - Alpha = float.Parse(AlphaBox.Text); + if (!string.IsNullOrWhiteSpace(AlphaBox.Text)) + { + Alpha = float.Parse(AlphaBox.Text); + } DialogResult = true; } catch diff --git a/FFXIV_TexTools/Views/CustomizeSettingsView.xaml b/FFXIV_TexTools/Views/CustomizeSettingsView.xaml index 77311bba..2ee3ac3b 100644 --- a/FFXIV_TexTools/Views/CustomizeSettingsView.xaml +++ b/FFXIV_TexTools/Views/CustomizeSettingsView.xaml @@ -269,6 +269,7 @@ + @@ -280,8 +281,9 @@ - + + + RenderOptions.BitmapScalingMode="NearestNeighbor"> + + + + + +