Why is FVector not Declared as UStruct(Blueprintable), but we can use it in BPs?

Just out of curiosity, Why is FVector not Declared as UStruct(Blueprintable), but we can use it in BPs?

Thanks.

It’s probably registered manually somewhere else and support for it is hard coded in to UnrealHeaderTool, as it one of most common used types. All macros you use are normally parsed by UHT before compilation, UHT then generates extra C++ which generates entries in reflection system, but this can be done manually. Good example is blueprint structures which need to register themselves to it too. Blueprint themselves need to register themselves as classes, reflection system is design to take different types from different sources as well it can be hard coded and C++ via UHT parseing is just one way of doing it.

USTRUCT(immutable, noexport, BlueprintType, meta=(HasNativeMake="Engine.KismetMathLibrary.MakeVector", HasNativeBreak="Engine.KismetMathLibrary.BreakVector"))
struct FVector

The code above defined in NoExportTypes.h, which is design for UHT to generates glue codes.

I am just learning this myself but there is another definition for it in NoExportTypes.h. That is what the blueprint system can see.