+VG_STATIC void skate_camera_thirdperson( player_interface *player,
+ player_attachment *at )
+{
+ struct player_device_skate *s = at->storage;
+ struct player_avatar *av = player->playeravatar;
+
+ v3f origin, dir, target;
+ v3_copy( player->rb.co, origin );
+ v3_add( origin, (v3f){0.0f,1.35f,0.0f}, origin );
+ v3_sub( origin, s->state.posl, dir );
+
+ if( v3_length2( dir ) < 0.1f*0.1f )
+ v3_copy( (v3f){ 0.0f, 0.0f, 1.0f }, dir ); /* FIXME */
+ else
+ v3_normalize( dir );
+
+ v3_muladds( origin, dir, -2.0f, target );
+ v3_lerp( s->state.posl, target, vg.frame_delta * 12.0f, s->state.posl );
+
+ v3_copy( s->state.posl, at->cam_3rd.pos );
+ skate_camera_vector_look( &at->cam_3rd, dir, 1.0f, 0.0f );
+ at->cam_3rd.fov = 100.0f;