X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=model.h;h=476079474aae4201fcf752a056b3cd6d86b207fe;hb=74b2136d5b41b18e2eec698f1fd11b503aa1100a;hp=c054d18127e27e85113a7437cff74f3748ac465a;hpb=23733c7ba8fac9eb4ac1f4839c400f0248abee6e;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/model.h b/model.h index c054d18..4760794 100644 --- a/model.h +++ b/model.h @@ -608,8 +608,8 @@ static void async_mdl_load_glmesh( void *payload, u32 size ) job->indices, job->indice_count ); } -static void mdl_async_load_glmesh( mdl_context *mdl, glmesh *mesh ) -{ +static void mdl_async_load_glmesh( mdl_context *mdl, glmesh *mesh, + u32 *fixup_table ){ mdl_array *arr_vertices = mdl_find_array( mdl, "mdl_vert" ); mdl_array *arr_indices = mdl_find_array( mdl, "mdl_indice" ); @@ -635,6 +635,16 @@ static void mdl_async_load_glmesh( mdl_context *mdl, glmesh *mesh ) mdl_load_array_file_buffer( mdl, arr_indices, job->indices, sizeof(mdl_indice) ); + if( fixup_table ){ + for( u32 i=0; ivertex_count; i ++ ){ + mdl_vert *vert = &job->verts[i]; + + for( u32 j=0; j<4; j++ ){ + vert->groups[j] = fixup_table[vert->groups[j]]; + } + } + } + /* * Unpack the indices (if there are meshes) * --------------------------------------------------------- @@ -669,7 +679,7 @@ static void mdl_async_load_glmesh( mdl_context *mdl, glmesh *mesh ) /* uploads the glmesh, and textures. everything is saved into the mdl_context */ static void mdl_async_full_load_std( mdl_context *mdl ){ - mdl_async_load_glmesh( mdl, &mdl->mesh ); + mdl_async_load_glmesh( mdl, &mdl->mesh, NULL ); for( u32 i=0; itextures ); i ++ ){ vg_linear_clear( vg_mem.scratch );