62 lines
2.0 KiB
C++
62 lines
2.0 KiB
C++
// CARLA, Copyright (C) 2017 Computer Vision Center (CVC)
|
|
|
|
#include "Carla.h"
|
|
#include "RoadIntersection.h"
|
|
|
|
ARoadIntersection::ARoadIntersection(const FObjectInitializer& ObjectInitializer) :
|
|
Super(ObjectInitializer)
|
|
{
|
|
PrimaryActorTick.bCanEverTick = false;
|
|
|
|
RootComponent =
|
|
ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this, TEXT("RootComponent"));
|
|
RootComponent->SetMobility(EComponentMobility::Static);
|
|
|
|
#define CARLA_CREATE_STATIC_MESH_COMPONENT(Mesh) \
|
|
{ \
|
|
auto Component = CreateDefaultSubobject<UStaticMeshComponent>(TEXT(#Mesh) TEXT("Component")); \
|
|
Component->SetMobility(EComponentMobility::Static); \
|
|
Component->SetupAttachment(RootComponent); \
|
|
StaticMeshComponents.Add(Component); \
|
|
StaticMeshes.Add(ERoadIntersectionItem:: Mesh, nullptr); \
|
|
}
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(Lane0)
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(Lane1)
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(Lane2)
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(Lane3)
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(Sidewalk0)
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(Sidewalk1)
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(Sidewalk2)
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(Sidewalk3)
|
|
CARLA_CREATE_STATIC_MESH_COMPONENT(LaneMarking)
|
|
#undef CARLA_CREATE_STATIC_MESH_COMPONENT
|
|
}
|
|
|
|
#if WITH_EDITOR
|
|
void ARoadIntersection::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
|
|
{
|
|
Super::PostEditChangeProperty(PropertyChangedEvent);
|
|
if (PropertyChangedEvent.Property) {
|
|
UpdateMeshes();
|
|
}
|
|
}
|
|
#endif // WITH_EDITOR
|
|
|
|
void ARoadIntersection::SetStaticMesh(ERoadIntersectionItem Item, UStaticMesh *StaticMesh)
|
|
{
|
|
if (static_cast<uint8>(Item) < StaticMeshes.Num()) {
|
|
StaticMeshes[Item] = StaticMesh;
|
|
}
|
|
}
|
|
|
|
void ARoadIntersection::UpdateMeshes()
|
|
{
|
|
check(StaticMeshes.Num() == StaticMeshComponents.Num());
|
|
int32 i = 0;
|
|
for (auto Item : StaticMeshes) {
|
|
check(StaticMeshComponents[i] != nullptr);
|
|
StaticMeshComponents[i]->SetStaticMesh(Item.Value);
|
|
++i;
|
|
}
|
|
}
|