浏览代码

collide: fix erroneous collision if sphere is under edge of polygon

Reproducible by the code in #907, occurs if the sphere is close to the edge, but its center is off and under the polygon.
rdb 5 年之前
父节点
当前提交
ed73394275
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      panda/src/collide/collisionPolygon.cxx

+ 2 - 2
panda/src/collide/collisionPolygon.cxx

@@ -508,8 +508,8 @@ test_intersection_from_sphere(const CollisionEntry &entry) const {
     max_dist = csqrt(max_dist_2);
     max_dist = csqrt(max_dist_2);
   }
   }
 
 
-  if (dist > max_dist) {
-    // There's no intersection: the sphere is hanging off the edge.
+  if (dist > max_dist || -dist > max_dist) {
+    // There's no intersection: the sphere is hanging above or under the edge.
     return nullptr;
     return nullptr;
   }
   }