From 026bddf5549fec9c781e68f902144371e55b1632 Mon Sep 17 00:00:00 2001 From: edujiro5972 <336072401+edujiro5972@users.noreply.github.com> Date: Thu, 1 Oct 2026 23:26:32 +0200 Subject: [PATCH] L7l : releve periodique ; hypothese du plafond WallT a 20 cm du sol en exterieur (echelle Z 0,01) Co-Authored-By: Claude Opus 5.5 --- Docs/Migration/Journal_Modifications.md | 12 +++++++++ Source/LifePlay/LPSessionLogSubsystem.cpp | 30 ++++++++++++++++++++--- Source/LifePlay/LPSessionLogSubsystem.h | 2 ++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/Docs/Migration/Journal_Modifications.md b/Docs/Migration/Journal_Modifications.md index c6a0b2a..7aa166d 100644 --- a/Docs/Migration/Journal_Modifications.md +++ b/Docs/Migration/Journal_Modifications.md @@ -874,3 +874,15 @@ posés. Mesure en jeu préparée : | CHG | Date | Lot | Fichiers | Raison | Retour arrière | |---|---|---|---|---|---| | CHG-055 | 2026-10-01 | L7l | `Source/LifePlay/LPSessionLogSubsystem.cpp` : option `-LPDumpDelay` (délai du relevé sur motif) | relever, 4 s après chaque changement de lieu (`test0706 amenity`), le sol du lieu (`Room`), la capsule du joueur et du personnage en interaction ; script `LifePlay_releve_L7l.bat` du build `LifePlay_Build_5.5_L7cdj` | `git checkout L7j2-apres -- Source` | + +Mesures L7l (2026-10-01, `L7l_releve2_20261001.log`) : **tous les lieux sont construits dans le studio** +(acteur unique `Room_C_0` en −3 131 543 ; −14 967 213 ; −115), la ville étant masquée (`StreetMapStatic.bHidden`). Au +centre sportif (échelle Z 0,2) : sol à −105, pieds du joueur à −100 (capsule −12, demi-hauteur 88) : correct. +Échelles verticales déclarées : 81 lieux à 0,2, 5 à 0,3, 1 à 0,4 et les **7 lieux extérieurs à 0,01** (beach, forest, +mountain, park, pool, river, street). Hypothèse : le plafond `WallT` (cube blanc, Z relatif 2 040, sans collision) +suit l'échelle : 4,08 m en intérieur mais **20 cm au-dessus du sol en extérieur**, où il masque tout ce qui est plus bas +(pieds, pieds des meubles) et apparaît comme le « sol » blanc ; les personnages marchent sur le vrai sol, dessous. + +| CHG | Date | Lot | Fichiers | Raison | Retour arrière | +|---|---|---|---|---|---| +| CHG-056 | 2026-10-01 | L7l | `Source/LifePlay/LPSessionLogSubsystem.h/.cpp` : option `-LPDumpEvery=N` (relevé périodique) | confirmer l'hypothèse du plafond par une mesure en extérieur (`LifePlay_releve_L7l.bat`) | `git checkout L7j2-apres -- Source` | diff --git a/Source/LifePlay/LPSessionLogSubsystem.cpp b/Source/LifePlay/LPSessionLogSubsystem.cpp index 067ce8e..7f87712 100644 --- a/Source/LifePlay/LPSessionLogSubsystem.cpp +++ b/Source/LifePlay/LPSessionLogSubsystem.cpp @@ -351,14 +351,33 @@ void ULPSessionLogSubsystem::DumpRequestedVariables(const TCHAR* When) const void ULPSessionLogSubsystem::StartLogTriggeredDump() { + FString Paths; + FParse::Value(FCommandLine::Get(), TEXT("LPDumpPaths="), Paths, false); + Paths.ParseIntoArray(DumpPathList, TEXT(","), true); + + // Lot L7l : releve periodique (-LPDumpEvery=N secondes), sans motif du journal. + float Every = 0.f; + if (FParse::Value(FCommandLine::Get(), TEXT("LPDumpEvery="), Every) && Every > 0.f && DumpPathList.Num() > 0) + { + UE_LOG(LogLifePlay, Display, TEXT("Releve periodique toutes les %.1f s, chemins [%s]"), Every, *Paths); + TWeakObjectPtr WeakSelf(this); + TSharedRef Index = MakeShared(0); + EveryHandle = FTSTicker::GetCoreTicker().AddTicker(FTickerDelegate::CreateLambda([WeakSelf, Index](float) + { + if (const ULPSessionLogSubsystem* Self = WeakSelf.Get()) + { + Self->DumpPaths(++*Index, TEXT("periodique")); + return true; + } + return false; + }), Every); + } + FString Pattern; if (!FParse::Value(FCommandLine::Get(), TEXT("LPDumpOnLog="), Pattern, false) || Pattern.IsEmpty()) { return; } - FString Paths; - FParse::Value(FCommandLine::Get(), TEXT("LPDumpPaths="), Paths, false); - Paths.ParseIntoArray(DumpPathList, TEXT(","), true); int32 Max = 20; FParse::Value(FCommandLine::Get(), TEXT("LPDumpMax="), Max); // Lot L7l : delai avant releve (le lieu se charge en arriere-plan), 1,5 s par defaut. @@ -432,6 +451,11 @@ void ULPSessionLogSubsystem::DumpPaths(int32 Index, const FString& Line) const void ULPSessionLogSubsystem::Deinitialize() { + if (EveryHandle.IsValid()) + { + FTSTicker::GetCoreTicker().RemoveTicker(EveryHandle); + EveryHandle.Reset(); + } if (Trigger.IsValid()) { GLog->RemoveOutputDevice(Trigger.Get()); diff --git a/Source/LifePlay/LPSessionLogSubsystem.h b/Source/LifePlay/LPSessionLogSubsystem.h index 8af0d08..775659f 100644 --- a/Source/LifePlay/LPSessionLogSubsystem.h +++ b/Source/LifePlay/LPSessionLogSubsystem.h @@ -10,6 +10,7 @@ #pragma once #include "CoreMinimal.h" +#include "Containers/Ticker.h" #include "Subsystems/GameInstanceSubsystem.h" #include "LPSessionLogSubsystem.generated.h" @@ -65,5 +66,6 @@ private: TSharedPtr Counter; TSharedPtr Trigger; TArray DumpPathList; + FTSTicker::FDelegateHandle EveryHandle; double StartTime = 0.0; };