From babbcfdd5f3d6e645d48ce555e7affbc49fba215 Mon Sep 17 00:00:00 2001 From: havoc Date: Thu, 22 Feb 2007 15:17:24 +0000 Subject: [PATCH] fix dedicated server crashes caused by new lightmap merging git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6899 d7cf8633-e32d-0410-b094-e92efae38249 --- model_brush.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/model_brush.c b/model_brush.c index 22d60f4e..71a57778 100644 --- a/model_brush.c +++ b/model_brush.c @@ -4776,6 +4776,8 @@ static void Mod_Q3BSP_LoadLightmaps(lump_t *l, lump_t *faceslump) if (!l->filelen) return; + if (cls.state == ca_dedicated) + return; in = (q3dlightmap_t *)(mod_base + l->fileofs); if (l->filelen % sizeof(*in)) Host_Error("Mod_Q3BSP_LoadLightmaps: funny lump size in %s",loadmodel->name); @@ -4930,21 +4932,24 @@ static void Mod_Q3BSP_LoadFaces(lump_t *l) else out->effect = loadmodel->brushq3.data_effects + n; - out->lightmaptexture = NULL; - out->deluxemaptexture = r_texture_blanknormalmap; - n = LittleLong(in->lightmapindex); - if (n < 0) - n = -1; - else if (n >= (loadmodel->brushq3.num_lightmaps << (loadmodel->brushq3.num_lightmapmergepower * 2))) - { - Con_Printf("Mod_Q3BSP_LoadFaces: face #%i (texture \"%s\"): invalid lightmapindex %i (%i lightmaps)\n", i, out->texture->name, n, loadmodel->brushq3.num_lightmaps); - n = -1; - } - else + if (cls.state != ca_dedicated) { - out->lightmaptexture = loadmodel->brushq3.data_lightmaps[n >> (loadmodel->brushq3.num_lightmapmergepower * 2 + loadmodel->brushq3.deluxemapping)]; - if (loadmodel->brushq3.deluxemapping) - out->deluxemaptexture = loadmodel->brushq3.data_deluxemaps[n >> (loadmodel->brushq3.num_lightmapmergepower * 2 + loadmodel->brushq3.deluxemapping)]; + out->lightmaptexture = NULL; + out->deluxemaptexture = r_texture_blanknormalmap; + n = LittleLong(in->lightmapindex); + if (n < 0) + n = -1; + else if (n >= (loadmodel->brushq3.num_lightmaps << (loadmodel->brushq3.num_lightmapmergepower * 2))) + { + Con_Printf("Mod_Q3BSP_LoadFaces: face #%i (texture \"%s\"): invalid lightmapindex %i (%i lightmaps)\n", i, out->texture->name, n, loadmodel->brushq3.num_lightmaps); + n = -1; + } + else + { + out->lightmaptexture = loadmodel->brushq3.data_lightmaps[n >> (loadmodel->brushq3.num_lightmapmergepower * 2 + loadmodel->brushq3.deluxemapping)]; + if (loadmodel->brushq3.deluxemapping) + out->deluxemaptexture = loadmodel->brushq3.data_deluxemaps[n >> (loadmodel->brushq3.num_lightmapmergepower * 2 + loadmodel->brushq3.deluxemapping)]; + } } firstvertex = LittleLong(in->firstvertex); @@ -5166,7 +5171,7 @@ static void Mod_Q3BSP_LoadFaces(lump_t *l) if (out->num_vertices) { int lightmapindex = LittleLong(in->lightmapindex); - if (lightmapindex >= 0) + if (lightmapindex >= 0 && cls.state != ca_dedicated) { lightmapindex >>= loadmodel->brushq3.deluxemapping; lightmaptcscale = 1.0f / loadmodel->brushq3.num_lightmapmerge; -- 2.39.2