Tomaz's patch for r_waterwarp with controllable intensity
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 12 May 2004 16:55:42 +0000 (16:55 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 12 May 2004 16:55:42 +0000 (16:55 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4145 d7cf8633-e32d-0410-b094-e92efae38249

gl_backend.c
menu.c
render.h

index f201d83..9ea11de 100644 (file)
@@ -12,6 +12,7 @@ cvar_t gl_paranoid = {0, "gl_paranoid", "0"};
 cvar_t gl_printcheckerror = {0, "gl_printcheckerror", "0"};
 
 cvar_t r_render = {0, "r_render", "1"};
+cvar_t r_waterwarp = {CVAR_SAVE, "r_waterwarp", "1"};
 cvar_t gl_dither = {CVAR_SAVE, "gl_dither", "1"}; // whether or not to use dithering
 cvar_t gl_lockarrays = {0, "gl_lockarrays", "1"};
 
@@ -204,6 +205,7 @@ void gl_backend_init(void)
        }
 
        Cvar_RegisterVariable(&r_render);
+       Cvar_RegisterVariable(&r_waterwarp);
        Cvar_RegisterVariable(&gl_dither);
        Cvar_RegisterVariable(&gl_lockarrays);
        Cvar_RegisterVariable(&gl_delayfinish);
@@ -1326,15 +1328,18 @@ showtris:
                // LordHavoc: viewzoom (zoom in for sniper rifles, etc)
                r_refdef.fov_x = scr_fov.value * cl.viewzoom;
                r_refdef.fov_y = CalcFov (r_refdef.fov_x, r_refdef.width, r_refdef.height);
-       
-               if (cl.worldmodel)
+
+               if (r_waterwarp.value > 0)
                {
-                       Mod_CheckLoaded(cl.worldmodel);
-                       contents = CL_PointSuperContents(r_vieworigin);
-                       if (contents & SUPERCONTENTS_LIQUIDSMASK)
+                       if (cl.worldmodel)
                        {
-                               r_refdef.fov_x *= (sin(cl.time * 4.7) * 0.015 + 0.985);
-                               r_refdef.fov_y *= (sin(cl.time * 3.0) * 0.015 + 0.985);
+                               Mod_CheckLoaded(cl.worldmodel);
+                               contents = CL_PointSuperContents(r_vieworigin);
+                               if (contents & SUPERCONTENTS_LIQUIDSMASK)
+                               {
+                                       r_refdef.fov_x *= 1 - (((sin(cl.time * 4.7) + 1) * 0.015) * r_waterwarp.value);
+                                       r_refdef.fov_y *= 1 - (((sin(cl.time * 3.0) + 1) * 0.015) * r_waterwarp.value);
+                               }
                        }
                }
 
diff --git a/menu.c b/menu.c
index 32a2827..ba6abad 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -1420,7 +1420,7 @@ void M_Options_Key (int k, char ascii)
        }
 }
 
-#define        OPTIONS_EFFECTS_ITEMS   22
+#define        OPTIONS_EFFECTS_ITEMS   23
 
 int options_effects_cursor;
 
@@ -1475,6 +1475,7 @@ void M_Menu_Options_Effects_AdjustSliders (int dir)
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&cl_particles_blood_bloodhack, !cl_particles_blood_bloodhack.integer);
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lerpmodels, !r_lerpmodels.integer);
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_lerpsprites, !r_lerpsprites.integer);
+       else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_waterwarp, bound(0, r_waterwarp.value + dir * 0.1, 1));
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_wateralpha, bound(0, r_wateralpha.value + dir * 0.1, 1));
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_waterscroll, bound(0, r_waterscroll.value + dir * 0.5, 10));
        else if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_watershader, bound(0, r_watershader.value + dir * 0.25, 10));
@@ -1515,6 +1516,7 @@ void M_Options_Effects_Draw (void)
        M_Options_PrintCheckbox("Force New Blood Effect", true, cl_particles_blood_bloodhack.integer);
        M_Options_PrintCheckbox("   Model Interpolation", true, r_lerpmodels.integer);
        M_Options_PrintCheckbox("  Sprite Interpolation", true, r_lerpsprites.integer);
+       M_Options_PrintSlider(  "  Underwater View Warp", true, r_waterwarp.value, 0, 1);
        M_Options_PrintSlider(  " Water Alpha (opacity)", true, r_wateralpha.value, 0, 1);
        M_Options_PrintSlider(  "        Water Movement", true, r_waterscroll.value, 0, 10);
        M_Options_PrintSlider(  " GeForce3 Water Shader", true, r_watershader.value, 0, 10);
index ec03626..c669cd4 100644 (file)
--- a/render.h
+++ b/render.h
@@ -152,6 +152,7 @@ extern vec_t fogdensity;
 #include "r_lerpanim.h"
 
 extern cvar_t r_render;
+extern cvar_t r_waterwarp;
 
 extern cvar_t r_textureunits;
 extern cvar_t gl_dither;