]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_particles.c
moved the GL_CloseLibrary call a bit
[xonotic/darkplaces.git] / cl_particles.c
index b2e252480ced29ec7db52668228e076c2d36d4ba..ba62bcecff480426f80e6b5961297d29ab477bbf 100644 (file)
@@ -261,7 +261,7 @@ void CL_EntityParticles (entity_t *ent)
                forward[1] = cp*sy;
                forward[2] = -sp;
 
-               particle(pt_static, PARTICLE_BILLBOARD, particlepalette[0x6f], particlepalette[0x6f], tex_particle, false, false, 2, 2, 255, 0, -19999, 0, 0, ent->render.origin[0] + m_bytenormals[i][0]*dist + forward[0]*beamlength, ent->render.origin[1] + m_bytenormals[i][1]*dist + forward[1]*beamlength, ent->render.origin[2] + m_bytenormals[i][2]*dist + forward[2]*beamlength, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+               particle(pt_static, PARTICLE_BILLBOARD, particlepalette[0x6f], particlepalette[0x6f], tex_particle, false, false, 2, 2, 255, 0, 0, 0, 0, ent->render.origin[0] + m_bytenormals[i][0]*dist + forward[0]*beamlength, ent->render.origin[1] + m_bytenormals[i][1]*dist + forward[1]*beamlength, ent->render.origin[2] + m_bytenormals[i][2]*dist + forward[2]*beamlength, 0, 0, 0, 0, 0, 0, 0, 0, 0);
        }
 }
 
@@ -446,7 +446,7 @@ void CL_SparkShower (vec3_t org, vec3_t dir, int count)
                        while(count--)
                        {
                                k = particlepalette[0x68 + (rand() & 7)];
-                               particle(pt_static, PARTICLE_BILLBOARD, k, k, tex_particle, false, true, 1, 1, lhrandom(64, 255), 512, 9999, 1, 0, org[0], org[1], org[2], lhrandom(-64, 64) + dir[0], lhrandom(-64, 64) + dir[1], lhrandom(0, 128) + dir[2], 0, 0, 0, 0, 1, 0);
+                               particle(pt_static, PARTICLE_BILLBOARD, k, k, tex_particle, false, true, 1, 1, lhrandom(64, 255), 512, 9999, 1, 0, org[0], org[1], org[2], lhrandom(-64, 64) + dir[0], lhrandom(-64, 64) + dir[1], lhrandom(0, 128) + dir[2], 0, 0, 0, 0, 0, 0);
                        }
                }
        }
@@ -838,8 +838,6 @@ void CL_MoveParticles (void)
                return;
 
        frametime = cl.time - cl.oldtime;
-       if (!frametime)
-               return; // if absolutely still, don't update particles
        gravity = frametime * sv_gravity.value;
        dvel = 1+4*frametime;
        bloodwaterfade = max(cl_particles_blood_alpha.value, 0.01f) * frametime * 128.0f;
@@ -877,6 +875,7 @@ void CL_MoveParticles (void)
                        }
                }
                p->vel[2] -= p->gravity * gravity;
+               p->alpha -= p->alphafade * frametime;
                if (p->friction)
                {
                        f = p->friction * frametime;
@@ -888,59 +887,58 @@ void CL_MoveParticles (void)
                        VectorScale(p->vel, f, p->vel);
                }
 
-               switch (p->type)
+               if (p->type != pt_static)
                {
-               case pt_static:
-                       break;
-
-               case pt_blood:
-                       if (!content)
-                               content = Mod_PointInLeaf(p->org, cl.worldmodel)->contents;
-                       a = content;
-                       if (a != CONTENTS_EMPTY)
+                       switch (p->type)
                        {
-                               if (a == CONTENTS_WATER || a == CONTENTS_SLIME)
+                       case pt_blood:
+                               if (!content)
+                                       content = Mod_PointInLeaf(p->org, cl.worldmodel)->contents;
+                               a = content;
+                               if (a != CONTENTS_EMPTY)
                                {
-                                       p->scalex += frametime * cl_particles_blood_size.value;
-                                       p->scaley += frametime * cl_particles_blood_size.value;
-                                       //p->alpha -= bloodwaterfade;
+                                       if (a == CONTENTS_WATER || a == CONTENTS_SLIME)
+                                       {
+                                               p->scalex += frametime * cl_particles_blood_size.value;
+                                               p->scaley += frametime * cl_particles_blood_size.value;
+                                               //p->alpha -= bloodwaterfade;
+                                       }
+                                       else
+                                               p->die = -1;
                                }
                                else
+                                       p->vel[2] -= gravity;
+                               break;
+                       case pt_bubble:
+                               if (!content)
+                                       content = Mod_PointInLeaf(p->org, cl.worldmodel)->contents;
+                               if (content != CONTENTS_WATER && content != CONTENTS_SLIME)
+                               {
                                        p->die = -1;
-                       }
-                       else
-                               p->vel[2] -= gravity;
-                       break;
-               case pt_bubble:
-                       if (!content)
-                               content = Mod_PointInLeaf(p->org, cl.worldmodel)->contents;
-                       if (content != CONTENTS_WATER && content != CONTENTS_SLIME)
-                       {
+                                       break;
+                               }
+                               break;
+                       case pt_rain:
+                               if (cl.time > p->time2)
+                               {
+                                       // snow flutter
+                                       p->time2 = cl.time + (rand() & 3) * 0.1;
+                                       p->vel[0] = lhrandom(-32, 32) + p->vel2[0];
+                                       p->vel[1] = lhrandom(-32, 32) + p->vel2[1];
+                                       p->vel[2] = /*lhrandom(-32, 32) +*/ p->vel2[2];
+                               }
+                               if (!content)
+                                       content = Mod_PointInLeaf(p->org, cl.worldmodel)->contents;
+                               a = content;
+                               if (a != CONTENTS_EMPTY && a != CONTENTS_SKY)
+                                       p->die = -1;
+                               break;
+                       default:
+                               printf("unknown particle type %i\n", p->type);
                                p->die = -1;
                                break;
                        }
-                       break;
-               case pt_rain:
-                       if (cl.time > p->time2)
-                       {
-                               // snow flutter
-                               p->time2 = cl.time + (rand() & 3) * 0.1;
-                               p->vel[0] = lhrandom(-32, 32) + p->vel2[0];
-                               p->vel[1] = lhrandom(-32, 32) + p->vel2[1];
-                               p->vel[2] = /*lhrandom(-32, 32) +*/ p->vel2[2];
-                       }
-                       if (!content)
-                               content = Mod_PointInLeaf(p->org, cl.worldmodel)->contents;
-                       a = content;
-                       if (a != CONTENTS_EMPTY && a != CONTENTS_SKY)
-                               p->die = -1;
-                       break;
-               default:
-                       printf("unknown particle type %i\n", p->type);
-                       p->die = -1;
-                       break;
                }
-               p->alpha -= p->alphafade * frametime;
 
                // remove dead particles
                if (p->alpha < 1 || p->die < cl.time)