Unions are the devil's work, but now there's GravityWell, Directed and DirectedField structs implemented in PhysicsStructs