O2b : ModdingExtra liste les paquets depuis le registre d'assets en contenu compresse (villes de CityMenu)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
45a98d6c75
commit
60ddf96493
3 changed files with 44 additions and 0 deletions
|
|
@ -911,3 +911,4 @@ Validation L7c/L7d (2026-10-02, parc, même cadrage) : la nuit reste claire (sol
|
|||
| CHG-064 | 2026-10-02 | O2 | `Config/DefaultGame.ini` : `UsePakFile=True`, `bUseIoStore=True`, `bCompressed=True` (réglages par défaut du moteur : Oodle Kraken) ; `Modules` reste en fichiers nus | build Development 3 367 → 2 002 Mo (−40 %), 23 928 → 2 104 fichiers ; build `LifePlay_Build_5.5_O2` ; validé en jeu le 2026-10-02 (7 contrôles) | `Tools\Restore.ps1 -Lot O2` ou `git checkout O2-avant -- Config` |
|
||||
| CHG-065 | 2026-10-02 | O4 | nouveau `Tools/FixTextureMips.py` ; 29 textures (`Clothes4` 27, route, trottoir) : `MipGenSettings` = groupe de texture, `NeverStream` = faux (diff : ces 2 propriétés + `LightingGuid` régénéré) | textures de couleur 3D sans mipmaps : scintillement à distance, pleine résolution toujours en mémoire ; exclus : cheveux et masques de transparence (29), interface et textures sans matériau (44), dimensions non puissance de 2 (733) ; build `LifePlay_Build_5.5_O4` | `Tools\Restore.ps1 -Lot O4` |
|
||||
| CHG-066 | 2026-10-02 | O | build Shipping de distribution `LifePlay_Build_5.5_Shipping_V1.2` (O1, O2, O4, O9, O9b) | 3 246 → 1 494 Mo (−54 %), 24 249 → 2 084 fichiers ; validation en jeu en attente | — (build seulement) |
|
||||
| CHG-067 | 2026-10-02 | O2b | `Plugins/ModdingExtra` : `GetAllFilesFromFolder` reconstruit la liste des `.uasset`/`.umap` depuis le registre d'assets quand le disque n'en renvoie aucun (contenu compressé IoStore) ; dépendance `AssetRegistry` | régression d'O2 constatée sur le build Shipping : aucune ville proposée (`UI/CityMenu` liste les fichiers `Heavy/StreetMap/*.uasset` du disque, `UI/City` vérifie chaque ville par suffixe `/<nom>.uasset`) ; seul appel concerné, les autres lisent des fichiers texte de `Modules` ; build `LifePlay_Build_5.5_Shipping_V1.2` reconstruit | `git checkout O2b-avant -- Plugins/ModdingExtra` |
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ public class ModdingExtra : ModuleRules
|
|||
new string[]
|
||||
{
|
||||
"CoreUObject",
|
||||
"AssetRegistry", // portage 5.5, lot O2b : enumeration des assets en conteneurs IoStore
|
||||
"Engine",
|
||||
"Slate",
|
||||
"SlateCore",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,10 @@
|
|||
|
||||
#include "ModdingExtraBPLibrary.h"
|
||||
#include "ModdingExtra.h"
|
||||
#include "AssetRegistry/AssetRegistryModule.h"
|
||||
#include "HAL/FileManager.h"
|
||||
#include "Engine/World.h"
|
||||
#include "Modules/ModuleManager.h"
|
||||
#include "Misc/FileHelper.h"
|
||||
#include "Misc/Paths.h"
|
||||
|
||||
|
|
@ -55,6 +58,45 @@ float UModdingExtraBPLibrary::ModdingExtraSampleFunction(float Param)
|
|||
//FileManager.FindFiles(Files, *FinalPath, true, false);
|
||||
FileManager.FindFilesRecursive(Files, *FinalPathWithoutExt, *Ext, true, false, false);
|
||||
|
||||
// Portage 5.5, lot O2b : dans un build au contenu compresse (IoStore), les paquets .uasset/.umap ne sont plus
|
||||
// des fichiers du disque et la recherche ci-dessus ne renvoie rien (UI/CityMenu liste ainsi les villes de
|
||||
// Heavy/StreetMap). On reconstruit alors la meme liste, chemins compris, depuis le registre d'assets.
|
||||
// Avec des fichiers nus (editeur, build sans conteneurs), la liste du disque n'est pas vide : rien ne change.
|
||||
const bool bPackageExt = Ext.Equals(TEXT("*.uasset"), ESearchCase::IgnoreCase) || Ext.Equals(TEXT("*.umap"), ESearchCase::IgnoreCase);
|
||||
if (Files.Num() == 0 && bPackageExt)
|
||||
{
|
||||
FString Folder = RootFolderFullPath;
|
||||
Folder.ReplaceInline(TEXT("\\"), TEXT("/"));
|
||||
Folder.RemoveFromStart(TEXT("/"));
|
||||
Folder.RemoveFromEnd(TEXT("/"));
|
||||
const FString PackageRoot = TEXT("/Game/") + Folder;
|
||||
|
||||
const IAssetRegistry& Registry = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry")).Get();
|
||||
TArray<FAssetData> Assets;
|
||||
Registry.GetAssetsByPath(FName(*PackageRoot), Assets, /*bRecursive=*/true);
|
||||
const bool bWantMaps = Ext.Equals(TEXT("*.umap"), ESearchCase::IgnoreCase);
|
||||
TSet<FName> Seen;
|
||||
for (const FAssetData& Asset : Assets)
|
||||
{
|
||||
bool bAlreadySeen = false;
|
||||
Seen.Add(Asset.PackageName, &bAlreadySeen);
|
||||
if (bAlreadySeen)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
const bool bIsMap = Asset.AssetClassPath == UWorld::StaticClass()->GetClassPathName();
|
||||
if (bIsMap != bWantMaps)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
FString Relative = Asset.PackageName.ToString();
|
||||
Relative.RemoveFromStart(TEXT("/Game/"));
|
||||
Files.Add(FullPath + TEXT("/") + Relative + Ext.RightChop(1));
|
||||
}
|
||||
UE_LOG(LogModdingExtra, Log, TEXT("GetAllFilesFromFolder | '%s' : %d paquet(s) trouve(s) dans le registre d'assets (contenu compresse)"),
|
||||
*RootFolderFullPath, Files.Num());
|
||||
}
|
||||
|
||||
UE_LOG(LogModdingExtra, Verbose, TEXT("GetAllFilesFromFolder | '%s' ext='%s' -> %d fichier(s)"),
|
||||
*RootFolderFullPath, *Ext, Files.Num());
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue