normal map texture + hide material

This commit is contained in:
iAmAsval 2021-11-16 12:05:22 +01:00
parent 8cafa960e1
commit 8bd848219d
7 changed files with 210 additions and 93 deletions

View File

@ -327,22 +327,27 @@ namespace FModel.ViewModels
}
public async Task LoadLocalizedResources()
{
await LoadGameLocalizedResources();
await LoadHotfixedLocalizedResources();
if (LocalizedResourcesCount > 0)
{
FLogger.AppendInformation();
FLogger.AppendText($"{LocalizedResourcesCount} localized resources loaded for '{UserSettings.Default.AssetLanguage.GetDescription()}'", Constants.WHITE, true);
}
else
{
FLogger.AppendWarning();
FLogger.AppendText($"Could not load localized resources in '{UserSettings.Default.AssetLanguage.GetDescription()}', language may not exist", Constants.WHITE, true);
}
}
private async Task LoadGameLocalizedResources()
{
if (LocalizedResourcesCount > 0) return;
await _threadWorkerView.Begin(cancellationToken =>
{
LocalizedResourcesCount = Provider.LoadLocalization(UserSettings.Default.AssetLanguage, cancellationToken);
if (LocalizedResourcesCount > 0)
{
FLogger.AppendInformation();
FLogger.AppendText($"{LocalizedResourcesCount} localized resources loaded for '{UserSettings.Default.AssetLanguage.GetDescription()}'", Constants.WHITE, true);
}
else
{
FLogger.AppendWarning();
FLogger.AppendText($"Could not load localized resources in '{UserSettings.Default.AssetLanguage.GetDescription()}', language may not exist", Constants.WHITE, true);
}
Utils.Typefaces = new Typefaces(this);
});
}
@ -350,8 +355,8 @@ namespace FModel.ViewModels
/// <summary>
/// Load hotfixed localized resources
/// </summary>
/// <remarks>Functions only when LoadLocalizedResources is used prior to this.</remarks>
public async Task LoadHotfixedLocalizedResources()
/// <remarks>Functions only when LoadLocalizedResources is used prior to this (Asval: Why?).</remarks>
private async Task LoadHotfixedLocalizedResources()
{
if (Game != FGame.FortniteGame) return;

View File

@ -61,7 +61,6 @@ namespace FModel.ViewModels.Commands
MainWindow.YesWeCats.LeftTabControl.SelectedIndex = 1; // folders tab
await _applicationView.CUE4Parse.LoadLocalizedResources(); // load locres if not already loaded
await _applicationView.CUE4Parse.LoadHotfixedLocalizedResources(); // load hofixed locres
await _applicationView.CUE4Parse.LoadVirtualPaths(); // load virtual paths if not already loaded
Helper.CloseWindow<AdonisWindow>("Search View"); // close search window if opened
@ -226,4 +225,4 @@ namespace FModel.ViewModels.Commands
_applicationView.CUE4Parse.AssetsFolder.BulkPopulate(entries);
}
}
}
}

View File

