X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=18936a7ade2248844468cc7e182299c46ea14042;hb=6e6c7f31b8f17af3814727109e48fc6f85ef04b1;hp=c718c5ac57eb4ccc66f5cc311ab472001293ddcb;hpb=6ba5c35d106d749a1ebafbd3cbe18c3a02f781d3;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index c718c5a..18936a7 100644 --- a/player.h +++ b/player.h @@ -4,12 +4,14 @@ #include "skaterift.h" #include "player_common.h" #include "network_compression.h" +#include "player_effects.h" enum player_subsystem{ k_player_subsystem_walk = 0, k_player_subsystem_skate = 1, k_player_subsystem_dead = 2, k_player_subsystem_drive = 3, + k_player_subsystem_basic_info = 4, k_player_subsystem_max, k_player_subsystem_invalid = 255 }; @@ -36,13 +38,14 @@ struct player_cam_controller { struct player_subsystem_interface{ void(*system_register)(void); void(*bind)(void); - void(*reset)( ent_spawn *rp ); void(*pre_update)(void); void(*update)(void); void(*post_update)(void); void(*im_gui)(void); void(*animate)(void); void(*pose)( void *animator, player_pose *pose ); + void(*effects)( void *animator, m4x3f *final_mtx, struct player_board *board, + struct player_effects_data *effect_data ); void(*post_animate)(void); void(*network_animator_exchange)( bitpack_ctx *ctx, void *data ); void(*sfx_oneshot)( u8 id, v3f pos, f32 volume ); @@ -56,10 +59,14 @@ struct player_subsystem_interface{ #include "player_ragdoll.h" #include "player_render.h" #include "player_model.h" + +/* subsystem headers */ #include "player_walk.h" #include "player_skate.h" #include "player_dead.h" #include "player_drive.h" +#include "player_basic_info.h" + #include "player_replay.h" #define PLAYER_REWIND_FRAMES 60*4 @@ -74,10 +81,6 @@ struct { rigidbody rb; v3f angles; - v4f qbasis; - m3x3f basis, invbasis, basis_gate; - world_instance *viewable_world; - /* * Camera management * --------------------------- @@ -97,6 +100,8 @@ struct { ent_gate *gate_waiting; int immobile; + int rewinded_since_last_gate; + /* * Network * -------------------------------------------------- @@ -115,9 +120,9 @@ struct { * -------------------------------------------------- */ - struct player_avatar *playeravatar; struct player_ragdoll ragdoll; struct player_model fallback_model; + struct player_board fallback_board; u16 board_view_slot, playermodel_view_slot; @@ -133,6 +138,30 @@ struct { */ enum player_subsystem subsystem; /* .. prev */ + + /* + * Rendering + */ + mdl_context skeleton_meta; + struct skeleton skeleton; + + u32 id_hip, + id_chest, + id_ik_hand_l, + id_ik_hand_r, + id_ik_elbow_l, + id_ik_elbow_r, + id_head, + id_ik_foot_l, + id_ik_foot_r, + id_ik_knee_l, + id_ik_knee_r, + id_wheel_l, + id_wheel_r, + id_board, + id_eyes; + + struct player_effects_data effect_data; } static localplayer = { .rb = { @@ -149,7 +178,8 @@ struct player_subsystem_interface static *player_subsystems[] = { [k_player_subsystem_walk] = &player_subsystem_walk, [k_player_subsystem_dead] = &player_subsystem_dead, [k_player_subsystem_drive] = &player_subsystem_drive, - [k_player_subsystem_skate] = &player_subsystem_skate + [k_player_subsystem_skate] = &player_subsystem_skate, + [k_player_subsystem_basic_info]=&player_subsystem_basic_info }; /* @@ -158,7 +188,6 @@ struct player_subsystem_interface static *player_subsystems[] = { */ static void player__debugtext( int size, const char *fmt, ... ); -static void player__use_avatar( struct player_avatar *av ); static void player__use_mesh( glmesh *mesh ); static void player__use_texture( vg_tex2d *tex ); static void player__use_model( u16 reg_id ); @@ -172,6 +201,8 @@ static void player__pass_gate( u32 id ); static void player__im_gui(void); static void player__setpos( v3f pos ); static void player__spawn( ent_spawn *rp ); +static void player__clean_refs(void); +static void player__reset(void); static void player__kill(void); static void player__begin_holdout( v3f offset );