Disable Rendering Feature

This commit is contained in:
juaxix 2018-06-01 15:44:15 +02:00 committed by nsubiron
parent 145f956fff
commit c39cc46646
6 changed files with 64 additions and 13 deletions

View File

@ -24,6 +24,9 @@ SynchronousMode=true
; vehicles, pedestrians and traffic signs. Disabled by default to improve
; performance.
SendNonPlayerAgentsInfo=false
; Flag to enable or disable the world rendering.
; Disabled by default.
DisableRendering = false
[CARLA/QualitySettings]
; Quality level of the graphics, a lower level makes the simulation run

View File

@ -127,20 +127,29 @@ void ACarlaGameModeBase::RestartPlayer(AController* NewPlayer)
check(NewPlayer != nullptr);
TArray<APlayerStart *> UnOccupiedStartPoints;
APlayerStart *PlayFromHere = FindUnOccupiedStartPoints(NewPlayer, UnOccupiedStartPoints);
bool bStartSpotFound = false;
if (PlayFromHere != nullptr) {
RestartPlayerAtPlayerStart(NewPlayer, PlayFromHere);
RegisterPlayer(*NewPlayer);
return;
bStartSpotFound = true;
} else if (UnOccupiedStartPoints.Num() > 0u) {
check(GameController != nullptr);
APlayerStart *StartSpot = GameController->ChoosePlayerStart(UnOccupiedStartPoints);
if (StartSpot != nullptr) {
RestartPlayerAtPlayerStart(NewPlayer, StartSpot);
RegisterPlayer(*NewPlayer);
return;
RegisterPlayer(*NewPlayer);
bStartSpotFound = true;
}
}
UE_LOG(LogCarla, Error, TEXT("No start spot found!"));
if(!bStartSpotFound)
{
UE_LOG(LogCarla, Error, TEXT("No start spot found!"));
}
if(CarlaSettingsDelegate!=nullptr)
{
//apply quality settings
CarlaSettingsDelegate->ApplyQualitySettingsLevelPreRestart();
}
}
void ACarlaGameModeBase::BeginPlay()

View File

