X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_model.h;fp=player_model.h;h=7bf801ce8f2935f232ca370c755d5ab75957cc5c;hb=07d0834b13ecf5de312cf3578e8aca8f106f5ef1;hp=4a09b90589233e2c3d91a6f2cd3c81bde26abb34;hpb=2ab1c45f664daf5a452fd212c89dcfd918f7dd81;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_model.h b/player_model.h index 4a09b90..7bf801c 100644 --- a/player_model.h +++ b/player_model.h @@ -13,12 +13,71 @@ #endif #include "model.h" +#include "skeleton.h" #include "player_ragdoll.h" +#include "rigidbody.h" + #include "shaders/viewchar.h" -vg_tex2d tex_characters = { .path = "textures/ch_gradient.qoi" }; +struct player_avatar +{ + mdl_context meta; + struct skeleton sk; + + v3f cam_pos; /* FIXME ? */ + +#if 0 + struct skeleton_anim *anim_stand, + *anim_highg, + *anim_slide, + *anim_air, + *anim_push, *anim_push_reverse, + *anim_ollie, *anim_ollie_reverse, + *anim_grabs, *anim_stop, + *anim_walk, *anim_run, *anim_idle, + *anim_jump; +#endif + + u32 id_hip, + 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_board; +}; + +#if 0 +glmesh player_meshes[3]; +#endif + +VG_STATIC void player_avatar_load( struct player_avatar *av, const char *path ) +{ + /* load in reference player model, with animations and such */ + /* FIXME: This is allocated as un-freeable systems memory */ + + mdl_open( &av->meta, path ); + mdl_load_metadata( &av->meta, vg_mem.rtmemory ); + mdl_load_anim_data( &av->meta, vg_mem.rtmemory ); + + struct skeleton *sk = &av->sk; + skeleton_setup( sk, vg_mem.rtmemory, &av->meta ); + + av->id_hip = skeleton_bone_id( sk, "hips" ); + av->id_ik_hand_l = skeleton_bone_id( sk, "hand.IK.L" ); + av->id_ik_hand_r = skeleton_bone_id( sk, "hand.IK.R" ); + av->id_ik_elbow_l = skeleton_bone_id( sk, "elbow.L" ); + av->id_ik_elbow_r = skeleton_bone_id( sk, "elbow.R" ); + av->id_head = skeleton_bone_id( sk, "head" ); + av->id_ik_foot_l = skeleton_bone_id( sk, "foot.IK.L" ); + av->id_ik_foot_r = skeleton_bone_id( sk, "foot.IK.R" ); + av->id_board = skeleton_bone_id( sk, "board" ); +} -VG_STATIC void player_model_init(void) +#if 0 +VG_STATIC void player_load_reference( struct player_model *pmodel ) { shader_viewchar_register(); vg_acquire_thread_sync(); @@ -130,5 +189,6 @@ VG_STATIC void player_model_init(void) } } } +#endif #endif