- Fix NULL renderer pointers by moving TransportManager connection after
initializeRenderers for WMO-only maps
- Fix tram direction by negating DBC TransportAnimation X/Y local offsets
before serverToCanonical conversion
- Implement client-side M2 transport boarding via proximity detection
(server doesn't send transport attachment for trams)
- Use position-delta approach: player keeps normal movement while
transport's frame-to-frame motion is applied on top
- Prevent server movement packets from clearing client-side M2 transport
state (isClientM2Transport guard)
- Fix getPlayerWorldPosition for M2 transports: simple canonical addition
instead of render-space matrix multiplication