// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "Engine/RuntimeOptionsBase.h"
#include "UObject/UObjectGlobals.h"

#include "LyraRuntimeOptions.generated.h"

class UObject;
struct FFrame;

/**
 * ULyraRuntimeOptions: Supports checking at runtime whether features are enabled/disabled, changing
 * configuration parameters, console cheats, startup commands.
 *
 * Add a new Property that *defaults* (either naturally or in the constructor) to the desired
 * normal state. (e.g. bDisableSomething). If you ever need to suddenly disable that thing in the
 * live game, you'll be able to.
 *
 * For testing you can run with -ro.bDisableSomething=true to override the defaults. This is only
 * available in non-shipping builds.
 *
 * Variables are registered with the console under the 'ro' namespace. E.g. ro.bDisableSomething
 */
UCLASS(config = RuntimeOptions, BlueprintType)
class LYRAGAME_API ULyraRuntimeOptions : public URuntimeOptionsBase
{
	GENERATED_BODY()

public:
	static const ULyraRuntimeOptions& Get();

	ULyraRuntimeOptions();

	UFUNCTION(BlueprintPure, Category = Options)
	static ULyraRuntimeOptions* GetRuntimeOptions();
};