@ -1,4 +1,5 @@
using System;
using System.Linq;
using CUE4Parse.UE4.Assets.Exports;
using CUE4Parse.UE4.Assets.Exports.Material;
using CUE4Parse.UE4.Assets.Exports.SkeletalMesh;
@ -10,8 +11,10 @@ using CUE4Parse_Conversion.Meshes.PSK;
using CUE4Parse_Conversion.Textures;
using FModel.Framework;
using HelixToolkit.SharpDX.Core;
using HelixToolkit.SharpDX.Core.Model;
using HelixToolkit.Wpf.SharpDX;
using SharpDX;
using SharpDX.DXGI;
using Camera = HelixToolkit.Wpf.SharpDX.Camera;
using Geometry3D = HelixToolkit.SharpDX.Core.Geometry3D;
using PerspectiveCamera = HelixToolkit.Wpf.SharpDX.PerspectiveCamera;
@ -80,7 +83,7 @@ namespace FModel.ViewModels
public void LoadExport(UObject export)
{
Group3d.Clear();
Clear();
switch (export)
{
case UStaticMesh st:
@ -151,19 +154,35 @@ namespace FModel.ViewModels
if (section.Material == null || !section.Material.TryLoad<UMaterialInterface>(out var unrealMaterial))
continue;
var m = new PhongMaterial { RenderShadowMap = true, EnableAutoTangent = true };
var parameters = new CMaterialParams();
unrealMaterial.GetParams(parameters);
if (parameters.Diffuse is not UTexture2D diffuse)
continue;
var isRendering = !parameters.IsNull;
if (isRendering)
{
if (parameters.Diffuse is UTexture2D diffuse)
m.DiffuseMap = new TextureModel(diffuse.Decode()?.Encode().AsStream());
if (parameters.Normal is UTexture2D normal)
m.NormalMap = new TextureModel(normal.Decode()?.Encode().AsStream());
// if (parameters.Specular is UTexture2D specular)
// m.SpecularColorMap = new TextureModel(specular.Decode()?.Encode().AsStream());
// if (parameters.UseMobileSpecular)
// m.SpecularShininess = parameters.MobileSpecularPower;
// if (parameters.Emissive is UTexture2D emissive)
// m.EmissiveMap = new TextureModel(emissive.Decode()?.Encode().AsStream());
}
else
{
m = PhongMaterials.Red;
}
Group3d.Add(new MeshGeometryModel3D
{
Name = unrealMaterial.Name,
Geometry = builder.ToMeshGeometry3D(),
Material = new DiffuseMaterial
{
DiffuseMap = new TextureModel(diffuse.Decode()?.Encode().AsStream())
}
Material = m,
IsRendering = isRendering
});
}
}
@ -186,5 +205,14 @@ namespace FModel.ViewModels
lineBuilder.AddLine(new Vector3(0, 0, 0), new Vector3(0, 0, max.Z));
ZAxis = lineBuilder.ToLineGeometry3D();
}
private void Clear()
{
foreach (var g in Group3d.ToList())
{
g.Dispose();
Group3d.Remove(g);
}
}
}
}

View File

@ -2,12 +2,13 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="clr-namespace:FModel.Views.Resources.Converters"
xmlns:adonisUi="clr-namespace:AdonisUI;assembly=AdonisUI"
xmlns:adonisControls="clr-namespace:AdonisUI.Controls;assembly=AdonisUI"
xmlns:helix="http://helix-toolkit.org/wpf/SharpDX"
WindowStartupLocation="CenterScreen" ResizeMode="CanResize" IconVisibility="Collapsed" Background="#262630"
PreviewKeyDown="OnWindowKeyDown" Closing="OnClosing"
Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={converters:RatioConverter}, ConverterParameter='0.60'}"
Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={converters:RatioConverter}, ConverterParameter='0.50'}">
Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={converters:RatioConverter}, ConverterParameter='0.60'}">
<adonisControls:AdonisWindow.Style>
<Style TargetType="adonisControls:AdonisWindow" BasedOn="{StaticResource {x:Type adonisControls:AdonisWindow}}" >
<Setter Property="Title" Value="Model Viewer" />
@ -21,21 +22,42 @@
</ResourceDictionary>
</adonisControls:AdonisWindow.Resources>
<Grid>
<helix:Viewport3DX EffectsManager="{Binding ModelViewer.EffectManager}" Camera="{Binding ModelViewer.Cam}"
IsChangeFieldOfViewEnabled="False" IsMoveEnabled="False" UseDefaultGestures="False"
ShowViewCube="False" ShowCameraTarget="False" ModelUpDirection="0,0,1"
EnableSSAO="True" MSAA="Maximum" FXAALevel="Ultra" SSAOQuality="High"
BackgroundColor="#262630">
<helix:Viewport3DX.InputBindings>
<MouseBinding Command="helix:ViewportCommands.Rotate" Gesture="LeftClick" />
<MouseBinding Command="helix:ViewportCommands.Zoom" Gesture="RightClick" />
<MouseBinding Command="helix:ViewportCommands.Pan" Gesture="MiddleClick" />
</helix:Viewport3DX.InputBindings>
<helix:LineGeometryModel3D Geometry="{Binding ModelViewer.XAxis}" Color="#FC3854" />
<helix:LineGeometryModel3D Geometry="{Binding ModelViewer.YAxis}" Color="#85CB22" />
<helix:LineGeometryModel3D Geometry="{Binding ModelViewer.ZAxis}" Color="#388EED" />
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="{adonisUi:Space 1}" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<helix:GroupModel3D x:Name="group" ItemsSource="{Binding ModelViewer.Group3d}" />
</helix:Viewport3DX>
<Menu Grid.Row="0">
<MenuItem Header="Append" />
</Menu>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" Style="{StaticResource MaterialsListBox}" />
<helix:Viewport3DX Grid.Column="1" EffectsManager="{Binding ModelViewer.EffectManager}" Camera="{Binding ModelViewer.Cam}"
IsChangeFieldOfViewEnabled="False" IsMoveEnabled="False" UseDefaultGestures="False" ShowViewCube="False"
ShowCameraTarget="False" ModelUpDirection="0,0,1" EnableSSAO="True" MSAA="Maximum" FXAALevel="Ultra"
SSAOQuality="High" BackgroundColor="#262630">
<helix:Viewport3DX.InputBindings>
<MouseBinding Command="helix:ViewportCommands.Rotate" Gesture="LeftClick" />
<MouseBinding Command="helix:ViewportCommands.Zoom" Gesture="RightClick" />
<MouseBinding Command="helix:ViewportCommands.Pan" Gesture="MiddleClick" />
</helix:Viewport3DX.InputBindings>
<helix:AmbientLight3D Color="DimGray" />
<helix:DirectionalLight3D Direction="{Binding ModelViewer.Cam.LookDirection}" Color="White" />
<helix:LineGeometryModel3D Geometry="{Binding ModelViewer.XAxis}" Color="#FC3854" />
<helix:LineGeometryModel3D Geometry="{Binding ModelViewer.YAxis}" Color="#85CB22" />
<helix:LineGeometryModel3D Geometry="{Binding ModelViewer.ZAxis}" Color="#388EED" />
<helix:GroupModel3D x:Name="MyAntiCrashGroup" ItemsSource="{Binding ModelViewer.Group3d}" />
</helix:Viewport3DX>
</Grid>
</Grid>
</adonisControls:AdonisWindow>

