瀏覽代碼

Add check for zero length motion at beginning of each sweep test loop
in SpaceBullet::test_body_motion.

Marcel Admiraal 5 年之前
父節點
當前提交
e0d252311e
共有 1 個文件被更改,包括 2 次插入2 次删除
  1. 2 2
      modules/bullet/space_bullet.cpp

+ 2 - 2
modules/bullet/space_bullet.cpp

@@ -945,7 +945,7 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f
 
 	btVector3 motion;
 	G_TO_B(p_motion, motion);
-	if (!motion.fuzzyZero()) {
+	{
 		// Phase two - sweep test, from a secure position without margin
 
 		const int shape_count(p_body->get_shape_count());
@@ -960,7 +960,7 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f
 		motionVec->end();
 #endif
 
-		for (int shIndex = 0; shIndex < shape_count; ++shIndex) {
+		for (int shIndex = 0; shIndex < shape_count && !motion.fuzzyZero(); ++shIndex) {
 			if (p_body->is_shape_disabled(shIndex)) {
 				continue;
 			}