From cc22c54df30d2fe9c4bbba8fbb8373bb185b1cb4 Mon Sep 17 00:00:00 2001 From: havoc Date: Wed, 7 Jun 2006 04:11:45 +0000 Subject: [PATCH] added DP_GFX_EXTERNALTEXTURES_PERMAP extension git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6423 d7cf8633-e32d-0410-b094-e92efae38249 --- clvm_cmds.c | 1 + model_brush.c | 11 +++++++++-- svvm_cmds.c | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/clvm_cmds.c b/clvm_cmds.c index a1a7d6e2..7c3ae0a7 100644 --- a/clvm_cmds.c +++ b/clvm_cmds.c @@ -39,6 +39,7 @@ char *vm_cl_extensions = "DP_ENT_GLOW " "DP_ENT_SCALE " "DP_GFX_EXTERNALTEXTURES " +"DP_GFX_EXTERNALTEXTURES_PERMAP " "DP_GFX_FOG " "DP_GFX_QUAKE3MODELTAGS " "DP_GFX_SKINFILES " diff --git a/model_brush.c b/model_brush.c index 8b4581fe..53a1f7cd 100644 --- a/model_brush.c +++ b/model_brush.c @@ -1233,7 +1233,8 @@ static void Mod_Q1BSP_LoadTextures(lump_t *l) texture_t *tx, *tx2, *anims[10], *altanims[10]; dmiptexlump_t *m; unsigned char *data, *mtdata; - char name[MAX_QPATH]; + const char *s; + char mapname[MAX_QPATH], name[MAX_QPATH]; loadmodel->data_textures = NULL; @@ -1278,6 +1279,11 @@ static void Mod_Q1BSP_LoadTextures(lump_t *l) if (!m) return; + s = loadmodel->name; + if (!strncasecmp(s, "maps/", 4)) + s += 4; + FS_StripExtension(s, mapname, sizeof(mapname)); + // just to work around bounds checking when debugging with it (array index out of bounds error thing) dofs = m->dataofs; // LordHavoc: mostly rewritten map texture loader @@ -1346,7 +1352,8 @@ static void Mod_Q1BSP_LoadTextures(lump_t *l) } else { - if (!Mod_LoadSkinFrame(&tx->skin, gamemode == GAME_TENEBRAE ? tx->name : va("textures/%s", tx->name), TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | TEXF_PICMIP, false, true)) + if (!Mod_LoadSkinFrame(&tx->skin, gamemode == GAME_TENEBRAE ? tx->name : va("textures/%s/%s", mapname, tx->name), TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | TEXF_PICMIP, false, true) + && !Mod_LoadSkinFrame(&tx->skin, gamemode == GAME_TENEBRAE ? tx->name : va("textures/%s", tx->name), TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | TEXF_PICMIP, false, true)) { // did not find external texture, load it from the bsp or wad3 if (loadmodel->brush.ishlbsp) diff --git a/svvm_cmds.c b/svvm_cmds.c index da749e3d..b6b0f183 100644 --- a/svvm_cmds.c +++ b/svvm_cmds.c @@ -35,6 +35,7 @@ char *vm_sv_extensions = "DP_ENT_SCALE " "DP_ENT_VIEWMODEL " "DP_GFX_EXTERNALTEXTURES " +"DP_GFX_EXTERNALTEXTURES_PERMAP " "DP_GFX_FOG " "DP_GFX_QUAKE3MODELTAGS " "DP_GFX_SKINFILES " -- 2.39.2