Răsfoiți Sursa

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

Pedro J. Estébanez 8 ani în urmă
părinte
comite
fa1049b46b
1 a modificat fișierele cu 3 adăugiri și 3 ștergeri
  1. 3 3
      servers/physics/space_sw.cpp

+ 3 - 3
servers/physics/space_sw.cpp

@@ -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) {
 
-	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)
 		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);
 
 	return (1 << body->get_mode()) & p_type_mask;