27 virtual void Tick(
float DeltaSeconds)
override;
29 virtual void EndPlay(
const EEndPlayReason::Type EndPlayReason)
override;
31 UFUNCTION(BlueprintCallable, Category =
"Traffic Light Manager")
32 void RegisterLightComponentFromOpenDRIVE(UTrafficLightComponent *
TrafficLight);
34 UFUNCTION(BlueprintCallable, Category =
"Traffic Light Manager")
35 void RegisterLightComponentGenerated(UTrafficLightComponent *
TrafficLight);
37 const std::optional<carla::road::Map> &GetMap();
39 UFUNCTION(BlueprintCallable, Category =
"Traffic Light Manager")
42 UFUNCTION(BlueprintCallable, Category =
"Traffic Light Manager")
45 UFUNCTION(BlueprintCallable, Category =
"Traffic Light Manager")
46 USignComponent* GetTrafficSign(FString SignId);
48 UFUNCTION(BlueprintCallable, Category =
"Traffic Light Manager")
49 void SetFrozen(
bool InFrozen);
51 UFUNCTION(BlueprintCallable, Category =
"Traffic Light Manager")
54 UFUNCTION(CallInEditor, Category =
"Traffic Light Manager")
55 void GenerateSignalsAndTrafficLights();
57 UFUNCTION(CallInEditor, Category =
"Traffic Light Manager")
58 void RemoveGeneratedSignalsAndTrafficLights();
60 UFUNCTION(CallInEditor, Category =
"Traffic Light Manager")
61 void MatchTrafficLightActorsWithOpenDriveSignals();
64 void InitializeTrafficLights();
79 void SetAdjustSignsHeightToGround(
bool bEnabled);
84 void SnapSignsToGround();
91 bool AdjustSpawnedSignsHeight();
97 TArray<AActor*> GetSignsToIgnoreWhileTracing()
const;
99 void SpawnTrafficLights();
103 void UpdateSignalGroundDormancy();
105 void OnLevelAddedToWorld(ULevel *Level, UWorld *World);
107 void SuppressSpawnedSignsIfLevelHasPlacedSigns(ULevel *Level);
109 void RemoveRoadrunnerProps()
const;
111 void RemoveAttachedProps(TArray<AActor*> Actors)
const;
123 TMap<FString, TObjectPtr<USignComponent>> TrafficSignComponents;
131 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
132 bool bAdjustSignsHeightToGround = false;
134 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
135 TSubclassOf<
AActor> TrafficLightModel_RHT;
137 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
138 TSubclassOf<
AActor> TrafficLightModel_LHT;
142 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
143 TMap<FString, TSubclassOf<
AActor>> TrafficSignsModels;
145 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
146 TMap<FString, TSubclassOf<USignComponent>> SignComponentModels;
148 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
149 TMap<FString, TSubclassOf<
AActor>> SpeedLimitModels;
154 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
155 TMap<FString, TSubclassOf<
AActor>> SpeedLimitModels_US;
157 UPROPERTY(Category = "Traffic Light Manager", VisibleDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
158 TObjectPtr<USceneComponent> SceneComponent;
160 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
161 bool TrafficLightsGenerated = false;
165 int TrafficLightGroupMissingId = -2;
169 int TrafficLightControllerMissingId = -1;
173 int TrafficLightComponentMissingId = -1;
176 bool bTrafficLightsFrozen = false;
183 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
184 int32 DormancyChecksPerTick = 150;
186 UPROPERTY(EditAnywhere, Category= "Traffic Light Manager")
187 float DormancyTraceDepth = 2000.0f;
189 int32 DormancySweepIndex = 0;
193 bool bPendingEnvironmentObjectRefresh = false;
205 bool bSpawnedSignsSuppressed = false;
207 FDelegateHandle LevelAddedHandle;