12#include "CommandLine.h"
13#include "Engine/DirectionalLight.h"
14#include "Engine/Engine.h"
15#include "Engine/PointLight.h"
16#include "Engine/PostProcessVolume.h"
17#include "Engine/StaticMesh.h"
18#include "Kismet/GameplayStatics.h"
19#include "Materials/MaterialInstance.h"
21#include "UnrealMathUtility.h"
24#define S_CARLA_SERVER TEXT("CARLA/Server")
25#define S_CARLA_QUALITYSETTINGS TEXT("CARLA/QualitySettings")
42 const FString &SQualitySettingsLevel,
46 if (SQualitySettingsLevel.Equals(
"Low"))
51 if (SQualitySettingsLevel.Equals(
"Epic"))
64 const UEnum *ptr = FindObject<UEnum>(ANY_PACKAGE, TEXT(
"EQualityLevel"),
true);
68 return FString(
"Invalid");
72 return ptr->GetNameStringByIndex(
static_cast<int32
>(QualitySettingsLevel));
78 const bool bLoadCarlaServerSection)
81 if (bLoadCarlaServerSection)
97 FString sQualityLevel;
104 if (FParse::Value(FCommandLine::Get(), TEXT(
"-carla-settings="), Value))
106 if (FPaths::IsRelative(Value))
108 Value = FPaths::ConvertRelativePathToFull(FPaths::LaunchDir(), Value);
123 LoadSettingsFromFile(FPaths::Combine(FPaths::ProjectConfigDir(), TEXT(
"CarlaSettings.ini")),
false);
135 if (FParse::Value(FCommandLine::Get(), TEXT(
"-world-port="), Value) ||
136 FParse::Value(FCommandLine::Get(), TEXT(
"-carla-port="), Value) ||
137 FParse::Value(FCommandLine::Get(), TEXT(
"-carla-rpc-port="), Value) ||
138 FParse::Value(FCommandLine::Get(), TEXT(
"-carla-world-port="), Value))
145 if (FParse::Value(FCommandLine::Get(), TEXT(
"-carla-streaming-port="), Value))
149 if (FParse::Value(FCommandLine::Get(), TEXT(
"-carla-secondary-port="), Value))
154 if (FParse::Value(FCommandLine::Get(), TEXT(
"-carla-primary-host="), Tmp))
158 if (FParse::Value(FCommandLine::Get(), TEXT(
"-carla-primary-port="), Value))
162 FString StringQualityLevel;
163 if (FParse::Value(FCommandLine::Get(), TEXT(
"-quality-level="), StringQualityLevel))
167 if (FParse::Param(FCommandLine::Get(), TEXT(
"-no-rendering")))
171 if (FParse::Param(FCommandLine::Get(), TEXT(
"-ros2")))
182 UE_LOG(LogCarla, Log, TEXT(
"Loading CARLA settings from string"));
188 constexpr bool bLoadCarlaServerSection =
false;
198 auto EnabledDisabled = [](
bool bValue) {
return (bValue ? TEXT(
"Enabled") : TEXT(
"Disabled")); };
200 TEXT(
"== CARLA Settings =============================================================="));
211 TEXT(
"================================================================================"));
214#undef S_CARLA_QUALITYSETTINGS
219 if (FPaths::FileExists(FilePath))
222 UE_LOG(LogCarla, Log, TEXT(
"Loading CARLA settings from \"%s\""), *FilePath);
224 const FIniFile ConfigFile(FilePath);
226 constexpr bool bLoadCarlaServerSection =
true;
232 else if (bLogOnFailure)
235 UE_LOG(LogCarla, Error, TEXT(
"Unable to find settings file \"%s\""), *FilePath);
UE_LOG(LogCarla, Log, TEXT("UActorDispatcher::Destroying actor: '%s' %x"), *Id, Actor)
static bool GetSettingsFilePathFromCommandLine(FString &Value)
#define S_CARLA_QUALITYSETTINGS
static void LoadSettingsFromConfig(const FIniFile &ConfigFile, UCarlaSettings &Settings, const bool bLoadCarlaServerSection)
static EQualityLevel QualityLevelFromString(const FString &SQualitySettingsLevel, const EQualityLevel Default=EQualityLevel::INVALID)
FString QualityLevelToString(EQualityLevel QualitySettingsLevel)
void ProcessInputFileContents(const FString &INIFileContents)
void GetBool(const TCHAR *Section, const TCHAR *Key, bool &Target) const
void GetString(const TCHAR *Section, const TCHAR *Key, FString &Target) const
void GetInt(const TCHAR *Section, const TCHAR *Key, T &Target) const
uint32 StreamingPort
流媒体端口的设置。
void LoadSettings()
根据命令行参数和 INI 文件(如果提供)加载设置。
std::string PrimaryIP
设置要连接的主服务器的IP和端口。
bool bDisableRendering
启用或禁用世界的视窗渲染。默认情况下禁用。
uint32 RPCPort
用于监听客户端连接的世界端口。
static const FName CARLA_SKY_TAG
CARLA_SKY 名称用于标记场景中的天空球(sky sphere, BPS)参与者。
FString CurrentFileName
用于加载此设置的设置文件的文件名。如果没有使用则为空。
void SetQualityLevel(EQualityLevel InQualityLevel)
设置新的质量设置级别并在游戏中进行与之相关的更改。
void LoadSettingsFromFile(const FString &FilePath, bool bLogOnFailure)
bool bSynchronousMode
在同步模式下,CARLA 会等待每个节拍信号,直到收到来自客户端的控制。
void LogSettings() const
记录设置值。
static const FName CARLA_ROAD_TAG
CARLA_ROAD 名称用于标记道路网格参与者。
EQualityLevel QualityLevel
画质设置等级
uint32 SecondaryPort
辅助服务器端口的设置。
void LoadSettingsFromString(const FString &INIFileContents)
从给定的字符串(格式为 INI)加载设置。CarlaServer 部分被忽略。