Fixed atlas recreation after sensor deletion

This commit is contained in:
doterop 2020-07-29 19:47:52 +02:00 committed by bernat
parent 04b9086add
commit ac76cbb71a
1 changed files with 12 additions and 3 deletions

View File

@ -73,12 +73,21 @@ void ACarlaGameModeBase::RemoveSceneCaptureSensor(ASceneCaptureSensor* SceneCapt
SceneCaptureSensors.Remove(SceneCaptureSensor);
// Recalculate PositionInAtlas for each camera
CurrentAtlasTextureHeight = 0;
AtlasTextureWidth = 0u;
for(ASceneCaptureSensor* Camera : SceneCaptureSensors)
{
Camera->PositionInAtlas = FIntVector(0, CurrentAtlasTextureHeight, 0);
CurrentAtlasTextureHeight += Camera->ImageHeight;
if(AtlasTextureWidth < Camera->ImageWidth)
{
AtlasTextureWidth = ImageWidth;
}
}
AtlasTextureHeight = CurrentAtlasTextureHeight;
IsAtlasTextureValid = false;
}
void ACarlaGameModeBase::InitGame(
@ -382,9 +391,9 @@ void ACarlaGameModeBase::CreateAtlasTextures()
{
FRHIResourceCreateInfo CreateInfo;
CamerasAtlasTexture = RHICreateTexture2D(AtlasTextureWidth, AtlasTextureHeight, PF_B8G8R8A8, 1, 1, TexCreate_CPUReadback, CreateInfo);
AtlasImage.Init(FColor(), AtlasTextureWidth * AtlasTextureHeight);
IsAtlasTextureValid = true;
}
}