yeah yeah yeah
authorhgn <hgodden00@gmail.com>
Sun, 29 Jan 2023 22:46:13 +0000 (22:46 +0000)
committerhgn <hgodden00@gmail.com>
Sun, 29 Jan 2023 22:46:13 +0000 (22:46 +0000)
player_device_skate.h
skaterift.c

index 04a2da1115242581249cece7b445d8d03d23c553..e23398d78a45e17d0b5df1165e3abf8faff5c069 100644 (file)
@@ -44,9 +44,11 @@ struct player_device_skate
       double start_push,
              cur_push;
 
-      struct mixedcam_state cam;
-
       v3f prev_pos;
+
+
+      v3f vl,       /* 1st */
+          posl;    /* 3rd */
    }
    state,
    state_gate_storage;
@@ -1172,7 +1174,9 @@ VG_STATIC void player_skate_update( player_interface *player,
       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 );
@@ -1506,40 +1510,34 @@ VG_STATIC void skate_camera_firstperson( player_interface *player,
    //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 )
@@ -1551,11 +1549,7 @@ VG_STATIC void player_skate_post_animate( player_interface *player,
    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 */
@@ -1579,7 +1573,9 @@ VG_STATIC void player_skate_reset( player_interface *player,
    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 =
index 3923ca0140e29d032ba6d183b25acc208e04ef93..0d3ff70599a60ec40e2b2e653363c5b66e810d8b 100644 (file)
@@ -251,7 +251,7 @@ VG_STATIC void vg_load(void)
    player_use_avatar( &localplayer, &localplayer_avatar );
    player_use_mesh( &localplayer, &localplayer_meshes[0] );
    player_use_device( &localplayer, &player_device_walk, &localplayer_walk );
-   //player_use_device( &localplayer, &player_device_skate, &localplayer_skate );
+   player_use_device( &localplayer, &player_device_skate, &localplayer_skate );
 
    /* --------------------- */