The only part that I don't like is that Entity::SetInput still can't be used for regular physics object, only for this special hardcoded player controller, right? I don't think engine should have any understanding of "player" object. Because its understanding will always be limiting for us in some way.