- struct player_subsystem_interface
- *sys = player_subsystems[frame->system];
- sys->pose( replay_frame_data( frame, k_replay_framedata_animator ),
- &localplayer.pose );
+ sys0->pose( a0, &localplayer.pose );
+ g1 = NULL;
+ }
+
+ player__observe_system( frame->system );
+ if( sys0->sfx_comp )
+ sys0->sfx_comp( a0 );
+
+ if( g0 ){
+ if( g0->glider_orphan ){
+ if( g1 ){
+ v3_lerp( g0->co, g1->co, t, player_glide.rb.co );
+ q_nlerp( g0->q, g1->q, t, player_glide.rb.q );
+ }
+ else {
+ v3_copy( g0->co, player_glide.rb.co );
+ v4_copy( g0->q, player_glide.rb.q );
+ }
+
+ rb_update_matrices( &player_glide.rb );
+ }
+
+ if( g1 )
+ player_glide.t = vg_lerpf( g0->t, g1->t, t );
+ else
+ player_glide.t = g0->t;
+
+ localplayer.have_glider = g0->have_glider;
+ localplayer.glider_orphan = g0->glider_orphan;
+ }
+ else /* no glider data in g1, or edge case we dont care about */ {
+ localplayer.have_glider = 0;
+ localplayer.glider_orphan = 0;
+ player_glide.t = 0.0f;