X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_render.h;h=4ea095cb5088059edc2da4eec01d55176d3b3543;hb=7122b79f53f4501751d884c0bf2e838ab501c4a3;hp=e9d17bb6c90c2e3817df489a1bc423f2abe36cb8;hpb=1b522daa02f28128498b04def4d60b63e590d1f3;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_render.h b/player_render.h index e9d17bb..4ea095c 100644 --- a/player_render.h +++ b/player_render.h @@ -3,6 +3,8 @@ #include "model.h" #include "skeleton.h" +#include "camera.h" +#include "world.h" struct player_avatar { @@ -10,6 +12,7 @@ struct player_avatar struct skeleton sk; u32 id_hip, + id_chest, id_ik_hand_l, id_ik_hand_r, id_ik_elbow_l, @@ -24,12 +27,6 @@ struct player_avatar id_board; }; -struct player_model -{ - glmesh mesh; - GLuint texture; -}; - enum eboard_truck{ k_board_truck_back = 0, k_board_truck_front = 1 @@ -42,10 +39,15 @@ enum eboard_wheel{ k_board_wheel_br = 3, }; -struct player_board -{ +/* TODO: Fully featured dynamic models + * This is FAR from the final system we want at all, but it will do for now */ +struct dynamic_model_1texture{ glmesh mesh; GLuint texture; +}; + +struct player_board{ + struct dynamic_model_1texture mdl; v4f wheel_positions[4], truck_positions[2], @@ -56,4 +58,39 @@ struct player_board board; }; +struct player_model{ + struct dynamic_model_1texture mdl; +}; + +enum board_shader{ + k_board_shader_player, + k_board_shader_entity +}; + +static void dynamic_model_load( mdl_context *ctx, + struct dynamic_model_1texture *mdl, + const char *path ); +static void dynamic_model_unload( struct dynamic_model_1texture *mdl ); + +static void player_board_load( struct player_board *mdl, const char *path ); +static void player_board_unload( struct player_board *mdl ); + +static void player_model_load( struct player_model *board, const char *path); +static void player_model_unload( struct player_model *board ); + +static void render_board( camera *cam, world_instance *world, + struct player_board *board, m4x3f root, + struct player_board_pose *pose, + enum board_shader shader ); + +static void render_playermodel( camera *cam, world_instance *world, + int depth_compare, + struct player_model *model, + struct skeleton *skeleton, + m4x3f *final_mtx ); +static void apply_full_skeleton_pose( struct skeleton *sk, player_pose *pose, + m4x3f *final_mtx ); +static void lerp_player_pose( player_pose *pose0, player_pose *pose1, f32 t, + player_pose *posed ); + #endif /* PLAYER_RENDER_H */