+ return &mdl->submesh_buffer[ node->submesh_start+i ];
+}
+
+VG_STATIC u32 *mdl_submesh_indices( mdl_context *mdl, mdl_submesh *sm )
+{
+ return &mdl->index_buffer[ sm->indice_start ];
+}
+
+VG_STATIC mdl_vert *mdl_submesh_vertices( mdl_context *mdl, mdl_submesh *sm )
+{
+ return &mdl->vertex_buffer[ sm->vertex_start ];
+}
+
+VG_STATIC void mdl_node_transform( mdl_node *pnode, m4x3f transform )
+{
+ q_m3x3( pnode->q, transform );
+ v3_muls( transform[0], pnode->s[0], transform[0] );
+ v3_muls( transform[1], pnode->s[1], transform[1] );
+ v3_muls( transform[2], pnode->s[2], transform[2] );
+ v3_copy( pnode->co, transform[3] );
+}
+
+/* upload a mesh based on file submesh */
+VG_STATIC void mdl_unpack_submesh( mdl_context *mdl, glmesh *mesh,
+ mdl_submesh *sm )
+{
+ mesh_upload( mesh, mdl_submesh_vertices( mdl, sm ), sm->vertex_count,
+ mdl_submesh_indices( mdl, sm ), sm->indice_count );