+
+
+ teleport_gate *gate;
+ if( (gate = world_intersect_gates( player->rb.co, s->state.prev_pos )) )
+ {
+ m4x3_mulv( gate->transport, player->rb.co, player->rb.co );
+ m3x3_mulv( gate->transport, player->rb.v, player->rb.v );
+ m4x3_mulv( gate->transport, s->state.cog, s->state.cog );
+ m3x3_mulv( gate->transport, s->state.cog_v, s->state.cog_v );
+ m3x3_mulv( gate->transport, s->state.throw_v, s->state.throw_v );
+ m4x3_mulv( gate->transport, s->state.posl, s->state.posl );
+ m3x3_mulv( gate->transport, s->state.vl, s->state.vl );
+
+#if 0
+ mixedcam_transport( &s->state.cam, gate );
+#endif
+
+ v4f transport_rotation;
+ m3x3_q( gate->transport, transport_rotation );
+ q_mul( transport_rotation, player->rb.q, player->rb.q );
+ rb_update_transform( &player->rb );
+
+ s->state_gate_storage = s->state;
+ player_pass_gate( player, gate );
+ }