LifePlay-Revival/Source/LifePlay/LPAssetRegistryHelpers.h
edujiro5972 1122e17fa6 L0 : etat initial du projet 5.5 avant toute correction
Instantane de reference de la reprise de migration (2026-09-29).
Contient GI.uasset tel que trouve (copie UE4 identique a 4.27,
MD5 F4550DA5DC05FC005400CDCA2FC123C9). Ajouts de ce commit :
.gitattributes (aucune conversion de fin de ligne), regles .gitignore
CHG-001, Tools/ (Snapshot, Restore, AssetHeaders), empreintes L0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 00:56:10 +02:00

60 lines
2.7 KiB
C++

// Portage UE 5.5 (2026.9 beta) - rustine introduite lors du portage 4.27, toujours necessaire.
//
// Epic a rendu IAssetRegistry::GetAssetByObjectPath impur (BlueprintPure=false) apres la
// version d'Unreal utilisee pour ecrire les Blueprints du jeu. Les graphes existants
// l'employaient comme noeud PUR : au chargement le noeud gagne une broche Exec non
// connectee, il est donc elague, et le noeud "Get Asset" qui consommait sa sortie se retrouve
// sans entree -> "'In Asset Data' ... must have an input wired into it".
//
// Cette classe re-expose la meme fonction en version PURE. La commandlet
// LPFixAssetRegistryNodes (module LifePlayEditorTools) fait pointer les noeuds existants ici.
#pragma once
#include "CoreMinimal.h"
#include "AssetRegistry/AssetData.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "LPAssetRegistryHelpers.generated.h"
UCLASS()
class LIFEPLAY_API ULPAssetRegistryHelpers : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
/**
* Version PURE de IAssetRegistry::GetAssetByObjectPath.
*
* @param ObjectPath chemin de l'objet a chercher
* @param bIncludeOnlyOnDiskAssets si vrai, ignore les objets deja en memoire (plus rapide)
* @return les donnees de l'asset ; invalides si l'objet est introuvable
*/
UFUNCTION(BlueprintPure, Category = "AssetRegistry")
static FAssetData GetAssetByObjectPath(const FName ObjectPath, bool bIncludeOnlyOnDiskAssets = false);
/**
* Version FName de IAssetRegistry::GetAssetsByClass.
*
* 5.1 a remplace le parametre FName ClassName par un FTopLevelAssetPath ClassPathName.
* La montee de version a supprime l'ancienne broche des noeuds existants SANS reporter
* sa valeur sur la nouvelle : les trois appels de GI (SkeletalMesh, StaticMesh,
* StreetMap) interrogeaient donc l'AssetRegistry avec un chemin de classe VIDE et ne
* renvoyaient plus rien. Le jeu ne pouvait plus enumerer ni corps, ni vetements, ni
* coiffures : generatePerson() sans argument n'avait plus rien a tirer au sort.
*
* Rien dans le graphe ne le signalait : la compilation restait a zero erreur.
*
* Les noms de broches reproduisent ceux du noeud d'origine pour que le reaiguillage se
* limite a un changement de reference de fonction.
*/
UFUNCTION(BlueprintCallable, Category = "AssetRegistry")
static bool GetAssetsByClassName(FName ClassName, TArray<FAssetData>& OutAssetData, bool bSearchSubClasses = false);
/**
* Equivalent de l'ancien FAssetData::ObjectPath (supprime en 5.1 au profit de
* FSoftObjectPath). Rend le chemin sous la forme "/Game/Dossier/Asset.Asset" attendue
* par les consommateurs existants.
*/
UFUNCTION(BlueprintPure, Category = "AssetRegistry")
static FName GetAssetObjectPath(const FAssetData& AssetData);
};