player->dev.device->update( player, &player->dev );
}
-VG_STATIC void player_post_update( player_interface *player,
- camera *main_camera )
+VG_STATIC void player_apply_transport_to_cam( m4x3f transport )
{
+ /* FIXME: Applies to main_camera directly! */
+
+ /* Pre-emptively edit the camera matrices so that the motion vectors
+ * are correct */
+ m4x3f transport_i;
+ m4x4f transport_4;
+ m4x3_invert_affine( transport, transport_i );
+ m4x3_expand( transport_i, transport_4 );
+ m4x4_mul( main_camera.mtx.pv, transport_4, main_camera.mtx.pv );
+ m4x4_mul( main_camera.mtx.v, transport_4, main_camera.mtx.v );
+}
+
+VG_STATIC void player_post_update( player_interface *player )
+{
+ /* FIXME: Applies to main_camera directly! */
+
assert( player->dev.device );
if( player->dev.device->post_update )
{
player->dev.device->gate_transport( player, &player->dev, gate );
v3_copy( player->rb.co, player->prev_position );
-
- /* Pre-emptively edit the camera matrices so that the motion vectors
- * are correct */
- m4x3f transport_i;
- m4x4f transport_4;
- m4x3_invert_affine( gate->transport, transport_i );
- m4x3_expand( transport_i, transport_4 );
- m4x4_mul( main_camera->mtx.pv, transport_4, main_camera->mtx.pv );
- m4x4_mul( main_camera->mtx.v, transport_4, main_camera->mtx.v );
}
}
v3_zero( player->rb.w );
q_identity( player->rb.q );
rb_update_transform( &player->rb );
+
+ if( player->dev.device->reset )
+ player->dev.device->reset( player, &player->dev, rp );
}
/*