+void player__reset(void)
+{
+ v3_zero( localplayer.rb.v );
+ v3_zero( localplayer.rb.w );
+
+ f32 l = v4_length( localplayer.rb.q );
+ if( (l < 0.9f) || (l > 1.1f) )
+ q_identity( localplayer.rb.q );
+
+ rb_update_matrices( &localplayer.rb );
+
+ localplayer.subsystem = k_player_subsystem_walk;
+ player__walk_reset();
+
+ localplayer.immobile = 0;
+ localplayer.gate_waiting = NULL;
+ localplayer.have_glider = 0;
+ localplayer.glider_orphan = 0;
+ localplayer.drowned = 0;
+
+ v3_copy( localplayer.rb.co, localplayer.cam_control.tpv_lpf );
+ player__clean_refs();
+}
+
+void player__spawn( ent_spawn *rp )
+{
+ player__setpos( rp->transform.co );
+ player__reset();
+}
+