Reparent blueprint does not respect inherited Blueprintable Class Specifier

the class specifier Blueprintable is supposed to be inherited, but it does not work if you try to reparent to a class that does not put it directly in its own class specifiers. (It works in other cases)

Repro steps:
Create a new c++ class that inherits from ActorComponent and call it MyActorComponent.
Create a new blueprint that inherits from ActorComponent called BP_MyActorComponent
Try to reparent BP_MyActorComponent to MyActorComponent. It will not show up in the listbox.

Add Blueprintable to MyActorComponents class specifiers. Compile.
Now BP_MyActorComponent can be reparented to MyActorComponent

Hey Amimoller-

UActorComponent doesn’t list Blueprintable in its UCLASS macro, so classes inherited from it wouldn’t have this either. Using Actor (which does have Blueprintable in the UCLASS macro) instead of ActorComponent, I was able to reparent my blueprint from Actor.h to MyActor.h with no additions to the code.

Cheers

Ah, didnt check that :confused: , I guess i assumed it was there. If it is not blueprintable why can you create blueprints from it, special case code in the engine? In any case it seems inconsistent that you can create a blueprint of an actorcomponent but you cannot reparent to it. So maybe that is the ‘bug’?, even if it is technically correct.

I have entered a bug report about not being able to reparent a blueprint to a class inherited from ActorComponent (UE-24990) for investigation.

Adding Bluepintable to UCLASS macro did the trick:
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent), Blueprintable )
class YOURPROJECT_API UMyActorComponent : public UActorComponent