shithub: nanobsp

Download patch

ref: 567224136999a7b5db85f7926b01bf27dabf7089
parent: 51ee9a0a390a6b25caf953b3fb5c19aa5791f960
author: Andrew Apted <ajapted@gmail.com>
date: Sat Dec 9 15:13:21 EST 2023

added some debugging code (but commented out).

--- a/nano_bsp.c
+++ b/nano_bsp.c
@@ -76,6 +76,56 @@
 	return node;
 }
 
+
+/* DEBUG:
+void DumpNode (node_t * N, int lev)
+{
+	char spaces[256];
+
+	if (lev > 100) lev = 100;
+
+	int i;
+	for (i = 0 ; i < lev*2 ; i++)
+		spaces[i] = ' ';
+
+	spaces[lev*2] = 0;
+
+	printf ("%snode %p\n", spaces, N);
+
+	printf ("%sbbox (%d %d) .. (%d %d)\n", spaces,
+		N->bbox[BOXLEFT] >> 16, N->bbox[BOXBOTTOM] >> 16,
+		N->bbox[BOXRIGHT] >> 16, N->bbox[BOXTOP] >> 16);
+
+	if (N->sub == NULL)
+	{
+		printf ("%sright\n", spaces);
+		printf ("%s{\n", spaces);
+		DumpNode (N->right, lev + 1);
+		printf ("%s}\n", spaces);
+
+		printf ("%sleft\n", spaces);
+		printf ("%s{\n", spaces);
+		DumpNode (N->left, lev + 1);
+		printf ("%s}\n", spaces);
+	}
+	else
+	{
+		subsector_t * sub = N->sub;
+
+		printf ("%ssector #%d\n", spaces, (int)(sub->sector - sectors));
+
+		seg_t * S;
+		for (S = sub->segs ; S != NULL ; S = S->next)
+		{
+			printf ("%s  line #%d, side %d : (%d %d) --> (%d %d)\n", spaces,
+				(int) (S->linedef - lines), S->side,
+				S->v1->x >> 16, S->v1->y >> 16,
+				S->v2->x >> 16, S->v2->y >> 16);
+		}
+	}
+}
+*/
+
 //----------------------------------------------------------------------------
 
 void BSP_CalcOffset (seg_t * seg)
@@ -90,7 +140,7 @@
 
 void BSP_BoundingBox (seg_t * soup, fixed_t * bbox)
 {
-	// Note: not using M_AddToBox() here, it is broken!
+	// Note: not using M_AddToBox() here, because it is broken!
 
 	bbox[BOXLEFT  ] = INT_MAX; bbox[BOXRIGHT ] = INT_MIN;
 	bbox[BOXBOTTOM] = INT_MAX; bbox[BOXTOP   ] = INT_MIN;
@@ -296,7 +346,9 @@
 		if (S == part)
 			continue;
 
-		switch (BSP_SegOnSide (part, S))
+		int side = BSP_SegOnSide (part, S);
+
+		switch (side)
 		{
 			case  0: eval->split += 1; break;
 			case -1: eval->left  += 1; break;
@@ -623,4 +675,8 @@
 	seg_t * list = BSP_CreateSegs ();
 
 	root_node = BSP_SubdivideSegs (list);
+
+/* DEBUG:
+	DumpNode (root_node, 0);
+*/
 }
--