// Portage UE 5.5 - lot H1 (Docs/Migration/11_Audit_Optimisation.md ยง16.7). // // La liste des coiffures du jeu est la valeur par defaut de GI.HairstyleTable (126 entrees ecrites dans le Blueprint) : // un mod ne peut pas en ajouter. Ce sous-systeme lit des fichiers texte Modules//**/*.lphair et ajoute leurs // coiffures en fin de table, ainsi que leur morph d'ajustement dans GI.MorphableHairs. Format (une coiffure par fichier) : // // HAIRSTYLE: /Game/Heavy/New5/Hairs/Exemple.Exemple chemin complet d'un SkeletalMesh (squelette Genesis 8) // SEX: F F ou M (defaut F) // DAZ: true defaut true ; false = coiffure "legacy", chargee seulement // si GI.LegacyPercentage > 0 // FIT_MORPH: Exemple__AllExpand 0.45 facultatif : morph applique par Person.FitMorphableHair // // Les modules desactives dans GI.ModEnableds sont ignores ; la table est resynchronisee quand cette liste change. // Aucun Blueprint n'est modifie : sans fichier .lphair, la table reste celle du Blueprint. Les entrees du Blueprint // ne sont jamais modifiees ni reordonnees, une coiffure deja presente n'est pas ajoutee une seconde fois. #pragma once #include "CoreMinimal.h" #include "Containers/Ticker.h" #include "Subsystems/GameInstanceSubsystem.h" #include "LPHairstyleSubsystem.generated.h" UCLASS() class LIFEPLAY_API ULPHairstyleSubsystem : public UGameInstanceSubsystem { GENERATED_BODY() public: virtual void Initialize(FSubsystemCollectionBase& Collection) override; virtual void Deinitialize() override; private: struct FHairDef { FString File; FString Module; FString Path; bool bMale = false; bool bDaz = true; FString FitMorph; FString FitValue; }; bool Tick(float DeltaTime); /** Releve des fichiers .lphair (une fois : les fichiers de Modules ne changent pas en cours de partie). */ void ScanFiles(); /** Retire les entrees ajoutees precedemment puis ajoute celles des modules actifs. */ void Sync(); FString EnabledSignature() const; bool IsModuleEnabled(const FString& Module) const; FTSTicker::FDelegateHandle TickHandle; double NextCheck = 0.0; FString LastSignature; TArray Defs; /** Chemins ajoutes a HairstyleTable par ce sous-systeme, dans l'ordre. */ TArray Injected; /** Cles ajoutees a MorphableHairs par ce sous-systeme. */ TArray InjectedMorphs; };