X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_model.h;h=576109c51736cf3dc9c2f15a990de928e71a6f15;hb=859178c6d4b2a9b9a95f8b01b113f589ce0f197f;hp=e0693b16433aad19987cf4b81ade116c0d6269e4;hpb=c2d67378dd5c82de50b8fbbbe222ec6be2da4eee;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_model.h b/player_model.h index e0693b1..576109c 100644 --- a/player_model.h +++ b/player_model.h @@ -1,126 +1,17 @@ /* - * Copyright 2021-2022 (C) Mount0 Software, Harry Godden - All Rights Reserved + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved */ #ifndef CHARACTER_H #define CHARACTER_H -#include "player.h" -#include "player_ragdoll.h" -#include "shaders/viewchar.h" - -vg_tex2d tex_characters = { .path = "textures/ch_gradient.qoi" }; - -static int player_model_init(void) -{ - shader_viewchar_register(); - - if( vg_acquire_thread_sync(1) ) - { - vg_tex2d_init( (vg_tex2d *[]){ &tex_characters }, 1 ); - vg_release_thread_sync(1); - return 1; - } - else - return 0; -} - -static void player_model_free(void *_) -{ - vg_tex2d_free( (vg_tex2d *[]){ &tex_characters }, 1 ); -} - -/* - * Load model from file (.mdl) - */ -static int player_load_model( const char *name ) -{ - char buf[64]; - - snprintf( buf, sizeof(buf)-1, "models/%s.mdl", name ); - mdl_header *src = mdl_load( buf ); +#define VG_GAME +#include "vg/vg.h" - if( !src ) - return 0; - - struct player_model *mdl = &player.mdl; - - if( !mdl_unpack_glmesh( src, &mdl->mesh ) ) - goto il_free_err; - - skeleton_setup( &mdl->sk, src ); - - /* - * Link animations - */ - struct _load_anim - { - const char *name; - struct skeleton_anim **anim; - } - anims[] = { - { "pose_stand", &mdl->anim_stand }, - { "pose_highg", &mdl->anim_highg }, - { "pose_slide", &mdl->anim_slide }, - { "pose_air", &mdl->anim_air }, - { "push", &mdl->anim_push }, - { "push_reverse", &mdl->anim_push_reverse }, - { "ollie", &mdl->anim_ollie }, - { "ollie_reverse",&mdl->anim_ollie_reverse }, - { "grabs", &mdl->anim_grabs }, - { "walk", &mdl->anim_walk }, - { "run", &mdl->anim_run }, - { "idle_cycle", &mdl->anim_idle } - }; - - for( int i=0; isk, anims[i].name ); - - if( !(*anims[i].anim) ) - { - vg_error( "Animation '%s' is missing from character '%s'\n", - anims[i].name, name ); - goto il_free_err; - } - } - - /* - * Link bones - */ - struct _load_bone - { - const char *name; - u32 *bone_id; - } - bones[] = { - { "hips", &mdl->id_hip }, - { "hand.IK.L", &mdl->id_ik_hand_l }, - { "hand.IK.R", &mdl->id_ik_hand_r }, - { "elbow.L", &mdl->id_ik_elbow_l }, - { "elbow.R", &mdl->id_ik_elbow_r }, - { "head", &mdl->id_head } - }; - - for( int i=0; isk, bones[i].name ); - - if( !(*bones[i].bone_id) ) - { - vg_error( "Required bone '%s' is missing from character '%s'\n", - bones[i].name, name ); - goto il_free_err; - } - } - - player_init_ragdoll( src ); - free( src ); - return 1; +#include "model.h" +#include "skeleton.h" +#include "player_ragdoll.h" -il_free_err: - free( src ); - return 0; -} +#include "shaders/model_character_view.h" #endif