diff --git a/Source/Carla/Game/CarlaGameModeBase.cpp b/Source/Carla/Game/CarlaGameModeBase.cpp index 988ab62e6..b261e827d 100644 --- a/Source/Carla/Game/CarlaGameModeBase.cpp +++ b/Source/Carla/Game/CarlaGameModeBase.cpp @@ -159,9 +159,8 @@ void ACarlaGameModeBase::BeginPlay() TActorIterator It(GetWorld()); URoadMap *RoadMap = (It ? It->GetRoadMap() : nullptr); - auto Controller = Cast(PlayerController); - if (Controller != nullptr) { - Controller->SetRoadMap(RoadMap); + if (PlayerController != nullptr) { + PlayerController->SetRoadMap(RoadMap); } else { UE_LOG(LogCarla, Error, TEXT("Player controller is not a AWheeledVehicleAIController!")); } @@ -171,6 +170,9 @@ void ACarlaGameModeBase::BeginPlay() VehicleSpawner->SetNumberOfVehicles(CarlaSettings.NumberOfVehicles); VehicleSpawner->SetSeed(CarlaSettings.SeedVehicles); VehicleSpawner->SetRoadMap(RoadMap); + if (PlayerController != nullptr) { + PlayerController->SetRandomEngine(VehicleSpawner->GetRandomEngine()); + } } else { UE_LOG(LogCarla, Error, TEXT("Missing vehicle spawner actor!")); } @@ -197,14 +199,13 @@ void ACarlaGameModeBase::RegisterPlayer(AController &NewPlayer) check(GameController != nullptr); AddTickPrerequisiteActor(&NewPlayer); GameController->RegisterPlayer(NewPlayer); - PlayerController = &NewPlayer; - AttachCaptureCamerasToPlayer(*PlayerController); + PlayerController = Cast(&NewPlayer); + AttachCaptureCamerasToPlayer(); } -void ACarlaGameModeBase::AttachCaptureCamerasToPlayer(AController &Player) +void ACarlaGameModeBase::AttachCaptureCamerasToPlayer() { - ACarlaVehicleController *Vehicle = Cast(&Player); - if (Vehicle == nullptr) { + if (PlayerController == nullptr) { UE_LOG(LogCarla, Warning, TEXT("Trying to add capture cameras but player is not a ACarlaVehicleController")); return; } @@ -215,7 +216,7 @@ void ACarlaGameModeBase::AttachCaptureCamerasToPlayer(AController &Player) OverridePostProcessParameters = &Weather->CameraPostProcessParameters; } for (const auto &Item : Settings.CameraDescriptions) { - Vehicle->AddSceneCaptureCamera(Item.Value, OverridePostProcessParameters); + PlayerController->AddSceneCaptureCamera(Item.Value, OverridePostProcessParameters); } } diff --git a/Source/Carla/Game/CarlaGameModeBase.h b/Source/Carla/Game/CarlaGameModeBase.h index bb7788688..60f310f12 100644 --- a/Source/Carla/Game/CarlaGameModeBase.h +++ b/Source/Carla/Game/CarlaGameModeBase.h @@ -10,6 +10,7 @@ #include "MockGameControllerSettings.h" #include "CarlaGameModeBase.generated.h" +class ACarlaVehicleController; class APlayerStart; class ASceneCaptureCamera; class UTaggerDelegate; @@ -56,7 +57,7 @@ private: void RegisterPlayer(AController &NewPlayer); - void AttachCaptureCamerasToPlayer(AController &Player); + void AttachCaptureCamerasToPlayer(); void TagActorsForSemanticSegmentation(); @@ -74,7 +75,7 @@ private: UCarlaGameInstance *GameInstance; UPROPERTY() - AController *PlayerController; + ACarlaVehicleController *PlayerController; UPROPERTY() UTaggerDelegate *TaggerDelegate;