X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsector.cpp;h=57418fd83f206d9af7c5c13c8db0f38e16609e12;hb=566f8eb2da26d5a2bb4ed5798a5774499f2e511f;hp=29a0aa1627a3295fecbc49e216149d33bd4bb44a;hpb=ceac6be3ec7208ba67d0a6d1cd6aa25d017ff396;p=supertux.git diff --git a/src/sector.cpp b/src/sector.cpp index 29a0aa162..57418fd83 100644 --- a/src/sector.cpp +++ b/src/sector.cpp @@ -889,15 +889,18 @@ void check_collisions(collision::Constraints* constraints, if(!collision::intersects(r1, r2)) return; + MovingObject *moving_object = dynamic_cast (object); CollisionHit dummy; if(other != NULL && !other->collides(*object, dummy)) return; + if(moving_object != NULL && !moving_object->collides(*other, dummy)) + return; // calculate intersection - float itop = r1.get_bottom() - r2.get_top(); + float itop = r1.get_bottom() - r2.get_top(); float ibottom = r2.get_bottom() - r1.get_top(); - float ileft = r1.get_right() - r2.get_left(); - float iright = r2.get_right() - r1.get_left(); + float ileft = r1.get_right() - r2.get_left(); + float iright = r2.get_right() - r1.get_left(); if(fabsf(movement.y) > fabsf(movement.x)) { if(ileft < SHIFT_DELTA) { @@ -1300,9 +1303,9 @@ Sector::handle_collisions() get_hit_normal(moving_object->dest, moving_object_2->dest, hit, normal); if(!moving_object->collides(*moving_object_2, hit)) - return; + continue; if(!moving_object_2->collides(*moving_object, hit)) - return; + continue; moving_object->collision(*moving_object_2, hit); moving_object_2->collision(*moving_object, hit);