X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_model.h;h=8d5dd80efc7ac3c2ff8c59d244267dcccca2e54a;hb=HEAD;hp=2567a83aac42668c46843d73e0cb4519b27536c1;hpb=95054f3e156a1cb86d573b11516f2c65fe02679e;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_model.h b/player_model.h index 2567a83..8d5dd80 100644 --- a/player_model.h +++ b/player_model.h @@ -2,184 +2,9 @@ * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved */ -#ifndef CHARACTER_H -#define CHARACTER_H - -#define VG_GAME -#include "vg/vg.h" - +#pragma once #include "model.h" #include "skeleton.h" #include "player_ragdoll.h" -#include "rigidbody.h" #include "shaders/model_character_view.h" - -struct player_avatar -{ - mdl_context meta; - struct skeleton sk; - - 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_ik_knee_l, - id_ik_knee_r, - id_wheel_l, - id_wheel_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, vg_mem.rtmemory ); - mdl_load_metadata_block( &av->meta, vg_mem.rtmemory ); - mdl_load_animation_block( &av->meta, vg_mem.rtmemory ); - mdl_close( &av->meta ); - - 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" ); - av->id_wheel_l = skeleton_bone_id( sk, "wheel.L" ); - av->id_wheel_r = skeleton_bone_id( sk, "wheel.R" ); - av->id_ik_knee_l = skeleton_bone_id( sk, "knee.L" ); - av->id_ik_knee_r = skeleton_bone_id( sk, "knee.R" ); -} - -#if 0 -VG_STATIC void player_load_reference( struct player_model *pmodel ) -{ - shader_viewchar_register(); - vg_acquire_thread_sync(); - { - vg_tex2d_init( (vg_tex2d *[]){ &tex_characters }, 1 ); - } - vg_release_thread_sync(); - - /* load in reference player model, with animations and such */ - mdl_open( &player.mdl.meta, "models/ch_new.mdl" ); - mdl_load_metadata( &player.mdl.meta, vg_mem.rtmemory ); - mdl_load_anim_data( &player.mdl.meta, vg_mem.rtmemory ); - - vg_linear_clear( vg_mem.scratch ); - mdl_load_mesh_data( &player.mdl.meta, vg_mem.scratch ); - mdl_close( &player.mdl.meta ); - - /* - * load in other player models. This may need to be more sophisticated in - * the futre if we have more of these guys - */ - mdl_context ctx_outlaw, - ctx_jordan; - - mdl_open( &ctx_outlaw, "models/ch_outlaw.mdl" ); - mdl_load_metadata( &ctx_outlaw, vg_mem.scratch ); - mdl_load_mesh_data( &ctx_outlaw, vg_mem.scratch ); - mdl_close( &ctx_outlaw ); - - mdl_open( &ctx_jordan, "models/ch_jordan.mdl" ); - mdl_load_metadata( &ctx_jordan, vg_mem.scratch ); - mdl_load_mesh_data( &ctx_jordan, vg_mem.scratch ); - mdl_close( &ctx_jordan ); - - vg_acquire_thread_sync(); - { - mdl_unpack_glmesh( &player.mdl.meta, &player.mdl.player_meshes[0] ); - mdl_unpack_glmesh( &ctx_outlaw, &player.mdl.player_meshes[1] ); - mdl_unpack_glmesh( &ctx_jordan, &player.mdl.player_meshes[2] ); - } - vg_release_thread_sync(); - - skeleton_setup( &player.mdl.sk, vg_mem.rtmemory, &player.mdl.meta ); - player_init_ragdoll(); - - /* - * Link animations - */ - struct _load_anim - { - const char *name; - struct skeleton_anim **anim; - } - anims[] = { - { "pose_stand", &player.mdl.anim_stand }, - { "pose_highg", &player.mdl.anim_highg }, - { "pose_slide", &player.mdl.anim_slide }, - { "pose_air", &player.mdl.anim_air }, - { "push", &player.mdl.anim_push }, - { "push_reverse", &player.mdl.anim_push_reverse }, - { "ollie", &player.mdl.anim_ollie }, - { "ollie_reverse",&player.mdl.anim_ollie_reverse }, - { "grabs", &player.mdl.anim_grabs }, - { "walk", &player.mdl.anim_walk }, - { "run", &player.mdl.anim_run }, - { "idle_cycle", &player.mdl.anim_idle }, - { "jump", &player.mdl.anim_jump } - }; - - for( int i=0; i