From 2f4d118d41da21aacef7d93c0d7b9dc893492f06 Mon Sep 17 00:00:00 2001 From: divverent Date: Tue, 11 May 2010 09:11:48 +0000 Subject: [PATCH] particles: apply rotation so that in the initial display frame of the particle, the start rotation min/max are shown git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@10188 d7cf8633-e32d-0410-b094-e92efae38249 ::stable-branch::merge=1a36ccfb94ba6000ab545b4f1c934fc6a6cc9344 --- cl_particles.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cl_particles.c b/cl_particles.c index 8d546466..76ac99c2 100644 --- a/cl_particles.c +++ b/cl_particles.c @@ -653,6 +653,7 @@ particle_t *CL_NewParticle(const vec3_t sortorigin, unsigned short ptypeindex, i part->airfriction = pairfriction; part->liquidfriction = pliquidfriction; part->die = cl.time + lifetime; + part->delayedspawn = cl.time; // part->delayedcollisions = 0; part->qualityreduction = pqualityreduction; part->angle = angle; @@ -2527,7 +2528,7 @@ void R_DrawParticle_TransparentCallback(const entity_render_t *ent, const rtligh case PARTICLE_BILLBOARD: if (p->angle + p->spin) { - spinrad = (p->angle + p->spin * spintime) * (float)(M_PI / 180.0f); + spinrad = (p->angle + p->spin * (spintime - p->delayedspawn)) * (float)(M_PI / 180.0f); spinsin = sin(spinrad) * size; spincos = cos(spinrad) * size; spinm1 = -p->stretch * spincos; @@ -2564,7 +2565,7 @@ void R_DrawParticle_TransparentCallback(const entity_render_t *ent, const rtligh VectorVectors(p->vel, baseright, baseup); if (p->angle + p->spin) { - spinrad = (p->angle + p->spin * spintime) * (float)(M_PI / 180.0f); + spinrad = (p->angle + p->spin * (spintime - p->delayedspawn)) * (float)(M_PI / 180.0f); spinsin = sin(spinrad) * size; spincos = cos(spinrad) * size; spinm1 = p->stretch * spincos; @@ -2719,7 +2720,6 @@ void R_DrawParticles (void) { if (p->delayedspawn > cl.time) continue; - p->delayedspawn = 0; p->size += p->sizeincrease * frametime; p->alpha -= p->alphafade * frametime; @@ -2858,7 +2858,7 @@ void R_DrawParticles (void) } } } - else if (p->delayedspawn) + else if (p->delayedspawn > cl.time) continue; if (!drawparticles) continue; -- 2.39.2