2
0
Эх сурвалжийг харах

Merge pull request #25180 from AndreaCatania/arov

Fixed area overlaps if not move
Rémi Verschelde 6 жил өмнө
parent
commit
a0730652fc

+ 5 - 4
modules/bullet/space_bullet.cpp

@@ -678,11 +678,14 @@ void SpaceBullet::check_ghost_overlaps() {
 		// For each overlapping
 		for (i = ghostOverlaps.size() - 1; 0 <= i; --i) {
 
+			bool hasOverlap = false;
 			btCollisionObject *overlapped_bt_co = ghostOverlaps[i];
 			RigidCollisionObjectBullet *otherObject = static_cast<RigidCollisionObjectBullet *>(overlapped_bt_co->getUserPointer());
 
-			if (!area->is_transform_changed() && !otherObject->is_transform_changed())
-				continue;
+			if (!area->is_transform_changed() && !otherObject->is_transform_changed()) {
+				hasOverlap = true;
+				goto collision_found;
+			}
 
 			if (overlapped_bt_co->getUserIndex() == CollisionObjectBullet::TYPE_AREA) {
 				if (!static_cast<AreaBullet *>(overlapped_bt_co->getUserPointer())->is_monitorable())
@@ -690,8 +693,6 @@ void SpaceBullet::check_ghost_overlaps() {
 			} else if (overlapped_bt_co->getUserIndex() != CollisionObjectBullet::TYPE_RIGID_BODY)
 				continue;
 
-			bool hasOverlap = false;
-
 			// For each area shape
 			for (y = area->get_shape_count() - 1; 0 <= y; --y) {
 				if (!area->get_bt_shape(y)->isConvex())