From 5b8f332a67937a63dc29da354d72ba27d933534d Mon Sep 17 00:00:00 2001 From: dresk Date: Mon, 9 Jul 2007 05:07:07 +0000 Subject: [PATCH] Updated cl_modelindexlist command with additional model information, including model type (Q1BSP, MDL, MD2, etc) and triangle count. Removed Hungarian Notation in CL_ModelIndexList_f and CL_SoundIndexList_f functions. git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7479 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_main.c | 26 ++++++++++++++++---------- model_alias.c | 12 ++++++++++++ model_brush.c | 8 ++++++++ model_shared.h | 2 ++ model_sprite.c | 4 ++++ 5 files changed, 42 insertions(+), 10 deletions(-) diff --git a/cl_main.c b/cl_main.c index 048cb995..b75d97a2 100644 --- a/cl_main.c +++ b/cl_main.c @@ -449,17 +449,23 @@ static void CL_PrintEntities_f(void) =============== CL_ModelIndexList_f -List all models in the client modelindex +List information on all models in the client modelindex =============== */ static void CL_ModelIndexList_f(void) { - int nModelIndexCnt = 1; + int i = 1; - while(cl.model_precache[nModelIndexCnt] && nModelIndexCnt != MAX_MODELS) + // Print Header + Con_Printf("%3s: %-30s %-8s %-8s\n", "ID", "Name", "Type", "Triangles"); + + while(cl.model_precache[i] && i != MAX_MODELS) { // Valid Model - Con_Printf("%i : %s\n", nModelIndexCnt, cl.model_precache[nModelIndexCnt]->name); - nModelIndexCnt++; + if(cl.model_precache[i]->loaded || cl.model_precache[i]->isworldmodel) + Con_Printf("%3i: %-30s %-8s %-10i\n", i, cl.model_precache[i]->name, cl.model_precache[i]->modeldatatypestring, cl.model_precache[i]->surfmesh.num_triangles); + else + Con_Printf("%3i: %-30s %-30s\n", i, cl.model_precache[i]->name, "--no local model found--"); + i++; } } @@ -472,12 +478,12 @@ List all sounds in the client soundindex */ static void CL_SoundIndexList_f(void) { - int nSoundIndexCnt = 1; + int i = 1; - while(cl.sound_precache[nSoundIndexCnt] && nSoundIndexCnt != MAX_SOUNDS) + while(cl.sound_precache[i] && i != MAX_SOUNDS) { // Valid Sound - Con_Printf("%i : %s\n", nSoundIndexCnt, cl.sound_precache[nSoundIndexCnt]->name); - nSoundIndexCnt++; + Con_Printf("%i : %s\n", i, cl.sound_precache[i]->name); + i++; } } @@ -2233,7 +2239,7 @@ void CL_Init (void) Cmd_AddCommand ("timedemo", CL_TimeDemo_f, "play back a demo as fast as possible and save statistics to benchmark.log"); // Support Client-side Model Index List - Cmd_AddCommand ("cl_modelindexlist", CL_ModelIndexList_f, "list all models in the client modelindex"); + Cmd_AddCommand ("cl_modelindexlist", CL_ModelIndexList_f, "list information on all models in the client modelindex"); // Support Client-side Sound Index List Cmd_AddCommand ("cl_soundindexlist", CL_SoundIndexList_f, "list all sounds in the client soundindex"); diff --git a/model_alias.c b/model_alias.c index 15e85d06..ab644906 100644 --- a/model_alias.c +++ b/model_alias.c @@ -783,6 +783,8 @@ void Mod_IDP0_Load(model_t *mod, void *buffer, void *bufferend) Host_Error ("%s has wrong version number (%i should be %i)", loadmodel->name, version, ALIAS_VERSION); + loadmodel->modeldatatypestring = "MDL"; + loadmodel->type = mod_alias; loadmodel->DrawSky = NULL; loadmodel->Draw = R_Q1BSP_Draw; @@ -1100,6 +1102,8 @@ void Mod_IDP2_Load(model_t *mod, void *buffer, void *bufferend) Host_Error ("%s has wrong version number (%i should be %i)", loadmodel->name, version, MD2ALIAS_VERSION); + loadmodel->modeldatatypestring = "MD2"; + loadmodel->type = mod_alias; loadmodel->DrawSky = NULL; loadmodel->Draw = R_Q1BSP_Draw; @@ -1333,6 +1337,8 @@ void Mod_IDP3_Load(model_t *mod, void *buffer, void *bufferend) if (loadmodel->numskins < 1) loadmodel->numskins = 1; + loadmodel->modeldatatypestring = "MD3"; + loadmodel->type = mod_alias; loadmodel->DrawSky = NULL; loadmodel->Draw = R_Q1BSP_Draw; @@ -1487,6 +1493,8 @@ void Mod_ZYMOTICMODEL_Load(model_t *mod, void *buffer, void *bufferend) if (BigLong(pinmodel->type) != 1) Host_Error ("Mod_ZYMOTICMODEL_Load: only type 1 (skeletal pose) models are currently supported (name = %s)", loadmodel->name); + loadmodel->modeldatatypestring = "ZYM"; + loadmodel->type = mod_alias; loadmodel->synctype = ST_RAND; @@ -1797,6 +1805,8 @@ void Mod_DARKPLACESMODEL_Load(model_t *mod, void *buffer, void *bufferend) if (BigLong(pheader->type) != 2) Host_Error ("Mod_DARKPLACESMODEL_Load: only type 2 (hierarchical skeletal pose) models are currently supported (name = %s)", loadmodel->name); + loadmodel->modeldatatypestring = "DPM"; + loadmodel->type = mod_alias; loadmodel->synctype = ST_RAND; @@ -2097,6 +2107,8 @@ void Mod_PSKMODEL_Load(model_t *mod, void *buffer, void *bufferend) if (strcmp(pchunk->id, "ACTRHEAD")) Host_Error ("Mod_PSKMODEL_Load: %s is not an Unreal Engine ActorX (.psk + .psa) model", loadmodel->name); + loadmodel->modeldatatypestring = "PSK"; + loadmodel->type = mod_alias; loadmodel->DrawSky = NULL; loadmodel->Draw = R_Q1BSP_Draw; diff --git a/model_brush.c b/model_brush.c index ad1d484c..b6b25006 100644 --- a/model_brush.c +++ b/model_brush.c @@ -3305,6 +3305,8 @@ void Mod_Q1BSP_Load(model_t *mod, void *buffer, void *bufferend) dheader_t _header; hullinfo_t hullinfo; + mod->modeldatatypestring = "Q1BSP"; + mod->type = mod_brushq1; if (!memcmp (buffer, "MCBSPpad", 8)) @@ -3362,6 +3364,8 @@ void Mod_Q1BSP_Load(model_t *mod, void *buffer, void *bufferend) VectorClear (hullinfo.hullsizes[0][1]); if (mod->brush.ishlbsp) { + mod->modeldatatypestring = "HLBSP"; + hullinfo.numhulls = 4; hullinfo.filehulls = 4; VectorSet (hullinfo.hullsizes[1][0], -16, -16, -36); @@ -4009,6 +4013,8 @@ void static Mod_Q2BSP_Load(model_t *mod, void *buffer, void *bufferend) Host_Error("Mod_Q2BSP_Load: not yet implemented"); + mod->modeldatatypestring = "Q2BSP"; + mod->type = mod_brushq2; header = (q2dheader_t *)buffer; @@ -5501,6 +5507,8 @@ void Mod_Q3BSP_Load(model_t *mod, void *buffer, void *bufferend) float corner[3], yawradius, modelradius; msurface_t *surface; + mod->modeldatatypestring = "Q3BSP"; + mod->type = mod_brushq3; mod->numframes = 2; // although alternate textures are not supported it is annoying to complain about no such frame 1 mod->numskins = 1; diff --git a/model_shared.h b/model_shared.h index 58f15c82..eb2ddce1 100644 --- a/model_shared.h +++ b/model_shared.h @@ -813,6 +813,8 @@ typedef struct model_s msurface_lightmapinfo_t *data_surfaces_lightmapinfo; // all surfaces belong to this mesh surfmesh_t surfmesh; + // data type of model + const char *modeldatatypestring; // draw the model's sky polygons (only used by brush models) void(*DrawSky)(struct entity_render_s *ent); // draw the model using lightmap/dlight shading diff --git a/model_sprite.c b/model_sprite.c index 623243d7..4916e307 100644 --- a/model_sprite.c +++ b/model_sprite.c @@ -223,6 +223,8 @@ void Mod_IDSP_Load(model_t *mod, void *buffer, void *bufferend) datapointer = (unsigned char *)buffer; + loadmodel->modeldatatypestring = "SPR1"; + loadmodel->type = mod_sprite; loadmodel->DrawSky = NULL; @@ -339,6 +341,8 @@ void Mod_IDS2_Load(model_t *mod, void *buffer, void *bufferend) float modelradius; int texflags = (r_mipsprites.integer ? TEXF_MIPMAP : 0) | (r_picmipsprites.integer ? TEXF_PICMIP : 0) | TEXF_ALPHA | TEXF_CLAMP | TEXF_PRECACHE; + loadmodel->modeldatatypestring = "SPR2"; + loadmodel->type = mod_sprite; loadmodel->DrawSky = NULL; -- 2.39.2