X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_render.c;h=1ade3d7d86c1856cfe556c4f2600d42b15675739;hb=76315944e5a98838163e0aba8601ed3522f0724d;hp=6174155351ef8486297f2e158bf31e29adbdd3e4;hpb=fe4d150c7b6b49cd9922459707f9fb9aec9dae9c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_render.c b/player_render.c index 6174155..1ade3d7 100644 --- a/player_render.c +++ b/player_render.c @@ -275,6 +275,7 @@ static void player__animate(void){ if( sys->post_animate ) sys->post_animate(); + player__observe_system( localplayer.subsystem ); if( sys->sfx_comp ) sys->sfx_comp( sys->animator_data ); @@ -310,6 +311,16 @@ static void lerp_player_pose( player_pose *pose0, player_pose *pose1, f32 t, } } +static void player__observe_system( enum player_subsystem id ){ + if( id != localplayer.observing_system ){ + struct player_subsystem_interface *sysm1 = + player_subsystems[ localplayer.observing_system ]; + + if( sysm1->sfx_kill ) sysm1->sfx_kill(); + localplayer.observing_system = id; + } +} + static void player__animate_from_replay( replay_buffer *replay ){ replay_frame *frame = replay->cursor_frame, *next = NULL; @@ -338,6 +349,7 @@ static void player__animate_from_replay( replay_buffer *replay ){ sys0->pose( a0, &localplayer.pose ); } + player__observe_system( frame->system ); if( sys0->sfx_comp ) sys0->sfx_comp( a0 ); }