From 0049f904c09dc3b87c8e7ed8f317219dd80d12a5 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sat, 8 Sep 2018 23:44:29 -0400 Subject: [PATCH] Add light fading to FadeFakeFloor * Declare P_RemoveLighting in header for p_spec.c use --- src/p_lights.c | 2 +- src/p_spec.c | 13 +++++++++++++ src/p_spec.h | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/p_lights.c b/src/p_lights.c index b2934b792..02221d197 100644 --- a/src/p_lights.c +++ b/src/p_lights.c @@ -25,7 +25,7 @@ * * \param sector The sector to remove effects from. */ -static void P_RemoveLighting(sector_t *sector) +void P_RemoveLighting(sector_t *sector) { if (sector->lightingdata) { diff --git a/src/p_spec.c b/src/p_spec.c index 1f8f1c2b0..a1465b0e7 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -7453,6 +7453,12 @@ static void P_ResetFakeFloorFader(ffloor_t *rover, fade_t *data, boolean finaliz fadingdata->exactalpha); rover->alpha = fadingdata->alpha; + if (fadingdata->dolighting) + { + P_RemoveLighting(§ors[rover->secnum]); + §ors[rover->secnum].lightlevel = rover->target->lightlevel; // \todo get fade light level destvalue + } + P_RemoveThinker(&fadingdata->thinker); } @@ -7729,6 +7735,13 @@ static void P_AddFakeFloorFader(ffloor_t *rover, size_t sectornum, size_t ffloor // find any existing thinkers and remove them, then replace with new data P_ResetFakeFloorFader(rover, d, false); + // Set a separate thinker for shadow fading + if (dolighting && !(rover->flags & FF_NOSHADE)) + P_FadeLightBySector(§ors[rover->secnum], + rover->target->lightlevel, // (shadowlight - targetlight) * destvalue/256 // \todo get fade light level destvalue + FixedFloor(FixedDiv(abs(d->destvalue - d->alpha), d->speed))/FRACUNIT, + true, exactalpha); + P_AddThinker(&d->thinker); } diff --git a/src/p_spec.h b/src/p_spec.h index ec1911df3..0d118168b 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -154,6 +154,8 @@ typedef struct #define FASTDARK 15 #define SLOWDARK 35 +void P_RemoveLighting(sector_t *sector); + void T_FireFlicker(fireflicker_t *flick); fireflicker_t *P_SpawnAdjustableFireFlicker(sector_t *minsector, sector_t *maxsector, INT32 length); void T_LightningFlash(lightflash_t *flash);