21#include "Engine/Classes/Interfaces/Interface_CollisionDataProvider.h"
22#include "PhysicsCore/Public/BodySetupEnums.h"
28 PrimaryActorTick.bCanEverTick =
false;
31 MeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT(
"RootComponent"));
39 : Super(ObjectInitializer)
41 PrimaryActorTick.bCanEverTick =
false;
42 RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT(
"SceneComponent"));
43 SetRootComponent(RootComponent);
44 RootComponent->Mobility = EComponentMobility::Static;
52 if (OpenDrive.IsEmpty())
54 UE_LOG(LogCarla, Error, TEXT(
"The OpenDrive is empty"));
79 UE_LOG(LogCarla, Error, TEXT(
"The OpenDrive has not been loaded"));
95 const auto Meshes = CarlaMap->GenerateChunkedMesh(Parameters);
96 for (
const auto &Mesh : Meshes)
98 if (!Mesh->GetVertices().size())
103 UProceduralMeshComponent *TempPMC = TempActor->
MeshComponent;
104 TempPMC->bUseAsyncCooking =
true;
105 TempPMC->bUseComplexAsSimpleCollision =
true;
106 TempPMC->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
109 TempPMC->CreateMeshSection_LinearColor(
115 TArray<FLinearColor>(),
116 TArray<FProcMeshTangent>(),
126 actor->SetActorHiddenInGame(
true);
136 UE_LOG(LogCarla, Error, TEXT(
"The OpenDrive has not been loaded"));
147 UE_LOG(LogCarla, Error, TEXT(
"The OpenDrive has not been loaded"));
151 const auto Waypoints = CarlaMap->GenerateWaypointsOnRoadEntries();
152 for (
const auto &Wp : Waypoints)
154 const FTransform Trans = CarlaMap->ComputeTransform(Wp);
156 Spawner->SetActorRotation(Trans.GetRotation());
157 Spawner->SetActorLocation(Trans.GetTranslation() + FVector(0.f, 0.f,
SpawnersHeight));
180 auto World = GetWorld();
181 check(
World !=
nullptr);
184 AActor* TrafficLightManagerActor = UGameplayStatics::GetActorOfClass(
World, ATrafficLightManager::StaticClass());
185 if(TrafficLightManagerActor ==
nullptr)
UE_LOG(LogCarla, Log, TEXT("UActorDispatcher::Destroying actor: '%s' %x"), *Id, Actor)
TSharedPtr< const FActorInfo > carla::rpc::ActorState UWorld * World
const boost::optional< carla::road::Map > & GetMap() const
bool LoadOpenDrive(const FString &OpenDrive)
OpenDRIVEϢΪַɿɲѯӳṹ
TArray< AVehicleSpawnPoint * > VehicleSpawners
const FString & GetOpenDrive() const
ַʽȡOpenDRIVEϢ
AOpenDriveGenerator(const FObjectInitializer &ObjectInitializer)
void GeneratePoles()
OpenDRIVEϢɸ
void GenerateRoadMesh()
OpenDRIVEϢɵ·е
virtual void BeginPlay() override
TArray< AActor * > ActorMeshList
float SpawnersHeight
ȷÿRoutePlannerķø߶
void GenerateSpawnPoints()
ص·ɵ㡣
bool IsOpenDriveValid() const
ǷѼOpenDriveЧԡ
UProceduralMeshComponent * MeshComponent
Base class for spawner locations for walkers.
const carla::rpc::OpendriveGenerationParameters & GetOpendriveGenerationParameters() const
static UCarlaGameInstance * GetGameInstance(const UObject *WorldContextObject)
static ACarlaGameModeBase * GetGameMode(const UObject *WorldContextObject)
static FString GetXODR(const UWorld *World)
MapNameOpenDrive XMLҲļؿա
static void log_warning(Args &&... args)
A definition of a Carla Mesh.
TArray< int32 > Triangles
TArray< FVector > Vertices
TArray< FVector > Normals
Seting for map generation from opendrive without additional geometry
声明并初始化成员变量 enable_mesh_visibility,初始值设为 true,意味着默认开启网格可见性相关设置(准确含义参考完整代码 bool enable_mesh_visibility