[nexuiz-commits] r6476 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Apr 12 17:16:44 EDT 2009


Author: div0
Date: 2009-04-12 17:16:44 -0400 (Sun, 12 Apr 2009)
New Revision: 6476

Modified:
   trunk/data/qcsrc/server/gamecommand.qc
Log:
add a test case for the tracebox bug: "sv_cmd tracebug"


Modified: trunk/data/qcsrc/server/gamecommand.qc
===================================================================
--- trunk/data/qcsrc/server/gamecommand.qc	2009-04-12 18:28:41 UTC (rev 6475)
+++ trunk/data/qcsrc/server/gamecommand.qc	2009-04-12 21:16:44 UTC (rev 6476)
@@ -871,6 +871,46 @@
 		return;
 	}
 
+	if(argv(0) == "tracebug")
+	{
+		print("TEST CASE. If this returns the runaway loop counter error, possibly everything is oaky.\n");
+		for(;;)
+		{
+			vector org, delta, start, end, p;
+
+			org = world.mins;
+			delta = world.maxs - world.mins;
+
+			start_x = org_x + random() * delta_x;
+			start_y = org_y + random() * delta_y;
+			start_z = org_z + random() * delta_z;
+
+			end_x = org_x + random() * delta_x;
+			end_y = org_y + random() * delta_y;
+			end_z = org_z + random() * delta_z;
+
+			start = stov(vtos(start));
+			end = stov(vtos(end));
+
+			tracebox(start, PL_MIN, PL_MAX, end, MOVE_NOMONSTERS, world);
+			if(!trace_startsolid)
+			{
+				p = trace_endpos;
+				tracebox(p, PL_MIN, PL_MAX, p, MOVE_NOMONSTERS, world);
+				if(trace_startsolid)
+				{
+					rint(42); // do an engine breakpoint on VM_rint so you can get the trace that errnoeously returns startsolid
+					tracebox(p, PL_MIN, PL_MAX, p, MOVE_NOMONSTERS, world);
+					tracebox(p, PL_MIN + '0.1 0.1 0.1', PL_MAX - '0.1 0.1 0.1', p, MOVE_NOMONSTERS, world);
+					if(trace_startsolid)
+						error(strcat("trace_endpos much in solid when tracing from ", vtos(start), " to ", vtos(end), " endpos ", vtos(trace_endpos), "\n"));
+					else
+						error(strcat("trace_endpos just in solid when tracing from ", vtos(start), " to ", vtos(end), " endpos ", vtos(trace_endpos), "\n"));
+				}
+			}
+		}
+	}
+
 	print("Invalid command. For a list of supported commands, try sv_cmd help.\n");
 }
 



More information about the nexuiz-commits mailing list