From: Mario Date: Mon, 1 Jun 2020 20:00:15 +0000 (+1000) Subject: Fix falling through world when crushed by platforms X-Git-Tag: xonotic-v0.8.5~881^2~3 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=0e365abf7504607ae0fd74381f83f2398e383d36;p=xonotic%2Fxonotic-data.pk3dir.git Fix falling through world when crushed by platforms --- diff --git a/qcsrc/common/physics/movetypes/movetypes.qc b/qcsrc/common/physics/movetypes/movetypes.qc index 7e7945e1c..5b7bb11b8 100644 --- a/qcsrc/common/physics/movetypes/movetypes.qc +++ b/qcsrc/common/physics/movetypes/movetypes.qc @@ -25,7 +25,7 @@ bool _Movetype_NudgeOutOfSolid_PivotIsKnownGood(entity this, vector pivot) // SV for(int bump = 0; bump < 6; bump++) { int coord = 2 - (bump >> 1); - bool dir = (bump & 1); + int dir = (bump & 1); for(int subbump = 0; ; ++subbump) { @@ -54,7 +54,6 @@ bool _Movetype_NudgeOutOfSolid_PivotIsKnownGood(entity this, vector pivot) // SV tracebox(stuckorigin, goodmins, goodmaxs, testorigin, MOVE_NOMONSTERS, this); if(trace_startsolid && trace_ent.solid == SOLID_BSP) // NOTE: this checks for bmodelstartsolid in the engine { - // BAD BAD, can't fix that return false; } @@ -70,7 +69,7 @@ bool _Movetype_NudgeOutOfSolid_PivotIsKnownGood(entity this, vector pivot) // SV // we hit something... let's move out of it vector move = trace_endpos - testorigin; - float nudge = (trace_plane_normal * move) + 0.03125f; // FIXME cvar this constant + float nudge = (trace_plane_normal * move) + 0.03125; // FIXME cvar this constant stuckorigin = stuckorigin + nudge * trace_plane_normal; } diff --git a/qcsrc/common/physics/movetypes/push.qc b/qcsrc/common/physics/movetypes/push.qc index 9179ec4a2..66ff42a69 100644 --- a/qcsrc/common/physics/movetypes/push.qc +++ b/qcsrc/common/physics/movetypes/push.qc @@ -97,7 +97,7 @@ void _Movetype_PushMove(entity this, float dt) // SV_PushMove if(!trace_startsolid) continue; } - vector pivot = check.mins + 0.5 * check.maxs; + vector pivot = check.mins + 0.5 * (check.maxs - check.mins); vector move; if(rotated) @@ -154,13 +154,8 @@ void _Movetype_PushMove(entity this, float dt) // SV_PushMove if(_Movetype_NudgeOutOfSolid_PivotIsKnownGood(check, pivot)) { // hack to invoke all necessary movement triggers - vector move2 = '0 0 0'; - if(!_Movetype_PushEntity(check, move2, true, true)) - { - // entity "check" got teleported - continue; - } - // we could fix it + _Movetype_PushEntity(check, '0 0 0', true, true); + // we could fix it or entity "check" was telported continue; }