16USignComponent::USignComponent()
18 PrimaryComponentTick.bCanEverTick =
false;
22void USignComponent::BeginPlay()
29void USignComponent::TickComponent(
float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
31 Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
35const FString& USignComponent::GetSignId()
const
40void USignComponent::SetSignId(
const FString &Id) {
44void USignComponent::InitializeSign(
const cr::Map &
Map)
49TArray<std::pair<cr::RoadId, const cre::RoadInfoSignal*>>
50 USignComponent::GetAllReferencesToThisSignal(
const cr::Map &
Map)
52 TArray<std::pair<cr::RoadId, const cre::RoadInfoSignal*>> Result;
53 auto waypoints =
Map.GenerateWaypointsOnRoadEntries();
54 std::unordered_set<cr::RoadId> ExploredRoads;
55 for (
auto & waypoint : waypoints)
58 if (ExploredRoads.count(waypoint.road_id) > 0)
62 ExploredRoads.insert(waypoint.road_id);
65 auto SignalReferences =
Map.GetLane(waypoint).
67 for (
auto *SignalReference : SignalReferences)
69 FString SignalId(SignalReference->GetSignalId().c_str());
70 if(SignalId == GetSignId())
72 Result.Add({waypoint.road_id, SignalReference});
82 std::string std_signal_id = carla::rpc::FromFString(GetSignId());
83 if (
Map.GetSignals().count(std_signal_id))
85 return Map.GetSignals().at(std_signal_id).get();
92UBoxComponent* USignComponent::GenerateTriggerBox(
const FTransform &BoxTransform,
95 AActor *ParentActor = GetOwner();
96 UBoxComponent *BoxComponent = NewObject<UBoxComponent>(ParentActor);
97 BoxComponent->RegisterComponent();
98 BoxComponent->AttachToComponent(
99 ParentActor->GetRootComponent(),
100 FAttachmentTransformRules::KeepRelativeTransform);
101 BoxComponent->SetWorldTransform(BoxTransform);
102 BoxComponent->SetBoxExtent(FVector(BoxSize, BoxSize, BoxSize),
true);
106UBoxComponent* USignComponent::GenerateTriggerBox(
const FTransform &BoxTransform,
107 const FVector &BoxSize)
109 AActor *ParentActor = GetOwner();
110 UBoxComponent *BoxComponent = NewObject<UBoxComponent>(ParentActor);
111 BoxComponent->RegisterComponent();
112 BoxComponent->AttachToComponent(
113 ParentActor->GetRootComponent(),
114 FAttachmentTransformRules::KeepRelativeTransform);
115 BoxComponent->SetWorldTransform(BoxTransform);
116 BoxComponent->SetBoxExtent(BoxSize,
true);
120void USignComponent::AddEffectTriggerVolume(UBoxComponent*
TriggerVolume)
125const TArray<UBoxComponent*> USignComponent::GetEffectTriggerVolume()
const
127 return EffectTriggerVolumes;
地图类的前向声明,用于在LaneInvasionSensor类中可能的引用。