diff --git a/CUE4Parse b/CUE4Parse index ad0c446f..17b227c1 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit ad0c446f8167fb5731678f400c40f22233e3c8fc +Subproject commit 17b227c197575849910cc7c9e71a6761859d551d diff --git a/FModel/MainWindow.xaml.cs b/FModel/MainWindow.xaml.cs index 98eb5810..22722330 100644 --- a/FModel/MainWindow.xaml.cs +++ b/FModel/MainWindow.xaml.cs @@ -63,10 +63,10 @@ public partial class MainWindow await _applicationView.CUE4Parse.Initialize(); await _applicationView.AesManager.InitAes(); - await _applicationView.UpdateProvider(true); #if !DEBUG await _applicationView.CUE4Parse.InitInformation(); #endif + await _applicationView.UpdateProvider(true); await _applicationView.CUE4Parse.InitMappings(); await _applicationView.InitImGuiSettings(newOrUpdated); await _applicationView.InitVgmStream(); @@ -76,9 +76,9 @@ public partial class MainWindow _discordHandler.Initialize(_applicationView.GameDisplayName); #if DEBUG - await _threadWorkerView.Begin(cancellationToken => - _applicationView.CUE4Parse.Extract(cancellationToken, - "FortniteGame/Content/Athena/Environments/Landscape/Material/M_Athena_Terrain_Master.o.uasset")); + // await _threadWorkerView.Begin(cancellationToken => + // _applicationView.CUE4Parse.Extract(cancellationToken, + // "fortnitegame/Content/Characters/Player/Female/Medium/Bodies/F_MED_Dieselpunk_01/Meshes/F_MED_Dieselpunk_01.uasset")); #endif } diff --git a/FModel/ViewModels/ApplicationViewModel.cs b/FModel/ViewModels/ApplicationViewModel.cs index cbc36394..3a4b8263 100644 --- a/FModel/ViewModels/ApplicationViewModel.cs +++ b/FModel/ViewModels/ApplicationViewModel.cs @@ -113,14 +113,13 @@ public class ApplicationViewModel : ViewModel await ApplicationService.ThreadWorkerView.Begin(cancellationToken => { CUE4Parse.LoadVfs(cancellationToken, AesManager.AesKeys); - CUE4Parse.Provider.LoadIniConfigs(); + CUE4Parse.VerifyCva(); var vfcCount = CUE4Parse.Provider.LoadVirtualCache(); if (vfcCount > 0) { FLogger.AppendInformation(); - FLogger.AppendText($"VFC loaded {vfcCount} cached packages data", Constants.WHITE, true); + FLogger.AppendText($"VFC loaded {vfcCount} cached packages", Constants.WHITE, true); } - // ConsoleVariables - a.StripAdditiveRefPose=1 AesManager.SetAesKeys(); }); RaisePropertyChanged(nameof(GameDisplayName)); diff --git a/FModel/ViewModels/CUE4ParseViewModel.cs b/FModel/ViewModels/CUE4ParseViewModel.cs index bd2568ff..c9a8bbd7 100644 --- a/FModel/ViewModels/CUE4ParseViewModel.cs +++ b/FModel/ViewModels/CUE4ParseViewModel.cs @@ -46,6 +46,7 @@ using OpenTK.Windowing.Common; using OpenTK.Windowing.Desktop; using Serilog; using SkiaSharp; +using UE4Config.Parsing; using Application = System.Windows.Application; namespace FModel.ViewModels; @@ -332,6 +333,19 @@ public class CUE4ParseViewModel : ViewModel Game = Helper.IAmThePanda(Provider.GameName) ? FGame.PandaGame : Provider.GameName.ToEnum(Game); } + public void VerifyCva() + { + Provider.LoadIniConfigs(); + + var inst = new List(); + Provider.DefaultEngine.FindPropertyInstructions("ConsoleVariables", "a.StripAdditiveRefPose", inst); + if (inst.Count > 0 && inst[0].Value.Equals("1")) + { + FLogger.AppendWarning(); + FLogger.AppendText("Additive animations have their reference pose stripped, which will lead to inaccurate preview and export", Constants.WHITE, true); + } + } + public void ClearProvider() { if (Provider == null) return;