double start_push,
cur_push;
- struct mixedcam_state cam;
-
v3f prev_pos;
+
+
+ v3f vl, /* 1st */
+ posl; /* 3rd */
}
state,
state_gate_storage;
m3x3_mulv( gate->transport, s->state.cog_v, s->state.cog_v );
m3x3_mulv( gate->transport, s->state.throw_v, s->state.throw_v );
+#if 0
mixedcam_transport( &s->state.cam, gate );
+#endif
v4f transport_rotation;
m3x3_q( gate->transport, transport_rotation );
//v3_normalize( flat_dir );
v3_lerp( flat_dir, vel_dir, vg_clampf( tti / 2.0f, 0.4f, 1.0f ), look_dir );
- v3_lerp( s->state.cam.vl, look_dir, 4.0f*vg.time_delta, s->state.cam.vl );
+ v3_lerp( s->state.vl, look_dir, 4.0f*vg.time_delta, s->state.vl );
- skate_camera_vector_look( &at->cam_1st, s->state.cam.vl, 0.7f, 0.5f );
+ skate_camera_vector_look( &at->cam_1st, s->state.vl, 1.0f, 0.25f );
}
-#if 0
VG_STATIC void skate_camera_thirdperson( player_interface *player,
- struct player_device_skate *s,
- struct player_avatar *av, camera *cam )
+ player_attachment *at )
{
- v3f prev_pos, cam_look_dir, d;
+ struct player_device_skate *s = at->storage;
+ struct player_avatar *av = player->playeravatar;
- v3_copy( s->state.cam.pos, prev_pos );
- skate_camera_thirdperson_nextpos( player, s, av, s->state.cam.pos, d);
+ 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 );
- if( s->state.cam.gate )
- {
- v2f _;
- if( gate_intersect_plane( s->state.cam.gate,
- s->state.cam.pos, prev_pos, _ ) )
- {
- m4x3_mulv( s->state.cam.gate->transport,
- s->state.cam.pos, s->state.cam.pos );
- m3x3_mulv( s->state.cam.gate->transport, d, d );
- player_apply_transport_to_cam( s->state.cam.gate->transport );
+ v3_muladds( origin, dir, -2.0f, target );
+ v3_lerp( s->state.posl, target, vg.frame_delta * 12.0f, s->state.posl );
- s->state.cam.gate = NULL;
- }
- }
-
- skate_camera_vector_look( cam, d, 1.0f, 0.0f );
- v3_copy( s->state.cam.pos, cam->pos );
+ 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;
}
-#endif
VG_STATIC void player_skate_post_animate( player_interface *player,
player_attachment *at )
v3_zero( at->cam_1st.angles );
at->cam_1st.fov = 90.0f;
-#if 0
- if( cl_thirdperson )
- skate_camera_thirdperson( player, s, av, cam );
- else
-#endif
+ skate_camera_thirdperson( player, at );
skate_camera_firstperson( player, at );
/* FIXME: Organize this. Its int wrong fucking place */
struct player_device_skate *s = at->storage;
v3_muladds( player->rb.co, player->rb.to_world[1], 1.0f, s->state.cog );
+#if 0
mixedcam_reset( player, &s->state.cam );
+#endif
}
VG_STATIC player_device player_device_skate =