View File

@ -18,10 +18,7 @@ namespace FModel.Views
}
public void Load(UObject export) => _applicationView.ModelViewer.LoadExport(export);
private void OnClosing(object sender, CancelEventArgs e)
{
group.ItemsSource = null; // <3
}
private void OnClosing(object sender, CancelEventArgs e) => MyAntiCrashGroup.ItemsSource = null; // <3
private void OnWindowKeyDown(object sender, KeyEventArgs e)
{

View File

@ -14,7 +14,7 @@
xmlns:adonisControls="clr-namespace:AdonisUI.Controls;assembly=AdonisUI">
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
<Geometry x:Key="StatusBarIcon">M22,9v6c0,1.1-0.9,2-2,2h-1l0-2h1V9H4v6h6v2H4c-1.1,0-2-0.9-2-2V9c0-1.1,0.9-2,2-2h16C21.1,7,22,7.9,22,9z M14.04,17.99 c0.18,0.39,0.73,0.39,0.91,0l0.63-1.4l1.4-0.63c0.39-0.18,0.39-0.73,0-0.91l-1.4-0.63l-0.63-1.4c-0.18-0.39-0.73-0.39-0.91,0 l-0.63,1.4l-1.4,0.63c-0.39,0.18-0.39,0.73,0,0.91l1.4,0.63L14.04,17.99z M16.74,13.43c0.1,0.22,0.42,0.22,0.52,0l0.36-0.8 l0.8-0.36c0.22-0.1,0.22-0.42,0-0.52l-0.8-0.36l-0.36-0.8c-0.1-0.22-0.42-0.22-0.52,0l-0.36,0.8l-0.8,0.36 c-0.22,0.1-0.22,0.42,0,0.52l0.8,0.36L16.74,13.43z</Geometry>
<Geometry x:Key="SearchIcon">M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z</Geometry>
<Geometry x:Key="DirectoryIcon">M19.71,15.71l-3.59,3.59c-0.63,0.63-1.71,0.18-1.71-0.71V16h-7c-1.1,0-2-0.9-2-2V5c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1 v9h7v-2.59c0-0.89,1.08-1.34,1.71-0.71l3.59,3.59C20.1,14.68,20.1,15.32,19.71,15.71z</Geometry>
@ -65,7 +65,9 @@
<Geometry x:Key="LocateMeIcon">M11.71,17.99C8.53,17.84,6,15.22,6,12c0-3.31,2.69-6,6-6c3.22,0,5.84,2.53,5.99,5.71l-2.1-0.63C15.48,9.31,13.89,8,12,8 c-2.21,0-4,1.79-4,4c0,1.89,1.31,3.48,3.08,3.89L11.71,17.99z M22,12c0,0.3-0.01,0.6-0.04,0.9l-1.97-0.59C20,12.21,20,12.1,20,12 c0-4.42-3.58-8-8-8s-8,3.58-8,8s3.58,8,8,8c0.1,0,0.21,0,0.31-0.01l0.59,1.97C12.6,21.99,12.3,22,12,22C6.48,22,2,17.52,2,12 C2,6.48,6.48,2,12,2S22,6.48,22,12z M18.23,16.26l2.27-0.76c0.46-0.15,0.45-0.81-0.01-0.95l-7.6-2.28 c-0.38-0.11-0.74,0.24-0.62,0.62l2.28,7.6c0.14,0.47,0.8,0.48,0.95,0.01l0.76-2.27l3.91,3.91c0.2,0.2,0.51,0.2,0.71,0l1.27-1.27 c0.2-0.2,0.2-0.51,0-0.71L18.23,16.26z</Geometry>
<Geometry x:Key="MeshIcon">M12 2c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm8 7h-5v12c0 .55-.45 1-1 1s-1-.45-1-1v-5h-2v5c0 .55-.45 1-1 1s-1-.45-1-1V9H4c-.55 0-1-.45-1-1s.45-1 1-1h16c.55 0 1 .45 1 1s-.45 1-1 1z</Geometry>
<Geometry x:Key="MaterialIcon">M11 9h2v2h-2V9zm-2 2h2v2H9v-2zm4 0h2v2h-2v-2zm2-2h2v2h-2V9zM7 9h2v2H7V9zm12-6H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 18H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2zm2-7h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v2H9v-2H7v2H5v-2h2v-2H5V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v5z</Geometry>
<Geometry x:Key="VisibleIcon">M12 4C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 12.5c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z</Geometry>
<Geometry x:Key="NotVisibleIcon">M12 6.5c2.76 0 5 2.24 5 5 0 .51-.1 1-.24 1.46l3.06 3.06c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l2.17 2.17c.47-.14.96-.24 1.47-.24zM2.71 3.16c-.39.39-.39 1.02 0 1.41l1.97 1.97C3.06 7.83 1.77 9.53 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.97-.3 4.31-.82l2.72 2.72c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L4.13 3.16c-.39-.39-1.03-.39-1.42 0zM12 16.5c-2.76 0-5-2.24-5-5 0-.77.18-1.5.49-2.14l1.57 1.57c-.03.18-.06.37-.06.57 0 1.66 1.34 3 3 3 .2 0 .38-.03.57-.07L14.14 16c-.65.32-1.37.5-2.14.5zm2.97-5.33c-.15-1.4-1.25-2.49-2.64-2.64l2.64 2.64z</Geometry>
<Style x:Key="TabItemFillSpace" TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="Width">
<Setter.Value>
@ -110,7 +112,7 @@
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CustomVerticalSeparator" TargetType="{x:Type Separator}" BasedOn="{StaticResource CustomSeparator}">
<Setter Property="Margin" Value="8 0"/>
<Setter Property="LayoutTransform">
@ -150,7 +152,7 @@
<ColumnDefinition Width="25" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image x:Name="ListImage" Source="/FModel;component/Resources/archive.png"
Width="16" Height="16" HorizontalAlignment="Center" Margin="0 0 3 0" />
<TextBlock Grid.Column="1" HorizontalAlignment="Left" Text="{Binding Name}" TextTrimming="CharacterEllipsis" />
@ -197,7 +199,7 @@
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="AudioFilesListBox" TargetType="ListBox" BasedOn="{StaticResource {x:Type ListBox}}">
<Setter Property="ItemsSource" Value="{Binding AudioPlayer.AudioFilesView, IsAsync=True}" />
<Setter Property="SelectedItem" Value="{Binding AudioPlayer.SelectedAudioFile}" />
@ -221,7 +223,7 @@
<ColumnDefinition Width="25" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" HorizontalAlignment="Left" Text="{Binding FileName}" TextTrimming="CharacterEllipsis" />
<TextBlock Grid.Column="2" HorizontalAlignment="Right" Text="{Binding Length, Converter={x:Static converters:SizeToStringConverter.Instance}}" />
</Grid>
@ -496,7 +498,7 @@
Grid.ColumnSpan="2"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="False">
<Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/>
</Trigger>
@ -566,7 +568,7 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image x:Name="ListImage" Source="/FModel;component/Resources/unknown_asset.png"
Width="16" Height="16" HorizontalAlignment="Center" Margin="0 0 3 0" />
<TextBlock Grid.Column="1" HorizontalAlignment="Left" Text="{Binding FullPath, Converter={x:Static converters:FullPathToFileConverter.Instance}}" />
@ -612,6 +614,71 @@
</Style.Triggers>
</Style>
<Style x:Key="MaterialsListBox" TargetType="ListBox" BasedOn="{StaticResource {x:Type ListBox}}">
<Setter Property="ItemsSource" Value="{Binding ModelViewer.Group3d, IsAsync=True}" />
<Setter Property="SelectionMode" Value="Extended" />
<Setter Property="adonisExtensions:ScrollViewerExtension.VerticalScrollBarExpansionMode" Value="NeverExpand"/>
<Setter Property="adonisExtensions:ScrollViewerExtension.VerticalScrollBarPlacement" Value="Docked"/>
<Setter Property="adonisExtensions:ScrollViewerExtension.HorizontalScrollBarExpansionMode" Value="NeverExpand"/>
<Setter Property="adonisExtensions:ScrollViewerExtension.HorizontalScrollBarPlacement" Value="Docked"/>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="25" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="/FModel;component/Resources/materialicon.png" Width="16" Height="16" Margin="5 0" HorizontalAlignment="Center" />
<TextBlock Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding Name}" TextTrimming="CharacterEllipsis" />
<ToggleButton Grid.Column="3" IsChecked="{Binding IsRendering}" Padding="3" Style="{DynamicResource {x:Static adonisUi:Styles.ToolbarToggleButton}}">
<Viewbox Width="16" Height="16" HorizontalAlignment="Center">
<Canvas Width="24" Height="24">
<Path x:Name="SvgIcon" Fill="{DynamicResource {x:Static adonisUi:Brushes.ForegroundBrush}}" Data="{StaticResource VisibleIcon}" />
</Canvas>
</Viewbox>
</ToggleButton>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsRendering}" Value="True">
<Setter TargetName="SvgIcon" Property="Data" Value="{StaticResource VisibleIcon}" />
<Setter TargetName="SvgIcon" Property="Fill" Value="{DynamicResource {x:Static adonisUi:Brushes.ForegroundBrush}}" />
</DataTrigger>
<DataTrigger Binding="{Binding IsRendering}" Value="False">
<Setter TargetName="SvgIcon" Property="Data" Value="{StaticResource NotVisibleIcon}" />
<Setter TargetName="SvgIcon" Property="Fill" Value="{DynamicResource {x:Static adonisUi:Brushes.ErrorBrush}}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="0" />
</Style>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ModelViewer.Group3d.Count, FallbackValue=0}" Value="0">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<TextBlock Text="No material found in the mesh" FontWeight="SemiBold" TextAlignment="Center"
Foreground="{DynamicResource {x:Static adonisUi:Brushes.ErrorBrush}}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="GameFilesTabControl" TargetType="TabControl" BasedOn="{StaticResource {x:Type TabControl}}">
<Setter Property="ItemsSource" Value="{Binding CUE4Parse.TabControl.TabsItems, IsAsync=True}" />
<Setter Property="SelectedItem" Value="{Binding CUE4Parse.TabControl.SelectedTab}" />
@ -623,7 +690,7 @@
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding SelectedItem.TabCommand, ElementName=TabControlName}" CommandParameter="Open_Properties"/>
<MouseBinding MouseAction="MiddleClick" Command="{Binding SelectedItem.TabCommand, ElementName=TabControlName}" CommandParameter="{Binding}" />
</DockPanel.InputBindings>
<TextBlock DockPanel.Dock="Left" Text="{Binding Header}" TextTrimming="CharacterEllipsis" ToolTip="{Binding Header}">
<TextBlock.Width>
<MultiBinding Converter="{x:Static converters:TabSizeConverter.Instance}" ConverterParameter="6">
@ -649,7 +716,7 @@
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<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}}"
@ -907,16 +974,16 @@
ContentTemplate="{TemplateBinding HeaderTemplate}"
TextElement.Foreground="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type adonisControls:RippleHost}}}"
RecognizesAccessKey="True"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
Margin="{Binding Margin, ElementName=ItemHeader}"/>
<TextBlock x:Name="RippleLayerInputGesturePresenter"
Grid.Column="2"
Text="{TemplateBinding InputGestureText}"
Text="{TemplateBinding InputGestureText}"
TextElement.Foreground="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type adonisControls:RippleHost}}}"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
Margin="{Binding Margin, ElementName=InputGesturePresenter}"/>
<Viewbox x:Name="RippleLayerArrowPresenter"
@ -959,16 +1026,16 @@
ContentTemplate="{TemplateBinding HeaderTemplate}"
TextElement.Foreground="{TemplateBinding Foreground}"
RecognizesAccessKey="True"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
Margin="4, 0"/>
<TextBlock x:Name="InputGesturePresenter"
Grid.Column="3"
Text="{TemplateBinding InputGestureText}"
Text="{TemplateBinding InputGestureText}"
Foreground="{TemplateBinding Foreground}"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
Margin="4, 0"/>
<Viewbox x:Name="ArrowPresenter"
@ -1085,7 +1152,7 @@
<Setter Property="BorderBrush" TargetName="SpotlightLayer" Value="{Binding Path=(adonisExtensions:CursorSpotlightExtension.BorderBrush), RelativeSource={RelativeSource FindAncestor, AncestorType=MenuItem}}"/>
<Setter Property="BorderThickness" TargetName="SpotlightLayer" Value="{Binding BorderThickness, RelativeSource={RelativeSource FindAncestor, AncestorType=MenuItem}}"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Role" Value="TopLevelItem"/>
@ -1158,7 +1225,7 @@
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CustomExpanderDownHeaderStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
@ -1174,7 +1241,7 @@
</Setter.Value>
</Setter>
</Style>
<Style x:Key="{x:Type Expander}" TargetType="Expander" BasedOn="{StaticResource {x:Type Expander}}">
<Setter Property="IsExpanded" Value="{Binding IsLoggerExpanded, Source={x:Static local:Settings.UserSettings.Default}}"></Setter>
<Setter Property="Template">
@ -1240,7 +1307,7 @@
</Setter.Value>
</Setter>
</MultiTrigger>
<Trigger Property="IsExpanded" Value="True">
<Setter Property="Margin" TargetName="HeaderSite" Value="0 0 0 5" />
<Trigger.EnterActions>
@ -1313,7 +1380,7 @@
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CustomRichTextBox" TargetType="RichTextBox">
<Setter Property="Height" Value="175" />
<Setter Property="IsReadOnly" Value="True" />
@ -1324,7 +1391,7 @@
<Setter.Value>
<ControlTemplate>
<Border x:Name="Bd"
BorderBrush="{TemplateBinding BorderBrush}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="True"
Background="{TemplateBinding Background}">
@ -1333,7 +1400,7 @@
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Resources>
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0" />
@ -1346,11 +1413,11 @@
</Style>
</Style.Resources>
</Style>
<ControlTemplate x:Key="CircleTemplate" TargetType="{x:Type controls:Magnifier}">
<Grid>
<Ellipse Fill="{TemplateBinding Background}" />
<Ellipse Stroke="{Binding Path=BorderBrush, RelativeSource={RelativeSource TemplatedParent}}"
<Ellipse Stroke="{Binding Path=BorderBrush, RelativeSource={RelativeSource TemplatedParent}}"
StrokeThickness="{Binding Path=BorderThickness, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:BorderThicknessToStrokeThicknessConverter.Instance}}">
<Ellipse.Fill>
<VisualBrush x:Name="PART_VisualBrush" ViewboxUnits="Absolute" Visual="{Binding Path=Target, RelativeSource={RelativeSource TemplatedParent}}" />
@ -1372,7 +1439,7 @@
<Style TargetType="{x:Type controls:Magnifier}">
<Setter Property="IsHitTestVisible" Value="False" />
<Style.Triggers>
<Trigger Property="FrameType" Value="Circle">
<Setter Property="Template" Value="{StaticResource CircleTemplate}" />
@ -1385,7 +1452,7 @@
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="{x:Type ComboBoxItem}" TargetType="ComboBoxItem" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<Setter Property="Focusable" Value="False" />
</Style>
@ -1397,13 +1464,13 @@
<Style x:Key="{x:Type Button}" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Focusable" Value="False" />
</Style>
<Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="ScrollViewer" BasedOn="{StaticResource {x:Type ScrollViewer}}">
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled" />
<Setter Property="adonisExtensions:ScrollViewerExtension.VerticalScrollBarExpansionMode" Value="AlwaysExpand"/>
<Setter Property="adonisExtensions:ScrollViewerExtension.VerticalScrollBarPlacement" Value="Docked"/>
</Style>
<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource {x:Type ScrollBar}}">
<Style.Triggers>
<Trigger Property="Orientation" Value="Horizontal">
@ -1434,7 +1501,7 @@
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="PlayPauseToolbarButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Content">
<Setter.Value>
@ -1452,7 +1519,7 @@
<Setter Property="ToolTip" Value="Play" />
<Style.Triggers>
<DataTrigger Binding="{Binding AudioPlayer.PlayedFile.PlaybackState, Mode=OneWay}" Value="{x:Static soundOut:PlaybackState.Playing}">
<Setter Property="ToolTip" Value="Pause" />
<Setter Property="Content">
@ -1529,7 +1596,7 @@
</Style.Triggers>
</Style>
<Style TargetType="{x:Type audioControls:Timeline}">
<Setter Property="ProgressBrush">
<Setter.Value>
@ -1561,12 +1628,12 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Name="PART_MousePosition" Grid.Row="0" Grid.RowSpan="2" Grid.Column="0"
Fill="{TemplateBinding MousePositionBrush}" Width="2" Visibility="Collapsed" />
<Grid Name="PART_Length" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" ClipToBounds="True" SnapsToDevicePixels="False" />
<Grid Name="PART_ControlContainer" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<Border Name="PART_ProgressLine" BorderBrush="{TemplateBinding ProgressLineBrush}"
<Border Name="PART_ProgressLine" BorderBrush="{TemplateBinding ProgressLineBrush}"
Background="{TemplateBinding ProgressBrush}" Width="{TemplateBinding ActualWidth}"
VerticalAlignment="Stretch" HorizontalAlignment="Left" BorderThickness="0 0 1 0" />
</Grid>
@ -1576,7 +1643,7 @@
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type audioControls:SpectrumAnalyzer}">
<Setter Property="FrequencyBarCount" Value="75" />
<Setter Property="FrequencyBarBorderBrush" Value="#DAE5F2" />
@ -1603,7 +1670,7 @@
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type audioControls:Timeclock}">
<Setter Property="FontSize" Value="16" />
<Setter Property="VerticalAlignment" Value="Top" />
@ -1620,9 +1687,9 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Name="PART_Label"
Text="{TemplateBinding Label}"
<TextBlock Name="PART_Label"
Text="{TemplateBinding Label}"
FontFamily="{TemplateBinding LabelFont}"
Padding="0"
Foreground="{TemplateBinding LabelForeground}">
@ -1630,8 +1697,8 @@
<ScaleTransform ScaleX=".75" ScaleY=".75" />
</TextBlock.LayoutTransform>
</TextBlock>
<TextBlock Name="PART_Time"
Text="00:00:00.00"
<TextBlock Name="PART_Time"
Text="00:00:00.00"
Grid.Row="1"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
FontFamily="{TemplateBinding TimeFont}"
@ -1641,12 +1708,12 @@
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type folding:FoldingMargin}">
<Setter Property="FoldingMarkerBrush" Value="#262630" />
<Setter Property="FoldingMarkerBackgroundBrush" Value="#262630" />
<Setter Property="SelectedFoldingMarkerBrush" Value="#808080" />
<Setter Property="SelectedFoldingMarkerBackgroundBrush" Value="#2A2B34" />
</Style>
</ResourceDictionary>
</ResourceDictionary>

View File

@ -45,7 +45,6 @@ namespace FModel.Views
{
_applicationView.CUE4Parse.LocalizedResourcesCount = 0;
await _applicationView.CUE4Parse.LoadLocalizedResources();
await _applicationView.CUE4Parse.LoadHotfixedLocalizedResources();
}
}
@ -119,8 +118,8 @@ namespace FModel.Views
var result = dictionary.ShowDialog();
if (!result.HasValue || !result.Value)
return;
_applicationView.SettingsView.SelectedOptions = dictionary.Options;
}
}
}
}