CARLA
 
载入中...
搜索中...
未找到
RoutePlanner.h
浏览该文件的文档.
1// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
9#include "GameFramework/Actor.h"
10
11#include "Components/BoxComponent.h"
12#include "Components/SplineComponent.h"
13
14#include "RoutePlanner.generated.h"
15
17
18/// 为每个进入触发体积的 ACarlaWheeledVehicle 分配一条随机路线。
19/// 将此参与者放入世界后,必须在编辑器中添加路线。样条线切线将被忽略,仅考虑位置来制定路线。
20UCLASS()
21class CARLA_API ARoutePlanner : public AActor
22{
23 GENERATED_BODY()
24
25public:
26
27 ARoutePlanner(const FObjectInitializer &ObjectInitializer);
28
29 virtual void BeginDestroy() override;
30
31 void Init();
32
33 void SetBoxExtent(const FVector &Extent)
34 {
35 TriggerVolume->SetBoxExtent(Extent);
36 }
37
38 void DrawRoutes();
39
40 void AddRoute(float probability, const TArray<FVector> &routePoints);
41
42 void CleanRoute();
43
44 void AssignRandomRoute(AWheeledVehicleAIController &Controller) const;
45
46protected:
47
48#if WITH_EDITOR
49 virtual void PostEditChangeProperty(FPropertyChangedEvent &PropertyChangedEvent) override;
50
51#endif // WITH_EDITOR
52
53 virtual void BeginPlay() override;
54
55 virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override;
56
57 UFUNCTION()
58 void OnTriggerBeginOverlap(
59 UPrimitiveComponent *OverlappedComp,
60 AActor *OtherActor,
61 UPrimitiveComponent *OtherComp,
62 int32 OtherBodyIndex,
63 bool bFromSweep,
64 const FHitResult &SweepResult);
65
66public:
67
68 UPROPERTY(EditAnywhere)
69 UBoxComponent *TriggerVolume;
70
71 UPROPERTY(BlueprintReadWrite, Category = "Traffic Routes", EditAnywhere)
72 TArray<USplineComponent *> Routes;
73
74 UPROPERTY(BlueprintReadWrite, Category = "Traffic Routes", EditAnywhere, EditFixedSize)
75 TArray<float> Probabilities;
76
77 UPROPERTY(BlueprintReadWrite, Category = "Traffic Routes", EditAnywhere, EditFixedSize)
78 bool bIsIntersection = false;
79};
为每个进入触发体积的 ACarlaWheeledVehicle 分配一条随机路线。 将此参与者放入世界后,必须在编辑器中添加路线。样条线切线将被忽略,仅考虑位置来制定路线。
void SetBoxExtent(const FVector &Extent)
带可选 AI 的轮式车辆控制器。