Skip to content

Commit

Permalink
Minor fixes to non-rendering mode
Browse files Browse the repository at this point in the history
  • Loading branch information
nsubiron committed Sep 6, 2018
1 parent 662fc32 commit a1684ad
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 46 deletions.
6 changes: 3 additions & 3 deletions Docs/Example.CarlaSettings.ini
Expand Up @@ -24,9 +24,9 @@ SynchronousMode=true
; vehicles, pedestrians and traffic signs. Disabled by default to improve
; performance.
SendNonPlayerAgentsInfo=false
; Flag to enable or disable the world and hud rendering.
; Disabled by default.
DisableRendering = false
; If set to true, all cameras and HUD will stop rendering. By default rendering
; is enabled.
DisableRendering=false

[CARLA/QualitySettings]
; Quality level of the graphics, a lower level makes the simulation run
Expand Down
2 changes: 1 addition & 1 deletion PythonClient/carla/settings.py
Expand Up @@ -96,7 +96,7 @@ def add_section(section, obj, keys):
add_section(S_SERVER, self, [
'SynchronousMode',
'SendNonPlayerAgentsInfo',
'DisableRendering'])
'DisableRendering'])
add_section(S_QUALITY, self, [
'QualityLevel'])
add_section(S_LEVEL, self, [
Expand Down
111 changes: 74 additions & 37 deletions Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Game/CarlaGameModeBase.cpp
Expand Up @@ -81,45 +81,55 @@ void ACarlaGameModeBase::InitGame(
}

// Set default pawn class.
if (!CarlaSettings.PlayerVehicle.IsEmpty()) {
if (!CarlaSettings.PlayerVehicle.IsEmpty())
{
auto Class = FindObject<UClass>(ANY_PACKAGE, *CarlaSettings.PlayerVehicle);
if (Class) {
if (Class)
{
DefaultPawnClass = Class;
} else {
}
else
{
UE_LOG(LogCarla, Error, TEXT("Failed to load player pawn class \"%s\""), *CarlaSettings.PlayerVehicle)
}
}

if (TaggerDelegate != nullptr) {
if (TaggerDelegate != nullptr)
{
TaggerDelegate->RegisterSpawnHandler(world);
} else {
}
else
{
UE_LOG(LogCarla, Error, TEXT("Missing TaggerDelegate!"));
}

if(CarlaSettingsDelegate!=nullptr) {
if(CarlaSettingsDelegate!=nullptr)
{
//apply quality settings
CarlaSettingsDelegate->ApplyQualitySettingsLevelPostRestart();
//assign settings delegate for every new actor from now on
CarlaSettingsDelegate->RegisterSpawnHandler(world);

} else {
}
else
{
UE_LOG(LogCarla, Error, TEXT("Missing CarlaSettingsDelegate!"));
}

if (DynamicWeatherClass != nullptr) {
if (DynamicWeatherClass != nullptr)
{
DynamicWeather = world->SpawnActor<ADynamicWeather>(DynamicWeatherClass);
}

if (VehicleSpawnerClass != nullptr) {
if (VehicleSpawnerClass != nullptr)
{
VehicleSpawner = world->SpawnActor<AVehicleSpawnerBase>(VehicleSpawnerClass);
}

if (WalkerSpawnerClass != nullptr) {
if (WalkerSpawnerClass != nullptr)
{
WalkerSpawner = world->SpawnActor<AWalkerSpawnerBase>(WalkerSpawnerClass);
}



}

void ACarlaGameModeBase::RestartPlayer(AController* NewPlayer)
Expand All @@ -128,26 +138,29 @@ void ACarlaGameModeBase::RestartPlayer(AController* NewPlayer)
TArray<APlayerStart *> UnOccupiedStartPoints;
APlayerStart *PlayFromHere = FindUnOccupiedStartPoints(NewPlayer, UnOccupiedStartPoints);
bool bStartSpotFound = false;
if (PlayFromHere != nullptr) {
if (PlayFromHere != nullptr)
{
RestartPlayerAtPlayerStart(NewPlayer, PlayFromHere);
RegisterPlayer(*NewPlayer);
bStartSpotFound = true;
} else if (UnOccupiedStartPoints.Num() > 0u) {
}
else if (UnOccupiedStartPoints.Num() > 0u)
{
check(GameController != nullptr);
APlayerStart *StartSpot = GameController->ChoosePlayerStart(UnOccupiedStartPoints);
if (StartSpot != nullptr) {
if (StartSpot != nullptr)
{
RestartPlayerAtPlayerStart(NewPlayer, StartSpot);
RegisterPlayer(*NewPlayer);
RegisterPlayer(*NewPlayer);
bStartSpotFound = true;
}
}
if(!bStartSpotFound)
{
UE_LOG(LogCarla, Error, TEXT("No start spot found!"));
}
if(CarlaSettingsDelegate!=nullptr)
if(CarlaSettingsDelegate != nullptr)
{
//apply quality settings
CarlaSettingsDelegate->ApplyQualitySettingsLevelPreRestart();
}
}
Expand All @@ -159,51 +172,66 @@ void ACarlaGameModeBase::BeginPlay()
const auto &CarlaSettings = GameInstance->GetCarlaSettings();

// Setup semantic segmentation if necessary.
if (CarlaSettings.bSemanticSegmentationEnabled) {
if (CarlaSettings.bSemanticSegmentationEnabled)
{
TagActorsForSemanticSegmentation();
TaggerDelegate->SetSemanticSegmentationEnabled();
}

// Change weather.
if (DynamicWeather != nullptr) {
if (DynamicWeather != nullptr)
{
const auto *Weather = CarlaSettings.GetActiveWeatherDescription();
if (Weather != nullptr) {
if (Weather != nullptr)
{
UE_LOG(LogCarla, Log, TEXT("Changing weather settings to \"%s\""), *Weather->Name);
DynamicWeather->SetWeatherDescription(*Weather);
DynamicWeather->RefreshWeather();
}
} else {
}
else
{
UE_LOG(LogCarla, Error, TEXT("Missing dynamic weather actor!"));
}

// Find road map.
TActorIterator<ACityMapGenerator> It(GetWorld());
URoadMap *RoadMap = (It ? It->GetRoadMap() : nullptr);

if (PlayerController != nullptr) {
if (PlayerController != nullptr)
{
PlayerController->SetRoadMap(RoadMap);
} else {
}
else
{
UE_LOG(LogCarla, Error, TEXT("Player controller is not a AWheeledVehicleAIController!"));
}

// Setup other vehicles.
if (VehicleSpawner != nullptr) {
if (VehicleSpawner != nullptr)
{
VehicleSpawner->SetNumberOfVehicles(CarlaSettings.NumberOfVehicles);
VehicleSpawner->SetSeed(CarlaSettings.SeedVehicles);
VehicleSpawner->SetRoadMap(RoadMap);
if (PlayerController != nullptr) {
if (PlayerController != nullptr)
{
PlayerController->GetRandomEngine()->Seed(
VehicleSpawner->GetRandomEngine()->GenerateSeed());
}
} else {
}
else
{
UE_LOG(LogCarla, Error, TEXT("Missing vehicle spawner actor!"));
}

// Setup walkers.
if (WalkerSpawner != nullptr) {
if (WalkerSpawner != nullptr)
{
WalkerSpawner->SetNumberOfWalkers(CarlaSettings.NumberOfPedestrians);
WalkerSpawner->SetSeed(CarlaSettings.SeedPedestrians);
} else {
}
else
{
UE_LOG(LogCarla, Error, TEXT("Missing walker spawner actor!"));
}

Expand All @@ -230,11 +258,14 @@ void ACarlaGameModeBase::RegisterPlayer(AController &NewPlayer)
check(GameController != nullptr);
AddTickPrerequisiteActor(&NewPlayer);
PlayerController = Cast<ACarlaVehicleController>(&NewPlayer);
if (PlayerController != nullptr) {
if (PlayerController != nullptr)
{
GetDataRouter().RegisterPlayer(*PlayerController);
GameController->RegisterPlayer(*PlayerController);
AttachSensorsToPlayer();
} else {
}
else
{
UE_LOG(LogCarla, Error, TEXT("ACarlaGameModeBase: Player is not a ACarlaVehicleController"));
}
}
Expand Down Expand Up @@ -273,20 +304,26 @@ APlayerStart *ACarlaGameModeBase::FindUnOccupiedStartPoints(
APlayerStart* FoundPlayerStart = nullptr;
UClass* PawnClass = GetDefaultPawnClassForController(Player);
APawn* PawnToFit = PawnClass ? PawnClass->GetDefaultObject<APawn>() : nullptr;
for (TActorIterator<APlayerStart> It(GetWorld()); It; ++It) {
for (TActorIterator<APlayerStart> It(GetWorld()); It; ++It)
{
APlayerStart* PlayerStart = *It;

if (PlayerStart->IsA<APlayerStartPIE>()) {
if (PlayerStart->IsA<APlayerStartPIE>())
{
FoundPlayerStart = PlayerStart;
break;
} else {
}
else
{
FVector ActorLocation = PlayerStart->GetActorLocation();
const FRotator ActorRotation = PlayerStart->GetActorRotation();
if (!GetWorld()->EncroachingBlockingGeometry(PawnToFit, ActorLocation, ActorRotation)) {
if (!GetWorld()->EncroachingBlockingGeometry(PawnToFit, ActorLocation, ActorRotation))
{
UnOccupiedStartPoints.Add(PlayerStart);
}
#if WITH_EDITOR
else if (GetWorld()->FindTeleportSpot(PawnToFit, ActorLocation, ActorRotation)) {
else if (GetWorld()->FindTeleportSpot(PawnToFit, ActorLocation, ActorRotation))
{
UE_LOG(
LogCarla,
Warning,
Expand Down
Expand Up @@ -211,10 +211,6 @@ void UCarlaSettings::LoadSettings()
{
bUseNetworking = false;
}
if(FParse::Param(FCommandLine::Get(), TEXT("disable-rendering")))
{
bDisableRendering = true;
}
}
}

Expand Down Expand Up @@ -255,7 +251,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("Rendering = %s"), EnabledDisabled(!bDisableRendering));
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);
Expand Down

0 comments on commit a1684ad

Please sign in to comment.