+ return NULL;
+}
+
+VG_STATIC int mdl_load_array( mdl_context *mdl, mdl_array_ptr *ptr,
+ const char *name, void *lin_alloc )
+{
+ mdl_array *arr = mdl_find_array( mdl, name );
+
+ if( arr ){
+ mdl_load_array_file( mdl, ptr, arr, lin_alloc );
+ return 1;
+ }
+ else{
+ ptr->data = NULL;
+ ptr->count = 0;
+ ptr->stride = 0;
+ return 0;
+ }
+}
+
+VG_STATIC int mdl_load_mesh_block( mdl_context *mdl, void *lin_alloc )
+{
+ int success = 1;
+
+ success &= mdl_load_array( mdl, &mdl->verts, "mdl_vert", lin_alloc );
+ success &= mdl_load_array( mdl, &mdl->indices, "mdl_indice", lin_alloc );
+
+ return success;
+}
+
+VG_STATIC int mdl_load_metadata_block( mdl_context *mdl, void *lin_alloc )
+{
+ int success = 1;
+
+ success &= mdl_load_array( mdl, &mdl->strings, "strings", lin_alloc );
+ success &= mdl_load_array( mdl, &mdl->meshs, "mdl_mesh", lin_alloc );
+ success &= mdl_load_array( mdl, &mdl->submeshs, "mdl_submesh", lin_alloc );
+ success &= mdl_load_array( mdl, &mdl->materials, "mdl_material", lin_alloc );
+ success &= mdl_load_array( mdl, &mdl->textures, "mdl_texture", lin_alloc );
+ success &= mdl_load_array( mdl, &mdl->armatures, "mdl_armature", lin_alloc );
+ success &= mdl_load_array( mdl, &mdl->bones, "mdl_bone", lin_alloc );
+ success &= mdl_load_array( mdl, &mdl->animations,"mdl_animation",lin_alloc );
+
+ return success;
+}
+
+VG_STATIC int mdl_load_animation_block( mdl_context *mdl, void *lin_alloc )
+{
+ return mdl_load_array( mdl, &mdl->keyframes, "mdl_keyframe", lin_alloc );
+}