Fixing replayer crash when running in multi gpu mode

This commit is contained in:
JavierGR 2023-08-03 14:25:44 +02:00 committed by Axel1092
parent bc719a1056
commit 51fde10129
1 changed files with 23 additions and 29 deletions

View File

@ -420,43 +420,37 @@ void FFrameData::AddVehicleWheelsAnimation(FCarlaActor *CarlaActor)
return;
if (CarlaActor->GetActorType() != FCarlaActor::ActorType::Vehicle)
return;
ACarlaWheeledVehicle* CarlaVehicle = Cast<ACarlaWheeledVehicle>(CarlaActor->GetActor());
check(CarlaVehicle != nullptr)
if (CarlaVehicle == nullptr)
return;
USkeletalMeshComponent* SkeletalMesh = CarlaVehicle->GetMesh();
check(SkeletalMesh != nullptr)
if (SkeletalMesh == nullptr)
return;
UVehicleAnimInstance* VehicleAnim = Cast<UVehicleAnimInstance>(SkeletalMesh->GetAnimInstance());
check(VehicleAnim != nullptr)
if (VehicleAnim == nullptr)
return;
const UWheeledVehicleMovementComponent* WheeledVehicleMovementComponent = VehicleAnim->GetWheeledVehicleMovementComponent();
check(WheeledVehicleMovementComponent != nullptr)
if (WheeledVehicleMovementComponent == nullptr)
return;
CarlaRecorderAnimWheels Record;
Record.DatabaseId = CarlaActor->GetActorId();
Record.WheelValues.reserve(WheeledVehicleMovementComponent->Wheels.Num());
WheelInfo FL;
FL.Location = EVehicleWheelLocation::FL_Wheel;
FL.SteeringAngle = CarlaVehicle->GetWheelSteerAngle(FL.Location);
FL.TireRotation = WheeledVehicleMovementComponent->Wheels[static_cast<uint8>(FL.Location)]->GetRotationAngle();
WheelInfo FR;
FR.Location = EVehicleWheelLocation::FR_Wheel;
FR.SteeringAngle = CarlaVehicle->GetWheelSteerAngle(FR.Location);
FR.TireRotation = WheeledVehicleMovementComponent->Wheels[static_cast<uint8>(FR.Location)]->GetRotationAngle();
WheelInfo BL;
BL.Location = EVehicleWheelLocation::BL_Wheel;
BL.SteeringAngle = CarlaVehicle->GetWheelSteerAngle(BL.Location);
BL.TireRotation = WheeledVehicleMovementComponent->Wheels[static_cast<uint8>(BL.Location)]->GetRotationAngle();
WheelInfo BR;
BR.Location = EVehicleWheelLocation::BR_Wheel;
BR.SteeringAngle = CarlaVehicle->GetWheelSteerAngle(BR.Location);
BR.TireRotation = WheeledVehicleMovementComponent->Wheels[static_cast<uint8>(BR.Location)]->GetRotationAngle();
Record.WheelValues.reserve(4);
Record.WheelValues.push_back(FL);
Record.WheelValues.push_back(FR);
Record.WheelValues.push_back(BL);
Record.WheelValues.push_back(BR);
uint8 i = 0;
for (auto Wheel : WheeledVehicleMovementComponent->Wheels)
{
WheelInfo Info;
Info.Location = static_cast<EVehicleWheelLocation>(i);
Info.SteeringAngle = CarlaVehicle->GetWheelSteerAngle(Info.Location);
Info.TireRotation = Wheel->GetRotationAngle();
Record.WheelValues.push_back(Info);
++i;
}
AddAnimVehicleWheels(Record);