Structures in structures,

When using these in blueprints, you do pay an extra cost, because there’s an additional “unpack this structure” call for each thing you want to read out.

An alternative might be to make a UObject that you can pass around, that has each kind of structure as a separate property. UObjects are always passed by reference, and this lets you avoid chaining multiple “split struct” accessors at once. There’s still a “read property X” node, of course, so the Most Efficient ™ is to inline all the individual members, rather than pack them into separately grouped structs. Then again, if your blueprint code ends up being called frequently enough that this different matters, maybe it should be C++ in the first place…

Anyway: UObject classes! Not entirely useless!