Bladeren bron

Merge pull request #101044 from mihe/jolt/revert-100533

Revert "Stop reporting contacts for sleeping bodies when using Jolt Physics"
Rémi Verschelde 9 maanden geleden
bovenliggende
commit
5a8b7188af
1 gewijzigde bestanden met toevoegingen van 8 en 12 verwijderingen
  1. 8 12
      modules/jolt_physics/spaces/jolt_contact_listener_3d.cpp

+ 8 - 12
modules/jolt_physics/spaces/jolt_contact_listener_3d.cpp

@@ -405,28 +405,24 @@ void JoltContactListener3D::_flush_contacts() {
 		const JPH::SubShapeIDPair &shape_pair = E.key;
 		Manifold &manifold = E.value;
 
-		const JoltReadableBody3D jolt_body1 = space->read_body(shape_pair.GetBody1ID());
-		const JoltReadableBody3D jolt_body2 = space->read_body(shape_pair.GetBody2ID());
+		const JPH::BodyID body_ids[2] = { shape_pair.GetBody1ID(), shape_pair.GetBody2ID() };
+		const JoltReadableBodies3D jolt_bodies = space->read_bodies(body_ids, 2);
 
-		JoltBody3D *body1 = jolt_body1.as_body();
+		JoltBody3D *body1 = jolt_bodies[0].as_body();
 		ERR_FAIL_NULL(body1);
 
-		JoltBody3D *body2 = jolt_body2.as_body();
+		JoltBody3D *body2 = jolt_bodies[1].as_body();
 		ERR_FAIL_NULL(body2);
 
 		const int shape_index1 = body1->find_shape_index(shape_pair.GetSubShapeID1());
 		const int shape_index2 = body2->find_shape_index(shape_pair.GetSubShapeID2());
 
-		if (jolt_body1->IsActive()) {
-			for (const Contact &contact : manifold.contacts1) {
-				body1->add_contact(body2, manifold.depth, shape_index1, shape_index2, contact.normal, contact.point_self, contact.point_other, contact.velocity_self, contact.velocity_other, contact.impulse);
-			}
+		for (const Contact &contact : manifold.contacts1) {
+			body1->add_contact(body2, manifold.depth, shape_index1, shape_index2, contact.normal, contact.point_self, contact.point_other, contact.velocity_self, contact.velocity_other, contact.impulse);
 		}
 
-		if (jolt_body2->IsActive()) {
-			for (const Contact &contact : manifold.contacts2) {
-				body2->add_contact(body1, manifold.depth, shape_index2, shape_index1, contact.normal, contact.point_self, contact.point_other, contact.velocity_self, contact.velocity_other, contact.impulse);
-			}
+		for (const Contact &contact : manifold.contacts2) {
+			body2->add_contact(body1, manifold.depth, shape_index2, shape_index1, contact.normal, contact.point_self, contact.point_other, contact.velocity_self, contact.velocity_other, contact.impulse);
 		}
 
 		manifold.contacts1.clear();