RealtimeStyleTransferRuntime/Source/LyraGame/UI/PerformanceStats/LyraPerfStatContainerBase.cpp

66 lines
2.1 KiB
C++
Raw Normal View History

2022-05-23 18:41:30 +00:00
// Copyright Epic Games, Inc. All Rights Reserved.
#include "LyraPerfStatContainerBase.h"
#include "Settings/LyraSettingsLocal.h"
#include "LyraPerfStatWidgetBase.h"
#include "Blueprint/WidgetTree.h"
//////////////////////////////////////////////////////////////////////
// ULyraPerfStatsContainerBase
ULyraPerfStatContainerBase::ULyraPerfStatContainerBase(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
void ULyraPerfStatContainerBase::NativeConstruct()
{
Super::NativeConstruct();
UpdateVisibilityOfChildren();
ULyraSettingsLocal::Get()->OnPerfStatDisplayStateChanged().AddUObject(this, &ThisClass::UpdateVisibilityOfChildren);
}
void ULyraPerfStatContainerBase::NativeDestruct()
{
ULyraSettingsLocal::Get()->OnPerfStatDisplayStateChanged().RemoveAll(this);
Super::NativeDestruct();
}
void ULyraPerfStatContainerBase::UpdateVisibilityOfChildren()
{
ULyraSettingsLocal* UserSettings = ULyraSettingsLocal::Get();
const bool bShowTextWidgets = (StatDisplayModeFilter == ELyraStatDisplayMode::TextOnly) || (StatDisplayModeFilter == ELyraStatDisplayMode::TextAndGraph);
const bool bShowGraphWidgets = (StatDisplayModeFilter == ELyraStatDisplayMode::GraphOnly) || (StatDisplayModeFilter == ELyraStatDisplayMode::TextAndGraph);
check(WidgetTree);
WidgetTree->ForEachWidget([&](UWidget* Widget)
{
if (ULyraPerfStatWidgetBase* TypedWidget = Cast<ULyraPerfStatWidgetBase>(Widget))
{
const ELyraStatDisplayMode SettingMode = UserSettings->GetPerfStatDisplayState(TypedWidget->GetStatToDisplay());
bool bShowWidget = false;
switch (SettingMode)
{
case ELyraStatDisplayMode::Hidden:
bShowWidget = false;
break;
case ELyraStatDisplayMode::TextOnly:
bShowWidget = bShowTextWidgets;
break;
case ELyraStatDisplayMode::GraphOnly:
bShowWidget = bShowGraphWidgets;
break;
case ELyraStatDisplayMode::TextAndGraph:
bShowWidget = bShowTextWidgets || bShowGraphWidgets;
break;
}
TypedWidget->SetVisibility(bShowWidget ? ESlateVisibility::HitTestInvisible : ESlateVisibility::Collapsed);
}
});
}