C++ Derived Blueprint Component cannot be changed in editor

Hi, guys

I am currently working on a component based vehicle system, which requires vehicles to have certain parts. The Vehicle itself is a BP pawn derived from a C++ class called PlayerCar and the vehicle parts are supposed to be components. The parent class of PlayerCar is VehicleBase, where all of the component related stuff is done

VehicleBase.h

UCLASS()
class STREETDREAMS2021_API AVehicleBase : public APawn
{
	GENERATED_BODY()

public:
	// Sets default values for this pawn's properties
	AVehicleBase();

protected:
//Can be static meshes since they have no impact on vehicle stats
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="Body Mesh",meta=(AllowPrivateAccess = "true"))
	UStaticMeshComponent* Chassis;
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="Body Mesh",meta=(AllowPrivateAccess = "true"))
	UStaticMeshComponent* Body;
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="Body Mesh",meta=(AllowPrivateAccess = "true"))
	UStaticMeshComponent* Underbody;
	
	//Custom Component
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="Vehicle Parts",meta=(AllowPrivateAccess = "true"))
//Maybe this is the source of the problem ? UExhaust* does not let me change the property either
    	TSubclassOf<UExhaust> Exhaust = UExhaust::StaticClass();

//... a lot of other components
};

VehicleBase.cpp

AVehicleBase::AVehicleBase()
{
	Chassis = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Chassis"));
	RootComponent = Chassis;
	Body = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Car Body"));
	Body->SetupAttachment(RootComponent);
	Underbody = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Underbody"));
	Underbody->SetupAttachment(Body);
	
		UExhaust* ExhaustComp = Cast<UExhaust>(CreateDefaultSubobject(TEXT("Exhaust"),*Exhaust,*Exhaust,true,false));
		ExhaustComp->SetupAttachment(Body);
	UE_LOG(LogTemp,Warning,TEXT("Exhaust Name : %s"),*GetNameSafe(Exhaust));

//... setup other components
}

Static Mesh Components work, but i want the parts to affect the vehicle’s performance as well as making sure that each part is only represented once and they only accept certain objects. Therefore i made a new class called CarPartBase that serves as a parent class and derived a couple specific child classes from it

CarPartBase.h

UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent,BlueprintThreadSafe),Blueprintable)
class STREETDREAMS2021_API UCarPartBase : public USceneComponent 
{
	GENERATED_BODY()

public:	
	// Sets default values for this component's properties
	UCarPartBase();

protected:
	// Called when the game starts

	UPROPERTY(EditAnywhere,BlueprintReadWrite, Category="Attribute") 
	float Acc = 0.0;

//... some attributes here

	virtual void BeginPlay() override;
public:
	 TArray<float> GetValue();
	UPROPERTY(EditAnywhere,BlueprintReadWrite, Category="Visual Mesh")
	UStaticMesh* VisualMesh;
	
		
};

Exhaust.h

//Child of CarPartBase
UCLASS()
class STREETDREAMS2021_API UExhaust : public UCarPartBase
{
	GENERATED_BODY()
};

I have BP scene components derived from these CarPartBase child classes because i want to set their properties in editor.

The car pawn is supposed to take these parts.

The problem

I cannot change the Exhaust component in the PlayerCar pawn (Pic 2). Not only do i not get a visual representation of the mesh but UE_LOG(LogTemp,Warning,TEXT("Exhaust Name : %s"),*GetNameSafe(Exhaust)); gives me the same name, every time.

Maybe im going at this problem with the wrong method. I would appreciate any kind of help.

Thanks in advance