Mutable C++ UCustomizableSkeletalComponent not updating mesh

Ah thanks, I did see the C++ section in the docs but from what I gathered it looked like it was for runtime use since it didn’t create a default subobject in the constructor. I didn’t want to go down that route because if you do this on BeginPlay or PostInitializeComponents then it won’t show up when you change instance in the editor.

As I was looking into this more I remembered an alternative to UCustomizableSkeletalComponent called UCustomizableObjectInstanceUsage. It serves the same purpose but is just a UObject instead of a component, so it’s a bit cheaper too. I got it working and updating in editor by overriding OnConstruction and creating it there:

void ACustomizableCharacter::OnConstruction(const FTransform& Transform)
{
	Super::OnConstruction(Transform);

	CustomizableObjectInstanceUsage = NewObject<UCustomizableObjectInstanceUsage>(SkeletalMesh);

	CustomizableObjectInstanceUsage->AttachTo(SkeletalMesh);

	CustomizableObjectInstanceUsage->SetCustomizableObjectInstance(CustomizableObjectInstance);

	CustomizableObjectInstanceUsage->SetComponentName("Body");
	
}

Not sure why they don’t mention this approach in the C++ section because UCustomizableObjectInstanceUsage has a nice description in the code, to me it is the cleanest way to do it as you avoid having another component clutter the list and also save a bit of performance.