From 767be784dc7fe293bf5c5ee6507df242526be3ed Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 24 Sep 2019 02:10:06 -0400
Subject: [PATCH] Rag doll is back.

---
 BBox.java |   65 +++++++++++++++++---------------
 1 files changed, 34 insertions(+), 31 deletions(-)

diff --git a/BBox.java b/BBox.java
index 4a28409..418bd06 100755
--- a/BBox.java
+++ b/BBox.java
@@ -104,12 +104,6 @@
         double t1 = (min.x - ray.eyePoint.x) / ray.viewDirection.x;
         double t2 = (max.x - ray.eyePoint.x) / ray.viewDirection.x;
 
-        double mint = t1;
-        if (mint > t2) mint = t2;
-        
-        double maxt = t1;
-        if (maxt < t2) maxt = t2;
-        
         if (ray.viewDirection.x == 0)
         {
             if (ray.eyePoint.x <= min.x || ray.eyePoint.x >= max.x)
@@ -117,18 +111,16 @@
         }
         else
         {
-            if (tmin > mint) tmin = mint;
-            if (tmax < maxt) tmax = maxt;
-        }
-        
-        t1 = (min.y - ray.eyePoint.y) / ray.viewDirection.y;
-        t2 = (max.y - ray.eyePoint.y) / ray.viewDirection.y;
+            if (t1 > t2)
+            {
+                double t = t1;
+                t1 = t2;
+                t2 = t;
+            }
 
-        mint = t1;
-        if (mint > t2) mint = t2;
-        
-        maxt = t1;
-        if (maxt < t2) maxt = t2;
+            if (tmin > t1) tmin = t1;
+            if (tmax < t2) tmax = t2;
+        }
         
         if (ray.viewDirection.y == 0)
         {
@@ -137,18 +129,19 @@
         }
         else
         {
-            if (tmin > mint) tmin = mint;
-            if (tmax < maxt) tmax = maxt;
-        }
-        
-        t1 = (min.z - ray.eyePoint.z) / ray.viewDirection.z;
-        t2 = (max.z - ray.eyePoint.z) / ray.viewDirection.z;
+            t1 = (min.y - ray.eyePoint.y) / ray.viewDirection.y;
+            t2 = (max.y - ray.eyePoint.y) / ray.viewDirection.y;
 
-        mint = t1;
-        if (mint > t2) mint = t2;
-        
-        maxt = t1;
-        if (maxt < t2) maxt = t2;
+            if (t1 > t2)
+            {
+                double t = t1;
+                t1 = t2;
+                t2 = t;
+            }
+
+            if (tmin > t1) tmin = t1;
+            if (tmax < t2) tmax = t2;
+        }
         
         if (ray.viewDirection.z == 0)
         {
@@ -157,10 +150,20 @@
         }
         else
         {
-            if (tmin > mint) tmin = mint;
-            if (tmax < maxt) tmax = maxt;
+            t1 = (min.z - ray.eyePoint.z) / ray.viewDirection.z;
+            t2 = (max.z - ray.eyePoint.z) / ray.viewDirection.z;
+
+            if (t1 > t2)
+            {
+                double t = t1;
+                t1 = t2;
+                t2 = t;
+            }
+
+            if (tmin > t1) tmin = t1;
+            if (tmax < t2) tmax = t2;
         }
         
-        return tmax > tmin && tmax > 0.0;
+        return tmax >= tmin && tmax > 0.0;
     }
 }

--
Gitblit v1.6.2