Przeglądaj źródła

Fixed area collision report with concave

Andrea Catania 6 lat temu
rodzic
commit
66420aea9c
1 zmienionych plików z 4 dodań i 1 usunięć
  1. 4 1
      modules/bullet/space_bullet.cpp

+ 4 - 1
modules/bullet/space_bullet.cpp

@@ -686,7 +686,7 @@ void SpaceBullet::check_ghost_overlaps() {
 			btVector3 other_body_scale(otherObject->get_bt_body_scale());
 
 			if (!area->is_transform_changed() && !otherObject->is_transform_changed()) {
-				hasOverlap = true;
+				hasOverlap = -1 != area->find_overlapping_object(otherObject);
 				goto collision_found;
 			}
 
@@ -715,6 +715,9 @@ void SpaceBullet::check_ghost_overlaps() {
 
 					other_body_shape = static_cast<btCollisionShape *>(otherObject->get_bt_shape(z));
 
+					if (other_body_shape->isConcave())
+						continue;
+
 					btTransform other_shape_transform(otherObject->get_bt_shape_transform(z));
 					other_shape_transform.getOrigin() *= other_body_scale;