// Lot STM1 (STM1-SPEC-01, T2) : trace du choix de la ville (F3, carte "quelconque" = ville factice 000Dummy). // // Lecture seule du GameInstance Blueprint par reflexion, toutes les 0,25 s ; une ligne [LPCity] (categorie LogLPCity) // seulement quand une valeur change : liste des villes (CITIES), ville sauvegardee et sa correspondance (SAUVEGARDE, // meme comparaison que GI.GetCityByName), ville demandee (DEMANDE, GI.CityToMoveTo), donnees StreetMap posees // (STREETMAP) et maillage affiche (POSE). Rien a l'ecran, rien ecrit dans le GI, aucun appel de fonction Blueprint. // Propriete introuvable : une ligne PROPRIETE ABSENTE, une seule fois. Commande console (non-Shipping) : LP.CityTrace. // Absent du Shipping : corps sous #if !UE_BUILD_SHIPPING (LPCityTraceSubsystem.cpp). #pragma once #include "CoreMinimal.h" #include "Containers/Ticker.h" #include "Subsystems/GameInstanceSubsystem.h" #include "LPCityTraceSubsystem.generated.h" class IConsoleObject; UCLASS() class LIFEPLAY_API ULPCityTraceSubsystem : public UGameInstanceSubsystem { GENERATED_BODY() public: virtual void Initialize(FSubsystemCollectionBase& Collection) override; virtual void Deinitialize() override; private: bool Tick(float DeltaTime); /** Releve des cinq points de mesure. bForce : ecrit tout, meme sans changement (commande console). */ void Sample(bool bForce); /** Commande console LP.CityTrace. */ void DumpNow(); FTSTicker::FDelegateHandle TickHandle; IConsoleObject* ConsoleCommand = nullptr; double StartSeconds = 0.0; int32 LastCityCount = -1; FString LastSave; FString LastRequest; FString LastStreetMap; FString LastPose; TSet ReportedMissing; };