From 205d4b5ff37c7b49db5c337523a657f2ebd551d6 Mon Sep 17 00:00:00 2001 From: RaveYard <29225776+MrRaveYard@users.noreply.github.com> Date: Tue, 27 Feb 2024 03:01:37 +0100 Subject: [PATCH] Support negative fadestep for particles --- src/playsim/p_actionfunctions.cpp | 3 ++- src/playsim/p_effect.cpp | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/playsim/p_actionfunctions.cpp b/src/playsim/p_actionfunctions.cpp index 4c842d3bb..76d6be9fd 100644 --- a/src/playsim/p_actionfunctions.cpp +++ b/src/playsim/p_actionfunctions.cpp @@ -1691,7 +1691,8 @@ DEFINE_ACTION_FUNCTION(AActor, A_SpawnParticleEx) PARAM_FLOAT (rollacc) startalpha = clamp(startalpha, 0., 1.); - if (fadestep > 0) fadestep = clamp(fadestep, 0., 1.); + fadestep = clamp(fadestep, -1.0, 1.0); + size = fabs(size); if (lifetime != 0) { diff --git a/src/playsim/p_effect.cpp b/src/playsim/p_effect.cpp index 7b1b0a87b..5ee7e9f3c 100644 --- a/src/playsim/p_effect.cpp +++ b/src/playsim/p_effect.cpp @@ -306,10 +306,9 @@ void P_ThinkParticles (FLevelLocals *Level) continue; } - auto oldtrans = particle->alpha; particle->alpha -= particle->fadestep; particle->size += particle->sizestep; - if (particle->alpha <= 0 || oldtrans < particle->alpha || --particle->ttl <= 0 || (particle->size <= 0)) + if (particle->alpha <= 0 || --particle->ttl <= 0 || (particle->size <= 0)) { // The particle has expired, so free it *particle = {}; if (prev) @@ -375,7 +374,7 @@ void P_SpawnParticle(FLevelLocals *Level, const DVector3 &pos, const DVector3 &v particle->Acc = FVector3(accel); particle->color = ParticleColor(color); particle->alpha = float(startalpha); - if (fadestep < 0) particle->fadestep = FADEFROMTTL(lifetime); + if (fadestep <= -1.0) particle->fadestep = FADEFROMTTL(lifetime); else particle->fadestep = float(fadestep); particle->ttl = lifetime; particle->size = size;