Disable Rendering Feature
This commit is contained in:
parent
145f956fff
commit
c39cc46646
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue