[nexuiz-commits] r8147 - in trunk/data: . qcsrc/client

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Oct 17 10:41:11 EDT 2009


Author: div0
Date: 2009-10-17 10:41:10 -0400 (Sat, 17 Oct 2009)
New Revision: 8147

Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/client/View.qc
Log:
moar crosshair effect stuff: cvar crosshair_effect_scalefade, and also fade the color


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2009-10-17 13:52:27 UTC (rev 8146)
+++ trunk/data/defaultNexuiz.cfg	2009-10-17 14:41:10 UTC (rev 8147)
@@ -114,6 +114,7 @@
 seta crosshair_per_weapon 0	"when 1, each gun will display a different crosshair"
 seta crosshair_color_override 0	"when 1, crosshair_color_* overrides the per-weapon color"
 seta crosshair_effect_speed -1 "how fast (in seconds) some crosshair effects should take place, 0 = instant, -1 = 2x weapon switch time"
+seta crosshair_effect_scalefade 1 "use scaling and fading for crosshair effects"
 seta crosshair_hittest 1 "do a crosshair hit evaluation; also, the crosshair is scaled by the given number when aiming at an enemy, and blurred when aiming at a team mate"
 seta crosshair_hittest_blur 1 "blur the crosshair if the shot is obstructed"
 seta crosshair_hittest_showimpact 0 "move the crosshair to the actual impact location if obstructed"

Modified: trunk/data/qcsrc/client/View.qc
===================================================================
--- trunk/data/qcsrc/client/View.qc	2009-10-17 13:52:27 UTC (rev 8146)
+++ trunk/data/qcsrc/client/View.qc	2009-10-17 14:41:10 UTC (rev 8147)
@@ -208,10 +208,14 @@
 float zoomscript_caught;
 
 vector wcross_origin;
-float wcross_sizefloat_prev, wcross_alpha_prev, wcross_blur_prev;
-float wcross_sizefloat_goal_prev, wcross_alpha_goal_prev, wcross_blur_goal_prev;
+float wcross_scale_prev, wcross_alpha_prev;
+vector wcross_color_prev;
+float wcross_scale_goal_prev, wcross_alpha_goal_prev;
+vector wcross_color_goal_prev;
 float wcross_changedonetime;
+
 string wcross_name_goal_prev, wcross_name_goal_prev_prev;
+float wcross_resolution_goal_prev, wcross_resolution_goal_prev_prev;
 float wcross_name_changestarttime, wcross_name_changedonetime;
 float wcross_name_alpha_goal_prev, wcross_name_alpha_goal_prev_prev;
 entity trueaim;
@@ -623,13 +627,13 @@
 			if (wcross_style != "0") {
 				vector wcross_color, wcross_size;
 				string wcross_wep, wcross_name;
-				float wcross_alpha, wcross_sizefloat, wcross_blur;
+				float wcross_alpha, wcross_scale, wcross_blur, wcross_resolution;
 
 				wcross_color_x = cvar("crosshair_color_red");
 				wcross_color_y = cvar("crosshair_color_green");
 				wcross_color_z = cvar("crosshair_color_blue");
 				wcross_alpha = cvar("crosshair_color_alpha");
-				wcross_sizefloat = cvar("crosshair_size");
+				wcross_resolution = cvar("crosshair_size");
 				if (cvar("crosshair_per_weapon")) {
 					e = get_weaponinfo(activeweapon);
 					if (e && e.netname != "")
@@ -647,32 +651,35 @@
 						}
 
 						wcross_alpha *= cvar(strcat("crosshair_", wcross_wep, "_color_alpha"));
-						wcross_sizefloat *= cvar(strcat("crosshair_", wcross_wep, "_size"));
+						wcross_resolution *= cvar(strcat("crosshair_", wcross_wep, "_size"));
 					}
 				}
 
 				wcross_name = strcat("gfx/crosshair", wcross_style);
 
-				if(shottype == SHOTTYPE_HITENEMY)
-					wcross_sizefloat *= cvar("crosshair_hittest"); // is not queried if hittest is 0
-				if(shottype == SHOTTYPE_HITTEAM)
-					wcross_sizefloat /= cvar("crosshair_hittest"); // is not queried if hittest is 0
-				if(shottype == SHOTTYPE_HITTEAM || (shottype == SHOTTYPE_HITOBSTRUCTION && cvar("crosshair_hittest_blur") && !cvar("chase_active")))
+				if(cvar("crosshair_effect_scalefade"))
 				{
-					wcross_alpha *= 0.75;
-					wcross_blur = 1;
+					wcross_scale = wcross_resolution;
+					wcross_resolution = 1;
 				}
 				else
-					wcross_blur = 0;
+				{
+					wcross_scale = 1;
+				}
 
+				if(shottype == SHOTTYPE_HITENEMY)
+					wcross_scale *= cvar("crosshair_hittest"); // is not queried if hittest is 0
+				if(shottype == SHOTTYPE_HITTEAM)
+					wcross_scale /= cvar("crosshair_hittest"); // is not queried if hittest is 0
+
 				f = cvar("crosshair_effect_speed");
 				if(f < 0)
 					f *= -2 * g_weaponswitchdelay;
-				if(wcross_blur != wcross_blur_goal_prev || wcross_sizefloat != wcross_sizefloat_goal_prev || wcross_alpha != wcross_alpha_goal_prev)
+				if(wcross_scale != wcross_scale_goal_prev || wcross_alpha != wcross_alpha_goal_prev || wcross_color != wcross_color_goal_prev)
 				{
 					wcross_changedonetime = time + f;
 				}
-				if(wcross_name != wcross_name_goal_prev)
+				if(wcross_name != wcross_name_goal_prev || wcross_resolution != wcross_resolution_goal_prev)
 				{
 					wcross_name_changestarttime = time;
 					wcross_name_changedonetime = time + f;
@@ -681,33 +688,40 @@
 					wcross_name_goal_prev_prev = wcross_name_goal_prev;
 					wcross_name_goal_prev = strzone(wcross_name);
 					wcross_name_alpha_goal_prev_prev = wcross_name_alpha_goal_prev;
+					wcross_resolution_goal_prev_prev = wcross_resolution_goal_prev;
+					wcross_resolution_goal_prev = wcross_resolution;
 				}
 
-				wcross_sizefloat_goal_prev = wcross_sizefloat;
+				wcross_scale_goal_prev = wcross_scale;
 				wcross_alpha_goal_prev = wcross_alpha;
-				wcross_blur_goal_prev = wcross_blur;
+				wcross_color_goal_prev = wcross_color;
 
+				if(shottype == SHOTTYPE_HITTEAM || (shottype == SHOTTYPE_HITOBSTRUCTION && cvar("crosshair_hittest_blur") && !cvar("chase_active")))
+				{
+					wcross_blur = 1;
+					wcross_alpha *= 0.75;
+				}
+				else
+					wcross_blur = 0;
 				// *_prev is at time-frametime
 				// * is at wcross_changedonetime+f
 				// what do we have at time?
 				if(time < wcross_changedonetime)
 				{
 					f = frametime / (wcross_changedonetime - time + frametime);
-					wcross_sizefloat = f * wcross_sizefloat + (1 - f) * wcross_sizefloat_prev;
+					wcross_scale = f * wcross_scale + (1 - f) * wcross_scale_prev;
 					wcross_alpha = f * wcross_alpha + (1 - f) * wcross_alpha_prev;
-					//wcross_blur = (frametime / f) * wcross_blur + (1 - frametime / f) * wcross_blur_prev;
+					wcross_color = f * wcross_color + (1 - f) * wcross_color_prev;
 				}
 
-				wcross_sizefloat_prev = wcross_sizefloat;
+				wcross_scale_prev = wcross_scale;
 				wcross_alpha_prev = wcross_alpha;
-				wcross_blur_prev = wcross_blur;
+				wcross_color_prev = wcross_color;
 
-				wcross_sizefloat *= 1 - cvar("_menu_alpha");
+				wcross_scale *= 1 - cvar("_menu_alpha");
 				wcross_alpha *= 1 - cvar("_menu_alpha");
 
-				wcross_size = drawgetimagesize(wcross_name);
-				wcross_size_x *= wcross_sizefloat;
-				wcross_size_y *= wcross_sizefloat;
+				wcross_size = drawgetimagesize(wcross_name) * wcross_scale;
 
 				// ring around crosshair representing bullets left in camping rifle clip
 				if (activeweapon == WEP_CAMPINGRIFLE)
