38 UE_LOG(LogCarla, Warning, TEXT(
"Error: Owner is not properly set for UCarSimManagerComponent") );
43 FActorSpawnParameters SpawnParams;
44 SpawnParams.SpawnCollisionHandlingOverride =
45 ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
50 CarSimMovementComponent = NewObject<UCarSimMovementComponent>(OffsetActor);
53 CarlaVehicle->GetVehicleMovementComponent()->SetComponentTickEnabled(
false);
54 CarlaVehicle->GetVehicleMovementComponent()->Deactivate();
55 CarSimMovementComponent->DisableVehicle =
false;
56 CarSimMovementComponent->VsConfigFile =
SimfilePath;
57 CarSimMovementComponent->Activate();
58 CarSimMovementComponent->RegisterComponent();
60 CarSimMovementComponent->ResetVsVehicle(
false);
62 CarSimMovementComponent->SyncVsVehicleLocOri();
63 CarSimMovementComponent->SetComponentTickEnabled(
true);
65 CarlaVehicle->GetMesh()->PhysicsTransformUpdateMode = EPhysicsTransformUpdateMode::ComponentTransformIsKinematic;
66 auto * Bone =
CarlaVehicle->GetMesh()->GetBodyInstance(NAME_None);
69 Bone->SetInstanceSimulatePhysics(
false);
75 CarlaVehicle->GetMesh()->SetCollisionResponseToChannel(ECollisionChannel::ECC_WorldStatic, ECollisionResponse::ECR_Overlap);
78 CarlaVehicle->GetMesh()->SetCollisionResponseToChannel(ECollisionChannel::ECC_Visibility, ECollisionResponse::ECR_Overlap);
81 CarlaVehicle->AttachToActor(OffsetActor, FAttachmentTransformRules::KeepWorldTransform);
83 UE_LOG(LogCarla, Warning, TEXT(
"Error: CarSim plugin is not enabled") );
108 FVector NormalImpulse,
109 const FHitResult &Hit)
114 CarlaVehicle->GetMesh()->SetPhysicsLinearVelocity(FVector(0,0,0),
false,
"Vehicle_Base");
115 CarlaVehicle->GetVehicleMovementComponent()->SetComponentTickEnabled(
true);
116 CarlaVehicle->GetVehicleMovementComponent()->Activate();
117 CarlaVehicle->GetMesh()->PhysicsTransformUpdateMode = EPhysicsTransformUpdateMode::SimulationUpatesComponentTransform;
118 auto * Bone =
CarlaVehicle->GetMesh()->GetBodyInstance(NAME_None);
121 Bone->SetInstanceSimulatePhysics(
true);
127 CarlaVehicle->GetMesh()->SetCollisionResponseToChannel(ECollisionChannel::ECC_WorldStatic, ECollisionResponse::ECR_Block);
128 CarlaVehicle->GetMesh()->SetCollisionProfileName(
"Vehicle");
136 UPrimitiveComponent* OtherComp,
137 int32 OtherBodyIndex,
139 const FHitResult & SweepResult)
141 if (OtherComp->GetCollisionResponseToChannel(
142 ECollisionChannel::ECC_WorldDynamic) ==
143 ECollisionResponse::ECR_Block)
148 CarlaVehicle->GetMesh()->SetPhysicsLinearVelocity(FVector(0,0,0),
false,
"Vehicle_Base");
149 CarlaVehicle->GetVehicleMovementComponent()->SetComponentTickEnabled(
true);
150 CarlaVehicle->GetVehicleMovementComponent()->Activate();
151 CarlaVehicle->GetMesh()->PhysicsTransformUpdateMode = EPhysicsTransformUpdateMode::SimulationUpatesComponentTransform;
152 auto * Bone =
CarlaVehicle->GetMesh()->GetBodyInstance(NAME_None);
155 Bone->SetInstanceSimulatePhysics(
true);
161 CarlaVehicle->GetMesh()->SetCollisionResponseToChannel(ECollisionChannel::ECC_WorldStatic, ECollisionResponse::ECR_Block);
162 CarlaVehicle->GetMesh()->SetCollisionProfileName(
"Vehicle");
void OnCarSimOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)