X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_drive.c;h=230e7bdb0970c2ebc94242a211c024ca73327558;hb=HEAD;hp=38b7e58c8e586102bfd2afbec92a49d5c80aa916;hpb=2c91a71533b4ce86b9e7fd708420ae05c74d8f52;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_drive.c b/player_drive.c index 38b7e58..230e7bd 100644 --- a/player_drive.c +++ b/player_drive.c @@ -1,31 +1,49 @@ -#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 ){ +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 ); @@ -33,13 +51,14 @@ static void player__drive_pose( void *animator, player_pose *pose ){ 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,14 +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){ +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" ); } - -#endif /* PLAYER_DRIVE_C */