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; return;
if (CarlaActor->GetActorType() != FCarlaActor::ActorType::Vehicle) if (CarlaActor->GetActorType() != FCarlaActor::ActorType::Vehicle)
return; return;
ACarlaWheeledVehicle* CarlaVehicle = Cast<ACarlaWheeledVehicle>(CarlaActor->GetActor()); ACarlaWheeledVehicle* CarlaVehicle = Cast<ACarlaWheeledVehicle>(CarlaActor->GetActor());
check(CarlaVehicle != nullptr) if (CarlaVehicle == nullptr)
return;
USkeletalMeshComponent* SkeletalMesh = CarlaVehicle->GetMesh(); USkeletalMeshComponent* SkeletalMesh = CarlaVehicle->GetMesh();
check(SkeletalMesh != nullptr) if (SkeletalMesh == nullptr)
return;
UVehicleAnimInstance* VehicleAnim = Cast<UVehicleAnimInstance>(SkeletalMesh->GetAnimInstance()); UVehicleAnimInstance* VehicleAnim = Cast<UVehicleAnimInstance>(SkeletalMesh->GetAnimInstance());
check(VehicleAnim != nullptr) if (VehicleAnim == nullptr)
return;
const UWheeledVehicleMovementComponent* WheeledVehicleMovementComponent = VehicleAnim->GetWheeledVehicleMovementComponent(); const UWheeledVehicleMovementComponent* WheeledVehicleMovementComponent = VehicleAnim->GetWheeledVehicleMovementComponent();
check(WheeledVehicleMovementComponent != nullptr) if (WheeledVehicleMovementComponent == nullptr)
return;
CarlaRecorderAnimWheels Record; CarlaRecorderAnimWheels Record;
Record.DatabaseId = CarlaActor->GetActorId(); Record.DatabaseId = CarlaActor->GetActorId();
Record.WheelValues.reserve(WheeledVehicleMovementComponent->Wheels.Num());
WheelInfo FL; uint8 i = 0;
FL.Location = EVehicleWheelLocation::FL_Wheel; for (auto Wheel : WheeledVehicleMovementComponent->Wheels)
FL.SteeringAngle = CarlaVehicle->GetWheelSteerAngle(FL.Location); {
FL.TireRotation = WheeledVehicleMovementComponent->Wheels[static_cast<uint8>(FL.Location)]->GetRotationAngle(); WheelInfo Info;
Info.Location = static_cast<EVehicleWheelLocation>(i);
WheelInfo FR; Info.SteeringAngle = CarlaVehicle->GetWheelSteerAngle(Info.Location);
FR.Location = EVehicleWheelLocation::FR_Wheel; Info.TireRotation = Wheel->GetRotationAngle();
FR.SteeringAngle = CarlaVehicle->GetWheelSteerAngle(FR.Location); Record.WheelValues.push_back(Info);
FR.TireRotation = WheeledVehicleMovementComponent->Wheels[static_cast<uint8>(FR.Location)]->GetRotationAngle(); ++i;
}
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);
AddAnimVehicleWheels(Record); AddAnimVehicleWheels(Record);