}
vector planes[MAX_CLIP_PLANES];
-int _Movetype_FlyMove(entity this, float dt, bool applygravity, vector stepnormal, float stepheight) // SV_FlyMove
+int _Movetype_FlyMove(entity this, float dt, bool applygravity, bool applystepnormal, float stepheight) // SV_FlyMove
{
+ move_stepnormal = '0 0 0';
+
if(dt <= 0)
return 0;
// step - return it to caller
blocked |= 2;
// save the trace for player extrafriction
- if(stepnormal)
- stepnormal = trace_plane_normal;
+ if(applystepnormal)
+ move_stepnormal = trace_plane_normal;
}
if(my_trace_fraction >= 0.001)
trace_plane_normal = '0 0 1';
trace_plane_dist = 0;
trace_ent = this;
+ trace_dpstartcontents = 0;
+ trace_dphitcontents = 0;
+ trace_dphitq3surfaceflags = 0;
+ trace_dphittexturename = string_null;
gettouch(it)(it, this);
}
#define X(i) \
if (_Movetype_TestEntityPosition('0 0 -1' * i)) \
if (_Movetype_TestEntityPosition('0 0 1' * i))
- X(01) X(02) X(03) X(04) X(05) X(06) X(07) X(08)
- X(09) X(10) X(11) X(12) X(13) X(14) X(15) X(16)
+ X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8)
+ X(9) X(10) X(11) X(12) X(13) X(14) X(15) X(16)
X(17)
#undef X
{
{
_Movetype_PushEntityTrace(this, push);
+ // NOTE: this is a workaround for the QC's lack of a worldstartsolid trace parameter
if(trace_startsolid && failonstartsolid)
{
int oldtype = this.move_nomonsters;
- this.move_nomonsters = MOVE_NOMONSTERS;
+ this.move_nomonsters = MOVE_WORLDONLY;
_Movetype_PushEntityTrace(this, push);
this.move_nomonsters = oldtype;
if(trace_startsolid)
_Movetype_LinkEdict(this, true);
if(trace_fraction < 1)
- if(this.solid >= SOLID_TRIGGER && (!IS_ONGROUND(this) || (this.groundentity != trace_ent)))
+ if(this.solid >= SOLID_TRIGGER && trace_ent && (!IS_ONGROUND(this) || (this.groundentity != trace_ent)))
_Movetype_Impact(this, trace_ent);
return (this.origin == last_origin); // false if teleported by touch
{
case MOVETYPE_PUSH:
case MOVETYPE_FAKEPUSH:
- LOG_DEBUGF("Physics: Lacking QuakeC support for Push movetype, FIX ME by using engine physics!");
+ LOG_DEBUG("Physics: Lacking QuakeC support for Push movetype, FIX ME by using engine physics!");
break;
case MOVETYPE_NONE:
break;
{
case MOVETYPE_PUSH:
case MOVETYPE_FAKEPUSH:
- LOG_DEBUGF("Physics: Lacking QuakeC support for Push movetype, FIX ME by using engine physics!");
+ LOG_DEBUG("Physics: Lacking QuakeC support for Push movetype, FIX ME by using engine physics!");
break;
case MOVETYPE_NONE:
break;