diff --git a/src/collision/collision_system.cpp b/src/collision/collision_system.cpp index 35afbbf74cf..6fbff8feb15 100644 --- a/src/collision/collision_system.cpp +++ b/src/collision/collision_system.cpp @@ -152,12 +152,6 @@ collision::Constraints check_collisions(const Vector& obj_movement, const Rectf& if (!shiftout) { - if (other_object != nullptr && moving_object != nullptr) { - const HitResponse response = other_object->collision(*moving_object, dummy); - if (response == ABORT_MOVE) - return constraints; - } - const float vert_penetration = std::min(itop, ibottom); const float horiz_penetration = std::min(ileft, iright); @@ -178,6 +172,16 @@ collision::Constraints check_collisions(const Vector& obj_movement, const Rectf& constraints.hit.left = true; } } + if (other_object && moving_object) + { + CollisionHit hit = constraints.hit; + moving_object->collision(*other_object, hit); + std::swap(hit.left, hit.right); + std::swap(hit.top, hit.bottom); + const HitResponse response = other_object->collision(*moving_object, hit); + if(response==ABORT_MOVE) + return collision::Constraints(); + } } return constraints;