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 <noreply@anthropic.com>
This commit is contained in:
edujiro5972 2026-10-01 23:26:32 +02:00
parent e941eab01c
commit 026bddf554
3 changed files with 41 additions and 3 deletions

View file

@ -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` |

View file

@ -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<ULPSessionLogSubsystem> WeakSelf(this);
TSharedRef<int32> Index = MakeShared<int32>(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());

View file

@ -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<FLPLogCounter> Counter;
TSharedPtr<class FLPLogTrigger> Trigger;
TArray<FString> DumpPathList;
FTSTicker::FDelegateHandle EveryHandle;
double StartTime = 0.0;
};