浏览代码

Merge pull request #1667 from Azaezel/divnullbadmmmmkay

raycast division safety
Areloch 9 年之前
父节点
当前提交
48aed0e0ca
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      Engine/source/ts/tsCollision.cpp

+ 6 - 1
Engine/source/ts/tsCollision.cpp

@@ -1630,7 +1630,12 @@ bool TSMesh::castRayOpcode( const Point3F &s, const Point3F &e, RayInfo *info, T
          }
 
          // slerp
-         Point3F s = ( (max - min) - (facePoint - min) ) / (max - min);
+         Point3F divSafe = (max - min);
+         if (divSafe.x == 0.0f) divSafe.x = POINT_EPSILON;
+         if (divSafe.y == 0.0f) divSafe.y = POINT_EPSILON;
+         if (divSafe.z == 0.0f) divSafe.z = POINT_EPSILON;
+
+         Point3F s = ( (max - min) - (facePoint - min) ) / divSafe;
 
          // compute axis
          S32		bestAxis = 0;