@ -111,6 +111,7 @@ static void LoadSettingsFromConfig(
}
ConfigFile.GetBool(S_CARLA_SERVER, TEXT("SynchronousMode"), Settings.bSynchronousMode);
ConfigFile.GetBool(S_CARLA_SERVER, TEXT("SendNonPlayerAgentsInfo"), Settings.bSendNonPlayerAgentsInfo);
ConfigFile.GetBool(S_CARLA_SERVER, TEXT("DisableRendering"), Settings.bDisableRendering);
// LevelSettings.
ConfigFile.GetString(S_CARLA_LEVELSETTINGS, TEXT("PlayerVehicle"), Settings.PlayerVehicle);
ConfigFile.GetInt(S_CARLA_LEVELSETTINGS, TEXT("NumberOfVehicles"), Settings.NumberOfVehicles);
@ -187,25 +188,33 @@ void UCarlaSettings::LoadSettings()
// Load settings given by command-line arg if provided.
{
FString FilePath;
if (GetSettingsFilePathFromCommandLine(FilePath)) {
if (GetSettingsFilePathFromCommandLine(FilePath))
{
LoadSettingsFromFile(FilePath, true);
}
}
// Override settings from command-line.
{
if (FParse::Param(FCommandLine::Get(), TEXT("carla-server"))) {
if (FParse::Param(FCommandLine::Get(), TEXT("carla-server")))
{
bUseNetworking = true;
}
uint32 Value;
if (FParse::Value(FCommandLine::Get(), TEXT("-world-port="), Value) ||
FParse::Value(FCommandLine::Get(), TEXT("-carla-port="), Value) ||
FParse::Value(FCommandLine::Get(), TEXT("-carla-world-port="), Value)) {
FParse::Value(FCommandLine::Get(), TEXT("-carla-world-port="), Value))
{
WorldPort = Value;
bUseNetworking = true;
}
if (FParse::Param(FCommandLine::Get(), TEXT("carla-no-networking"))) {
if (FParse::Param(FCommandLine::Get(), TEXT("carla-no-networking")))
{
bUseNetworking = false;
}
if(FParse::Param(FCommandLine::Get(), TEXT("disable-rendering")))
{
bDisableRendering = false;
}
}
}
@ -246,6 +255,7 @@ void UCarlaSettings::LogSettings() const
UE_LOG(LogCarla, Log, TEXT("Server Time-out = %d ms"), ServerTimeOut);
UE_LOG(LogCarla, Log, TEXT("Synchronous Mode = %s"), EnabledDisabled(bSynchronousMode));
UE_LOG(LogCarla, Log, TEXT("Send Non-Player Agents Info = %s"), EnabledDisabled(bSendNonPlayerAgentsInfo));
UE_LOG(LogCarla, Log, TEXT("Disable Render World = %s"), bDisableRendering?TEXT("YES"):TEXT("NO"));
UE_LOG(LogCarla, Log, TEXT("[%s]"), S_CARLA_LEVELSETTINGS);
UE_LOG(LogCarla, Log, TEXT("Player Vehicle = %s"), (PlayerVehicle.IsEmpty() ? TEXT("Default") : *PlayerVehicle));
UE_LOG(LogCarla, Log, TEXT("Number Of Vehicles = %d"), NumberOfVehicles);

View File

@ -149,6 +149,10 @@ public:
UPROPERTY(Category = "CARLA Server", VisibleAnywhere, meta = (EditCondition = bUseNetworking))
bool bSendNonPlayerAgentsInfo = false;
/** Enable or disable the viewport rendering of the world. Disabled by default */
UPROPERTY(Category = "CARLA Server", VisibleAnywhere)
bool bDisableRendering = false;
/// @}
// ===========================================================================
/// @name Level Settings

View File

@ -66,7 +66,7 @@ void UCarlaSettingsDelegate::ApplyQualitySettingsLevelPostRestart()
CheckCarlaSettings(nullptr);
UWorld *InWorld = CarlaSettings->GetWorld();
const EQualitySettingsLevel QualitySettingsLevel = CarlaSettings->GetQualitySettingsLevel();
const EQualitySettingsLevel QualitySettingsLevel = CarlaSettings->GetQualitySettingsLevel();
if(AppliedLowPostResetQualitySettingsLevel==QualitySettingsLevel) return;
switch(QualitySettingsLevel)
@ -97,21 +97,44 @@ void UCarlaSettingsDelegate::ApplyQualitySettingsLevelPostRestart()
break;
default: case EQualitySettingsLevel::Epic:
{
LaunchEpicQualityCommands(InWorld);
LaunchEpicQualityCommands(InWorld);
SetAllLights(InWorld,0.0f,true,false);
SetAllRoads(InWorld, 0, CarlaSettings->EpicRoadMaterials);
SetAllActorsDrawDistance(InWorld, 0);
SetPostProcessEffectsEnabled(InWorld,true);
}
break;
break;
}
AppliedLowPostResetQualitySettingsLevel = QualitySettingsLevel;
}
void UCarlaSettingsDelegate::ApplyQualitySettingsLevelPreRestart()
{
//CheckCarlaSettings(nullptr);
/** apply any change in the global config */
CheckCarlaSettings(nullptr);
UWorld *InWorld = CarlaSettings->GetWorld();
if(!IsValid(InWorld)||InWorld->IsPendingKill()) return;
//enable or disable world and hud rendering
APlayerController* playercontroller = UGameplayStatics::GetPlayerController(InWorld,0);
if(playercontroller)
{
ULocalPlayer* player = playercontroller->GetLocalPlayer();
if(player)
{
player->ViewportClient->bDisableWorldRendering = CarlaSettings->bDisableRendering;
}
//if we already have a hud class:
AHUD* hud = playercontroller->GetHUD();
if(hud)
{
hud->bShowHUD = !CarlaSettings->bDisableRendering;
}
//toggle hud: @TODO: find a better solution
/*if(CarlaSettings->bDisableRendering)
{
GEngine->Exec(InWorld,TEXT("showhud"));
}*/
}
}
UWorld* UCarlaSettingsDelegate::GetLocalWorld()

View File

@ -49,6 +49,8 @@ void ACarlaVehicleController::Possess(APawn *aPawn)
CarlaHUD = Cast<ACarlaHUD>(GetHUD());
if (CarlaHUD != nullptr) {
InputComponent->BindAction("ToggleHUD", IE_Pressed, CarlaHUD, &ACarlaHUD::ToggleHUDView);
CarlaHUD->bShowHUD = !(Cast<UCarlaGameInstance>(GetWorld()->GetGameInstance())->GetCarlaSettings().bDisableRendering);
CarlaHUD->SetVisible(CarlaHUD->bShowHUD);
} else {
UE_LOG(LogCarla, Warning, TEXT("Current HUD is not a ACarlaHUD"));
}