shithub: nanobsp

Download patch

ref: 51ee9a0a390a6b25caf953b3fb5c19aa5791f960
parent: 753a8b5c4d51211c5e0ba4c1f0c108eb75e0bb01
author: Andrew Apted <ajapted@gmail.com>
date: Sat Dec 9 15:03:11 EST 2023

fixed BSP_BoundingBox() to not use the *broken* M_AddToBox().

--- a/nano_bsp.c
+++ b/nano_bsp.c
@@ -90,13 +90,25 @@
 
 void BSP_BoundingBox (seg_t * soup, fixed_t * bbox)
 {
-	M_ClearBox (bbox);
+	// Note: not using M_AddToBox() here, it is broken!
 
+	bbox[BOXLEFT  ] = INT_MAX; bbox[BOXRIGHT ] = INT_MIN;
+	bbox[BOXBOTTOM] = INT_MAX; bbox[BOXTOP   ] = INT_MIN;
+
 	seg_t * S;
 	for (S = soup ; S != NULL ; S = S->next)
 	{
-		M_AddToBox (bbox, S->v1->x, S->v1->y);
-		M_AddToBox (bbox, S->v2->x, S->v2->y);
+		bbox[BOXLEFT  ] = MIN (bbox[BOXLEFT  ], S->v1->x);
+		bbox[BOXLEFT  ] = MIN (bbox[BOXLEFT  ], S->v2->x);
+
+		bbox[BOXBOTTOM] = MIN (bbox[BOXBOTTOM], S->v1->y);
+		bbox[BOXBOTTOM] = MIN (bbox[BOXBOTTOM], S->v2->y);
+
+		bbox[BOXRIGHT ] = MAX (bbox[BOXRIGHT ], S->v1->x);
+		bbox[BOXRIGHT ] = MAX (bbox[BOXRIGHT ], S->v2->x);
+
+		bbox[BOXTOP   ] = MAX (bbox[BOXTOP   ], S->v1->y);
+		bbox[BOXTOP   ] = MAX (bbox[BOXTOP   ], S->v2->y);
 	}
 }
 
--