Browse Source

Fix 3D Area mask matching

eska 10 years ago
parent
commit
375a7a727f
1 changed files with 3 additions and 3 deletions
  1. 3 3
      servers/physics/space_sw.cpp

+ 3 - 3
servers/physics/space_sw.cpp

@@ -34,10 +34,10 @@
 
 
 _FORCE_INLINE_ static bool _match_object_type_query(CollisionObjectSW *p_object, uint32_t p_layer_mask, uint32_t p_type_mask) {
 _FORCE_INLINE_ static bool _match_object_type_query(CollisionObjectSW *p_object, uint32_t p_layer_mask, uint32_t p_type_mask) {
 
 
-	if ((p_object->get_layer_mask()&p_layer_mask)==0)
-		return false;
+	if (p_object->get_type()==CollisionObjectSW::TYPE_AREA)
+		return p_type_mask&PhysicsDirectSpaceState::TYPE_MASK_AREA;
 
 
-	if (p_object->get_type()==CollisionObjectSW::TYPE_AREA && !(p_type_mask&PhysicsDirectSpaceState::TYPE_MASK_AREA))
+	if ((p_object->get_layer_mask()&p_layer_mask)==0)
 		return false;
 		return false;
 
 
 	BodySW *body = static_cast<BodySW*>(p_object);
 	BodySW *body = static_cast<BodySW*>(p_object);