// 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; };