[nexuiz-commits] r7905 - trunk/data/qcsrc/server/bot
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Sep 25 14:28:36 EDT 2009
Author: div0
Date: 2009-09-25 14:28:36 -0400 (Fri, 25 Sep 2009)
New Revision: 7905
Modified:
trunk/data/qcsrc/server/bot/waypoints.qc
Log:
fix waypoint-in-solid correction
Modified: trunk/data/qcsrc/server/bot/waypoints.qc
===================================================================
--- trunk/data/qcsrc/server/bot/waypoints.qc 2009-09-25 18:22:31 UTC (rev 7904)
+++ trunk/data/qcsrc/server/bot/waypoints.qc 2009-09-25 18:28:36 UTC (rev 7905)
@@ -24,70 +24,22 @@
setsize(w, m1 - w.origin, m2 - w.origin);
if (vlen(w.size) > 0)
w.wpisbox = TRUE;
-
- if(!(f & WAYPOINTFLAG_GENERATED))
+
if(!w.wpisbox)
{
- traceline(w.origin + '0 0 1', w.origin + PL_MIN_z * '0 0 1' - '0 0 1', MOVE_NOMONSTERS, w);
- if (trace_fraction < 1)
- setorigin(w, trace_endpos - PL_MIN_z * '0 0 1');
-
- // check if the start position is stuck
- tracebox(w.origin, PL_MIN + '-1 -1 -1', PL_MAX + '1 1 1', w.origin, MOVE_NOMONSTERS, w);
- if (trace_startsolid)
+ setsize(w, PL_MIN - '1 1 0', PL_MAX + '1 1 0');
+ if(!move_out_of_solid(w))
{
- org = w.origin + '0 0 26';
- tracebox(org, PL_MIN, PL_MAX, w.origin, MOVE_WORLDONLY, w);
- if(trace_startsolid)
+ if(!(f & WAYPOINTFLAG_GENERATED))
{
- org = w.origin + '2 2 2';
- tracebox(org, PL_MIN, PL_MAX, w.origin, MOVE_WORLDONLY, w);
- if(trace_startsolid)
- {
- org = w.origin + '-2 -2 2';
- tracebox(org, PL_MIN, PL_MAX, w.origin, MOVE_WORLDONLY, w);
- if(trace_startsolid)
- {
- org = w.origin + '-2 2 2';
- tracebox(org, PL_MIN, PL_MAX, w.origin, MOVE_WORLDONLY, w);
- if(trace_startsolid)
- {
- org = w.origin + '2 -2 2';
- tracebox(org, PL_MIN, PL_MAX, w.origin, MOVE_WORLDONLY, w);
- if(trace_startsolid)
- {
- // this WP is in solid, refuse it
- dprint("Killed a waypoint that was stuck in solid at ", vtos(org), "\n");
- remove(w);
- return world;
- }
- }
- }
- }
- }
- setorigin(w, org * 0.05 + trace_endpos * 0.95); // don't trust the trace fully
- }
-
- tracebox(w.origin, PL_MIN, PL_MAX, w.origin - '0 0 128', MOVE_WORLDONLY, w);
- if(trace_startsolid)
- {
- dprint("Killed a waypoint that was stuck in solid ", vtos(w.origin), "\n");
- remove(w);
- return world;
- }
- if (!trace_inwater)
- {
- if(trace_fraction == 1)
- {
- dprint("Killed a waypoint that was stuck in air at ", vtos(w.origin), "\n");
+ dprint("Killed a waypoint that was stuck in solid at ", vtos(org), "\n");
remove(w);
return world;
}
- trace_endpos_z += 0.1; // don't trust the trace fully
-// dprint("Moved waypoint at ", vtos(w.origin), " by ", ftos(vlen(w.origin - trace_endpos)));
-// dprint(" direction: ", vtos((trace_endpos - w.origin)), "\n");
- setorigin(w, trace_endpos);
+ else
+ dprint("A generated waypoint is stuck in solid at ", vtos(org), "\n");
}
+ setsize(w, '0 0 0', '0 0 0');
}
waypoint_clearlinks(w);
More information about the nexuiz-commits
mailing list