]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
added cl_particles_explosions_bubbles/sparks/smoke/shell cvars, got rid of cl_explosi...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 3 Sep 2004 01:40:43 +0000 (01:40 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 3 Sep 2004 01:40:43 +0000 (01:40 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4422 d7cf8633-e32d-0410-b094-e92efae38249

cl_main.c
cl_particles.c
client.h
menu.c

index 7fcdf257732a8ef007e91b82f93c49bdf6fe2d3c..75e5d57c5493dbf3547d341365794de7a42a8373 100644 (file)
--- a/cl_main.c
+++ b/cl_main.c
@@ -46,7 +46,6 @@ cvar_t freelook = {CVAR_SAVE, "freelook", "1"};
 
 cvar_t r_draweffects = {0, "r_draweffects", "1"};
 
-cvar_t cl_explosions = {CVAR_SAVE, "cl_explosions", "1"};
 cvar_t cl_explosions_alpha_start = {CVAR_SAVE, "cl_explosions_alpha_start", "1.5"};
 cvar_t cl_explosions_alpha_end = {CVAR_SAVE, "cl_explosions_alpha_end", "0"};
 cvar_t cl_explosions_size_start = {CVAR_SAVE, "cl_explosions_size_start", "16"};
@@ -1319,7 +1318,6 @@ void CL_Init (void)
        Cmd_AddCommand ("pausedemo", CL_PauseDemo_f);
 
        Cvar_RegisterVariable(&r_draweffects);
-       Cvar_RegisterVariable(&cl_explosions);
        Cvar_RegisterVariable(&cl_explosions_alpha_start);
        Cvar_RegisterVariable(&cl_explosions_alpha_end);
        Cvar_RegisterVariable(&cl_explosions_size_start);
index 477ba5f56b8672a42f72ca2171512be6b0e7fa4b..a07ecbdad9ae16e1f800465725abefe2397996ab 100644 (file)
@@ -294,6 +294,10 @@ cvar_t cl_particles_blood = {CVAR_SAVE, "cl_particles_blood", "1"};
 cvar_t cl_particles_blood_alpha = {CVAR_SAVE, "cl_particles_blood_alpha", "0.5"};
 cvar_t cl_particles_blood_bloodhack = {CVAR_SAVE, "cl_particles_blood_bloodhack", "1"};
 cvar_t cl_particles_bulletimpacts = {CVAR_SAVE, "cl_particles_bulletimpacts", "1"};
+cvar_t cl_particles_explosions_bubbles = {CVAR_SAVE, "cl_particles_explosions_bubbles", "1"};
+cvar_t cl_particles_explosions_smoke = {CVAR_SAVE, "cl_particles_explosions_smokes", "0"};
+cvar_t cl_particles_explosions_sparks = {CVAR_SAVE, "cl_particles_explosions_sparks", "1"};
+cvar_t cl_particles_explosions_shell = {CVAR_SAVE, "cl_particles_explosions_shell", "0"};
 cvar_t cl_particles_smoke = {CVAR_SAVE, "cl_particles_smoke", "1"};
 cvar_t cl_particles_smoke_alpha = {CVAR_SAVE, "cl_particles_smoke_alpha", "0.5"};
 cvar_t cl_particles_smoke_alphafade = {CVAR_SAVE, "cl_particles_smoke_alphafade", "0.55"};
@@ -344,6 +348,10 @@ void CL_Particles_Init (void)
        Cvar_RegisterVariable (&cl_particles_blood);
        Cvar_RegisterVariable (&cl_particles_blood_alpha);
        Cvar_RegisterVariable (&cl_particles_blood_bloodhack);
+       Cvar_RegisterVariable (&cl_particles_explosions_bubbles);
+       Cvar_RegisterVariable (&cl_particles_explosions_smoke);
+       Cvar_RegisterVariable (&cl_particles_explosions_sparks);
+       Cvar_RegisterVariable (&cl_particles_explosions_shell);
        Cvar_RegisterVariable (&cl_particles_bulletimpacts);
        Cvar_RegisterVariable (&cl_particles_smoke);
        Cvar_RegisterVariable (&cl_particles_smoke_alpha);
@@ -650,66 +658,59 @@ void CL_ParticleExplosion (vec3_t org)
        CL_SpawnDecalParticleForPoint(org, 40, 48, 255, tex_bulletdecal[rand()&7], 0xFFFFFF, 0xFFFFFF);
 
        i = CL_PointQ1Contents(org);
-       if ((i == CONTENTS_SLIME || i == CONTENTS_WATER) && cl_particles.integer && cl_particles_bubbles.integer)
+       if (i == CONTENTS_SLIME || i == CONTENTS_WATER)
        {
-               for (i = 0;i < 128 * cl_particles_quality.value;i++)
-                       particle(pt_bubble, PARTICLE_BILLBOARD, 0x404040, 0x808080, tex_bubble, false, PBLEND_ADD, 2, 2, (1.0f / cl_particles_quality.value) * lhrandom(128, 255), (1.0f / cl_particles_quality.value) * 256, 9999, -0.25, 1.5, org[0] + lhrandom(-16, 16), org[1] + lhrandom(-16, 16), org[2] + lhrandom(-16, 16), lhrandom(-96, 96), lhrandom(-96, 96), lhrandom(-96, 96), 0, 0, 0, 0, (1.0 / 16.0), 0);
+               if (cl_particles.integer && cl_particles_bubbles.integer && cl_particles_explosions_bubbles.integer)
+                       for (i = 0;i < 128 * cl_particles_quality.value;i++)
+                               particle(pt_bubble, PARTICLE_BILLBOARD, 0x404040, 0x808080, tex_bubble, false, PBLEND_ADD, 2, 2, (1.0f / cl_particles_quality.value) * lhrandom(128, 255), (1.0f / cl_particles_quality.value) * 256, 9999, -0.25, 1.5, org[0] + lhrandom(-16, 16), org[1] + lhrandom(-16, 16), org[2] + lhrandom(-16, 16), lhrandom(-96, 96), lhrandom(-96, 96), lhrandom(-96, 96), 0, 0, 0, 0, (1.0 / 16.0), 0);
        }
        else
        {
-               /*
                // LordHavoc: smoke effect similar to UT2003, chews fillrate too badly up close
                // smoke puff
-               if (cl_particles.integer && cl_particles_smoke.integer)
+               if (cl_particles.integer && cl_particles_smoke.integer && cl_particles_explosions_smoke.integer)
                {
-                       for (i = 0;i < 64;i++)
+                       for (i = 0;i < 32;i++)
                        {
+                               int k;
+                               vec3_t v, v2;
 #ifdef WORKINGLQUAKE
-                               v2[0] = lhrandom(-64, 64);
-                               v2[1] = lhrandom(-64, 64);
-                               v2[2] = lhrandom(-8, 24);
+                               v2[0] = lhrandom(-48, 48);
+                               v2[1] = lhrandom(-48, 48);
+                               v2[2] = lhrandom(-48, 48);
 #else
                                for (k = 0;k < 16;k++)
                                {
-                                       v[0] = org[0] + lhrandom(-64, 64);
-                                       v[1] = org[1] + lhrandom(-64, 64);
-                                       v[2] = org[2] + lhrandom(-8, 24);
+                                       v[0] = org[0] + lhrandom(-48, 48);
+                                       v[1] = org[1] + lhrandom(-48, 48);
+                                       v[2] = org[2] + lhrandom(-48, 48);
                                        if (CL_TraceLine(org, v, v2, NULL, true, NULL, SUPERCONTENTS_SOLID) >= 0.1)
                                                break;
                                }
                                VectorSubtract(v2, org, v2);
 #endif
                                VectorScale(v2, 2.0f, v2);
-                               particle(pt_static, PARTICLE_BILLBOARD, 0x101010, 0x202020, tex_smoke[rand()&7], true, PBLEND_ADD, 12, 12, 255, 512, 9999, 0, 0, org[0], org[1], org[2], v2[0], v2[1], v2[2], 0, 0, 0, 0, 0, 0);
+                               particle(pt_static, PARTICLE_BILLBOARD, 0xFFFFFF, 0xFFFFFF, tex_smoke[rand()&7], true, PBLEND_ADD, 12, 12, 32, 64, 9999, 0, 0, org[0], org[1], org[2], v2[0], v2[1], v2[2], 0, 0, 0, 0, 0, 0);
                        }
                }
-               */
 
 #if 1
-               if (cl_particles.integer && cl_particles_sparks.integer)
+               if (cl_particles.integer && cl_particles_sparks.integer && cl_particles_explosions_sparks.integer)
                        for (i = 0;i < 128 * cl_particles_quality.value;i++)
                                particle(pt_static, PARTICLE_SPARK, 0x903010, 0xFFD030, tex_particle, false, PBLEND_ADD, 1.0f, 0.02f, (1.0f / cl_particles_quality.value) * lhrandom(0, 255), (1.0f / cl_particles_quality.value) * 512, 9999, 1, 0, org[0], org[1], org[2], lhrandom(-256, 256), lhrandom(-256, 256), lhrandom(-256, 256) + 80, 0, 0, 0, 0, 0.2, 0);
-       }
-
-       //if (cl_explosions.integer)
-       //      R_NewExplosion(org);
 #elif 1
-               if (cl_particles.integer && cl_particles_sparks.integer)
+               if (cl_particles.integer && cl_particles_sparks.integer && cl_particles_explosions_sparks.integer)
                        for (i = 0;i < 64 * cl_particles_quality.value;i++)
                                particle(pt_ember, PARTICLE_SPARK, 0x903010, 0xFFD030, tex_particle, false, PBLEND_ADD, 1.0f, 0.01f, (1.0f / cl_particles_quality.value) * lhrandom(0, 255), (1.0f / cl_particles_quality.value) * 256, 9999, 0.7, 0, org[0], org[1], org[2], lhrandom(-256, 256), lhrandom(-256, 256), lhrandom(-256, 256) + 80, cl.time, 0, 0, 0, 0, 0);
-       }
-
-       //if (cl_explosions.integer)
-       //      R_NewExplosion(org);
 #else
-               if (cl_particles.integer && cl_particles_sparks.integer)
+               if (cl_particles.integer && cl_particles_sparks.integer && cl_particles_explosions_sparks.integer)
                        for (i = 0;i < 256 * cl_particles_quality.value;i++)
                                particle(pt_static, PARTICLE_SPARK, 0x903010, 0xFFD030, tex_particle, false, PBLEND_ADD, 1.5f, 0.05f, (1.0f / cl_particles_quality.value) * lhrandom(0, 255), (1.0f / cl_particles_quality.value) * 512, 9999, 1, 0, org[0], org[1], org[2], lhrandom(-192, 192), lhrandom(-192, 192), lhrandom(-192, 192) + 160, 0, 0, 0, 0, 0.2, 0);
+#endif
        }
 
