shithub: nanobsp

Download patch

ref: cf107929d8081a23a99affb4e5244f4ac5691215
parent: ded57deabd3633ca2597c62dc0f562adb344193e
author: Andrew Apted <ajapted@gmail.com>
date: Sun Dec 10 09:17:42 EST 2023

fixed BSP_EvalPartition() to not skip the partition itself.

--- a/nano_bsp.c
+++ b/nano_bsp.c
@@ -98,6 +98,10 @@
 
 	if (N->sub == NULL)
 	{
+		printf ("%spartition (%d %d) --> (%d %d)\n", spaces,
+			N->x >> 16, N->y >> 16,
+			(N->x + N->dx) >> 16, (N->y + N->dy) >> 16);
+
 		printf ("%sright\n", spaces);
 		printf ("%s{\n", spaces);
 		DumpNode (N->right, lev + 1);
@@ -316,6 +320,9 @@
 
 int BSP_SegOnSide (seg_t * part, seg_t * seg)
 {
+	if (seg == part)
+		return +1;
+
 	int side1 = BSP_PointOnSide (part, seg->v1->x, seg->v1->y);
 	int side2 = BSP_PointOnSide (part, seg->v2->x, seg->v2->y);
 
@@ -343,9 +350,6 @@
 	seg_t * S;
 	for (S = soup ; S != NULL ; S = S->next)
 	{
-		if (S == part)
-			continue;
-
 		int side = BSP_SegOnSide (part, S);
 
 		switch (side)
--