46 lines
2.5 KiB
C++
46 lines
2.5 KiB
C++
// Portage UE 5.5 - couche de donnees, etape 4b (Docs/Migration/11_Audit_Optimisation.md §17.4).
|
|
//
|
|
// GI::WhatWhereToArray developpe les lignes "WHAT: ..." et "WHERE: ..." des en-tetes de scenes en listes d'actions ou de
|
|
// lieux. Appelee 1 558 fois par passage de PopulateRaws, elle represente 94 % de PopulateScenes (3,4 s) : pour chaque
|
|
// "all", le Blueprint parcourt GI.ActionDetail ou GI.AmenityAction en copiant chaque structure.
|
|
//
|
|
// Cette fonction reproduit le graphe Blueprint a l'identique (memes fonctions de chaine LPStringCompat / KismetString,
|
|
// memes exclusions, memes doublons, meme ordre). Les deux appels de l'EventGraph de GI y sont rebranches par la
|
|
// commandlet LPFixWhatWhere. Option -LPVerifyWhatWhere : chaque appel execute aussi la fonction Blueprint d'origine
|
|
// (toujours presente dans GI) et journalise tout ecart.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Kismet/BlueprintFunctionLibrary.h"
|
|
#include "LPDataCompat.generated.h"
|
|
|
|
UCLASS()
|
|
class LIFEPLAY_API ULPDataCompat : public UBlueprintFunctionLibrary
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/** Equivalent C++ de GI::WhatWhereToArray. Target = instance de jeu (GI), implicite depuis GI. */
|
|
UFUNCTION(BlueprintCallable, Category = "LifePlay|Compat", meta = (DefaultToSelf = "Target", HidePin = "Target"))
|
|
static void WhatWhereToArray(UObject* Target, const FString& Line, TArray<FString>& Array);
|
|
|
|
/** Implementation pure (sans verification), exposee pour les tests. */
|
|
static TArray<FString> ComputeWhatWhere(const UObject* GI, const FString& Line);
|
|
|
|
/**
|
|
* Equivalent C++ de GI::FindCenterOfPolygon (centre de la boite englobante, pas le centroide).
|
|
* Appelee une fois par batiment au chargement de la ville (49 425 fois, 0,74 s inclus dans la trace
|
|
* Development du 2026-10-04). Meme resultat que le graphe : coordonnees ramenees en float avant
|
|
* min/max, centre = milieu de la boite, aire = |dx| * |dy| / 1000, puis GI.Areas[centre] = aire.
|
|
*/
|
|
UFUNCTION(BlueprintCallable, Category = "LifePlay|Compat", meta = (DefaultToSelf = "Target", HidePin = "Target"))
|
|
static void FindCenterOfPolygon(UObject* Target, const TArray<FVector2D>& BuildingPoints, FVector2D& Center, double& Area);
|
|
|
|
/**
|
|
* Demarre la lecture des paquets de la ville (maillage statique et donnees StreetMap) avant le
|
|
* clic Continuer. Separer du correctif FindCenterOfPolygon : la trace I6 attribuait ~164 Mo a
|
|
* l'image de plusieurs secondes ; ces deux paquets sont ceux que le canal loadtime nomme.
|
|
*/
|
|
static void PreloadCityPackages();
|
|
};
|