LifePlay-Revival/Source/LifePlay/LPDebugSubsystem.h
edujiro5972 b8414af456 Dbg : outillage de debug (BuildDebug, LPDebugSubsystem, lanceurs, événements LoadTxt / LPDataCache), documents 18 et 19
Phase Dbg (CHG-114, 117, 118).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 15:49:01 +02:00

52 lines
1.7 KiB
C++

// Portage UE 5.5 - lot debug (Docs/Migration/18_Build_Debug.md).
//
// Mesure opt-in, absente du comportement Shipping : journal des a-coups, signets Insights,
// instantane memoire, releve de collisions. Aucun Blueprint modifie.
// Inactif tant que -LPHitchLog ou -LPCollisionLog n'est pas passe.
// -LPCollisionLog echantillonne la collision du monde joue (pas au ExecCmds de demarrage)
// et ecrit un dump des qu'un trimesh est present, avec le nombre de triangles par acteur.
// Commandes console (non-Shipping) : LifePlay.MemSnapshot, LifePlay.CollisionDump,
// LifePlay.Bookmark, LifePlay.HitchSummary.
#pragma once
#include "CoreMinimal.h"
#include "Subsystems/GameInstanceSubsystem.h"
#include "LPDebugSubsystem.generated.h"
UCLASS()
class LIFEPLAY_API ULPDebugSubsystem : public UGameInstanceSubsystem
{
GENERATED_BODY()
public:
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
virtual void Deinitialize() override;
/** Bilan des a-coups. When : "2 min", "fin" ou "console". */
void LogHitchSummary(const TCHAR* When) const;
private:
void OnEndFrame();
void SampleCollision();
void LogCollisionSummary(const TCHAR* When) const;
bool bHitchLog = false;
float HitchMs = 50.f;
int32 HitchCount = 0;
int32 HitchLines = 0;
double MaxHitchMs = 0.0;
double StartSeconds = 0.0;
double LastFrameSeconds = 0.0;
bool bLoggedTwoMinuteSummary = false;
bool bCollisionLog = false;
double NextCollisionSeconds = 0.0;
int32 CollisionSamples = 0;
int32 CollisionDumps = 0;
int32 PeakPrim = 0;
int64 PeakTriangles = 0;
int64 LastDumpedTriangles = -1;
int32 LastDumpedTriMeshes = -1;
FString CollisionTrackPath;
};