From c42c24d6b75aeb95fd9a8df27364042ad68df64a Mon Sep 17 00:00:00 2001 From: havoc Date: Wed, 24 Nov 2004 13:39:38 +0000 Subject: [PATCH] fixed a critical bug with Vile and other midnight mods (dlights were being controlled by style 0, this meant they didn't appear in these mods, added style -1 as a special case) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4783 d7cf8633-e32d-0410-b094-e92efae38249 --- cgamevm.c | 2 +- cl_main.c | 6 +++--- r_shadow.c | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cgamevm.c b/cgamevm.c index ed2bc411..f3250df1 100644 --- a/cgamevm.c +++ b/cgamevm.c @@ -169,7 +169,7 @@ void CGVM_Draw_Light(const cgdrawlight_t *l) { matrix4x4_t matrix; Matrix4x4_CreateTranslate(&matrix, l->origin[0], l->origin[1], l->origin[2]); - CL_AllocDlight(NULL, &matrix, l->radius, l->color[0], l->color[1], l->color[2], 0, 0, 0, 0, true, 1, 0.25, 0, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); + CL_AllocDlight(NULL, &matrix, l->radius, l->color[0], l->color[1], l->color[2], 0, 0, 0, -1, true, 1, 0.25, 0, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); } void *CGVM_Malloc(const int size) diff --git a/cl_main.c b/cl_main.c index 41667e5f..75d0d0eb 100644 --- a/cl_main.c +++ b/cl_main.c @@ -745,7 +745,7 @@ void CL_LinkNetworkEntity(entity_t *e) tempmatrix.m[0][3] = v[0]; tempmatrix.m[1][3] = v[1]; tempmatrix.m[2][3] = v[2]; - CL_AllocDlight(NULL, &tempmatrix, 100, e->persistent.muzzleflash, e->persistent.muzzleflash, e->persistent.muzzleflash, 0, 0, 0, 0, true, 0, 0.25, 0.25, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); + CL_AllocDlight(NULL, &tempmatrix, 100, e->persistent.muzzleflash, e->persistent.muzzleflash, e->persistent.muzzleflash, 0, 0, 0, -1, true, 0, 0.25, 0.25, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); e->persistent.muzzleflash -= cl.frametime * 10; } // LordHavoc: if the model has no flags, don't check each @@ -818,7 +818,7 @@ void CL_LinkNetworkEntity(entity_t *e) // hack to make glowing player light shine on their gun //if ((e - cl_entities) == cl.viewentity/* && !chase_active.integer*/) // dlightmatrix.m[2][3] += 30; - CL_AllocDlight(&e->render, &e->render.matrix, dlightradius, dlightcolor[0], dlightcolor[1], dlightcolor[2], 0, 0, 0, 0, true, 1, 0.25, 0.25, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); + CL_AllocDlight(&e->render, &e->render.matrix, dlightradius, dlightcolor[0], dlightcolor[1], dlightcolor[2], 0, 0, 0, -1, true, 1, 0.25, 0.25, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); } // custom rtlight if (e->state_current.lightpflags & PFLAGS_FULLDYNAMIC) @@ -1068,7 +1068,7 @@ void CL_RelinkBeams(void) { // FIXME: create a matrix from the beam start/end orientation Matrix4x4_CreateTranslate(&tempmatrix, b->end[0], b->end[1], b->end[2]); - CL_AllocDlight (NULL, &tempmatrix, 200, 0.3, 0.7, 1, 0, 0, 0, 0, true, 1, 0.25, 1, 0, 0, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); + CL_AllocDlight (NULL, &tempmatrix, 200, 0.3, 0.7, 1, 0, 0, 0, -1, true, 1, 0.25, 1, 0, 0, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE); } if (cl_beams_polygons.integer) continue; diff --git a/r_shadow.c b/r_shadow.c index f495c718..ba4f461b 100644 --- a/r_shadow.c +++ b/r_shadow.c @@ -2185,7 +2185,7 @@ void R_RTLight_UpdateFromDLight(rtlight_t *rtlight, const dlight_t *light, int i rtlight->lightmap_cullradius = bound(0, rtlight->radius, 2048.0f); rtlight->lightmap_cullradius2 = rtlight->lightmap_cullradius * rtlight->lightmap_cullradius; - VectorScale(rtlight->color, rtlight->radius * d_lightstylevalue[rtlight->style] * 0.125f, rtlight->lightmap_light); + VectorScale(rtlight->color, rtlight->radius * (rtlight->style >= 0 ? d_lightstylevalue[rtlight->style] : 128) * 0.125f, rtlight->lightmap_light); rtlight->lightmap_subtract = 1.0f / rtlight->lightmap_cullradius2; } @@ -2334,7 +2334,7 @@ void R_DrawRTLight(rtlight_t *rtlight, int visiblevolumes) cullmaxs[0] = rtlight->shadoworigin[0] + rtlight->radius; cullmaxs[1] = rtlight->shadoworigin[1] + rtlight->radius; cullmaxs[2] = rtlight->shadoworigin[2] + rtlight->radius; - if (d_lightstylevalue[rtlight->style] <= 0) + if (rtlight->style >= 0 && d_lightstylevalue[rtlight->style] <= 0) return; numclusters = 0; clusterlist = NULL; @@ -2381,7 +2381,7 @@ void R_DrawRTLight(rtlight_t *rtlight, int visiblevolumes) if (R_Shadow_ScissorForBBox(cullmins, cullmaxs)) return; - f = d_lightstylevalue[rtlight->style] * (1.0f / 256.0f); + f = (rtlight->style >= 0 ? d_lightstylevalue[rtlight->style] : 128) * (1.0f / 256.0f); VectorScale(rtlight->color, f, lightcolor); /* if (rtlight->selected) -- 2.39.2