// Portage UE 5.5 - ERR-038 (amelioration : defaut deja present en 4.27). // // Tous les lieux sont reconstruits par l'acteur Room dans le meme studio. Au changement de lieu, GI.MoveTo // reconstruit la piece puis rend les personnages de la piece precedente a la reserve (destroyDummy : retrait de // DummyPersonsInUse, SetActorHiddenInGame(true), deplacement) environ 2 s plus tard ; entre-temps ils restent // visibles dans la nouvelle piece (releve ERR038_releve_20261002 : 4 personnages du fast-food 2 s dans la maison). // // Ce sous-systeme detecte le changement de piece (lieu courant ou echelle de la racine de Room) et cache aussitot // les personnages qui etaient actifs juste avant, sauf le compagnon et les personnes de la scene en cours. Il cesse // de suivre un personnage des que le jeu le rend a la reserve ou le reaffiche lui-meme ; au-dela de 10 s sans l'un // ni l'autre, il le reaffiche (on retombe alors sur le comportement d'origine). Aucun Blueprint n'est modifie. #pragma once #include "CoreMinimal.h" #include "Containers/Ticker.h" #include "Subsystems/GameInstanceSubsystem.h" #include "LPRoomTransitionSubsystem.generated.h" UCLASS() class LIFEPLAY_API ULPRoomTransitionSubsystem : public UGameInstanceSubsystem { GENERATED_BODY() public: virtual void Initialize(FSubsystemCollectionBase& Collection) override; virtual void Deinitialize() override; private: bool Tick(float DeltaTime); FTSTicker::FDelegateHandle TickHandle; /** Signature de la piece au tick precedent (lieu courant + echelle de la racine de Room). */ FString LastRoomSignature; /** Personnages actifs au tick precedent. */ TArray> LastInUse; /** Personnages caches par ce sous-systeme, avec l'heure a laquelle ils l'ont ete. */ TMap, double> Hidden; };