From 0f1704c9e88bdb5a975c348a783d6ff8212d1d7c Mon Sep 17 00:00:00 2001 From: Christoph Schroeder Date: Wed, 6 Mar 2019 11:07:24 +0100 Subject: [PATCH] Fixes Geometry.segment_intersects_circle working only one way. (cherry picked from commit dcbe55a1facc3cc2c6058dda967fcbe9fdc8c7d0) --- core/math/geometry.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/math/geometry.h b/core/math/geometry.h index 4b478b6b165..7347cb742ad 100644 --- a/core/math/geometry.h +++ b/core/math/geometry.h @@ -702,9 +702,11 @@ public: /* if we can assume that the line segment starts outside the circle (e.g. for continuous time collision detection) then the following can be skipped and we can just return the equivalent of res1 */ sqrtterm = Math::sqrt(sqrtterm); real_t res1 = (-b - sqrtterm) / (2 * a); - //real_t res2 = ( -b + sqrtterm ) / (2 * a); + real_t res2 = (-b + sqrtterm) / (2 * a); - return (res1 >= 0 && res1 <= 1) ? res1 : -1; + if (res1 >= 0 && res1 <= 1) return res1; + if (res2 >= 0 && res2 <= 1) return res2; + return -1; } static inline Vector clip_polygon(const Vector &polygon, const Plane &p_plane) {