mirror of
https://github.com/4sval/FModel.git
synced 2026-06-21 15:30:05 -05:00
converter
This commit is contained in:
parent
d949bc5fb1
commit
6672c9f10a
|
|
@ -1 +1 @@
|
|||
Subproject commit db405ca009b440244e7c55e9cc0f626d93c468e3
|
||||
Subproject commit 071e458907750c5af253079e2e91ddf54b824220
|
||||
|
|
@ -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:
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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++)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -648,7 +648,7 @@
|
|||
<controls:AvalonEditor x:Name="DynamicArea" Grid.Column="0" Grid.ColumnSpan="3" DataContext="{Binding SelectedItem, ElementName=TabControlName}" />
|
||||
<Image Grid.Column="3" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="Uniform"
|
||||
Visibility="{Binding SelectedItem.HasImage, ElementName=TabControlName, Converter={StaticResource BoolToVisibilityConverter}}"
|
||||
Source="{Binding SelectedItem.Image, ElementName=TabControlName}" RenderOptions.BitmapScalingMode="{Binding SelectedItem.ImageRender, ElementName=TabControlName}">
|
||||
Source="{Binding SelectedItem.Image, ElementName=TabControlName}" RenderOptions.BitmapScalingMode="{Binding SelectedItem.RenderNearestNeighbor, ElementName=TabControlName, Converter={x:Static converters:BoolToRenderModeConverter.Instance}}">
|
||||
<Image.InputBindings>
|
||||
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding SelectedItem.ImageCommand, ElementName=TabControlName}" CommandParameter="Open"/>
|
||||
</Image.InputBindings>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user