From 2c05b33ab2afa1aaca3a01c03924e6c391ecb2a5 Mon Sep 17 00:00:00 2001 From: Panakotta00 Date: Mon, 8 Jul 2024 13:17:16 +0200 Subject: [PATCH] fix: Fix failed cooking --- .../Private/Reflection/FINReflection.cpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Source/FicsItNetworks/Private/Reflection/FINReflection.cpp b/Source/FicsItNetworks/Private/Reflection/FINReflection.cpp index 7daf5557f..221ef081f 100644 --- a/Source/FicsItNetworks/Private/Reflection/FINReflection.cpp +++ b/Source/FicsItNetworks/Private/Reflection/FINReflection.cpp @@ -40,6 +40,32 @@ void FFINReflection::LoadAllTypes() { FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked(FName("AssetRegistry")); IAssetRegistry& AssetRegistry = AssetRegistryModule.Get(); +#if WITH_EDITOR + TArray PathsToScan; + PathsToScan.Add(TEXT("/FicsItNetworks/")); + AssetRegistry.ScanPathsSynchronous(PathsToScan, true); + + TArray AssetData; + FARFilter Filter; + Filter.bRecursivePaths = true; + Filter.bRecursiveClasses = true; + Filter.PackagePaths.Add("/"); + Filter.ClassPaths.Add(UBlueprint::StaticClass()->GetClassPathName()); + Filter.ClassPaths.Add(UBlueprintGeneratedClass::StaticClass()->GetClassPathName()); + Filter.ClassPaths.Add(UClass::StaticClass()->GetClassPathName()); + AssetRegistry.GetAssets(Filter, AssetData); + + for (const FAssetData& Asset : AssetData) { + FString Path = Asset.GetObjectPathString(); + if (!Path.EndsWith("_C")) Path += "_C"; + UClass* Class = LoadClass(NULL, *Path); + if (!Class) { + Class = LoadClass(NULL, *Path); + } + if (!Class) continue; + FindClass(Class); + } +#else TArray BaseNames; BaseNames.Add(UObject::StaticClass()->GetClassPathName()); TSet Excluded; @@ -51,6 +77,7 @@ void FFINReflection::LoadAllTypes() { if (Class->GetClassFlags() & (CLASS_Abstract | CLASS_Hidden) || Class->GetName().StartsWith("SKEL_")) continue; FindClass(Class); } +#endif for (TObjectIterator Class; Class; ++Class) { if (!Class->GetName().StartsWith("SKEL_") && !Class->GetName().StartsWith("REINST_")) FindClass(*Class);