diff --git a/CUE4Parse b/CUE4Parse
index db405ca0..071e4589 160000
--- a/CUE4Parse
+++ b/CUE4Parse
@@ -1 +1 @@
-Subproject commit db405ca009b440244e7c55e9cc0f626d93c468e3
+Subproject commit 071e458907750c5af253079e2e91ddf54b824220
diff --git a/FModel/ViewModels/CUE4ParseViewModel.cs b/FModel/ViewModels/CUE4ParseViewModel.cs
index 0bf6a794..06aaa1bc 100644
--- a/FModel/ViewModels/CUE4ParseViewModel.cs
+++ b/FModel/ViewModels/CUE4ParseViewModel.cs
@@ -549,18 +549,13 @@ namespace FModel.ViewModels
ExportData(fullPath);
}
- private bool CheckExport(UObject export) // return if this loads an image
+ private bool CheckExport(UObject export) // return true once you wanna stop searching for exports
{
switch (export)
{
case UTexture2D texture:
{
- var bNearest = false;
- if (texture.TryGetValue(out FName trigger, "LODGroup", "Filter") && !trigger.IsNone)
- bNearest = trigger.Text.EndsWith("TEXTUREGROUP_Pixels2D", StringComparison.OrdinalIgnoreCase) ||
- trigger.Text.EndsWith("TF_Nearest", StringComparison.OrdinalIgnoreCase);
-
- TabControl.SelectedTab.ImageRender = bNearest ? BitmapScalingMode.NearestNeighbor : BitmapScalingMode.Linear;
+ TabControl.SelectedTab.RenderNearestNeighbor = texture.bRenderNearestNeighbor;
TabControl.SelectedTab.SetImage(texture.Decode());
return true;
}
@@ -604,7 +599,7 @@ namespace FModel.ViewModels
modelViewer.Load(export);
});
}
- return false;
+ return true;
}
default:
{
diff --git a/FModel/ViewModels/Commands/ImageCommand.cs b/FModel/ViewModels/Commands/ImageCommand.cs
index c6acbbb8..bb3c5ef8 100644
--- a/FModel/ViewModels/Commands/ImageCommand.cs
+++ b/FModel/ViewModels/Commands/ImageCommand.cs
@@ -5,6 +5,7 @@ using FModel.Views.Resources.Controls;
using System.IO;
using System.Windows;
using System.Windows.Media;
+using FModel.Views.Resources.Converters;
namespace FModel.ViewModels.Commands
{
@@ -32,7 +33,7 @@ namespace FModel.ViewModels.Commands
WindowState = contextViewModel.Image.Height > 1000 ? WindowState.Maximized : WindowState.Normal,
ImageCtrl = {Source = contextViewModel.Image}
};
- RenderOptions.SetBitmapScalingMode(popout.ImageCtrl, contextViewModel.ImageRender);
+ RenderOptions.SetBitmapScalingMode(popout.ImageCtrl, BoolToRenderModeConverter.Instance.Convert(contextViewModel.RenderNearestNeighbor));
popout.Show();
});
break;
diff --git a/FModel/ViewModels/ModelViewerViewModel.cs b/FModel/ViewModels/ModelViewerViewModel.cs
index 306ceb27..60e69467 100644
--- a/FModel/ViewModels/ModelViewerViewModel.cs
+++ b/FModel/ViewModels/ModelViewerViewModel.cs
@@ -165,12 +165,10 @@ namespace FModel.ViewModels
var builder = new MeshBuilder {TextureCoordinates = new Vector2Collection()};
for (var i = 0; i < verts.Length; i++)
{
- var u = BitConverter.ToSingle(BitConverter.GetBytes((int) verts[i].UV.U));
- var v = BitConverter.ToSingle(BitConverter.GetBytes((int) verts[i].UV.V));
builder.AddNode(
new Vector3(verts[i].Position.X, -verts[i].Position.Y, verts[i].Position.Z),
new Vector3(verts[i].Normal.X, verts[i].Normal.Y, verts[i].Normal.Z),
- new Vector2(u, v));
+ new Vector2(verts[i].UV.U, verts[i].UV.V));
}
for (var i = 0; i < indices.Length; i++)
diff --git a/FModel/ViewModels/TabControlViewModel.cs b/FModel/ViewModels/TabControlViewModel.cs
index cf89f59d..f5d7e6c7 100644
--- a/FModel/ViewModels/TabControlViewModel.cs
+++ b/FModel/ViewModels/TabControlViewModel.cs
@@ -145,11 +145,11 @@ namespace FModel.ViewModels
}
}
- private BitmapScalingMode _imageRender = BitmapScalingMode.Linear;
- public BitmapScalingMode ImageRender
+ private bool _renderNearestNeighbor;
+ public bool RenderNearestNeighbor
{
- get => _imageRender;
- set => SetProperty(ref _imageRender, value);
+ get => _renderNearestNeighbor;
+ set => SetProperty(ref _renderNearestNeighbor, value);
}
public bool HasImage => Image != null;
diff --git a/FModel/Views/Resources/Converters/BoolToRenderModeConverter.cs b/FModel/Views/Resources/Converters/BoolToRenderModeConverter.cs
new file mode 100644
index 00000000..1fe28556
--- /dev/null
+++ b/FModel/Views/Resources/Converters/BoolToRenderModeConverter.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Globalization;
+using System.Windows.Data;
+using System.Windows.Media;
+
+namespace FModel.Views.Resources.Converters
+{
+ public class BoolToRenderModeConverter : IValueConverter
+ {
+ public static readonly BoolToRenderModeConverter Instance = new();
+
+ public BitmapScalingMode Convert(bool value) => (BitmapScalingMode) Convert(value, null, null, null);
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ return value switch
+ {
+ true => BitmapScalingMode.NearestNeighbor,
+ _ => BitmapScalingMode.Linear
+ };
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/FModel/Views/Resources/Resources.xaml b/FModel/Views/Resources/Resources.xaml
index 21fba142..846e683f 100644
--- a/FModel/Views/Resources/Resources.xaml
+++ b/FModel/Views/Resources/Resources.xaml
@@ -648,7 +648,7 @@
+ Source="{Binding SelectedItem.Image, ElementName=TabControlName}" RenderOptions.BitmapScalingMode="{Binding SelectedItem.RenderNearestNeighbor, ElementName=TabControlName, Converter={x:Static converters:BoolToRenderModeConverter.Instance}}">