projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Upgrade to Squirrel 2.1.2 <http://squirrel-lang.org/>
[supertux.git]
/
src
/
sector.cpp
diff --git
a/src/sector.cpp
b/src/sector.cpp
index
29a0aa1
..
57418fd
100644
(file)
--- a/
src/sector.cpp
+++ b/
src/sector.cpp
@@
-889,15
+889,18
@@
void check_collisions(collision::Constraints* constraints,
if(!collision::intersects(r1, r2))
return;
if(!collision::intersects(r1, r2))
return;
+ MovingObject *moving_object = dynamic_cast<MovingObject*> (object);
CollisionHit dummy;
if(other != NULL && !other->collides(*object, dummy))
return;
CollisionHit dummy;
if(other != NULL && !other->collides(*object, dummy))
return;
+ if(moving_object != NULL && !moving_object->collides(*other, dummy))
+ return;
// calculate intersection
// 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 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) {
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))
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))
if(!moving_object_2->collides(*moving_object, hit))
-
return
;
+
continue
;
moving_object->collision(*moving_object_2, hit);
moving_object_2->collision(*moving_object, hit);
moving_object->collision(*moving_object_2, hit);
moving_object_2->collision(*moving_object, hit);