Turns out doing our own trace doesn't necessarily mean identical result, as proven by #40. TryPlayerMove use m_TouchList to store its traces, so ideally we can just take the trace responsible for the landing as the origin, which is literally as good as it can be in terms of determining landing position.