EM_Task/TraceInsights/Private/Insights/InsightsSettings.h
Boshuang Zhao 5144a49c9b add
2026-02-13 16:18:33 +08:00

88 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Misc/ConfigCacheIni.h"
/** Contains all settings for the Unreal Insights, accessible through the main manager. */
class FInsightsSettings
{
public:
FInsightsSettings(bool bInIsDefault = false)
: bIsEditing(false), bIsDefault(bInIsDefault), bShowEmptyTracksByDefault(false)
{
if (!bIsDefault)
{
LoadFromConfig();
}
}
~FInsightsSettings()
{
if (!bIsDefault)
{
SaveToConfig();
}
}
void LoadFromConfig()
{
FConfigCacheIni::LoadGlobalIniFile(SettingsIni, TEXT("UnrealInsightsSettings"));
GConfig->GetBool(TEXT("Insights.TimingProfiler"), TEXT("bShowEmptyTracksByDefault"), bShowEmptyTracksByDefault, SettingsIni);
}
void SaveToConfig()
{
GConfig->SetBool(TEXT("Insights.TimingProfiler"), TEXT("bShowEmptyTracksByDefault"), bShowEmptyTracksByDefault, SettingsIni);
GConfig->Flush(false, SettingsIni);
}
void EnterEditMode()
{
bIsEditing = true;
}
void ExitEditMode()
{
bIsEditing = false;
}
const bool IsEditing() const
{
return bIsEditing;
}
const FInsightsSettings& GetDefaults() const
{
return Defaults;
}
void ResetToDefaults()
{
bShowEmptyTracksByDefault = Defaults.bShowEmptyTracksByDefault;
}
// protected:
public:
/** Contains default settings. */
static FInsightsSettings Defaults;
/** Setting filename ini. */
FString SettingsIni;
/** Whether profiler settings is in edit mode. */
bool bIsEditing;
/** Whether this instance contains defaults. */
bool bIsDefault;
//////////////////////////////////////////////////
// Actual settings.
/** If True, the Timing View will show empty tracks by default. */
bool bShowEmptyTracksByDefault;
};