From 1a482e5394d7e592b621e30f440c8c2152d701a0 Mon Sep 17 00:00:00 2001 From: ac-stef Date: Tue, 13 Sep 2016 21:17:07 +0200 Subject: [PATCH] final corner physics fix if corner sliding doesn't work, try x- and y-slides as well --- source/src/physics.cpp | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/source/src/physics.cpp b/source/src/physics.cpp index fb8c2ee2..0c7f6f75 100644 --- a/source/src/physics.cpp +++ b/source/src/physics.cpp @@ -684,27 +684,24 @@ void moveplayer(physent *pl, int moveres, bool local, int curtime) } pl->o = o_nullxy; } - else + // try slide along y axis + pl->o.y = o_trying.y; + if(!collide(pl, false, drop, rise)) { - // try slide along y axis - pl->o.y = o_trying.y; - if(!collide(pl, false, drop, rise)) - { - d.x = 0; - if(pl->type==ENT_BOUNCE) { pl->vel.x = -pl->vel.x; pl->vel.mul(0.7f); } - continue; - } - pl->o = o_nullxy; - // try x axis - pl->o.x = o_trying.x; - if(!collide(pl, false, drop, rise)) - { - d.y = 0; - if(pl->type==ENT_BOUNCE) { pl->vel.y = -pl->vel.y; pl->vel.mul(0.7f); } - continue; - } - pl->o = o_nullxy; + d.x = 0; + if(pl->type==ENT_BOUNCE) { pl->vel.x = -pl->vel.x; pl->vel.mul(0.7f); } + continue; } + pl->o = o_nullxy; + // try x axis + pl->o.x = o_trying.x; + if(!collide(pl, false, drop, rise)) + { + d.y = 0; + if(pl->type==ENT_BOUNCE) { pl->vel.y = -pl->vel.y; pl->vel.mul(0.7f); } + continue; + } + pl->o = o_nullxy; // try just dropping down if(!collide(pl, false, drop, rise)) {