X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsector.cpp;h=cd4276ba784e6a8994683d48e539d971ec93d20a;hb=99cf62c2d44b4555e9761f1c8f1b10cf880c33fb;hp=29a0aa1627a3295fecbc49e216149d33bd4bb44a;hpb=ceac6be3ec7208ba67d0a6d1cd6aa25d017ff396;p=supertux.git diff --git a/src/sector.cpp b/src/sector.cpp index 29a0aa162..cd4276ba7 100644 --- a/src/sector.cpp +++ b/src/sector.cpp @@ -28,7 +28,8 @@ #include #include #include -#include +//#include +#include #include "sector.hpp" #include "object/player.hpp" @@ -245,7 +246,7 @@ Sector::parse_old_format(const lisp::Lisp& reader) if (backgroundimage == "arctis2.jpg") backgroundimage = "arctis.jpg"; if (backgroundimage == "ocean.png") backgroundimage = "ocean.jpg"; backgroundimage = "images/background/" + backgroundimage; - if (!PHYSFS_exists(backgroundimage.c_str())) { + if (!Unison::VFS::FileSystem::get().exists(backgroundimage)) { log_warning << "Background image \"" << backgroundimage << "\" not found. Ignoring." << std::endl; backgroundimage = ""; } @@ -889,15 +890,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 +1304,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);