Blueprint cast support for USTRUCTs

In the UPROPERTY system, all Structs are stored by value, not by reference. Therefore only enough space is allocated for the specified class. Any attempt to assign a subclass in to that variable or array will result in the subclass specific data being lost, just as it would in any C++ struct usage.

If you want a pattern similar to what you’re describing you’ll either need to use UObjects or some kind of self-managed internal state to the structs where you have a base class, a type enum, and then a pointer to memory that you self manage that has the per-gesture type payload. The “Unreal Way” to accomplish something like this would be to use UObjects.