@@ -718,10 +732,10 @@
 				else
 					bullets = 0;
 
-#define CROSSHAIR_DRAW_RING(i,j,dummy1,dummy2) \
-				drawpic(wcross_origin - ('0.5 0 0' * (wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/hud/rifle_ring_", ftos(bullets)), wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
+#define CROSSHAIR_DRAW_RING(i,j,sz,dummy1,dummy2) \
+				drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/hud/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
 
-#define CROSSHAIR_DO_BLUR(M,a,b) \
+#define CROSSHAIR_DO_BLUR(M,sz,a,b) \
 				do \
 				{ \
 					if(wcross_blur > 0) \
@@ -729,48 +743,46 @@
 						wcross_alpha = wcross_alpha * 0.04; \
 						for(i = -2; i <= 2; ++i) \
 							for(j = -2; j <= 2; ++j) \
-								M(i,j,a,b); \
+								M(i,j,sz,a,b); \
 					} \
 					else \
 					{ \
-						M(0,0,a,b); \
+						M(0,0,sz,a,b); \
 					} \
 				} \
 				while(0)
 
-#define CROSSHAIR_DRAW_SINGLE(i,j,wcross_name,wcross_alpha) \
-				drawpic(wcross_origin - ('0.5 0 0' * (wcross_size_x + i * wcross_blur) + '0 0.5 0' * (wcross_size_y + j * wcross_blur)), wcross_name, wcross_size, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
+#define CROSSHAIR_DRAW_SINGLE(i,j,sz,wcross_name,wcross_alpha) \
+				drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y + j * wcross_blur)), wcross_name, sz * wcross_size, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
 
-#define CROSSHAIR_DRAW(wcross_name,wcross_alpha) \
-				CROSSHAIR_DO_BLUR(CROSSHAIR_DRAW_SINGLE,wcross_name,wcross_alpha)
+#define CROSSHAIR_DRAW(sz,wcross_name,wcross_alpha) \
+				CROSSHAIR_DO_BLUR(CROSSHAIR_DRAW_SINGLE,sz,wcross_name,wcross_alpha)
 
 				if(bullets)
 				{
-					CROSSHAIR_DO_BLUR(CROSSHAIR_DRAW_RING, 0, 0);
+					CROSSHAIR_DO_BLUR(CROSSHAIR_DRAW_RING, wcross_resolution, 0, 0);
 				}
 
 				if(time < wcross_name_changedonetime && wcross_name != wcross_name_goal_prev_prev && wcross_name_goal_prev_prev)
 				{
 					f = (wcross_name_changedonetime - time) / (wcross_name_changedonetime - wcross_name_changestarttime);
-					CROSSHAIR_DRAW(wcross_name_goal_prev_prev, wcross_alpha * f * wcross_name_alpha_goal_prev_prev);
+					CROSSHAIR_DRAW(wcross_resolution_goal_prev_prev, wcross_name_goal_prev_prev, wcross_alpha * f * wcross_name_alpha_goal_prev_prev);
 					f = 1 - f;
 				}
 				else
 				{
 					f = 1;
 				}
-				CROSSHAIR_DRAW(wcross_name, wcross_alpha * f);
+				CROSSHAIR_DRAW(wcross_resolution, wcross_name, wcross_alpha * f);
 				wcross_name_alpha_goal_prev = f;
 			}
 		}
 		else
 		{
-			wcross_sizefloat_prev = 0;
+			wcross_scale_prev = 0;
 			wcross_alpha_prev = 0;
-			wcross_blur_prev = 0;
-			wcross_sizefloat_goal_prev = 0;
+			wcross_scale_goal_prev = 0;
 			wcross_alpha_goal_prev = 0;
-			wcross_blur_goal_prev = 0;
 			wcross_changedonetime = 0;
 			if(wcross_name_goal_prev)
 				strunzone(wcross_name_goal_prev);
@@ -782,6 +794,8 @@
 			wcross_name_changedonetime = 0;
 			wcross_name_alpha_goal_prev = 0;
 			wcross_name_alpha_goal_prev_prev = 0;
+			wcross_resolution_goal_prev = 0;
+			wcross_resolution_goal_prev_prev = 0;
 		}
 	}
 



More information about the nexuiz-commits mailing list