#pragma once #include "CoreMinimal.h" #include "Debug/DescentImageStats.h" /** * A screenshot of the game window WITH the Slate UI in it. The harness's own `Descent.Shot` asks for bShowUI = false * (it must never show the HUD in the look tests), so the UI scenarios use this instead. Same output: Saved/Shots/.png * and the sidecar .json with the luma numbers. */ namespace Descent::Ui { struct FUiShotResult { bool bOk = false; FString Path; FIntPoint Size = FIntPoint::ZeroValue; FDescentLumaStats Stats; FString Error; }; /** Asks the engine for the frame. Done is always called (on a later frame), also on failure. One request at a time. */ THEDESCENT_API bool RequestUiShot(const FString& Stem, TFunction Done); THEDESCENT_API bool IsUiShotPending(); }