Fix early-accepting area-area match when masks don't match

This commit is contained in:
Pedro J. Estébanez 2017-07-25 04:06:37 +02:00
parent 91bb4952e4
commit fa1049b46b
1 changed files with 3 additions and 3 deletions

View File

@ -34,12 +34,12 @@
_FORCE_INLINE_ static bool _match_object_type_query(CollisionObjectSW *p_object, uint32_t p_collision_layer, uint32_t p_type_mask) { _FORCE_INLINE_ static bool _match_object_type_query(CollisionObjectSW *p_object, uint32_t p_collision_layer, uint32_t p_type_mask) {
if (p_object->get_type() == CollisionObjectSW::TYPE_AREA)
return p_type_mask & PhysicsDirectSpaceState::TYPE_MASK_AREA;
if ((p_object->get_collision_layer() & p_collision_layer) == 0) if ((p_object->get_collision_layer() & p_collision_layer) == 0)
return false; return false;
if (p_object->get_type() == CollisionObjectSW::TYPE_AREA)
return p_type_mask & PhysicsDirectSpaceState::TYPE_MASK_AREA;
BodySW *body = static_cast<BodySW *>(p_object); BodySW *body = static_cast<BodySW *>(p_object);
return (1 << body->get_mode()) & p_type_mask; return (1 << body->get_mode()) & p_type_mask;