Просмотр исходного кода

collide_shape: return contact points in world space

Ricardo Buring 3 лет назад
Родитель
Сommit
1d16153881
1 измененных файлов с 5 добавлено и 4 удалено
  1. 5 4
      modules/bullet/godot_result_callbacks.cpp

+ 5 - 4
modules/bullet/godot_result_callbacks.cpp

@@ -299,12 +299,13 @@ btScalar GodotContactPairContactResultCallback::addSingleResult(btManifoldPoint
 		return 1; // not used by bullet
 	}
 
+	// In each contact pair, the contact on the shape which was passed to collide_shape (where this callback is used) is put first.
 	if (m_self_object == colObj0Wrap->getCollisionObject()) {
-		B_TO_G(cp.m_localPointA, m_results[m_count * 2 + 0]); // Local contact
-		B_TO_G(cp.m_localPointB, m_results[m_count * 2 + 1]);
+		B_TO_G(cp.getPositionWorldOnA(), m_results[m_count * 2 + 0]);
+		B_TO_G(cp.getPositionWorldOnB(), m_results[m_count * 2 + 1]);
 	} else {
-		B_TO_G(cp.m_localPointB, m_results[m_count * 2 + 0]); // Local contact
-		B_TO_G(cp.m_localPointA, m_results[m_count * 2 + 1]);
+		B_TO_G(cp.getPositionWorldOnB(), m_results[m_count * 2 + 0]);
+		B_TO_G(cp.getPositionWorldOnA(), m_results[m_count * 2 + 1]);
 	}
 
 	++m_count;