ACFOWSpawner is the main actor to place in a level for fog of war. It inherits from ACAbstractSpawner and implements ICFOWData. It reads its configuration from a DataTable row, finds the level’s APostProcessVolume, instantiates UCFOWMaker and drives the fog loop on tick.
Properties
Name
Description
pawnToTrack
Pawn whose location drives fog computation. If null, generates at origin then stops
fowMakerRH
FDataTableRowHandle pointing to a FCFOWMakerStruct row
fowMaker
Transient reference to the instantiated UCFOWMaker
postProcessVolume
Transient reference to the first APostProcessVolume found in the level
Lifecycle
Name
Description
init
Finds the PostProcessVolume, reads the DataTable row, instantiates UCFOWMaker
Tick
Calls fowMaker->buildASync with the tracked pawn position. Stops ticking if no pawn and fog is built
clean
Destroys the fog maker and its resources
storeSpawnerSingleton
Registers the spawner as CNAME_Singleton_FOWSpawner
// ACFOWSpawner is placed in the level.
// Configure fowMakerRH to point to a DataTable row of type FCFOWMakerStruct.
// Assign pawnToTrack to the player pawn.
// init() is called by the spawner system (ACAbstractSpawner).
// It retrieves the PostProcessVolume and instantiates UCFOWMaker:
UCFOWMaker::instanciate(GetRootComponent(), fowMaker, stream, *data, postProcessVolume);
// On Tick, the spawner delegates to the fog maker:
fowMaker->buildASync(this,
pawnToTrack->GetActorLocation().X,
pawnToTrack->GetActorLocation().Y);
// If no pawn is assigned, fog builds once at (0,0) then tick stops:
if (fowMaker->isBuilt()) {
SetActorTickEnabled(false);
}
ICFOWData interface
ACFOWSpawner implements ICFOWData, providing fog data access to other systems.
Name
Description
currentFOWData
Returns the current cluster, view render target and revealed render target
setMinimapZDistance
Forwards the minimap Z distance to the fog maker material
// Other systems can query fog data via the ICFOWData interface:
FCRectangle* cluster;
UTextureRenderTarget2D* rtView;
UTextureRenderTarget2D* rtRevealed;
if (fowSpawner->currentFOWData(cluster, rtView, rtRevealed)) {
// cluster, rtView and rtRevealed are valid
}
// Set minimap distance parameter on the fog material:
fowSpawner->setMinimapZDistance(5000.0f);