From c004432c39a55866931f01f1c4e766eb88eb58ec Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 25 Feb 2019 11:00:46 +0100 Subject: [PATCH] Improved OpenDriveActor - Now it keeps track of signs and lights - Now it despawns signs and lights on "Remove Route" --- .../Test_ToolRoadRunner.xodr | 2897 +++++++++++++++++ .../Carla/Source/Carla/OpenDriveActor.cpp | 19 + .../Carla/Source/Carla/OpenDriveActor.h | 6 + 3 files changed, 2922 insertions(+) create mode 100644 RoadRunnerFiles/Test_ToolRoadRunner/Test_ToolRoadRunner.xodr diff --git a/RoadRunnerFiles/Test_ToolRoadRunner/Test_ToolRoadRunner.xodr b/RoadRunnerFiles/Test_ToolRoadRunner/Test_ToolRoadRunner.xodr new file mode 100644 index 000000000..75af552e9 --- /dev/null +++ b/RoadRunnerFiles/Test_ToolRoadRunner/Test_ToolRoadRunner.xodr @@ -0,0 +1,2897 @@ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/OpenDriveActor.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/OpenDriveActor.cpp index f2a8a18c1..bd7b9c245 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/OpenDriveActor.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/OpenDriveActor.cpp @@ -308,6 +308,7 @@ void AOpenDriveActor::BuildRoutes(FString MapName) FString AddTrafficLightCommand = FString::Printf(TEXT("AddTrafficLightPole %s"), *SpawnedTrafficLight->GetName()); SpawnedTrafficGroup->CallFunctionByNameWithArguments(*AddTrafficLightCommand, ar, NULL, true); + PersistentTrafficLights.Push(SpawnedTrafficGroup); SpawnedTrafficLight->CallFunctionByNameWithArguments(TEXT("InitData"), ar, NULL, true); for (TrafficBoxComponent TfBoxComponent : CurrentTrafficLight.box_areas) { @@ -326,6 +327,7 @@ void AOpenDriveActor::BuildRoutes(FString MapName) TLBoxRot.Roll, TLBoxRot.Yaw); SpawnedTrafficLight->CallFunctionByNameWithArguments(*BoxCommand, ar, NULL, true); + PersistentTrafficLights.Push(SpawnedTrafficLight); } } } @@ -371,6 +373,7 @@ void AOpenDriveActor::BuildRoutes(FString MapName) SpawnParams); break; } + PersistentTrafficSigns.Push(SignActor); for (TrafficBoxComponent TfBoxComponent : CurrentTrafficSign.box_areas) { FVector TLBoxPos = FVector(TfBoxComponent.x_pos, @@ -403,6 +406,22 @@ void AOpenDriveActor::RemoveRoutes() } } RoutePlanners.Empty(); + const int tl_num = PersistentTrafficLights.Num(); + for (int i = 0; i < tl_num; i++) + { + if(PersistentTrafficLights[i] != nullptr) { + PersistentTrafficLights[i]->Destroy(); + } + } + PersistentTrafficLights.Empty(); + const int ts_num = PersistentTrafficSigns.Num(); + for (int i = 0; i < ts_num; i++) + { + if(PersistentTrafficSigns[i] != nullptr) { + PersistentTrafficSigns[i]->Destroy(); + } + } + PersistentTrafficSigns.Empty(); } void AOpenDriveActor::DebugRoutes() const diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/OpenDriveActor.h b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/OpenDriveActor.h index 272eeb260..a31e1145f 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/OpenDriveActor.h +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/OpenDriveActor.h @@ -45,6 +45,12 @@ private: UPROPERTY() TArray VehicleSpawners; + UPROPERTY() + TArray PersistentTrafficLights; + + UPROPERTY() + TArray PersistentTrafficSigns; + UPROPERTY() TSubclassOf TrafficLightBlueprintClass;