largely loadable model assets
[convexer.git] / cxr / cxr.h
index 2a4267f0a152ffa3e0b34fd3eb4c5f4fd8a36db0..644c8ed83e39381e88ceb5c3beeb4772e29f3be3 100644 (file)
--- a/cxr/cxr.h
+++ b/cxr/cxr.h
@@ -3510,143 +3510,5 @@ CXR_API int cxr_lightpatch_bsp( const char *path )
    return 1;
 }
 
-#ifdef CXR_VALVE_BIN
-
-CXR_API cxr_tri_mesh *cxr_load_mdl( const char *mdlname )
-{
-       char path[1024];
-       strcpy( path, mdlname );
-       cxr_stripext( path );
-       strcat( path, ".dx90.vtx" );
-       VTXFileHeader_t *pVtxHdr = (VTXFileHeader_t *)cxr_fs_get( path );
-       
-       if( !pVtxHdr )
-               return NULL;
-       
-       /* .VVD */
-       strcpy( path, mdlname );
-       cxr_stripext( path );
-       strcat( path, ".vvd" );
-       vertexFileHeader_t *pVvdHdr = (vertexFileHeader_t *)cxr_fs_get( path );
-       
-       if( !pVvdHdr )
-       {
-               free( pVtxHdr );
-               return 0;
-       }
-       
-       /* .MDL */
-       strcpy( path, mdlname );
-       cxr_stripext( path );
-       strcat( path, ".mdl" );
-       studiohdr_t *pMdl = (studiohdr_t *)cxr_fs_get( path );
-       
-       if( !pMdl )
-       {
-               free( pVtxHdr );
-               free( pVvdHdr );
-               return 0;
-       }
-       
-   cxr_tri_mesh *mesh = malloc( sizeof(cxr_tri_mesh) );
-   mesh->colours = NULL;
-   
-       mesh->indices_count = vtx_count_indices( pVtxHdr, pMdl );
-       mesh->indices = malloc( mesh->indices_count * sizeof( u32 ) );
-
-       mesh->vertex_count = pVvdHdr->numLodVertexes[0];
-       mesh->vertices = malloc( mesh->vertex_count * sizeof(v3f) );
-   mesh->uvs = malloc( mesh->vertex_count * sizeof(v2f) );
-   mesh->normals = malloc( mesh->vertex_count * sizeof(v3f) );
-       
-#if 0
-   mesh->bounds[0][0] = pMdl->hull_min[0];
-   mesh->bounds[0][1] = pMdl->hull_min[1];
-   mesh->bounds[0][2] = pMdl->hull_min[2];
-   mesh->bounds[0][0] = pMdl->hull_max[0];
-   mesh->bounds[0][1] = pMdl->hull_max[1];
-   mesh->bounds[0][2] = pMdl->hull_max[2];
-#endif
-       
-       mesh->indices_count = 0;
-       
-       for( int bodyID = 0; bodyID < pVtxHdr->numBodyParts; ++bodyID )
-       {
-               /* Body parts */
-               VTXBodyPartHeader_t* pVtxBodyPart = pBodyPartVTX( pVtxHdr, bodyID );
-               mstudiobodyparts_t *pBodyPart = studiohdr_pBodypart( pMdl, bodyID );
-               
-               for( int modelID = 0; modelID < pBodyPart->nummodels; ++modelID )
-               {       
-         /* models */
-                       VTXModelHeader_t* pVtxModel = pModelVTX( pVtxBodyPart, modelID );
-                       mstudiomodel_t *pStudioModel = 
-            mstudiobodyparts_pModel( pBodyPart, modelID );
-
-                       int nLod = 0;
-                       VTXModelLODHeader_t *pVtxLOD = pLODVTX( pVtxModel, nLod );
-
-                       for( int nMesh = 0; nMesh < pStudioModel->nummeshes; ++nMesh )
-                       {
-            /* meshes */
-                               VTXMeshHeader_t* pVtxMesh = pMeshVTX( pVtxLOD, nMesh );
-                               mstudiomesh_t* pMesh = studiomodel_pMesh( pStudioModel, nMesh );
-
-                               for ( int nGroup = 0; nGroup < pVtxMesh->numStripGroups; ++nGroup )
-                               {
-               /* groups */
-                                       VTXStripGroupHeader_t* pStripGroup = 
-                  pStripGroupVTX( pVtxMesh, nGroup );
-
-                                       for ( int nStrip = 0; nStrip < pStripGroup->numStrips; nStrip++ )
-                                       {
-                  /* strips */
-                                               VTXStripHeader_t *pStrip = pStripVTX( pStripGroup, nStrip );
-
-                                               if ( pStrip->flags & STRIP_IS_TRILIST )
-                                               {
-                     /* indices */
-                                                       for ( int i = 0; i < pStrip->numIndices; i ++ )
-                                                       {
-                                                               u16 i1 = *pIndexVTX( pStripGroup, 
-                              pStrip->indexOffset + i );                                                               
-
-                                                               mesh->indices[ mesh->indices_count ++ ] = 
-                           pVertexVTX( pStripGroup, i1 )->origMeshVertID + 
-                           pMesh->vertexoffset;
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-       
-       mstudiovertex_t *vertexData = GetVertexData( pVvdHdr );
-       
-       for( int i = 0; i < mesh->vertex_count; i ++ )
-       {
-               mstudiovertex_t *vert = vertexData + i;
-
-      mesh->vertices[i][0] = vert->pos[0];
-      mesh->vertices[i][1] = vert->pos[1];
-      mesh->vertices[i][2] = vert->pos[2];
-
-      mesh->normals[i][0] = vert->norm[0];
-      mesh->normals[i][1] = vert->norm[1];
-      mesh->normals[i][2] = vert->norm[2];
-
-      mesh->uvs[i][0] = vert->uv[0];
-      mesh->uvs[i][1] = vert->uv[1];
-       }
-       
-       free( pVtxHdr );
-       free( pVvdHdr );
-       free( pMdl );
-       
-       return mesh;
-}
-#endif /* CXR_VALVE_BIN */
-
 #endif /* CXR_VALVE_MAP_FILE */
 #endif /* CXR_IMPLEMENTATION */