+ skele->bone_count = inf->channels;
+ skele->ik_count = inf->ik_count;
+ skele->collider_count = inf->collider_count;
+ skele->anim_count = inf->anim_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 );
+}
+
+VG_STATIC void skeleton_fatal_err(void)
+{
+ vg_fatal_exit_loop( "Skeleton setup failed" );
+}
+
+/* Setup an animated skeleton from model. mdl's metadata should stick around */
+VG_STATIC void skeleton_setup( struct skeleton *skele,
+ void *lin_alloc, mdl_context *mdl )
+{
+ u32 bone_count = 1, skeleton_root = 0, ik_count = 0, collider_count = 0;