+static void skeleton_alloc_from( struct skeleton *skele,
+ void *lin_alloc,
+ mdl_context *mdl,
+ mdl_armature *armature ){
+ skele->bone_count = armature->bone_count+1;
+ skele->anim_count = armature->anim_count;
+ skele->ik_count = 0;
+ skele->collider_count = 0;
+
+ for( u32 i=0; i<armature->bone_count; i++ ){
+ mdl_bone *bone = mdl_arritm( &mdl->bones, armature->bone_start+i );
+
+ if( bone->flags & k_bone_flag_ik )
+ skele->ik_count ++;
+
+ if( bone->collider )
+ skele->collider_count ++;
+ }
+
+ u32 bone_size = sizeof(struct skeleton_bone) * skele->bone_count,
+ ik_size = sizeof(struct skeleton_ik) * skele->ik_count,
+ mtx_size = sizeof(m4x3f) * skele->bone_count,
+ anim_size = sizeof(struct skeleton_anim) * skele->anim_count;
+
+ skele->bones = vg_linear_alloc( lin_alloc, bone_size );
+ skele->ik = vg_linear_alloc( lin_alloc, ik_size );
+ //skele->final_mtx = vg_linear_alloc( lin_alloc, mtx_size );
+ skele->anims = vg_linear_alloc( lin_alloc, anim_size );
+
+ memset( skele->bones, 0, bone_size );
+ memset( skele->ik, 0, ik_size );
+ //memset( skele->final_mtx, 0, mtx_size );
+ memset( skele->anims, 0, anim_size );
+}
+
+static void skeleton_fatal_err(void){
+ vg_fatal_error( "Skeleton setup failed" );
+}
+
+/* Setup an animated skeleton from model. mdl's metadata should stick around */
+static void skeleton_setup( struct skeleton *skele,
+ void *lin_alloc, mdl_context *mdl ){
+ u32 ik_count = 0, collider_count = 0;