From 139c61d9dbf20d46ade378705a6e5bdd1f454b6d Mon Sep 17 00:00:00 2001 From: simon <107362910+simonhxd@users.noreply.github.com> Date: Thu, 27 Nov 2025 07:10:26 -0800 Subject: [PATCH 01/16] Add Decompile Blueprint to Search View (#615) --- FModel/Views/SearchView.xaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/FModel/Views/SearchView.xaml b/FModel/Views/SearchView.xaml index 317a8e2a..23b9b3e3 100644 --- a/FModel/Views/SearchView.xaml +++ b/FModel/Views/SearchView.xaml @@ -171,6 +171,21 @@ + + + + + + + + + + + + + + + From 012f780c08f097b76431e2e251b9c7052cc2d1bd Mon Sep 17 00:00:00 2001 From: LongerWarrior Date: Thu, 27 Nov 2025 19:44:06 +0200 Subject: [PATCH 02/16] Wuthering Waves 2.8 and Dead by Daylight 9.3.0 fixes --- CUE4Parse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUE4Parse b/CUE4Parse index d08d717e..956373a9 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit d08d717e6103738079d657221f4c04f7b1a4f91e +Subproject commit 956373a989fe024731dbe5863b417f7494a0ac09 From 819fbc42ecaf2feafd9d2b21a2b75926e8f28a25 Mon Sep 17 00:00:00 2001 From: LongerWarrior Date: Fri, 5 Dec 2025 00:40:52 +0200 Subject: [PATCH 03/16] The First Descendant textures fix Blood Bowl 3 support --- CUE4Parse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUE4Parse b/CUE4Parse index 956373a9..263ce71a 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit 956373a989fe024731dbe5863b417f7494a0ac09 +Subproject commit 263ce71a7f320f9abbf9111eaa19083d2391a899 From 6b4503abc32ce9289cfe76347428ca60239c9be1 Mon Sep 17 00:00:00 2001 From: LongerWarrior Date: Sun, 7 Dec 2025 21:53:51 +0200 Subject: [PATCH 04/16] Grounded 2 update --- CUE4Parse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUE4Parse b/CUE4Parse index 263ce71a..d35be31e 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit 263ce71a7f320f9abbf9111eaa19083d2391a899 +Subproject commit d35be31eaaf7e327dfb43132584624af9c29c13e From 1a2766a7e675547cdfea4e10a33eb2d9349223a8 Mon Sep 17 00:00:00 2001 From: Marlon Date: Wed, 10 Dec 2025 21:50:57 +0100 Subject: [PATCH 05/16] added slnx --- FModel/FModel.slnx | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 FModel/FModel.slnx diff --git a/FModel/FModel.slnx b/FModel/FModel.slnx new file mode 100644 index 00000000..ca74a91b --- /dev/null +++ b/FModel/FModel.slnx @@ -0,0 +1,5 @@ + + + + + From f082d39bf95870f54aeb63d209d9d496da5a8d5a Mon Sep 17 00:00:00 2001 From: Marlon Date: Wed, 10 Dec 2025 21:51:04 +0100 Subject: [PATCH 06/16] nuget updates --- FModel/FModel.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index d05a882f..5f7af226 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -161,7 +161,7 @@ - + From 5d34bfaf4e558c6ce2b579138f368ebde9c18a6e Mon Sep 17 00:00:00 2001 From: Marlon Date: Wed, 10 Dec 2025 21:51:20 +0100 Subject: [PATCH 07/16] oodle init fix --- CUE4Parse | 2 +- FModel/ViewModels/ApplicationViewModel.cs | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CUE4Parse b/CUE4Parse index d35be31e..c55583b9 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit d35be31eaaf7e327dfb43132584624af9c29c13e +Subproject commit c55583b9295179c719a58b465d5dd6e493021f0b diff --git a/FModel/ViewModels/ApplicationViewModel.cs b/FModel/ViewModels/ApplicationViewModel.cs index dd0806c2..93ed5d7e 100644 --- a/FModel/ViewModels/ApplicationViewModel.cs +++ b/FModel/ViewModels/ApplicationViewModel.cs @@ -236,12 +236,18 @@ public class ApplicationViewModel : ViewModel public static async ValueTask InitOodle() { - var oodlePath = Path.Combine(UserSettings.Default.OutputDirectory, ".data", OodleHelper.OODLE_DLL_NAME); - if (File.Exists(OodleHelper.OODLE_DLL_NAME)) + if (File.Exists(OodleHelper.OODLE_DLL_NAME_OLD)) { - File.Move(OodleHelper.OODLE_DLL_NAME, oodlePath, true); + try + { + File.Delete(OodleHelper.OODLE_DLL_NAME_OLD); + } + catch { /* ignored */} } - else if (!File.Exists(oodlePath)) + + var oodlePath = Path.Combine(UserSettings.Default.OutputDirectory, ".data", OodleHelper.OODLE_DLL_NAME); + + if (!File.Exists(oodlePath)) { await OodleHelper.DownloadOodleDllAsync(oodlePath); } @@ -252,7 +258,9 @@ public class ApplicationViewModel : ViewModel public static async ValueTask InitZlib() { var zlibPath = Path.Combine(UserSettings.Default.OutputDirectory, ".data", ZlibHelper.DLL_NAME); - if (!File.Exists(zlibPath)) + var zlibFileInfo = new FileInfo(zlibPath); + + if (!zlibFileInfo.Exists || zlibFileInfo.LastWriteTimeUtc < DateTime.UtcNow.AddMonths(-4)) { await ZlibHelper.DownloadDllAsync(zlibPath); } From 4e0efe779bfcbd7f2213bbbe2e6ab8126143ae98 Mon Sep 17 00:00:00 2001 From: Marlon Date: Wed, 10 Dec 2025 21:59:59 +0100 Subject: [PATCH 08/16] action updates --- .github/workflows/main.yml | 6 +++--- .github/workflows/qa.yml | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b80429a5..a8e8e6de 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,7 @@ jobs: steps: - name: GIT Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 with: submodules: 'true' @@ -22,7 +22,7 @@ jobs: run: git submodule update --init --recursive - name: .NET 8 Setup - uses: actions/setup-dotnet@v2 + uses: actions/setup-dotnet@v5 with: dotnet-version: '8.0.x' @@ -33,7 +33,7 @@ jobs: run: dotnet publish FModel -c Release --no-self-contained -r win-x64 -f net8.0-windows -o "./FModel/bin/Publish/" -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:DebugType=None -p:GenerateDocumentationFile=false -p:DebugSymbols=false -p:AssemblyVersion=${{ github.event.inputs.appVersion }} -p:FileVersion=${{ github.event.inputs.appVersion }} - name: ZIP File - uses: papeloto/action-zip@v1 + uses: papeloto/action-zip@v1.2 with: files: ./FModel/bin/Publish/FModel.exe dest: FModel.zip # will end up in working directory not the Publish folder diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index ead5c624..3898ed70 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -10,17 +10,17 @@ jobs: steps: - name: GIT Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: submodules: 'recursive' - name: .NET 8 Setup - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: dotnet-version: '8.0.x' - name: .NET Restore - run: dotnet restore FModel + run: dotnet restore "./FModel/FModel.slnx" - name: .NET Publish run: dotnet publish "./FModel/FModel.csproj" -c Release --no-restore --no-self-contained -r win-x64 -f net8.0-windows -o "./FModel/bin/Publish/" -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:DebugType=None -p:GenerateDocumentationFile=false -p:DebugSymbols=false @@ -33,7 +33,7 @@ jobs: path: ./FModel/bin/Publish/FModel.exe - name: Edit QA Artifact - uses: ncipollo/release-action@v1.14.0 + uses: ncipollo/release-action@v1.20.0 with: token: ${{ secrets.GITHUB_TOKEN }} name: 'FModel QA Testing' @@ -51,13 +51,13 @@ jobs: - name: FModel Auth id: fmodel_auth - uses: fjogeleit/http-request-action@v1.15.5 + uses: fjogeleit/http-request-action@v1.16.6 with: url: "https://api.fmodel.app/v1/oauth/token" data: '{"username": "${{ secrets.API_USERNAME }}", "password": "${{ secrets.API_PASSWORD }}"}' - name: FModel Deploy Build - uses: fjogeleit/http-request-action@v1.15.5 + uses: fjogeleit/http-request-action@v1.16.6 with: url: "https://api.fmodel.app/v1/infos/${{ secrets.QA_ID }}" method: "PATCH" From a68b469556380138676f0da2deeefcd974ae28cd Mon Sep 17 00:00:00 2001 From: Marlon Date: Thu, 11 Dec 2025 14:47:43 +0100 Subject: [PATCH 09/16] oodle dl fix --- CUE4Parse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUE4Parse b/CUE4Parse index c55583b9..a34c058c 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit c55583b9295179c719a58b465d5dd6e493021f0b +Subproject commit a34c058c4ca9385ac61dac7f61a22fda144a2233 From c9a97c73a1409019c145483f4c977765896ad814 Mon Sep 17 00:00:00 2001 From: Marlon Date: Fri, 12 Dec 2025 20:47:37 +0100 Subject: [PATCH 10/16] csproj cleanup --- FModel/FModel.csproj | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index 5f7af226..b3e0f775 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -11,20 +11,18 @@ false true win-x64 - true + x64 + true true FModel.App - x64 - true 1701;1702;NU1701 - x64 - true + true NU1701 From 3098273a339fb486c4f1644fbc8a30b5ebc53200 Mon Sep 17 00:00:00 2001 From: Marlon Date: Fri, 12 Dec 2025 20:48:05 +0100 Subject: [PATCH 11/16] ci/cd build flag --- FModel/FModel.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index b3e0f775..552ce20d 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -26,6 +26,10 @@ NU1701 + + true + + From 5b4494fda2921b9557201a0198c09a5ee6b554de Mon Sep 17 00:00:00 2001 From: Marlon Date: Fri, 12 Dec 2025 20:48:36 +0100 Subject: [PATCH 12/16] lib download error logging --- FModel/ViewModels/ApplicationViewModel.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/FModel/ViewModels/ApplicationViewModel.cs b/FModel/ViewModels/ApplicationViewModel.cs index 93ed5d7e..5410fa77 100644 --- a/FModel/ViewModels/ApplicationViewModel.cs +++ b/FModel/ViewModels/ApplicationViewModel.cs @@ -249,7 +249,11 @@ public class ApplicationViewModel : ViewModel if (!File.Exists(oodlePath)) { - await OodleHelper.DownloadOodleDllAsync(oodlePath); + if (!await OodleHelper.DownloadOodleDllAsync(oodlePath)) + { + FLogger.Append(ELog.Error, () => FLogger.Text("Failed to download Oodle", Constants.WHITE, true)); + return; + } } OodleHelper.Initialize(oodlePath); @@ -262,7 +266,11 @@ public class ApplicationViewModel : ViewModel if (!zlibFileInfo.Exists || zlibFileInfo.LastWriteTimeUtc < DateTime.UtcNow.AddMonths(-4)) { - await ZlibHelper.DownloadDllAsync(zlibPath); + if (!await ZlibHelper.DownloadDllAsync(zlibPath)) + { + FLogger.Append(ELog.Error, () => FLogger.Text("Failed to download Zlib-ng", Constants.WHITE, true)); + if (!zlibFileInfo.Exists) return; + } } ZlibHelper.Initialize(zlibPath); From 5776444020a3dc566a2780cde1056a9b5f59258b Mon Sep 17 00:00:00 2001 From: Marlon Date: Fri, 12 Dec 2025 20:49:46 +0100 Subject: [PATCH 13/16] cue4p update --- CUE4Parse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUE4Parse b/CUE4Parse index a34c058c..7772c6cc 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit a34c058c4ca9385ac61dac7f61a22fda144a2233 +Subproject commit 7772c6ccf0f6f195876d20d4b5d49fe533fc564e From 8b95b403bbf16f935f6e20d326a508ec4655500d Mon Sep 17 00:00:00 2001 From: Masusder <59669685+Masusder@users.noreply.github.com> Date: Fri, 19 Dec 2025 18:34:33 +0100 Subject: [PATCH 14/16] New Explorer System (#619) + filter by types, find by references (UE5+), and a lot of other improvements Co-authored-by: Asval Co-authored-by: LongerWarrior --- CUE4Parse | 2 +- FModel/App.xaml | 10 +- FModel/Constants.cs | 3 +- FModel/Creator/CreatorPackage.cs | 3 +- FModel/Enums.cs | 51 +- FModel/Extensions/AssetCategoryExtensions.cs | 30 + FModel/FModel.csproj | 3 +- FModel/Framework/FakeCUE4Parse.cs | 12 +- FModel/Helper.cs | 2 +- FModel/MainWindow.xaml | 821 ++++++--------- FModel/MainWindow.xaml.cs | 330 +++--- FModel/Settings/UserSettings.cs | 27 +- .../ApiEndpoints/GitHubApiEndpoint.cs | 11 +- .../ApiEndpoints/Models/GitHubResponse.cs | 33 +- FModel/ViewModels/ApplicationViewModel.cs | 76 +- FModel/ViewModels/AssetsFolderViewModel.cs | 155 ++- FModel/ViewModels/AssetsListViewModel.cs | 21 +- FModel/ViewModels/CUE4ParseViewModel.cs | 67 +- FModel/ViewModels/Commands/CopyCommand.cs | 15 +- FModel/ViewModels/Commands/GoToCommand.cs | 4 +- FModel/ViewModels/Commands/LoadCommand.cs | 11 +- FModel/ViewModels/Commands/MenuCommand.cs | 1 + .../Commands/RightClickMenuCommand.cs | 132 ++- FModel/ViewModels/Commands/TabCommand.cs | 3 + FModel/ViewModels/GameFileViewModel.cs | 407 ++++++++ FModel/ViewModels/SearchViewModel.cs | 38 +- FModel/ViewModels/ThreadWorkerViewModel.cs | 36 +- FModel/ViewModels/UpdateViewModel.cs | 140 ++- FModel/Views/About.xaml | 7 - FModel/Views/AesManager.xaml | 7 - FModel/Views/AudioPlayer.xaml | 7 - FModel/Views/BackupManager.xaml | 7 - FModel/Views/DirectorySelector.xaml | 7 - FModel/Views/ImageMerger.xaml | 8 - FModel/Views/Resources/Colors.xaml | 35 + .../Resources/Controls/AvalonEditor.xaml | 7 - .../Views/Resources/Controls/Breadcrumb.xaml | 7 - .../Resources/Controls/Breadcrumb.xaml.cs | 49 +- .../Resources/Controls/CommitControl.xaml | 33 +- .../Controls/CommitDownloaderControl.xaml | 7 - .../ContextMenus/FileContextMenu.xaml | 305 ++++++ .../ContextMenus/FolderContextMenu.xaml | 150 +++ .../ContextMenus/FolderContextMenu.xaml.cs | 70 ++ .../Resources/Controls/DictionaryEditor.xaml | 7 - .../Resources/Controls/EndpointEditor.xaml | 7 - .../Views/Resources/Controls/ImagePopout.xaml | 7 - .../Controls/Inputs/SearchTextBox.xaml | 41 + .../Controls/Inputs/SearchTextBox.xaml.cs | 48 + .../Resources/Controls/ListBoxItemBehavior.cs | 42 + .../Resources/Controls/PropertiesPopout.xaml | 7 - .../Controls/Rtb/CustomRichTextBox.cs | 44 + .../Controls/TiledExplorer/FileButton2.xaml | 81 ++ .../TiledExplorer/FileButton2.xaml.cs | 12 + .../Controls/TiledExplorer/FolderButton2.xaml | 110 ++ .../TiledExplorer/FolderButton2.xaml.cs | 11 + .../Controls/TiledExplorer/FolderButton3.xaml | 92 ++ .../TiledExplorer/FolderButton3.xaml.cs | 11 + .../Controls/TiledExplorer/Resources.xaml | 117 +++ .../Controls/TiledExplorer/Resources.xaml.cs | 52 + .../Controls/TiledExplorer/SmoothScroll.cs | 90 ++ .../Controls/TypeDataTemplateSelector.cs | 18 + .../AnyItemMeetsConditionConverter.cs | 60 ++ .../Converters/FileToGeometryConverter.cs | 91 ++ .../Converters/FolderToGeometryConverter.cs | 57 + .../GameFileMeetsConditionConverter.cs | 57 + .../InvertBoolToVisibilityConverter.cs | 30 + .../Converters/InvertBooleanConverter.cs | 6 +- .../Converters/RatioToGridLengthConverter.cs | 32 + .../StatusToTaskbarStateConverter.cs | 31 + .../Resources/Converters/TabSizeConverter.cs | 4 +- FModel/Views/Resources/Icons.xaml | 93 ++ FModel/Views/Resources/Resources.xaml | 177 ++-- FModel/Views/SearchView.xaml | 986 ++++++++++++------ FModel/Views/SearchView.xaml.cs | 148 ++- FModel/Views/SettingsView.xaml | 40 +- FModel/Views/UpdateView.xaml | 27 +- FModel/Views/UpdateView.xaml.cs | 5 +- NOTICE | 1 + 78 files changed, 4437 insertions(+), 1355 deletions(-) create mode 100644 FModel/Extensions/AssetCategoryExtensions.cs create mode 100644 FModel/ViewModels/GameFileViewModel.cs create mode 100644 FModel/Views/Resources/Colors.xaml create mode 100644 FModel/Views/Resources/Controls/ContextMenus/FileContextMenu.xaml create mode 100644 FModel/Views/Resources/Controls/ContextMenus/FolderContextMenu.xaml create mode 100644 FModel/Views/Resources/Controls/ContextMenus/FolderContextMenu.xaml.cs create mode 100644 FModel/Views/Resources/Controls/Inputs/SearchTextBox.xaml create mode 100644 FModel/Views/Resources/Controls/Inputs/SearchTextBox.xaml.cs create mode 100644 FModel/Views/Resources/Controls/ListBoxItemBehavior.cs create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/FileButton2.xaml create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/FileButton2.xaml.cs create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/FolderButton2.xaml create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/FolderButton2.xaml.cs create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/FolderButton3.xaml create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/FolderButton3.xaml.cs create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/Resources.xaml create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/Resources.xaml.cs create mode 100644 FModel/Views/Resources/Controls/TiledExplorer/SmoothScroll.cs create mode 100644 FModel/Views/Resources/Controls/TypeDataTemplateSelector.cs create mode 100644 FModel/Views/Resources/Converters/AnyItemMeetsConditionConverter.cs create mode 100644 FModel/Views/Resources/Converters/FileToGeometryConverter.cs create mode 100644 FModel/Views/Resources/Converters/FolderToGeometryConverter.cs create mode 100644 FModel/Views/Resources/Converters/GameFileMeetsConditionConverter.cs create mode 100644 FModel/Views/Resources/Converters/InvertBoolToVisibilityConverter.cs create mode 100644 FModel/Views/Resources/Converters/RatioToGridLengthConverter.cs create mode 100644 FModel/Views/Resources/Converters/StatusToTaskbarStateConverter.cs create mode 100644 FModel/Views/Resources/Icons.xaml diff --git a/CUE4Parse b/CUE4Parse index 7772c6cc..d2f6ce6e 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit 7772c6ccf0f6f195876d20d4b5d49fe533fc564e +Subproject commit d2f6ce6e618576dbbe7f6dd9ed3171f14513182a diff --git a/FModel/App.xaml b/FModel/App.xaml index f35316c1..fd1ca58e 100644 --- a/FModel/App.xaml +++ b/FModel/App.xaml @@ -1,4 +1,4 @@ - + + + + + + + + #206BD4 diff --git a/FModel/Constants.cs b/FModel/Constants.cs index bccfa2aa..af4c4a51 100644 --- a/FModel/Constants.cs +++ b/FModel/Constants.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics; using System.IO; using System.Numerics; @@ -13,6 +13,7 @@ public static class Constants public static readonly string APP_VERSION = FileVersionInfo.GetVersionInfo(APP_PATH).FileVersion; public static readonly string APP_COMMIT_ID = FileVersionInfo.GetVersionInfo(APP_PATH).ProductVersion?.SubstringAfter('+'); public static readonly string APP_SHORT_COMMIT_ID = APP_COMMIT_ID[..7]; + public static readonly DateTime APP_BUILD_DATE = File.GetLastWriteTime(APP_PATH); public const string ZERO_64_CHAR = "0000000000000000000000000000000000000000000000000000000000000000"; public static readonly FGuid ZERO_GUID = new(0U); diff --git a/FModel/Creator/CreatorPackage.cs b/FModel/Creator/CreatorPackage.cs index a72f265f..b54d6f2f 100644 --- a/FModel/Creator/CreatorPackage.cs +++ b/FModel/Creator/CreatorPackage.cs @@ -33,6 +33,7 @@ public class CreatorPackage : IDisposable [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool TryConstructCreator([MaybeNullWhen(false)] out UCreator creator) { + // TODO: convert to a type based system switch (_exportType) { // Fortnite @@ -51,7 +52,7 @@ public class CreatorPackage : IDisposable case "CosmeticCompanionReactFXItemDefinition": case "AthenaPickaxeItemDefinition": case "AthenaGadgetItemDefinition": - case "AthenaGliderItemDefinition": + case "AthenaGliderItemDefinition": case "AthenaHatItemDefinition": case "AthenaSprayItemDefinition": case "AthenaDanceItemDefinition": diff --git a/FModel/Enums.cs b/FModel/Enums.cs index f59efb9d..0713bd58 100644 --- a/FModel/Enums.cs +++ b/FModel/Enums.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel; +using FModel.Extensions; namespace FModel; @@ -65,16 +66,6 @@ public enum ELoadingMode AllButPatched, } -// public enum EUpdateMode -// { -// [Description("Stable")] -// Stable, -// [Description("Beta")] -// Beta, -// [Description("QA Testing")] -// Qa -// } - public enum ECompressedAudio { [Description("Play the decompressed data")] @@ -117,3 +108,43 @@ public enum EBulkType Animations = 1 << 5, Audio = 1 << 6 } + +public enum EAssetCategory : uint +{ + All = AssetCategoryExtensions.CategoryBase + (0 << 16), + Blueprints = AssetCategoryExtensions.CategoryBase + (1 << 16), + BlueprintGeneratedClass = Blueprints + 1, + WidgetBlueprintGeneratedClass = Blueprints + 2, + AnimBlueprintGeneratedClass = Blueprints + 3, + RigVMBlueprintGeneratedClass = Blueprints + 4, + UserDefinedEnum = Blueprints + 5, + UserDefinedStruct = Blueprints + 6, + //Metadata + Blueprint = Blueprints + 8, + CookedMetaData = Blueprints + 9, + Mesh = AssetCategoryExtensions.CategoryBase + (2 << 16), + StaticMesh = Mesh + 1, + SkeletalMesh = Mesh + 2, + Skeleton = Mesh + 3, + Texture = AssetCategoryExtensions.CategoryBase + (3 << 16), + Materials = AssetCategoryExtensions.CategoryBase + (4 << 16), + Material = Materials + 1, + MaterialEditorData = Materials + 2, + MaterialFunction = Materials + 3, + MaterialParameterCollection = Materials + 4, + Animation = AssetCategoryExtensions.CategoryBase + (5 << 16), + Level = AssetCategoryExtensions.CategoryBase + (6 << 16), + World = Level + 1, + BuildData = Level + 2, + LevelSequence = Level + 3, + Foliage = Level + 4, + Data = AssetCategoryExtensions.CategoryBase + (7 << 16), + ItemDefinitionBase = Data + 1, + CurveBase = Data + 2, + PhysicsAsset = Data + 3, + Media = AssetCategoryExtensions.CategoryBase + (8 << 16), + Audio = Media + 1, + Video = Media + 2, + Font = Media + 3, + Particle = AssetCategoryExtensions.CategoryBase + (9 << 16), +} diff --git a/FModel/Extensions/AssetCategoryExtensions.cs b/FModel/Extensions/AssetCategoryExtensions.cs new file mode 100644 index 00000000..561db386 --- /dev/null +++ b/FModel/Extensions/AssetCategoryExtensions.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace FModel.Extensions; + +public static class AssetCategoryExtensions +{ + public const uint CategoryBase = 0x00010000; + + public static EAssetCategory GetBaseCategory(this EAssetCategory category) + { + return (EAssetCategory) ((uint) category & 0xFFFF0000); + } + + public static bool IsOfCategory(this EAssetCategory item, EAssetCategory category) + { + return item.GetBaseCategory() == category.GetBaseCategory(); + } + + public static bool IsBaseCategory(this EAssetCategory category) + { + return category == category.GetBaseCategory(); + } + + public static IEnumerable GetBaseCategories() + { + return Enum.GetValues().Where(c => c.IsBaseCategory()); + } +} diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index 552ce20d..4ca717cf 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -168,8 +168,9 @@ - + + diff --git a/FModel/Framework/FakeCUE4Parse.cs b/FModel/Framework/FakeCUE4Parse.cs index 43e53edd..13a88aad 100644 --- a/FModel/Framework/FakeCUE4Parse.cs +++ b/FModel/Framework/FakeCUE4Parse.cs @@ -1,26 +1,22 @@ using System; using CUE4Parse.Compression; using CUE4Parse.FileProvider.Objects; +using CUE4Parse.UE4.Assets.Objects; using CUE4Parse.UE4.Readers; namespace FModel.Framework; -public class FakeGameFile : GameFile +public class FakeGameFile(string path) : GameFile(path, 0) { - public FakeGameFile(string path) : base(path, 0) - { - - } - public override bool IsEncrypted => false; public override CompressionMethod CompressionMethod => CompressionMethod.None; - public override byte[] Read() + public override byte[] Read(FByteBulkDataHeader? header = null) { throw new NotImplementedException(); } - public override FArchive CreateReader() + public override FArchive CreateReader(FByteBulkDataHeader? header = null) { throw new NotImplementedException(); } diff --git a/FModel/Helper.cs b/FModel/Helper.cs index c7a43c50..58d51545 100644 --- a/FModel/Helper.cs +++ b/FModel/Helper.cs @@ -38,7 +38,7 @@ public static class Helper else { var w = GetOpenedWindow(windowName); - if (windowName == "Search View") w.WindowState = WindowState.Normal; + if (windowName == "Search For Packages") w.WindowState = WindowState.Normal; w.Focus(); } } diff --git a/FModel/MainWindow.xaml b/FModel/MainWindow.xaml index f70fc5af..816ed7ff 100644 --- a/FModel/MainWindow.xaml +++ b/FModel/MainWindow.xaml @@ -3,6 +3,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:FModel" xmlns:controls="clr-namespace:FModel.Views.Resources.Controls" + xmlns:inputs="clr-namespace:FModel.Views.Resources.Controls.Inputs" xmlns:converters="clr-namespace:FModel.Views.Resources.Converters" xmlns:settings="clr-namespace:FModel.Settings" xmlns:services="clr-namespace:FModel.Services" @@ -10,8 +11,18 @@ xmlns:adonisControls="clr-namespace:AdonisUI.Controls;assembly=AdonisUI" xmlns:adonisExtensions="clr-namespace:AdonisUI.Extensions;assembly=AdonisUI" WindowStartupLocation="CenterScreen" Closing="OnClosing" Loaded="OnLoaded" PreviewKeyDown="OnWindowKeyDown" - Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={converters:RatioConverter}, ConverterParameter='0.85'}" - Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={converters:RatioConverter}, ConverterParameter='0.75'}"> + Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={converters:RatioConverter}, ConverterParameter='0.95'}" + Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={converters:RatioConverter}, ConverterParameter='0.90'}"> + + + + + + + + + + - - - - - - - - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + @@ -191,8 +223,8 @@ - + Padding="0" Background="Transparent"> + @@ -257,7 +289,8 @@ - + @@ -315,94 +348,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -437,32 +387,11 @@ Header="{Binding SelectedItem.AssetsList.Assets.Count, FallbackValue=0, ElementName=AssetsFolderName}" HeaderStringFormat="{}{0} Packages"> - - - - - - - - - - - - - - - - - + + @@ -471,217 +400,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -697,15 +424,15 @@ - + - + - + - + - + @@ -720,14 +447,154 @@ Background="{DynamicResource {x:Static adonisUi:Brushes.Layer0BackgroundBrush}}" /> + Padding="0" Background="Transparent"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -740,7 +607,7 @@