m4x3_mulv( inverse, localplayer.cam.pos, localplayer.cam.pos );
struct skeleton *sk = &localplayer.playeravatar->sk;
- skeleton_apply_transform( sk, inverse );
+ skeleton_apply_transform( sk, inverse, localplayer.final_mtx );
}
}
}
/* position */
v3f fpv_pos, fpv_offset;
- m4x3_mulv( av->sk.final_mtx[ av->id_head-1 ],
+ m4x3_mulv( localplayer.final_mtx[ av->id_head-1 ],
cc->fpv_viewpoint_smooth, fpv_pos );
m3x3_mulv( localplayer.rb.to_world, cc->fpv_offset_smooth, fpv_offset );
v3_add( fpv_offset, fpv_pos, fpv_pos );
v3f pco;
v4f pq;
rb_extrapolate( &localplayer.rb, pco, pq );
+ v3_muladds( pco, localplayer.holdout_pose.root_co,
+ localplayer.holdout_time, pco );
v3_lerp( cc->tpv_lpf, pco, 20.0f*vg.time_frame_delta, cc->tpv_lpf );
/* now move into world */
v3_muladds( tpv_offset, cc->cam_velocity_smooth, -0.025f, tpv_offset );
v3_add( tpv_origin, tpv_offset, tpv_pos );
-#if 0
- f32 t; v3f n;
- if( spherecast_world( world_current_instance(), tpv_origin, tpv_pos,
- 0.2f, &t, n ) != -1 ){
- v3_lerp( tpv_origin, tpv_pos, t, tpv_pos );
- }
-#endif
/*
* Blend cameras