void R_CreateDetailTexturesList( const char *filename ) { file_t *detail_txt = NULL; const char *detail_name, *texname; int i; for( i = 0; i < cl.worldmodel->numtextures; i++ ) { texname = cl.worldmodel->textures[i]->name; detail_name = R_DetailTextureForName( texname ); if( !detail_name ) continue; // detailtexture detected if( detail_name ) { if( !detail_txt ) detail_txt = FS_Open( filename, "w", false ); if( !detail_txt ) { MsgDev( D_ERROR, "Can't write %s\n", filename ); break; } // store detailtexture description FS_Printf( detail_txt, "%s detail/%s 10.0 10.0\n", texname, detail_name ); } } if( detail_txt ) FS_Close( detail_txt ); }
void R_CreateDetailTexturesList( const char *filename ) { file_t *detail_txt = NULL; float xScale, yScale; const char *detail_name; texture_t *tex; rgbdata_t *pic; int i; for( i = 0; i < cl.worldmodel->numtextures; i++ ) { tex = cl.worldmodel->textures[i]; detail_name = R_DetailTextureForName( tex->name ); if( !detail_name ) continue; // detailtexture detected if( detail_name ) { if( !detail_txt ) detail_txt = FS_Open( filename, "w", false ); if( !detail_txt ) { MsgDev( D_ERROR, "Can't write %s\n", filename ); break; } pic = FS_LoadImage( va( "gfx/detail/%s", detail_name ), NULL, 0 ); if( pic ) { xScale = (pic->width / (float)tex->width) * gl_detailscale->value; yScale = (pic->height / (float)tex->height) * gl_detailscale->value; FS_FreeImage( pic ); } else xScale = yScale = 10.0f; // store detailtexture description FS_Printf( detail_txt, "%s detail/%s %.2f %.2f\n", tex->name, detail_name, xScale, yScale ); } } if( detail_txt ) FS_Close( detail_txt ); }