Files
gig-line/Game/GigLine/Source/GigLine/GigLineShotActor.h
T
zwitschi bbb3e147b3 tools: visual-review screenshot pipeline
- AGigLineShotActor (dev-only): walks a fixed camera list in -game mode,
  captures via FScreenshotRequest, quits. Test content only.
- ue_build_review_map.py builds /Game/Test/ReviewMap from current content
  (gray floor, key light, sky, MPFB character, 1 m scale cubes).
- render_screenshots.sh: build map -> run game -> collect PNGs into
  gitignored Screenshots/.
- Screenshots/README.md (committed) describes each capture with approval
  state; AGENTS.md gains the visual-review instructions.
2026-11-07 09:52:10 +01:00

61 lines
1.7 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "GigLineShotActor.generated.h"
/**
* Dev-only helper for the visual-review screenshot pipeline.
*
* Placed in the review map by Tools/ue_build_review_map.py. In -game mode it
* walks a fixed list of camera setups, sets the view target to a spawned
* CameraActor for each, requests a screenshot via FScreenshotRequest, and
* quits the game when all shots are written. Lives in test content only;
* the shipped game never references this map.
*/
UCLASS()
class GIGLINE_API AGigLineShotActor : public AActor
{
GENERATED_BODY()
public:
AGigLineShotActor();
virtual void BeginPlay() override;
virtual void Tick(float DeltaSeconds) override;
/** World-space locations for each shot camera. */
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FVector> ShotLocations;
/** Rotations for each shot camera (same index as ShotLocations). */
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FRotator> ShotRotations;
/** File name fragment for each shot (same index as ShotLocations). */
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FString> ShotNames;
/** Seconds to let the view target settle before the capture. Resolution comes from the runner's -ResX/-ResY. */
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float SettleSeconds = 0.35f;
/** Quit the game after the last shot (disable to keep the game open). */
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bQuitWhenDone = true;
private:
void NextShot();
UPROPERTY()
TObjectPtr<class APlayerController> PlayerController;
UPROPERTY()
TObjectPtr<class ACameraActor> CurrentCamera;
int32 CurrentShot = 0;
float SettleCountdown = 0.f;
bool bWaitingForSettle = false;
bool bWaitingForScreenshot = false;
};