shithub: nanobsp

Download patch

ref: 35fc4078cabb6cb183b38e693a560b67681c061d
parent: 44ccf1e555176bdfe47f69b95707feb9a47c2262
author: Andrew Apted <ajapted@gmail.com>
date: Fri Dec 8 18:37:19 EST 2023

implemented the creation of segs from a linedef.

--- a/nano_bsp.c
+++ b/nano_bsp.c
@@ -44,6 +44,13 @@
 // #define DIST_EPSILON  (1.0 / 256.0)
 
 
+vertex_t * BSP_NewVertex (void)
+{
+	vertex_t * vert = Z_Malloc(sizeof(vertex_t), PU_LEVEL, NULL);
+	return vert;
+}
+
+
 seg_t * BSP_NewSeg (void)
 {
 	seg_t * seg = Z_Malloc (sizeof(seg_t), PU_LEVEL, NULL);
@@ -58,9 +65,27 @@
 {
 	line_t * ld = &lines[i];
 
-	// TODO
+	if (ld->sidenum[side] < 0)
+		return;
 
-	// if (side == 1 && ld->
+	// create the seg
+	seg_t * seg = BSP_NewSeg ();
+
+	seg->v1 = side ? ld->v2 : ld->v1;
+	seg->v2 = side ? ld->v1 : ld->v2;
+
+	seg->offset = 0;
+	seg->angle  = R_PointToAngle2 (seg->v1->x, seg->v1->y, seg->v2->x, seg->v2->y);
+
+	seg->sidedef = &sides[ld->sidenum[side]];
+	seg->linedef = ld;
+
+	seg->frontsector = side ? ld->backsector  : ld->frontsector;
+	seg->backsector  = side ? ld->frontsector : ld->backsector;
+
+	// link into the list
+	seg->next   = (*list_var);
+	(*list_var) = seg;
 }
 
 
--