It’s not ugly, it very simple and logical once you understand what it isl. Pointer is integer with memory address pointing to specific type, if use “.” you referring directly to pointer, if you use “->” you referring to object it points to. In UE4 because object management all UObjects are pointers, so you always use “->” on them, if deal with Structs or non-UObject classes you use “.” or else you using pointer.