diff --git a/FModel/Settings/UserSettings.cs b/FModel/Settings/UserSettings.cs index 0f48e7e8..c490d15c 100644 --- a/FModel/Settings/UserSettings.cs +++ b/FModel/Settings/UserSettings.cs @@ -282,6 +282,13 @@ namespace FModel.Settings set => SetProperty(ref _convertAudioOnBulkExport, value); } + private bool _mergeEditorOnlyDataExports = true; + public bool MergeEditorOnlyDataExports + { + get => _mergeEditorOnlyDataExports; + set => SetProperty(ref _mergeEditorOnlyDataExports, value); + } + private bool _decompileLua; public bool DecompileLua { diff --git a/FModel/ViewModels/CUE4ParseViewModel.cs b/FModel/ViewModels/CUE4ParseViewModel.cs index caf7527a..b4ba55c3 100644 --- a/FModel/ViewModels/CUE4ParseViewModel.cs +++ b/FModel/ViewModels/CUE4ParseViewModel.cs @@ -676,7 +676,34 @@ public class CUE4ParseViewModel : ViewModel if (saveProperties || updateUi) { - TabControl.SelectedTab.SetDocumentText(JsonConvert.SerializeObject(result.GetDisplayData(saveProperties), Formatting.Indented), saveProperties, updateUi); + var displayData = result.GetDisplayData(saveProperties); + + if (UserSettings.Default.MergeEditorOnlyDataExports && Provider.TryLoadPackage(entry.Path.SubstringBefore('.') + ".o.uasset", out var editorAsset)) + { + var pkg = Provider.LoadPackage(entry.Path); + var exports = pkg.GetExports().ToArray(); + var finalExports = new List(exports); + var editorOnlyDataExports = new HashSet(); + + foreach (var export in exports) + { + var editorData = editorAsset.GetExportOrNull(export.Name + "EditorOnlyData"); + if (editorData == null) + continue; + + export.Properties.AddRange(editorData.Properties); + editorOnlyDataExports.Add(editorData); + } + + if (editorOnlyDataExports.Count > 0) + { + finalExports.AddRange(editorAsset.GetExports().Where(editorExport => !editorOnlyDataExports.Contains(editorExport))); + } + + displayData = finalExports; + } + + TabControl.SelectedTab.SetDocumentText(JsonConvert.SerializeObject(displayData, Formatting.Indented), saveProperties, updateUi); if (saveProperties) break; // do not search for viewable exports if we are dealing with jsons } diff --git a/FModel/Views/SettingsView.xaml b/FModel/Views/SettingsView.xaml index 1df9bdb3..6e73ec25 100644 --- a/FModel/Views/SettingsView.xaml +++ b/FModel/Views/SettingsView.xaml @@ -46,6 +46,7 @@ + @@ -276,6 +277,18 @@ TextChanged="CriwareKeyBox_TextChanged" Loaded="CriwareKeyBox_Loaded"/> + +