audio_lock();
if( w->surface == k_surface_prop_concrete ){
audio_oneshot_3d(
- &audio_footsteps[vg_randu32()%vg_list_size(audio_footsteps)],
+ &audio_footsteps[vg_randu32(&vg.rand) %
+ vg_list_size(audio_footsteps)],
localplayer.rb.co, 40.0f, 1.0f
);
}
else if( w->surface == k_surface_prop_grass ){
audio_oneshot_3d(
- &audio_footsteps_grass[ vg_randu32()%
+ &audio_footsteps_grass[ vg_randu32(&vg.rand) %
vg_list_size(audio_footsteps_grass)],
localplayer.rb.co, 40.0f, 1.0f
);
}
else if( w->surface == k_surface_prop_wood ){
audio_oneshot_3d(
- &audio_footsteps_wood[ vg_randu32()%
+ &audio_footsteps_wood[ vg_randu32(&vg.rand) %
vg_list_size(audio_footsteps_wood)],
localplayer.rb.co, 40.0f, 1.0f
);
w->state.activity = k_walk_activity_air;
w->state.outro_type = k_walk_outro_none;
w->state.outro_start_time = 0.0;
+
+ v3f fwd = { 0.0f, 0.0f, 1.0f };
+ q_mulv( localplayer.rb.q, fwd, fwd );
+ q_axis_angle( localplayer.rb.q, (v3f){0.0f,1.0f,0.0f},
+ atan2f(fwd[0], fwd[2]) );
+
+ rb_update_transform( &localplayer.rb );
}
static void player__walk_animator_exchange( bitpack_ctx *ctx, void *data ){