(50c0271)
[carveJwlIkooP6JGAAIwe30JlM.git] / player_drive.c
index 90036a66f2549007a1f511b7d0c0fc0c93f024e3..230e7bdb0970c2ebc94242a211c024ca73327558 100644 (file)
@@ -1,45 +1,64 @@
-#ifndef PLAYER_DRIVE_C
-#define PLAYER_DRIVE_C
-
-#include "player.h"
+#include "player_drive.h"
 #include "input.h"
 
-static void player__drive_pre_update(void){
+struct player_drive player_drive;
+struct player_subsystem_interface player_subsystem_drive = 
+{
+   .pre_update = player__drive_pre_update,
+   .update = player__drive_update,
+   .post_update = player__drive_post_update,
+   .animate = player__drive_animate,
+   .pose = player__drive_pose,
+   .post_animate = player__drive_post_animate,
+   .im_gui = player__drive_im_gui,
+   .bind = player__drive_bind,
+
+   .animator_data = NULL,
+   .animator_size = 0,
+   .name = "Drive"
+};
+
+void player__drive_pre_update(void)
+{
    drivable_vehicle *vehc = player_drive.vehicle;
 
    v2f steer;
    joystick_state( k_srjoystick_steer, steer );
 
-   vehc->steer = vg_lerpf( vehc->steer, steer[0] * 0.4f, k_rb_delta * 8.0f );
+   vehc->steer = vg_lerpf( vehc->steer, steer[0] * 0.4f, 
+                           vg.time_fixed_delta * 8.0f );
    vehc->drive = steer[1];
 }
 
-static void player__drive_update(void){}
+void player__drive_update(void){}
 
-static void player__drive_post_update(void){
-   v3_copy( player_drive.vehicle->obj.rb.co,localplayer.rb.co );
-   v3_copy( player_drive.vehicle->obj.rb.v, localplayer.rb.v );
-   v4_copy( player_drive.vehicle->obj.rb.q, localplayer.rb.q );
-   v3_copy( player_drive.vehicle->obj.rb.w, localplayer.rb.w );
+void player__drive_post_update(void)
+{
+   v3_copy( player_drive.vehicle->rb.co,localplayer.rb.co );
+   v3_copy( player_drive.vehicle->rb.v, localplayer.rb.v );
+   v4_copy( player_drive.vehicle->rb.q, localplayer.rb.q );
+   v3_copy( player_drive.vehicle->rb.w, localplayer.rb.w );
 }
 
-static void player__drive_animate(void){}
+void player__drive_animate(void){}
 
-static void player__drive_pose( void *animator, player_pose *pose ){
-   struct skeleton *sk = &localplayer.playeravatar->sk;
+void player__drive_pose( void *animator, player_pose *pose )
+{
+   struct skeleton *sk = &localplayer.skeleton;
 
    skeleton_sample_anim( sk, player_drive.anim_drive, 0.0f, pose->keyframes );
    v3_copy( localplayer.rb.co, pose->root_co );
    v4_copy( localplayer.rb.q, pose->root_q );
 }
 
-static void player__drive_post_animate(void){
+void player__drive_post_animate(void)
+{
    if( localplayer.cam_control.camera_mode == k_cam_firstperson )
       localplayer.cam_velocity_influence = 0.0f;
    else
       localplayer.cam_velocity_influence = 1.0f;
 
-   rigidbody *rb = &gzoomer.obj.rb;
+   rigidbody *rb = &gzoomer.rb;
    float yaw = atan2f( -rb->to_world[2][0], rb->to_world[2][2] ),
        pitch = atan2f
                ( 
@@ -55,19 +74,14 @@ static void player__drive_post_animate(void){
    localplayer.angles[1] = pitch;
 }
 
-static void player__drive_im_gui(void){
+void player__drive_im_gui(void)
+{
    player__debugtext( 1, "Nothing here" );
 }
 
-static void player__drive_bind(void){
-   struct player_avatar *av = localplayer.playeravatar;
-   struct skeleton *sk = &av->sk;
-
+void player__drive_bind(void)
+{
+   struct skeleton *sk = &localplayer.skeleton;
    player_drive.vehicle = &gzoomer;
    player_drive.anim_drive = skeleton_get_anim( sk, "idle_cycle+y" );
 }
-
-static void player__drive_reset( ent_spawn *rp ){
-}
-
-#endif /* PLAYER_DRIVE_C */