[nexuiz-commits] r6779 - in trunk/data/qcsrc: client server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Wed May 27 08:31:48 EDT 2009
Author: div0
Date: 2009-05-27 08:31:47 -0400 (Wed, 27 May 2009)
New Revision: 6779
Modified:
trunk/data/qcsrc/client/View.qc
trunk/data/qcsrc/server/cl_weaponsystem.qc
Log:
keep shot origins outside walls (maybe fixes a bug dokujisan found)
Modified: trunk/data/qcsrc/client/View.qc
===================================================================
--- trunk/data/qcsrc/client/View.qc 2009-05-26 16:57:39 UTC (rev 6778)
+++ trunk/data/qcsrc/client/View.qc 2009-05-27 12:31:47 UTC (rev 6779)
@@ -210,7 +210,7 @@
{
float nudge = 1; // added to traceline target and subtracted from result
vector vecs, trueaimpoint, w_shotorg;
- vector mi, ma;
+ vector mi, ma, dv;
mi = ma = '0 0 0';
@@ -244,8 +244,13 @@
else
vecs = '0 0 0';
- w_shotorg = view_origin + view_right * vecs_y + view_up * vecs_z;
+ dv = view_right * vecs_y + view_up * vecs_z;
+ w_shotorg = view_origin + dv;
+ // move the vecs sideways as much as requested if possible
+ traceline(view_origin, w_shotorg + normalize(dv) * nudge, MOVE_NORMAL, trueaim);
+ w_shotorg = trace_endpos - normalize(dv) * nudge;
+
// now move the vecs forward as much as requested if possible
traceline(w_shotorg, w_shotorg + view_forward * (vecs_x + nudge), MOVE_NORMAL, trueaim); // FIXME this MOVE_NORMAL part will misbehave a little in csqc
w_shotorg = trace_endpos - view_forward * nudge;
Modified: trunk/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weaponsystem.qc 2009-05-26 16:57:39 UTC (rev 6778)
+++ trunk/data/qcsrc/server/cl_weaponsystem.qc 2009-05-27 12:31:47 UTC (rev 6779)
@@ -108,7 +108,7 @@
float nudge = 1; // added to traceline target and subtracted from result
local vector trueaimpoint;
local float oldsolid;
- vector vecs;
+ vector vecs, dv;
oldsolid = ent.dphitcontentsmask;
ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
traceline(ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, ent);
@@ -127,8 +127,13 @@
if(debug_shotorg != '0 0 0')
vecs = debug_shotorg;
- w_shotorg = ent.origin + ent.view_ofs + v_right * vecs_y + v_up * vecs_z;
+ dv = v_right * vecs_y + v_up * vecs_z;
+ w_shotorg = ent.origin + ent.view_ofs + dv;
+ // move the vecs sideways as much as requested if possible
+ traceline(ent.origin + ent.view_ofs, w_shotorg + normalize(dv) * nudge, MOVE_NORMAL, ent);
+ w_shotorg = trace_endpos - normalize(dv) * nudge;
+
// now move the shotorg forward as much as requested if possible
traceline(w_shotorg, w_shotorg + v_forward * (vecs_x + nudge), MOVE_NORMAL, ent);
w_shotorg = trace_endpos - v_forward * nudge;
More information about the nexuiz-commits
mailing list