39#include <util/ue-header-guard-begin.h>
40#include "Components/CapsuleComponent.h"
41#include "GameFramework/CharacterMovementComponent.h"
42#include <util/ue-header-guard-end.h>
47 TSharedPtr<const FActorInfo> Info,
51 Info(
std::move(Info)),
60 TSharedPtr<const FActorInfo> Info,
71 TSharedPtr<const FActorInfo> Info,
77 ActorData = MakeShared<FActorSensorData>();
82 TSharedPtr<const FActorInfo> Info,
88 ActorData = MakeShared<FTrafficSignData>();
93 TSharedPtr<const FActorInfo> Info,
99 ActorData = MakeShared<FTrafficLightData>();
104 TSharedPtr<const FActorInfo> Info,
107 :
FCarlaActor(ActorId, Actor, Info, InState, World)
115 TSharedPtr<const FActorInfo> Info,
118 :
FCarlaActor(ActorId, Actor, Info, InState, World)
127 TSharedPtr<const FActorInfo> Info,
135 return MakeShared<FTrafficSignActor>(ActorId, Actor, std::move(
Info), InState,
World);
138 return MakeShared<FTrafficLightActor>(ActorId, Actor, std::move(
Info), InState,
World);
141 return MakeShared<FVehicleActor>(ActorId, Actor, std::move(
Info), InState,
World);
144 return MakeShared<FWalkerActor>(ActorId, Actor, std::move(
Info), InState,
World);
147 return MakeShared<FSensorActor>(ActorId, Actor, std::move(
Info), InState,
World);
150 return MakeShared<FOtherActor>(ActorId, Actor, std::move(
Info), InState,
World);
162 ActorData->RecordActorData(
this, CarlaEpisode);
176 UE_LOG(LogCarla, Error, TEXT(
"Could not wake up dormant actor %d at location %s"),
GetActorId(), *(
ActorData->GetLocalTransform(CarlaEpisode).GetLocation().ToString()));
180 ActorData->RestoreActorData(
this, CarlaEpisode);
187 FTransform Transform = FTransform(
201 return GetActor()->GetActorTransform();
217 if (Actor ==
nullptr)
222 return FTransform::Identity;
224 FTransform Transform = Actor->GetActorTransform();
250 return GetActor()->GetActorLocation();
262 FVector Location =
GetActor()->GetActorLocation();
277 FVector GlobalLocation = Location;
288 GetActor()->SetActorRelativeLocation(
297 const FVector& Location, ETeleportType TeleportType)
305 FVector LocalLocation = Location;
312 GetActor()->SetActorRelativeLocation(
321 const FTransform& Transform, ETeleportType TeleportType)
325 FTransform GlobalTransform = Transform;
334 ActorData->Rotation = GlobalTransform.GetRotation();
335 ActorData->Scale = GlobalTransform.GetScale3D();
339 GetActor()->SetActorRelativeTransform(
348 const FTransform& Transform, ETeleportType TeleportType)
353 ActorData->Rotation = Transform.GetRotation();
354 ActorData->Scale = Transform.GetScale3D();
358 FTransform LocalTransform = Transform;
402 UPrimitiveComponent* Primitive =
403 Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
406 return Primitive->GetPhysicsAngularVelocityInDegrees();
420 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
421 if (RootComponent ==
nullptr)
425 RootComponent->SetPhysicsLinearVelocity(
437 ActorData->AngularVelocity = AngularVelocity;
441 UPrimitiveComponent* RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
442 if (RootComponent ==
nullptr)
446 RootComponent->SetPhysicsAngularVelocityInDegrees(
461 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
462 if (RootComponent ==
nullptr)
466 RootComponent->AddImpulse(
475 const FVector& Impulse,
const FVector& Location)
482 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
483 if (RootComponent ==
nullptr)
488 UE_LOG(LogCarla, Warning, TEXT(
"AddImpulseAtLocation: Experimental feature, use carefully."));
490 RootComponent->AddImpulseAtLocation(
505 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
506 if (RootComponent ==
nullptr)
510 RootComponent->AddForce(
519 const FVector& Force,
const FVector& Location)
526 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
527 if (RootComponent ==
nullptr)
532 UE_LOG(LogCarla, Warning, TEXT(
"AddForceAtLocation: Experimental feature, use carefully."));
534 RootComponent->AddForceAtLocation(
549 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
550 if (RootComponent ==
nullptr)
554 RootComponent->AddAngularImpulseInDegrees(
569 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
570 if (RootComponent ==
nullptr)
574 RootComponent->AddTorqueInDegrees(
592 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
593 if (RootComponent ==
nullptr)
598 RootComponent->SetSimulatePhysics(bEnabled);
599 RootComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
611 GetActor()->SetActorEnableCollision(bEnabled);
623 auto RootComponent = Cast<UPrimitiveComponent>(
GetActor()->GetRootComponent());
624 if (RootComponent ==
nullptr)
628 RootComponent->SetEnableGravity(bEnabled);
646 if (Actor ==
nullptr)
657 const TArray<FTransform>& Relative, TArray<FTransform>& Transforms)
const
660 Transforms.Reset(Relative.Num());
661 for (
const FTransform& Transform : Relative)
663 Transforms.Add(Transform * ActorToWorld);
681 const FString& ComponentName, FTransform& Transform)
const
693 const FString& ComponentName, FTransform& Transform)
const
701 const int32 Index = Rig.
ComponentNames.IndexOfByKey(ComponentName);
702 if (Index == INDEX_NONE)
727 TArray<FTransform>& Transforms)
const
744 TArray<FTransform>& Transforms)
const
746 TArray<FTransform> Relative;
752 return ToWorld(Relative, Transforms);
768 TArray<FTransform>& Transforms)
const
781 TArray<FTransform>& Transforms)
const
783 TArray<FTransform> Relative;
789 return ToWorld(Relative, Transforms);
801 auto CarlaVehicle = Cast<ACarlaWheeledVehicle>(
GetActor());
802 if (CarlaVehicle ==
nullptr)
806 CarlaVehicle->ActivateVelocityControl(Velocity);
818 auto CarlaVehicle = Cast<ACarlaWheeledVehicle>(
GetActor());
819 if (CarlaVehicle ==
nullptr)
823 CarlaVehicle->DeactivateVelocityControl();
835 auto CarlaVehicle = Cast<ACarlaWheeledVehicle>(
GetActor());
836 if (CarlaVehicle ==
nullptr)
840 CarlaVehicle->ActivateAccelerationControl(Acceleration);
852 auto CarlaVehicle = Cast<ACarlaWheeledVehicle>(
GetActor());
853 if (CarlaVehicle ==
nullptr)
857 CarlaVehicle->DeactivateAccelerationControl();
892 TelemetryData =
Vehicle->GetVehicleTelemetryData();
910 FailureState =
Vehicle->GetFailureState();
930 LightState =
Vehicle->GetVehicleLightState();
1000 Vehicle->SetVehicleLightState(LightState);
1009 if (!
Vehicle.HasWheel(
static_cast<int32
>(WheelLocation)))
1013 if (!
Vehicle.IsWheelAnimationOverridden())
1037 Vehicle->SetWheelSteerDirection(WheelLocation, AngleInDeg);
1055 if (!
Vehicle->HasWheel(
static_cast<int32
>(WheelLocation)))
1059 Angle =
Vehicle->GetWheelSteerAngle(WheelLocation);
1079 Vehicle->SetWheelPitchAngle(WheelLocation, AngleInDeg);
1095 if (!
Vehicle->HasWheel(
static_cast<int32
>(WheelLocation)))
1099 Angle =
Vehicle->GetWheelPitchAngle(WheelLocation);
1119 Vehicle->SetWheelSuspensionOffset(WheelLocation, Offset * UE_M_TO_CM);
1135 if (!
Vehicle->HasWheel(
static_cast<int32
>(WheelLocation)))
1139 Offset =
Vehicle->GetWheelSuspensionOffset(WheelLocation) * UE_CM_TO_M;
1153 if (bEnabled && !
Vehicle->HasCarlaVehicleAnimation())
1157 Vehicle->SetWheelAnimationOverride(bEnabled);
1170 auto* CarlaVehicle = Cast<ACarlaWheeledVehicle>(
GetActor());
1172 if (CarlaVehicle ==
nullptr){
1175 CarlaVehicle->SetSimulatePhysics(bEnabled);
1196 Vehicle->ApplyVehicleControl(Control, Priority);
1217 Vehicle->ApplyVehicleAckermannControl(AckermannControl, Priority);
1227 VehicleControl = Data->
Control;
1236 VehicleControl =
Vehicle->GetVehicleControl();
1255 VehicleAckermannControl =
Vehicle->GetVehicleAckermannControl();
1275 AckermannSettings =
Vehicle->GetAckermannControllerSettings();
1296 Vehicle->ApplyAckermannControllerSettings(AckermannSettings);
1313 auto Controller = Cast<AWheeledVehicleAIController>(
Vehicle->GetController());
1314 if (Controller ==
nullptr)
1318 Controller->SetAutopilot(bEnabled, bKeepState);
1335 Vehicle->ShowDebugTelemetry(bEnabled);
1383 uint64_t MaxSubsteps,
float MaxSubstepDeltaTime,
1384 const FString& VehicleJSON,
const FString& PowertrainJSON,
1385 const FString& TireJSON,
const FString& BaseJSONPath)
1400 MaxSubstepDeltaTime,
1447 return ETrafficLightState::Off;
1467 return TrafficLight->GetTrafficLightComponent()->GetController();
1556 TrafficLight->GetTrafficLightComponent()->GetGroup()->ResetGroup();
1564 const FTransform& Transform,
1567 FVector NewLocation = Transform.GetLocation();
1573 UCapsuleComponent* Capsule = Cast<UCapsuleComponent>(
GetActor()->GetRootComponent());
1576 NewLocation.Z += Capsule->GetScaledCapsuleHalfHeight();
1579 FTransform NewTransform = Transform;
1580 NewTransform.SetLocation(NewLocation);
1584 FWalkerData* WalkerData = GetActorData<FWalkerData>();
1596 auto Pawn = Cast<APawn>(
GetActor());
1597 if (Pawn ==
nullptr)
1601 auto Controller = Cast<AWalkerController>(Pawn->GetController());
1602 if (Controller ==
nullptr)
1606 Controller->ApplyWalkerControl(WalkerControl);
1634 if (
auto* MovementComponent =
Character->GetCharacterMovement())
1636 return MovementComponent->Velocity;
1647 FWalkerData* WalkerData = GetActorData<FWalkerData>();
1659 auto Pawn = Cast<APawn>(
GetActor());
1660 if (Pawn ==
nullptr)
1664 auto Controller = Cast<AWalkerController>(Pawn->GetController());
1665 if (Controller ==
nullptr)
1669 Control = Controller->GetWalkerControl();
1689 auto CharacterMovement = Cast<UCharacterMovementComponent>(
Character->GetCharacterMovement());
1691 CharacterMovement->SetDefaultMovementMode();
1694 CharacterMovement->DisableMovement();
1714 auto CharacterMovement = Cast<UCharacterMovementComponent>(
Character->GetCharacterMovement());
1717 CharacterMovement->SetDefaultMovementMode();
1720 if (CharacterMovement->IsFlying() || CharacterMovement->IsFalling())
1721 CharacterMovement->DisableMovement();
1737 auto Pawn = Cast<APawn>(
GetActor());
1738 if (Pawn ==
nullptr)
1742 auto Controller = Cast<AWalkerController>(Pawn->GetController());
1743 if (Controller ==
nullptr)
1747 Controller->ApplyWalkerControl(Control);
1759 auto Pawn = Cast<APawn>(
GetActor());
1760 if (Pawn ==
nullptr)
1764 auto Controller = Cast<AWalkerController>(Pawn->GetController());
1765 if (Controller ==
nullptr)
1769 Controller->GetBonesTransform(Bones);
1781 auto Pawn = Cast<APawn>(
GetActor());
1782 if (Pawn ==
nullptr)
1786 auto Controller = Cast<AWalkerController>(Pawn->GetController());
1787 if (Controller ==
nullptr)
1791 Controller->SetBonesTransform(Bones);
1803 auto Pawn = Cast<APawn>(
GetActor());
1804 if (Pawn ==
nullptr)
1808 auto Controller = Cast<AWalkerController>(Pawn->GetController());
1809 if (Controller ==
nullptr)
1813 Controller->BlendPose(Blend);
1825 auto Pawn = Cast<APawn>(
GetActor());
1826 if (Pawn ==
nullptr)
1830 auto Controller = Cast<AWalkerController>(Pawn->GetController());
1831 if (Controller ==
nullptr)
1835 Controller->GetPoseFromAnimation();
1847 auto Pawn = Cast<APawn>(
GetActor());
1848 if (Pawn ==
nullptr)
1852 auto Walker = Cast<AWalkerBase>(Pawn);
1857 Walker->StartDeathLifeSpan();
1858 UE_LOG(LogCarla, Warning, TEXT(
"Walker starting life span by dead"));
1874 const auto *Root = Cast<UPrimitiveComponent>(Actor.GetRootComponent());
1875 return (Root !=
nullptr) ? Root->GetPhysicsAngularVelocityInRadians() : FVector::ZeroVector;
static ECarlaServerResponse CanSetWheelPose(const ACarlaWheeledVehicle &Vehicle, const EVehicleWheelLocation &WheelLocation)
FVector CarlaGetActorAngularVelocityInRadians(const AActor &Actor)
Angular velocity of Actor in the world frame, in rad/s: on a Multi-GPU secondary the primary's (a mir...
@ FunctionNotAvailableWhenDormant
@ WalkerIncompatibleController
@ WheelAnimationOverrideDisabled
@ WheelAnimationNotSupported
EVehicleDoor
Type of door to open/close.
Base class for CARLA wheeled vehicles.
FTransform GlobalToLocalTransform(const FTransform &InTransform) const
FVector GlobalToLocalLocation(const FVector &InLocation) const
FTransform LocalToGlobalTransform(const FTransform &InTransform) const
FVector LocalToGlobalLocation(const FVector &InLocation) const
A view over an actor and its properties.
ECarlaServerResponse GetActorComponentNames(TArray< FString > &Names) const
carla::rpc::ActorState State
ECarlaServerResponse AddActorImpulseAtLocation(const FVector &Impulse, const FVector &Location)
ECarlaServerResponse GetActorSocketNames(TArray< FString > &Names) const
ECarlaServerResponse GetActorBoneWorldTransforms(TArray< FTransform > &Transforms) const
static TSharedPtr< FCarlaActor > ConstructCarlaActor(IdType ActorId, AActor *Actor, TSharedPtr< const FActorInfo > Info, ActorType Type, carla::rpc::ActorState InState, UWorld *World)
ECarlaServerResponse AddActorForceAtLocation(const FVector &Force, const FVector &Location)
virtual ECarlaServerResponse SetActorEnableGravity(bool bEnabled)
ECarlaServerResponse ToWorld(const TArray< FTransform > &Relative, TArray< FTransform > &Transforms) const
FVector GetActorLocalLocation() const
ECarlaServerResponse GetActorBoneRelativeTransforms(TArray< FTransform > &Transforms) const
void SetActorLocalTransform(const FTransform &Transform, ETeleportType Teleport=ETeleportType::TeleportPhysics)
FVector MirroredAngularVelocity
ECarlaServerResponse AddActorTorque(const FVector &Torque)
ECarlaServerResponse SetActorTargetAngularVelocity(const FVector &AngularVelocity)
ECarlaServerResponse AddActorImpulse(const FVector &Impulse)
bool HasMirroredKinematics() const
virtual ECarlaServerResponse SetActorCollisions(bool bEnabled)
TWeakObjectPtr< AActor > TheActor
Weak: World Partition can stream out (destroy) the actor without going through the episode,...
ECarlaServerResponse GetActorRigSnapshot(FActorRigSnapshot &Rig) const
FVector GetActorAngularVelocity() const
ECarlaServerResponse GetActorComponentWorldTransform(const FString &ComponentName, FTransform &Transform) const
ECarlaServerResponse GetActorSocketWorldTransforms(TArray< FTransform > &Transforms) const
ECarlaServerResponse GetActorBoneNames(TArray< FString > &Names) const
ECarlaServerResponse GetActorSocketRelativeTransforms(TArray< FTransform > &Transforms) const
FTransform GetActorGlobalTransform() const
virtual FVector GetActorVelocity() const
void SetActorGlobalTransform(const FTransform &Transform, ETeleportType Teleport=ETeleportType::TeleportPhysics)
void SetActorGlobalLocation(const FVector &Location, ETeleportType Teleport=ETeleportType::TeleportPhysics)
FActorData * GetActorData()
TSharedPtr< const FActorInfo > Info
FVector GetActorGlobalLocation() const
bool bHasMirroredKinematics
ECarlaServerResponse GetActorComponentRelativeTransform(const FString &ComponentName, FTransform &Transform) const
FVector GetMirroredAngularVelocityInRadians() const
void SetActorLocalLocation(const FVector &Location, ETeleportType Teleport=ETeleportType::TeleportPhysics)
TSharedPtr< FActorData > ActorData
IdType GetActorId() const
FTransform GetActorLocalTransform() const
ECarlaServerResponse SetActorTargetVelocity(const FVector &Velocity)
ECarlaServerResponse AddActorForce(const FVector &Force)
virtual ECarlaServerResponse SetActorSimulatePhysics(bool bEnabled)
void WakeActorUp(UCarlaEpisode *CarlaEpisode)
ECarlaServerResponse AddActorAngularImpulse(const FVector &AngularInpulse)
void PutActorToSleep(UCarlaEpisode *CarlaEpisode)
FOtherActor(IdType ActorId, AActor *Actor, TSharedPtr< const FActorInfo > Info, carla::rpc::ActorState InState, UWorld *World)
FSensorActor(IdType ActorId, AActor *Actor, TSharedPtr< const FActorInfo > Info, carla::rpc::ActorState InState, UWorld *World)
virtual ECarlaServerResponse SetLightGreenTime(float time) final
virtual ECarlaServerResponse FreezeTrafficLight(bool bFreeze) final
virtual ETrafficLightState GetTrafficLightState() const final
FTrafficLightActor(IdType ActorId, AActor *Actor, TSharedPtr< const FActorInfo > Info, carla::rpc::ActorState InState, UWorld *World)
virtual ECarlaServerResponse SetTrafficLightState(const ETrafficLightState &State) final
virtual ECarlaServerResponse ResetTrafficLightGroup() final
virtual UTrafficLightController * GetTrafficLightController() final
virtual ECarlaServerResponse SetLightRedTime(float time) final
virtual ECarlaServerResponse SetLightYellowTime(float time) final
ETrafficLightState LightState
UTrafficLightController * Controller
FTrafficSignActor(IdType ActorId, AActor *Actor, TSharedPtr< const FActorInfo > Info, carla::rpc::ActorState InState, UWorld *World)
virtual ECarlaServerResponse SetActorAutopilot(bool bEnabled, bool bKeepState=false) final
virtual ECarlaServerResponse EnableChronoPhysics(uint64_t MaxSubsteps, float MaxSubstepDeltaTime, const FString &VehicleJSON, const FString &PowertrainJSON, const FString &TireJSON, const FString &BaseJSONPath) final
virtual ECarlaServerResponse SetActorSimulatePhysics(bool bSimulatePhysics) final
FVehicleActor(IdType ActorId, AActor *Actor, TSharedPtr< const FActorInfo > Info, carla::rpc::ActorState InState, UWorld *World)
virtual ECarlaServerResponse DisableActorConstantVelocity() final
virtual ECarlaServerResponse GetVehicleLightState(FVehicleLightState &LightState) final
virtual ECarlaServerResponse SetWheelPitchAngle(const EVehicleWheelLocation &WheelLocation, float AngleInDeg) final
virtual ECarlaServerResponse GetWheelSuspensionOffset(const EVehicleWheelLocation &WheelLocation, float &Offset) final
Offset in meters.
virtual ECarlaServerResponse GetFailureState(carla::rpc::VehicleFailureState &) final
virtual ECarlaServerResponse GetWheelPitchAngle(const EVehicleWheelLocation &WheelLocation, float &Angle) final
virtual ECarlaServerResponse SetWheelAnimationOverride(bool bEnabled) final
virtual ECarlaServerResponse GetWheelSteerAngle(const EVehicleWheelLocation &WheelLocation, float &Angle)
virtual ECarlaServerResponse ApplyControlToVehicle(const FVehicleControl &, const EVehicleInputPriority &) final
virtual ECarlaServerResponse DisableActorConstantAcceleration() final
virtual ECarlaServerResponse EnableActorConstantVelocity(const FVector &Velocity) final
virtual ECarlaServerResponse GetVehicleTelemetryData(FVehicleTelemetryData &TelemetryData) final
virtual ECarlaServerResponse SetVehicleLightState(const FVehicleLightState &LightState) final
virtual ECarlaServerResponse EnableCarSim(const FString &SimfilePath) final
virtual ECarlaServerResponse GetPhysicsControl(FVehiclePhysicsControl &PhysicsControl) final
virtual ECarlaServerResponse SetWheelSteerDirection(const EVehicleWheelLocation &WheelLocation, float AngleInDeg) final
virtual ECarlaServerResponse SetWheelSuspensionOffset(const EVehicleWheelLocation &WheelLocation, float Offset) final
Offset in meters.
virtual ECarlaServerResponse UseCarSimRoad(bool bEnabled) final
virtual ECarlaServerResponse GetVehicleControl(FVehicleControl &) final
virtual ECarlaServerResponse ApplyAckermannControllerSettings(const FAckermannControllerSettings &) final
virtual ECarlaServerResponse EnableActorConstantAcceleration(const FVector &Acceleration) final
virtual ECarlaServerResponse ApplyAckermannControlToVehicle(const FVehicleAckermannControl &, const EVehicleInputPriority &) final
virtual ECarlaServerResponse ApplyPhysicsControl(const FVehiclePhysicsControl &PhysicsControl) final
virtual ECarlaServerResponse OpenVehicleDoor(const EVehicleDoor DoorIdx) final
virtual ECarlaServerResponse CloseVehicleDoor(const EVehicleDoor DoorIdx) final
virtual ECarlaServerResponse GetVehicleAckermannControl(FVehicleAckermannControl &) final
virtual ECarlaServerResponse ShowVehicleDebugTelemetry(bool bEnabled) final
virtual ECarlaServerResponse GetAckermannControllerSettings(FAckermannControllerSettings &) final
bool bAckermannControlActive
FVehicleLightState LightState
carla::rpc::VehicleFailureState FailureState
FVehicleAckermannControl AckermannControl
FAckermannControllerSettings AckermannControllerSettings
FVehiclePhysicsControl PhysicsControl
virtual ECarlaServerResponse BlendPose(float Blend)
virtual ECarlaServerResponse SetActorSimulatePhysics(bool bSimulatePhysics) final
virtual ECarlaServerResponse SetActorEnableGravity(bool bEnabled) final
virtual FVector GetActorVelocity() const final
Walkers move via UCharacterMovementComponent (kinematic sweeps driven by AddMovementInput),...
virtual ECarlaServerResponse GetPoseFromAnimation()
FWalkerActor(IdType ActorId, AActor *Actor, TSharedPtr< const FActorInfo > Info, carla::rpc::ActorState InState, UWorld *World)
virtual ECarlaServerResponse SetBonesTransform(const FWalkerBoneControlIn &) final
virtual ECarlaServerResponse GetWalkerControl(FWalkerControl &) final
virtual ECarlaServerResponse SetWalkerState(const FTransform &Transform, carla::rpc::WalkerControl WalkerControl) final
virtual ECarlaServerResponse SetActorDead()
virtual ECarlaServerResponse ApplyControlToWalker(const FWalkerControl &) final
virtual ECarlaServerResponse GetBonesTransform(FWalkerBoneControlOut &) final
carla::rpc::WalkerControl WalkerControl
static void CreateCarsimComponent(ACarlaWheeledVehicle *Vehicle, FString Simfile)
void UseCarSimRoad(bool bEnabled)
FCarlaActor * FindCarlaActor(FCarlaActor::IdType ActorId)
Find a Carla actor by id.
static ALargeMapManager * GetLargeMapManager(const UObject *WorldContextObject)
static UCarlaEpisode * GetCurrentEpisode(const UObject *WorldContextObject)
static void CreateChronoMovementComponent(ACarlaWheeledVehicle *Vehicle, uint64_t MaxSubsteps, float MaxSubstepDeltaTime, FString VehicleJSON="", FString PowertrainJSON="", FString TireJSON="", FString BaseJSONPath="")
Maps a controller from OpenDrive.
TArray< FString > SocketNames
TArray< FTransform > ComponentTransforms
TArray< FString > ComponentNames
TArray< FTransform > BoneTransforms
TArray< FString > BoneNames
static FActorRigSnapshot FromActor(const AActor *Actor)
TArray< FTransform > SocketTransforms