-       if (cl_explosions.integer)
+       if (cl_particles_explosions_shell.integer)
                R_NewExplosion(org);
-#endif
 }
 
 /*
@@ -745,12 +746,7 @@ CL_BlobExplosion
 */
 void CL_BlobExplosion (vec3_t org)
 {
-       if (cl_stainmaps.integer)
-               R_Stain(org, 96, 80, 80, 80, 64, 176, 176, 176, 64);
-       CL_SpawnDecalParticleForPoint(org, 40, 48, 255, tex_bulletdecal[rand()&7], 0xFFFFFF, 0xFFFFFF);
-
-       if (cl_explosions.integer)
-               R_NewExplosion(org);
+       CL_ParticleExplosion(org);
 }
 
 /*
index 726d16f1e986eb65ccebf92a02f3c3764f6ae7c1..14148b1e8c1f8c43c7db71ce68807345500e9bb0 100644 (file)
--- a/client.h
+++ b/client.h
@@ -586,7 +586,6 @@ extern cvar_t m_side;
 
 extern cvar_t r_draweffects;
 
-extern cvar_t cl_explosions;
 extern cvar_t cl_explosions_alpha_start;
 extern cvar_t cl_explosions_alpha_end;
 extern cvar_t cl_explosions_size_start;
diff --git a/menu.c b/menu.c
index be01dc1d1981ce3d4b2f7619a158f20b59485e27..9cfee173a0c26ccb38e5989cd58e9551307a363c 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -1474,7 +1474,6 @@ void M_Menu_Options_Effects_f (void)
 
 extern cvar_t r_detailtextures;
 extern cvar_t cl_particles;
-extern cvar_t cl_explosions;
 extern cvar_t cl_stainmaps;
 extern cvar_t cl_decals;
 extern cvar_t r_explosionclip;
@@ -1489,6 +1488,7 @@ extern cvar_t cl_particles_bubbles;
 extern cvar_t cl_particles_blood;
 extern cvar_t cl_particles_blood_alpha;
 extern cvar_t cl_particles_blood_bloodhack;
+extern cvar_t cl_particles_explosions_shell;
 extern cvar_t r_lightningbeam_thickness;
 extern cvar_t r_lightningbeam_scroll;
 extern cvar_t r_lightningbeam_repeatdistance;
@@ -1508,7 +1508,7 @@ void M_Menu_Options_Effects_AdjustSliders (int dir)
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&gl_flashblend, !gl_flashblend.integer);
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles, !cl_particles.integer);
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_quality, bound(1, cl_particles_quality.value + dir * 0.5, 4));
-       else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_explosions, !cl_explosions.integer);
+       else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_explosions_shell, !cl_particles_explosions_shell.integer);
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_explosionclip, !r_explosionclip.integer);
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_stainmaps, !cl_stainmaps.integer);
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_decals, !cl_decals.integer);
@@ -1559,8 +1559,8 @@ void M_Options_Effects_Draw (void)
        M_Options_PrintCheckbox("      Use Only Coronas", true, gl_flashblend.integer);
        M_Options_PrintCheckbox("             Particles", true, cl_particles.integer);
        M_Options_PrintSlider(  "     Particles Quality", true, cl_particles_quality.value, 1, 4);
-       M_Options_PrintCheckbox("            Explosions", true, cl_explosions.integer);
-       M_Options_PrintCheckbox("    Explosion Clipping", true, r_explosionclip.integer);
+       M_Options_PrintCheckbox("       Explosion Shell", true, cl_particles_explosions_shell.integer);
+       M_Options_PrintCheckbox("  Explosion Shell Clip", true, r_explosionclip.integer);
        M_Options_PrintCheckbox("             Stainmaps", true, cl_stainmaps.integer);
        M_Options_PrintCheckbox("                Decals", true, cl_decals.integer);
        M_Options_PrintCheckbox("      Detail Texturing", true, r_detailtextures.integer);