- int j, k;
- float f;
- vec3_t v, end, ang;
- qbyte noise1[32*32], noise2[32*32];
-
- VectorClear(end); // hush MSVC
- i = Mod_PointInLeaf(org, cl.worldmodel)->contents;
- if (i == CONTENTS_SLIME || i == CONTENTS_WATER)
- {
- ang[2] = lhrandom(0, 360);
- fractalnoisequick(noise1, 32, 4);
- fractalnoisequick(noise2, 32, 8);
- for (i = 0;i < 32;i++)
- {
- for (j = 0;j < 32;j++)
- {
- VectorRandom(v);
- VectorMA(org, 16, v, v);
- CL_TraceLine(org, v, end, NULL, 0, true);
- ang[0] = (j + 0.5f) * (360.0f / 32.0f);
- ang[1] = (i + 0.5f) * (360.0f / 32.0f);
- AngleVectors(ang, v, NULL, NULL);
- f = noise1[j*32+i] * 1.5f;
- VectorScale(v, f, v);
- k = noise2[j*32+i] * 0x010101;
- particle(pt_underwaterspark, PARTICLE_BILLBOARD, k, k, tex_smoke[rand()&7], false, true, 10, 10, lhrandom(128, 255), 9999, 1.5, end[0], end[1], end[2], v[0], v[1], v[2], 512.0f, 0, 0, 0, 2, 0);
- VectorScale(v, 0.75, v);
- k = explosparkramp[(noise2[j*32+i] >> 5)];
- particle(pt_underwaterspark, PARTICLE_BILLBOARD, k, k, tex_particle, false, true, 10, 10, lhrandom(128, 255), 9999, 1.5, end[0], end[1], end[2], v[0], v[1], v[2], 512.0f, 0, 0, 0, 2, 0);
- }
- }
- }
- else